Commit Graph

277 Commits

Author SHA1 Message Date
stephena 76e64b711b Small performance improvement; only query Unicode values in GUI modes,
otherwise turn it off (according to the SDL documentation, there's a
small performance hit when it's turned on).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2357 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-14 22:14:04 +00:00
stephena 73dbe861a6 Refactored the keycode handling through the GUI classes, making it more
generic than SDL, but less generic than simply using int's for everything.
This will help once we start porting to SDL2, which has an updated keycode
handling system.  The plan is that the internal core keyboard stuff is now
insulated from any further changes in SDL.

This also allows eventually adding support for CompuMate controller,
which needs access to keycode names in a generic way.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2356 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-14 22:00:54 +00:00
stephena a7ca813174 Save console controllers and switches state in state files. This allows
the debugger to work correctly when rewinding and interacting with these
parts of the system.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2355 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-14 17:12:25 +00:00
stephena 76dc1ce716 Some rearrangement of code in Console class, so that Controller::enable
is no longer required.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2353 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-13 21:13:10 +00:00
stephena 30bfa0e639 Added keyboard controller to the debugger I/O tab.
Cleaned up the Event object in the EventHander, turning
it into a reference instead of a pointer (pointers are evil).

Minor speed optimization to Keyboard class; the update method
isn't required, since all work is done on the initial write().


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2350 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-09 17:23:44 +00:00
stephena c26f0a1275 Make sure AtariVox and SaveKey controllers aren't messed up
when the Console runs autodetection routines at startup.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2344 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-08 18:23:51 +00:00
stephena 293a8a69b4 Added TIA INPTx and VBLANK D6/D7 items to the debugger I/O tab.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2343 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-08 16:55:10 +00:00
stephena c19d934f75 Added ROM properties info for Genesis-controlled games.
Tweaked the sound code again, to eliminate garbage data between
loading ROMs.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2342 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-07 20:51:03 +00:00
stephena f8c6693583 Added Genesis controller UI to the debugger I/O tab.
Updated ROM properties for 'Gingerbread Man' homebrew ROM, which
uses the Genesis controller.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2341 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-07 17:05:18 +00:00
stephena 35255514c8 Added paddle widget to the debugger I/O tab. This is actually the
first time that paddle movement is able to be set from within
the debugger!


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2337 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-06 18:17:41 +00:00
stephena 6453a1ac14 Fixed bug in Controller::read; AtariVox and SaveKey weren't working.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2336 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-06 01:22:43 +00:00
stephena b10720321a First pass at adding controller-specific UI items to the
I/O tab in the debugger.  For now, only joystick is 
partly implemented.  Eventually, all Stella controllers
will have UI items (where it makes sense), allowing to
completely control input devices from within the
debugger.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2334 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-05 18:28:24 +00:00
stephena 0138086583 Added shortcut for temporarily starting Stella in a rom directory
other than that specified by 'romdir'.  I'm not going to document
this functionality, since it's a convenience function that will
probably only be used by me anyway.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2333 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-04 14:54:21 +00:00
stephena 06de98d05d Some tweaks to onscreen message colours, to match the current scheme.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2332 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-03 20:52:45 +00:00
stephena 11fe5f4da1 Changed TIAColor enum names on the advice of Rainer M. Canavan,
due to name-clash issues in Irix.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2331 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-03 20:26:37 +00:00
stephena 76e3ba8ec0 Updated documentation for SWCHB debugger changes, and updated
the changelog.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2330 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-02 22:09:54 +00:00
stephena c1e171ee44 Added skeleton class for CompuMate bankswitching.
Updated all bankswitch schemes for potential buffer overflow
issues.  Copying was being done without regard for the size of the
ROM buffer.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2325 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-02 20:31:42 +00:00
stephena b7125a26ee Added classes for MindLink and CompuMate controllers. Note that
these aren't fully activated yet, but they're the next thing I plan
to work on.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2322 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2012-01-02 16:37:17 +00:00
stephena c95d5f804d Updated all files to copyright 2012. Happy New Year to anyone reading
these logs!

Moved TODO and Credits info directly to the webpage, where it will hopefully
be easier to maintain.

Fixed 'crackling' sound when loading a new ROM, introduced with the 3.5
sound restructuring.  It looks like stale data was being loaded by the
sound processing callback.  As well, moved the computation of certain
division variables from the sound callback to the framerate re-calculator
(where it's recomputed 1/5 of the time or less).

Updated AboutDialog with info about Stella DonationWare status, and active
members of Stella development.

Updated OSX in-app HTML documentation about Stella DonationWare status.

Bumped version # to 3.5.1_svn, and the process starts again.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2318 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-31 21:56:36 +00:00
stephena 2047804903 Fixed bug in 'fixed debug colors' for playfield graphics;
it should always display the playfield colour, even if it
would normally use P0/P1 colours in normal mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2317 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-31 01:52:24 +00:00
stephena a7710ab1af Clean up some references to OpenGL buffer type, which actually
mean 'hardware-accelerated, double-buffered'.  This distinction
is important, since eventually such a mode won't necessarily be
OpenGL-backed (it might be Direct3D, OpenGLES, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2312 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-29 19:10:57 +00:00
stephena 2bb1411159 A little more work on KidVid support. The sound isn't working yet,
but at least it progresses through different screens when you press
1, 2, 3.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2307 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-28 22:38:45 +00:00
stephena 83114a9a6f Fixed segfault on program exit if joysticks have never been initialized.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2304 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-28 15:26:21 +00:00
stephena 08c59e5882 Added controller map to the documentation, stating how physical
computer controllers are mapped to virtual console controllers.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2302 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-28 02:24:51 +00:00
stephena f489007609 Fixed wrong MouseAxisType enum values in Settings.
Eventually I'll find a more elegant way to represent this.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2301 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-28 00:25:19 +00:00
stephena e47bf71dbb Added better icons for Linux/UNIX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2300 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-27 01:57:06 +00:00
stephena d8dd08dfde Add build info to the internal log.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2299 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-27 00:47:24 +00:00
stephena aeb8d27746 Added 'mcontrol' commandline argument, which allows to map mouse axes
separately to different paddles.

Updated documentation for impending 3.5 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2296 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-26 21:40:28 +00:00
stephena b6cab4e626 Removed redundant 'audiofirst' commandline argument, and fixed displaying
of RAM addresses in debugger RamWidget.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2295 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-23 00:04:58 +00:00
stephena 115d560f87 Optimization of FSNode::getXXX string methods. They now return
'const string&', which saves a string c'tor call each time they're
accessed.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2293 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-22 22:11:09 +00:00
stephena 52cf172661 Reverted FSNode getPath() modifications introduced in Stella 3.4.1, since it causes massive performance regressions in Windows XP.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2292 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-22 21:29:24 +00:00
stephena 56694b5934 The sound system is now opened once per program invocation, and paused
when it isn't needed.  According to SDL this shouldn't be necessary, but
some combinations of video modes and audio hardware cause sound to stop
working if it's repeatedly opened and closed.  So we have to keep it open.

Always attempt to use 2 channels (aka stereo) when opening the SDL audio
device.  This is now required, since ROMs can request mono or stereo mode,
and the sound system can no longer be closed and re-opened with the
desired settings.  So we need to always use 2 channels to accommodate
when it might be needed.  This actually more closely emulates the 2600,
which does have two audio channels.  The 'mono' vs 'stereo' ROM property
basically controls whether these channels are exposed (ie, does the
virtual console have two-channel audio hardware installed).  In that sense,
these settings control how the channels are mixed.

Updated some settings to have more reasonable defaults.

Added acknowledgement for people that have donated hardware to help with
development.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2291 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-21 17:18:53 +00:00
stephena 9d93318450 Cleaned up formatting for joystick logging.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2290 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-18 19:47:45 +00:00
stephena 4c8cfb3da0 Mappings for joysticks beyond the first one are now actually loaded.
They were being saved correctly for all sticks, but only loaded for
the first one.

Removed some redundant settings related to TV effects stuff.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2289 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-18 19:43:24 +00:00
stephena 17fc52bfc9 Made 'colorloss' option be true by default (so that PAL
ROMs with an odd # of scanlines will display the image in
black & white, just as on a real system.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2287 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-12-03 23:14:06 +00:00
stephena 93a3952317 Make sure to only change the 'joymap' setting if any joysticks
have actually been loaded during the program run.  Otherwise,
it will erase previous mappings.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2286 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-30 14:57:28 +00:00
stephena d35c220953 Huge restructuring of the joystick handling code. Event mapping is now
saved per device, so that unplugging and replugging a joystick won't cause
the previous mappings to be lost.

All attributes of a joystick (ie, number of sticks, number of axes, buttons,
hats on each stick) are dynamic, meaning that hardcoded values are no
longer used, making the handling more robust.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2285 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-29 22:12:13 +00:00
stephena e8776a79d6 The default snapshot dir is much saner, defaulting to the users'
desktop on OSX and Windows, and the home directory in Linux.
The associated commandline has been changed to 'snapdir'.

Added 'GL VBO' toggle button to the Video Settings UI, and in
general cleaned up its interface.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2282 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-25 14:17:05 +00:00
stephena 8e868823d9 Updated properties file for Breakout ROM; it actually has a 4-player mode,
so both ports should be set to use paddles.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2281 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-20 01:55:13 +00:00
stephena faa0789727 Updated some code comments and the documentation.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2280 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-19 18:28:17 +00:00
stephena bb63ea3dd1 Reverted TIA changes that affect late NUSIZx changes. More work is needed
in this area.

Added commandline argument 'thumb.trapfatal', which causes fatal errors in
the Thumb ARM emulation to really be treated as fatal (ie, the emulation stops
and throws an exception).  This is enabled by default (as it always should be).
When disabled, fatal errors simply log the error and continue with emulation.
This was added because the current HarmonyCart ARM code isn't always exactly
compatible with the emulation in Stella, and there is a lagtime from when
Harmony implements something to when the same functionality is added to Stella.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2279 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-07 22:50:23 +00:00
stephena 1d5ea6a9eb Updated DPC+ code to latest changes from Spiceware for the Frantic ROM.
Specifically, the 3-voice audio routines read from ROM instead of RAM, and
the setting the ARM MAM register no longer causes the ARM emulation to crash.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2278 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-11-05 22:31:40 +00:00
stephena c2992f5097 Large reorganization of the OpenGL code, separating out FBSurfaces into
distinct GUI vs non-GUI (aka TIA) classes.  This makes it easy to proceed
from this point on, since I don't have to worry about breaking one mode
when making changes to the other.

Preliminary support for TIA scanlines in OpenGL mode.  It's disabled for
now, but is progressing nicely.  This will be part of the new TV effects
in the next major release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2273 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-28 21:49:16 +00:00
stephena b25eccdf48 Added Vertex Buffer Object (VBO) functionality to the OpenGL renderer.
Updated OSX project files for recent OpenGL changes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2270 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-19 14:30:15 +00:00
stephena 738e0aa73d Oops, the last commit contained experimental sound changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2268 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-17 00:25:22 +00:00
stephena 672461b942 Updated VS 2005 project with latest changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2266 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-17 00:09:07 +00:00
stephena 55f4de0725 First pass at converting the OpenGL renderer to be OpenGLES 1.0
compliant.  It actually went smoother than I thought it would.
This show allow Stella to run well on *any* hardware-accelerated
OpenGL machine, not just those with beefy video cards.

Cleaned up the code a little, removing more references to the old
OpenGL TV filtering (which will be replaced by Blargg NTSC
filtering soon enough).  Also removed 'gl_texrect' option, which
specified to use the GL_TEXTURE_RECTANGLE_ARB extension (for
non power-of-two textures).  It was never enabled by default,
didn't work with ATI cards, and wasn't accessible in the UI,
so I doubt anyone will miss it.  Besides, it's not supported in
OpenGL ES 1.x.

Next is to look into VBO/PBO, to see if more optimizations can
be done.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2265 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-16 19:33:28 +00:00
stephena a16f862193 Added logging capability and viewer. This is useful for those platforms that
don't normally use the commandline (mostly Windows, but in some cases OSX as
well).  The 'showinfo' commandline argument has been renamed 'loglevel', but
it has the same purpose.  A new option 'logtoconsole' has been added, which
determines whether log output should also be directed to the commandline/
console (previously, it was always printed to the console).  All these items
are now accessible from Options -> System Logs.

For anyone reading this (and that cares), now I can finally move on to the
OpenGL rewrite.  The plan is that the new code will use OpenGL ES, which
is a subset of OpenGL 1.5.  The main advantages are that you won't need
an advanced OpenGL card, and OpenGL ES is supported on most new 'smaller'
systems (iPhone, Android, etc), making ports much easier.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2264 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-08-16 13:38:34 +00:00
stephena 40a66edee4 Cleaned up usage of sprintf in the codebase, changing to
BSPF_snprintf instead, which should eliminate any potential
buffer overflows.  Also moved from static arrays to stringstreams
where appropriate to make things safer and more C++ like.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2263 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-07-13 14:13:49 +00:00
stephena f549cf9661 Removed some 'throw(...)' declarations, which are deprecated in the latest version
of the C++ standard.

Fixed bug when using snprintf; we must use BSPF_snprintf, since the function
has different names in different OS's.

Optimized loading of PNG images in the RomInfoWidget so that memory allocations
aren't continuously being done.  Basically, memory is allocated once and then
only re-allocated if a new image is larger than all previous ones.  This can
increase memory use slightly, as the image data stays around between image loads,
and it remembers the largest image loaded.  But if you images are all mostly the
same size, it should hurt memory usage too much.  And it really helps on certain
systems where repeated (re)-allocations can cause problems.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2261 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-07-03 21:52:33 +00:00