Commit Graph

227 Commits

Author SHA1 Message Date
stephena fba78252d5 More codebase cleanup.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1909 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:33:06 +00:00
stephena 8b14e0eef8 On second thought, why do we even need M6502 files in a separate directory?
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1908 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:32:20 +00:00
stephena 3972f0eca5 Reorganization of the M6502 classes; I didn't see the purpose of having
them in under src/emucore/m6502/src, and bspf under that again at
bspf/src.  It just made searching for classes that much harder.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1907 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:07:37 +00:00
stephena d8bca7a519 OK, this is the first pass at some love for the OSX port, which doesn't
get nearly enough attention.  This is about to change, since I'm moving
to using it full time at work (still Linux at home though!).

The 'Control' key modifier for OSX is now the actual Control key, just like
on every other platform (instead of Command).  The 'Alt' key modifier for
OSX is now the Command key (instead of Shift-Cmd).  Maybe in the past it
made sense for this, when keyboards weren't the same between platforms, but
that's no longer the case.  And since Stella requires at least OSX 10.4,
everyone using it from this point on probably has newer hardware.
Still TODO is consider a few special keys for OSX (minimize, hide, etc).

Updated documentation for new key combos, as well as the recent build
and debugger improvements.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1906 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-13 17:35:42 +00:00
stephena e2f58f8a5f Oops, forgot to account for compiling without debugger support.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1902 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-11 20:55:37 +00:00
stephena 19f146038d Added more accurate functionality for the _rwport debugger command. It now
properly distinguishes between intermediate reads which are part of writes,
and ordinary reads.  In the former case, only a read which has a different
address than a write is flagged as an error; intermediate reads acting on
the same address as the corresponding write are considered normal, and won't
trigger a break.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1901 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-11 20:53:57 +00:00
stephena 00f8ffb686 Revamped the result on floating pins for TIA reads. Previously, this was
controlled by 'tiafloat', which has now been removed.  Now, all
undriven pins take on the last value on the databus.  This fixes a bug
in those reads where bit 6 or bits 6 & 7 are also undriven (previously,
these bits would always be zero, and only bits 0-5 were from lastdatabus.

Added new commandline argument 'tiadriven', which defaults to false.
In this default case, relevant bits take on values from the databus.
If true, relevant bits still take on databus values, but some are
randomly driven high as well.  This helps to expose bugs when
developers assume the values for undriven/floating bits.

Added 'uimessages' commandline argument and associated UI item.  When
disabled, messages which are normally shown in-game are disabled.
Certain messages which indicate a serious error are still shown, however.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1900 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-10 20:12:50 +00:00
stephena 82a87e6edb Updated Win32 port for recent Cart classname changes.
Fixed BSPF_ARCH macro to correctly detect i386 and x86_64 in Windows.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1898 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 20:29:10 +00:00
stephena f3282d299c CPU architecture info is now shown in AboutDialog, next to the build
version and SDL library.

Bumped version # for test builds for AtariAge members.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1897 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 18:42:12 +00:00
stephena 54a5d77542 Added '_rwport' debugger directive, which can be used in conditional
breaks to test whether an illegal read to the write port of cartridge
RAM has occurred.  It can be used as follows:

  breakif {_rwport == 100}   // break if read was done at wport address 100
  breakif {_rwport}  // break if read was done at *any* wport address

This currently works for all extended RAM carts that worked before.
Specifically, 4A50, DPC, AR and possibly several others aren't supported
yet.  More testing is required.

Renamed CartFASC and CartMB to CartFA and CartF0, respectively.  This
naming now matches that used in other emulators.

CartMC now properly handles read from write port, by using random
values instead of just zero.  However, no test ROMs are available for
this scheme, so there may still be issues.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1896 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 16:46:10 +00:00
stephena 3df721e0be Reworked 'read from write port' emulation for carts with extended RAM.
The values written and returned in such a case are now more accurate,
and are a combination of the previous databus value and randomization
(the latter emulating the randomness of Z-state bits).  This provides
more accurate emulation than before, where zeros were used instead.
In particular, types 3E and E7 are now working correctly for the first
time.  Thanks to Batari for suggestions in this area.

Moved random number generation from Cartridge to System class.

The Subversion build number is now shown in the AboutDialog box.
Still TODO is add architecture information (i386, x86_64, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1895 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-08 01:39:05 +00:00
stephena 5ce401e6a4 Reorganized random number generation code in each Cart class. There
was duplicate code in many Cart classes and in M6532 class, and since all
these classes are subclasses of Device, it made sense to move the
functionality there instead.

Carts 3E and E7 now return a random value when attempting to read from
the write port.  Still TODO is determine what happens to the value at
that address (is it randomized or zeroed?).  Thanks to Batari for
suggestions and sample code.

Fixed bug in E7 carts when entering the debugger; bankswitch was being
inadvertantly triggered which caused emulation to fail.

Overall, I need to figure out exactly what happens when reading from
the write port for all carts with extended RAM.  There are two things
to consider: what value is written to the address, and what value
is returned.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1892 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-05 00:41:44 +00:00
stephena aaf30c2f28 First pass at showing runtime info in the About window. This is useful for
determining whether we're running in 32 or 64-bit mode on a particular
system (especially in OSX, where the same app could contain up to 4 actual
builds).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1889 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-10-25 22:34:40 +00:00
stephena f283052d36 Oops, fixed typo in Console output.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1885 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-14 19:33:36 +00:00
stephena 2fa8b1ee70 Added ability to dynamically toggle TIA collisions for the 6 graphical
objects.  These actions are tied to the same keys as for toggling the
objects themselves, with the addition of the 'Shift' key.  For example,
toggling the P0 object is 'Alt z', and toggling P0 collisions is
'Shift-Alt z'.  Note that disabling an object will obviously disable
its collisions as well.  Still TODO is work out how these keys map on
OSX; the Shift key is already being used for something else.

Reverted Cosmic Ark 'starfield effect' to match the descriptions
given in the 'Stella 3.0 released' thread on AtariAge.  It seems the
system I tested this on has an Svideo mod board that changes the
output from a normal console.

Bumped state file format header, since the TIA internals have changed
again.  As well, bumped version # to 3.1_svn.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1884 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-14 19:22:34 +00:00
stephena bb6d7856aa Some final changes for the 3.0 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1875 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 22:08:40 +00:00
stephena 03a854f206 Bumped version number to 3.0_rc. I won't have time to complete the
debugger disassembly improvements, so it will have to wait until 3.1.

Updated various files for impending 3.0 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1874 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 18:00:31 +00:00
stephena 616ce6039a Added toggling of HMOVE blanks to the TIA, accessed with the Alt-m key.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1872 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 14:02:23 +00:00
stephena 42f3052fbf Added TIA support for a '7-color' register model. This means we can see
all graphical objects in different colors in fixed debug colors mode,
even those that normally share a color register (ie, P0/M0, P1/M1, etc).

Removed TIA::updateFrameScanline, an unwieldy 600+ line function.  It
was useful as an optimization measure when Stella was first written,
but at this point I think it's more trouble than it's worth.  Removing
the code not only makes the TIA class much smaller and easier to
understand, it also fixes some graphical bugs in fixed debug colors
mode (bugs that probably wouldn't have been found otherwise).  Next on
the chopping block are the various 'masks', or at least the alignments
(which cause the arrays to be 4 times larger than they need to be).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1871 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-08 22:44:09 +00:00
stephena ea0e137a27 Modified TIA overscan code to only blank the screen when overscan turns to
normal scan.  Previously, the blanking was done each frame, but the new
way more accurately emulates what happens on a real system.

Added a few tweaks for the properties database.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1870 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-06 23:27:29 +00:00
stephena a7da944b36 Simplified TIA class by removing 'greying' functionality to the debugger,
where it more properly belongs.  The greyed values are now from PAL
color-loss, which is also calculated for NTSC (though it's never actually
used in NTSC mode for regular rendering).  This also fixes problems with
debugger state files being saved with greyed values, and sometimes having
the frame greyed twice (hence making it impossible to see).  It should
also result in a slight speed increase, since some code has been taken
out of the TIA rendering fast path.

Added electron beam indicator the the TIA output in the debugger.
Basically, it's just a small square indicating where drawing will
start for the next instruction.

Fixed TIA output in the debugger so that right-clicking and selecting
'fill to scanline' actually works without first having to manually
enter partial frame mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1868 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-01 11:54:59 +00:00
stephena 33130a78f0 Updated 'Fixed Debug Colors' for PAL mode to more closely match the ones
in NTSC.

First pass at disassembly of ZP RAM in the debugger UI.  For now, the
entire range is disassembled, with no regard for alignment (so the PC
won't necessarily always line up with the disassembly).  Also, changes
to RAM don't yet trigger a re-disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1867 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-30 19:37:10 +00:00
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 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 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 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 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 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 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 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 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 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 eed5450a20 Fixed GCC 4.4 warning.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1753 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-06 14:24:38 +00:00
stephena 2bc2ff639c Handle 'read from write port' functionality for CV carts. Still TODO are
the ones that bankswitch in RAM, since I don't know what should happen there.

Added 'exitlauncher' commandline argument, which specifies the functionality
of the 'Exit to launcher' action; should exiting a game actually go back to
the launcher, or exit the program entirely.  Also added a UI item in UIDialog
for this.

Reworked the fullscreen/windowed handling in FrameBuffer, simplifying the
logic for determining whether the SDL surface is actually in fullscreen
or not.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1752 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-05 14:05:23 +00:00
stephena f76af14b25 The tools used to create DefProp.hxx and GLShaderProgs.hxx now include
the Stella header/disclaimer, just like all the other source files.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1751 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-04 14:11:33 +00:00
stephena aa2e76c4ea Updated documentation about CRT simulation effects.
General updates to the documentation for people I forgot to include in
previous releases.  Also added websites where applicable.

Update AboutDialog to be more current, showing only those members
currently active in the Stella project and the other teams that have
contributed code.  For more specifics, you should now see the manual.
Basically consolidated all contribution info into one document, so it
has to be kept up-to-date in only one place.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1750 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-04 13:52:10 +00:00
stephena 82325b731c Reworked the extended RAM editing in the debugger, allowing for those
schemes that have multiples areas of RAM.  Converted F4SC, F6SC, F8SC,
FASC to this new functionality.

Added ability to modify extended RAM in 3E, CV, E7 and EFSC ROMs.
Note that these ROMs can swap RAM in and out dynamically, so what
you see in the RAM area won't always be RAM.

Updated debugger CpuWidget; decimal and binary values for SP/A/X/Y
are now all shown at the same time (previously the registers had to
share a decimal/binary view).

Updated debugger documentation for recent additions.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1748 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-03 14:49:42 +00:00
stephena 3280901be9 Added support for accessing/modifying extended RAM (aka SuperChip) from
the debugger RAM UI.  A scrollbar is now present, which can scroll
through each 128 byte 'bank'.  Labels indicate the current readport,
so you can distinguish between different areas of RAM.  For now,
F4SC, F6SC, F8SC, and FASC have been converted, but I'm looking into the
other schemes now.

The RAM UI takes care of all read/write port issues.  From the POV of
the UI, the RAM can be treated as zero-page; translation is done
behind the scene.  Searching/comparing and change-tracking are also
supported.

The 'ram' command in the debugger prompt now reflects all RAM, and
readport/writeport addresses are shown, making it easier to use the
command withot having to look up the offsets.

Debugger width has been bumped to 1050 pixels wide to accomodate the
new functionality.  We'll see how much trouble this causes ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1747 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-02 17:25:14 +00:00
stephena c29a6b26c2 Yet another tweak to the paddle emulation. Game 4 in Casino now works
correctly for the PAL version of the ROM.  I'm still not really
satisfied with the paddle emulation, but I guess it will do for now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1746 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-05-31 17:45:05 +00:00
stephena 136a7062ac Updated ROM properties to RomHunterV5 romset.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1744 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-05-28 10:42:16 +00:00
stephena 79e4e42ae7 OK, this is a BIG commit.
Added CRT simulation as described by Ian Bogost in the AtariAge thread
'CRT simulation for Stella.  This is just the first pass, but things
are working nicely so far (for those systems that can support it).  It
requires at least OpenGL 2.0 with GLSL (GL Shading language).  Added
the commandline arugments 'tv_tex', 'tv_bleed', 'tv_noise' and 'tv_phos'
used to set these various effects, as well as the ability to set them
within the Video Settings dialog.  More documentation is forthcoming
on this.

All bankswitch modes that use SC RAM now act correctly when reading
from the write port (the RAM is erased).

Patching ROMs with bankswitch type 0840, SB, UA and X07 is now working.

Went through all the bankswitch classes and converted multiplication/
division to shift operations whenever possible.  It's a
micro-optimization, but what the heck; every little bit of speed counts.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1739 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-05-25 17:51:52 +00:00
stephena 54a3ddab7a Removed more dead code related to emulating the AtariVox.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1738 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-05-21 22:39:32 +00:00
stephena 6a74dfb863 Repo reorganization: move main Stella files directly into 'trunk'.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1732 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-05-21 12:53:06 +00:00