Commit Graph

1820 Commits

Author SHA1 Message Date
stephena 3c5cc40e08 OK, this looks like a huge update, but it's only because of some Serializer
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
2009-08-05 16:05:34 +00:00
stephena 85dcb63483 Removed Deserializer class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1848 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-04 18:29:30 +00:00
stephena d5bf1494da Added support for 6K Supercharger ROMs. Currently, the only one I know
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
2009-08-03 21:18:16 +00:00
stephena 2537291ec8 Updates TODO with current info, placing the things likely to be done soon
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
2009-08-02 20:54:42 +00:00
stephena 5e4b690d8d Well, it's finally here. First pass at the new TIA code, which improves
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
2009-08-02 15:34:43 +00:00
stephena c457cea658 Added missing properties entries provided by Buzbard.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1844 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-31 23:12:24 +00:00
stephena ff52eaca98 General cleanup of the TIATables code, including better internal
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
2009-07-31 19:01:20 +00:00
stephena 26749a4c36 Updates bankswitch schemes 'FASC' and 'MB' to their more common names
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
2009-07-27 17:17:07 +00:00
stephena 64bec23f72 Added '2in1' bankswitch type, and updated properties for a ROM that uses
this BS scheme.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1841 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-17 11:25:14 +00:00
stephena a568aaa007 Damn, the first commit and already I forgot something. This is going to be
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
2009-07-16 12:30:44 +00:00
stephena 6b4cc11b03 First partial commit of the new TIA code. This ones fixes collision
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
2009-07-16 12:17:42 +00:00
stephena c7ab0992db Added properties info for Gingerbread Man ROM.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1837 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-13 17:41:35 +00:00
stephena 7be6be8263 Added 'Go to previous directory' event to the UI. Currently, this is
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
2009-07-12 22:09:21 +00:00
stephena ece68bb0b6 Final updates for 2.8.4 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1833 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-04 14:21:02 +00:00
stephena 906659367f Updated 0840 bankswitch autodetection for Toyshop trouble, thanks to
Thomas J.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1832 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-03 22:09:19 +00:00
stephena cae659abd3 Oops, forgot to credit Trebor in the HTML docs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1827 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-03 16:50:21 +00:00
stephena b6c51181d0 Final updates for 2.8.4 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1826 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-07-03 16:38:11 +00:00
stephena 22544e1f00 The smallest addressable page size in Stella is currently 64 bytes,
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
2009-07-02 17:58:48 +00:00
stephena 594954789c Surprise, surprise, Microsoft doesn't support the C99 standard,
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
2009-07-01 16:04:28 +00:00
stephena 8a8d04031a Converted OSystem::getTicks() to use 64-bit integers. This should fix the
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
2009-07-01 14:39:01 +00:00
stephena 1c829fc425 Final changes for 2.8.3 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1820 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-25 11:00:34 +00:00
stephena cc7468880c Bumped info for next point release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1819 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-25 10:24:51 +00:00
stephena 996ad3431c Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1817 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-24 11:29:07 +00:00
stephena 79fdcb3480 Fixed incorrect initialization of certain OpenGL function pointers.
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
2009-06-24 11:28:07 +00:00
stephena 1275c25681 Updated OSX project files for 2.8.2 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1814 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-23 10:40:34 +00:00
stephena f3c2a2c6c1 Bumped info for 2.8.2 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1813 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-22 11:18:25 +00:00
stephena a5d200e6ef Re-enabled entering '\' in various text fields in the UI, now that
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
2009-06-20 22:49:45 +00:00
stephena f3aaf17021 GLSL also depends on OpenGL 2.0, so we check for that too.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1811 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-20 18:02:57 +00:00
stephena 02cbcbd1ea Separated initialization of GL functions for basic functionality
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
2009-06-20 17:46:12 +00:00
stephena 3c33859347 Updated OSX project files for 2.8.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1781 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-19 11:37:41 +00:00
stephena 43c0556f37 Updated documentation for recent Win32 APPDATA changes.
Bumped version info for impending release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1779 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-18 17:38:42 +00:00
stephena 4d9eeae717 Reworked Windows config file locations to be in the users home directory, under Application Data (or equivalent). Also, the '~' character now more properly refers to the actual home directory of the user, and not their 'My Documents' folder (ie, it refers to their PROFILE name). Config files are now by default stored in APPDATA, which for XP and Vista is ~/Application Data/. The ability to override this with basedir.txt is still available, but not recommended. This is the *LAST* time the Windows config file locations will be changed, so everyone will have to get used to it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1778 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-18 17:08:09 +00:00
stephena bf85802526 Disallow backslash and double-quote in all editable input fields. There's
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
2009-06-18 13:54:34 +00:00
stephena 3aed9378a8 Updated filename handling so that paths saved to the config files and
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
2009-06-18 13:07:51 +00:00
stephena f271830ed4 Changed 'exitlauncher' commandline argument to 'uselauncher' (which makes
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
2009-06-17 17:04:55 +00:00
stephena 9b7963d3f3 Added support for 4IN1, 8IN1 and 32IN1 bankswitch formats. These all act
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
2009-06-16 17:17:33 +00:00
stephena 346fbb1cc0 Properties update for Swordquest.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1773 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-15 17:55:34 +00:00
stephena 3ef83843b5 Added autodetection for X07 bankswitching scheme.
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
2009-06-12 21:47:03 +00:00
stephena 3f7a38e910 Added md5 for another 32-in-1 ROM I found.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1771 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-12 20:33:07 +00:00
stephena 465dc36476 Added native support for the 32-in-1 cart. Loading this ROM will always
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
2009-06-12 18:44:32 +00:00
stephena 5d29bc0e2d ROMs smaller than 2K in the Cart2K class are now mirrored correctly,
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
2009-06-12 14:04:18 +00:00
stephena 664d4e5d1a Fixed issue with incorrect reporting of OpenGL version number for Windows.
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
2009-06-12 13:29:26 +00:00
stephena cfba3449b4 Minor fix for compilation in MinGW.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1766 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-09 21:39:27 +00:00
stephena 111ae9185f Well, it looks like I can squeeze this into 2.8 after all.
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
2009-06-09 14:27:21 +00:00
stephena 80a3ae83a3 And yet ANOTHER file I forgot to update. Arrgh!
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1762 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-08 17:31:39 +00:00
stephena d3dc9c470a And yet another change I forgot to make. At some point I'm going to
have to automate this ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1761 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-08 17:15:49 +00:00
stephena d32a34e9b0 Final OSX updates for the 2.8 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1760 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-08 17:10:35 +00:00
stephena 44f04fb826 Oops, forgot to include this in the Changelog.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1758 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-08 16:54:56 +00:00
stephena 08bc2386f4 Updated PropSet to use C++ map instead of homemade BST code. I originally
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
2009-06-08 16:50:14 +00:00
stephena e34594d1b7 Update to documentation for 'exitlauncher' command.
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
2009-06-08 13:13:05 +00:00