Commit Graph

2086 Commits

Author SHA1 Message Date
stephena 8f8095073b Better emulation of the starfield effect in Cosmic Ark and Stay Frosty.
The movement was already correct, but one of the missiles has weird
behaviour caused by 'confusing' the TIA.  This results in a four
colour-clock wide missile with the third pixel turned off.  I don't
know if this is entirely accurate, but I do know that the snow in
Stay Frosty now looks exactly the same in emulation as is does on a
real system, so I'm content to leave it for now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1866 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-28 21:53:31 +00:00
stephena bf83ffde53 Added Homestar Runner ROM to the properties database, now that Stella
properly emulates it.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1865 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-28 13:01:12 +00:00
stephena 1dbcdbdc36 The state file format was broken again with the changes to the TIA in
the last commit.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1864 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 23:35:34 +00:00
stephena 933ecd6cd7 Fixed bug with the last commit; the M0 and M1 graphics were completely
screwed up by my placement of the 'mmr' logic.

Added StayFrosty ROM info to properties database.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1863 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 23:30:30 +00:00
stephena 67fec652b0 Updated TIA code to emulate the 'widening' part of the Cosmic Ark
starfield effect.  More research is required in this area.

Large update to exception handling throughout the codebase.  It seems
that in many cases, the correct 'catch' block was never being called.
I never see exceptions thrown very much, so that area doesn't get much
testing.  But I guess it's good that Stella doesn't generate many
exceptions :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1862 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-27 22:59:14 +00:00
stephena a13fad2d0f Only add states to the rewind/undo list with actions triggered by the user;
don't add one when the console is first created.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1861 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-25 14:33:11 +00:00
stephena ddc77bd7e7 Added button for rewind to the debugger, next to the buttons which it
applies to.

Bumped version # to alpha3.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1860 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-25 12:46:56 +00:00
stephena 28f347cf86 It seems that in Windows, stringstreams must be initialized with data immediately after creation before they can be used. This really doesn't make sense to me, but at least it allows the rewind code to work. I hope this fixes similar issues in OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1859 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-24 23:42:01 +00:00
stephena ef5c5de54f Fixed scanline => framerate calulation bug for those ROMs that generate
many more scanlines than a real TV would allow.  This fixes both graphical
corruption and slowdowns in Q-Bert ROM (which contains code to do a tight
loop extending VBLANK time, in effect generating a 'frame' with 1000's of
scanlines).

First pass at a method to determine the first 'relevant' scanline of
a TIA frame.  This isn't easy, because there are many conditions
for this to occur.  The eventual goal is to eliminate Display.YStart
tweaks in the properties file, and have the TIA code itself figure out
the best value.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1858 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-24 15:56:01 +00:00
stephena c962560606 Updated 'Home Run' ROMs to automatically swap the joystick ports, since
Player0 needs to use the joystick in the right port.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1857 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-23 17:24:11 +00:00
stephena 000460306c Added "Fixed Debug Colors' mode, similar to the functionality in the
no$26K emulator.  Basically, when this is enabled, the COLUP0, COLUP1,
COLUPF and COLUBK registers are locked to hardcoded values.  This can
be used to clearly show which registers are drawing which part of the
TIA display.  For now, the colours are locked as they're shared on
a real system (so P0 and M0 are locked to the same colour).  Future
versions may separate these shared registers for even more clarity.
This functionality is toggled with the 'Alt-Comma' key combo.

Updated the state handler to reject loading state files older than
this version, since the TIA internals have changed.  This will be
done each time the TIA code changes from this point on.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1856 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-23 17:15:43 +00:00
stephena 3006419014 Scaled back some TIA changes from the previous alpha release. The changes
are too invasive to fix right now, and I haven't researched what the
correct route should be.  Basically, Stella doesn't properly emulate the
behaviour of writes to RESxx and NUSIZx while graphics are currently
being drawn.  The tweaks currently present restore functionality to the
2.8.4 release, but are still incorrect in some ROMs (Bumper Bash and Pole
Position).

Reworked 'object disable' mode in the TIA class.  It should now be
slightly faster, and correctly disable objects in all cases
(previously, it was possible for some objects to be enabled depending
on the state of other objects, even when they were specifically
disabled).

Changed NUSIZx descriptors in the debugger to more clearly indicate
what's going on.

Cleaned up TIATable enum's, and eliminated duplication enumerations in
different parts of the codebase.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1855 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-21 14:29:59 +00:00
stephena 339956b144 Updated OSX project files for recent class changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1853 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-07 14:33:49 +00:00
stephena 35ad585c48 Modified -fullscreen commandline argument to accept an integer instead
of a boolean.  It now accepts value '-1' to mean 'completely disable
fullscreen mode switching'.  This was added because some systems with
buggy video drivers can't handle fullscreen mode, and accidentally
trying to do so can lock up such a system.

Fixed fullscreen/windowed switching wrt grabbing the mouse.  Sometimes
switching from fullscreen to windowed mode had the cursor trapped in
the window, even if grabmouse was disabled.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1852 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-07 11:45:14 +00:00
stephena fe7dcb20db Updates Visual Studio project files for recent class changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1851 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-05 20:56:20 +00:00
stephena 82268325a0 Added '-joyallow4' commandline argument and associate UI item in
InputDialog/Virtual Devs to allow all 4 directions to be pressed
simultaneously on a virtual joystick.  This support was always present
for 'Bumper Bash', but it can now be enabled/disabled for any ROM.
Note that the setting is ignored for 'Bumper Bash', as that ROM
requires it to be always turned on.

Fixed debugger rewind issue from last commit; the rewind list wasn't
being properly reset when entering the debugger or selecting a new ROM.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1850 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-05 20:33:40 +00:00
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