class reworking. Serializer class now handles read/write of state from
files as well as in-memory streams. As a result, Deserializer class has
been removed.
Added state rewinding to the debugger. For now, this is limited to 100
levels of undo, with a new state generated each time a step/trace/frame/
scanline advance is performed. The undo level is 'rolling', in that it
remembers the last 100 levels (so you lose the oldest states when you
start adding more than 100). For now, this is tied to the 'Alt-r' key
in the debugger. Still TODO is add a button for it, and clean up some
TIA output issues when rewinding.
Added support for 6K version of Supercharger ROMs (this fixes issues
with the 6K version of Cubis).
Cleaned up the Serializable infrastructure, making sure that all
classes that need to implement it actually do so now.
Fixed issue with editable widgets in the UI, where pressing Enter
on the keypad wasn't actually being registered.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1849 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of is the 6K version of 'Cubis'. Thanks to Eckhard Stolberg for advice
on this.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1847 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
near the top of the list. The TIA HMOVE stuff is well underway, the
Blargg NTSC emulation is being done by the Georgia Tech team, and the
debugger improvements (disassemble zero-page RAM, Distella integration,
and rewind in the debugger) will be started soon.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1846 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
emulation when performing 'illegal' HMOVEs (aka, when modifying the HMxx
registers within 24 CPU cycles of HMOVE).
All tweaks for illegal HMOVEs have been removed; and all ROMs that
previously needed those tweaks are now working correctly. Several other
ROMs are fixed as well, including Bumper Bash and Pole Position.
As this is WIP, there is also some breakage:
1) Cosmic Ark 'TIA confusion mode' effects aren't complete; the
movement is correct, but the missile widths aren't corrected yet.
2) Performing a write to NUSIZx while a player is still drawing
isn't complete. This breaks several ROMs that worked before, such
as Galaxian and Space Instigators.
3) Writes to RESPx aren't complete yet, especially if they're
combined with an immediate write to NUSIZx.
Most of the ideas (and some code) for these changes comes from
contributions to MESS and EMU7800. Where applicable, permission
was obtained from the original author to use the code/ideas.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1845 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
documentation by using more appropiate variable names.
Added enum's for collision bits to TIATables and TIA classes,
making it easier to visualize what the code is doing.
Fixed poke delay for NUSIZx registers. This fixes display issues
in 'Bumper Bash' and 'Pole Position'. The remaining graphical bugs
in those ROMs is fixed by the new TIA code.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1843 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of 'FA' and 'F0', respectively, as defined in Kevin Horton sizes.txt
and used in z26. For compatibility, the old names can still be used.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1842 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
very difficult, as I'm working on 3 different branches at the same time :(
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1840 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
detection being done outside the displayable area. Originally, areas
above 'YStart' scanline were not processed as all, as an optimization.
However, several ROMs can do collision detection above ystart, so
we now process the entire frame (but only display the stuff below ystart).
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1839 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
mapped to Backspace, and is used in the ROM launcher and various
BrowserWidgets. The event can be remapped if desired. When I'm
testing Stella, I tend to use the keyboard almost exclusively, and
it was getting a little tiring to reach for the mouse each time I
wanted to change directories.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1836 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
so we need to make sure that Sub2K ROMs less than 64 bytes are
properly 'paged' to that size.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1825 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and doesn't know what intxx_t datatypes are. So we need yet another
check for Win32-specific stuff in BSPF.
Folded getTicks() from UNIX and OSX back into OSystem directly.
The default is now to use OSystem::getTicks() unless it's
overrided by a platform-specific OSystemXXX class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1824 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
problems with integer overflow, which could sometimes cause Stella to
sleep for long periods of time. For those who are interested, the
problem was that SDL_GetTicks() wraps every 49 days (32-bit int
overflow), but since OSystem::getTicks() provides info in microseconds,
it multiplied the value by 1000. This caused wraparound in 49/1000
days, or 70.56 minutes. This almost exactly matches the reports on
AtariAge of 'lockups' occuring every 71 minutes or so. It also
explains why attaching to Stella with GDB and bypassing the delay
allows the program to continue (as reported by another bugtester).
Added signature to detect UA bankswitching for Gingerbread Man ROM.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1823 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Basically, the OpenGL class can use functions from several different
versions of OpenGL (1.3 and 2.0+), and all sections of code need to
be wrapped in IF statements to make sure we don't use a function
pointer that is NULL. Basically, this means that all GLSL/2.0+
stuff needs to be wrapped in 'if(myTvFiltersEnabled) ...'.
This actually lays the groundwork for the next feature I'll be
adding (frame buffer objects), since those require yet another
level of OpenGL functions that may not be available everywhere.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1816 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
they're properly loaded and saved in the config files. The code to
correctly load strings containing backslashes was already there over
7 years ago, and I deactivated it and never even noticed. That must
be a new record for a long-standing bug :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1812 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
vs. GLSL stuff. This should allow users who don't have GLSL to still
use the OpenGL renderer. Related to this, added a stub for GL FBO,
which I hope to add for a future release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1810 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
no need for these characters to ever be present, and having them there
really causes problems in parsing that would be best avoided.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1777 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
shown within the UI use the '~' symbol whenever possible. This means
that paths from the settings file are now truly relative; change your
home directory, and the settings file will still work (it no longer
contains absolute path names).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1776 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
more sense, as it isn't a double-negative any more).
Made PropSet::getMD5() more explicitly return a boolean indicating if the
properties were found, vs. having a CartName of 'Untitled' indicating that
it wasn't found.
The file being used by Stella in multi-file ZIP archive is now shown in
the window title, vs. showing the name of the ZIP file itself. Related
to this, a file with an extension of 'rom' is now valid inside ZIP
archives.
Updated documentation for bankswitch types, more clearly indicating which
ones support autodetection and the debugger.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1775 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
as if they were 32in1 carts, in that you have to do a on-off power cycle to
switch between each ROM.
Updated ROM properties for the aforementioned BS types, and fixed some
others (SWOOPS, etc).
Added PERL tool to scan a snapshot directory and report any extra and/or
missing snapshots.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1774 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Added OpenGL info to the TV effect tab of the VideoDialog, so users
can see why the effects aren't available if OpenGL is not sufficient.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1772 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
start with game 0 (as if it's been unplugged for some time), but reloading
the ROM with Ctrl-r will cycle through each game (emulating a power-cycle).
Fixed crash when specifying a directory on the commandline; only files
are supported as ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1770 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
not by actually copying pieces of ROM, but by addressing different
parts of the ROM with an appropriate mask. This fixes a patching
bug I just found, whereby patching one part of the ROM wasn't
propagating it to the rest of the image.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1769 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Because the version was always being returned as 0, the TV effects were
always disabled, even on hardware that could support them.
Creation of OpenGL video mode is now more robust. If it fails for any
reason, fallback to software mode is now done (and a message stating
that it happened). This still won't protect against the operating
system lying to Stella and saying OpenGL support is really available
when it isn't, though.
Added support for ROMs smaller than 2K. These are still treated as
2K ROMs, but have their contents mirrored appropriately.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1768 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Randomized value placed in accumulator after exiting the SC BIOS for
SuperCharger ROMs. This should fix issues in Dragonstomper, where it
seems the randomization of its items depending on a random accumulator
value.
Re-added '-fastscbios', and when enabled, it completely skips
the emulation of SC BIOS progress bars (previously, the bars were
simply sped up). This defaults to off, for more authentic emulation.
Related to this, added a UI item in VideoDialog to enable/disable it.
Thanks to Eckhard Stolberg for advice on the SCROM, and how to
modify it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1763 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
wrote this back in 2000 or so, after I had just finished an algorithms
design course, and insisted on coding my own ADT. I've come to realize
that in most cases, rolling your own is just a waste of time :) Related
to this, the 'listrominfo' commandline argument now correctly shows all
the ROM info built in to Stella internal database.
Bumped version # to 2.8. I just need to check out OSX, and then we
should be ready for the next release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1757 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Add Shift-PageUp/PageDn for scrolling with the keyboard in DataGridWidgets
(most useful with the new RAM UI having multiple banks of RAM).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1755 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba