Commit Graph

3023 Commits

Author SHA1 Message Date
stephena d5ce0042e4 Tweaked the mouse motion detection for invalid values, and bumped version #
for the next point release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2244 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-06-02 19:25:52 +00:00
stephena 670b61a15a Fixed a few compiler warnings, and bumped version # for final release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2240 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-28 14:00:12 +00:00
stephena 87e3a71580 Fix bug with unwanted mouse movement after changing video modes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2239 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-28 01:14:14 +00:00
stephena bc7daa397e Added ability for the debugger to start up in 'fatal error' mode.
This basically shows a messagebox as soon as the debugger starts,
describing the error and offering the choice to continue debugging
or exiting the ROM entirely.

The DPC+ code now catches fatal errors from the Thumb ARM
emulation code and shows it as a fatal error in the debugger.
This means you no longer need to look at the commandline for
this output, and you immediately know that something has
gone wrong.

Added 'exitrom' debugger parser command, which completely exits
from the debugger *and* the ROM, going back to the ROM launcher.

Cleaned up the API a little, rearranging some classes and
adding references instead of pointers.  More work to be done
in this area.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2234 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-26 16:14:46 +00:00
stephena db46773ea1 Fixed compile error WRT printf statements in Thumbulator, and fixed
a potential segfault in CartDPC+.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2233 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-25 19:14:47 +00:00
stephena 5025a21d92 Updated Thumb ARM emulation to log its output instead of printing to the
console (which doesn't exist on every platform).  Also use proper C++
stringstreams instead of C-style arrays (which are evil).  If an exception
is thrown, start the debugger with a fatal error message.  Currently, this
message is simply printed in the debugger info window.  Still TODO is add
a dialog to show the entire input from within the UI, as well as a way
to exit the ROM when a fatal error occurs.

Cleaned up the API a little, adding explicit declarations for when a method
can throw an exception.  Also merged some empty classes directly into their
header files.

Added functionality to the System class for querying whether it has 
been reset while in 'autodetect' mode.  Autodect mode is defined as
when Stella starts and temporarily runs to autoconfigure itself.
Some classes (such as Thumb ARM emulation) need to know this, and
suppress debugging output/throwing exceptions when not running in
normal emulation mode.

I hope to have a new release done by the end of this week, or the end
of the month at the latest.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2232 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-24 16:04:48 +00:00
stephena 4e6d4cb1c6 Cleaned up some inlines that weren't needed.
Updated documentation with info about 2600-daptor, including
usage and its creator.  Also included more in-depth explanation
for the various controller types.

Errors from the Thumb ARM emulation code are now caught as exceptions,
and thrown to the parent class instead of calling exit() and simply
crashing Stella.  For now, the messages are simply printed and
emulation continues.  This will be expanded to show a detailed crash
log in the debugger, and offer the option to exit the ROM.

Removed most of the menus from the OSX port.  They weren't being
maintained anyway, and most of them didn't work.  I've modelled this
on the way other cross-platform OSX programs work (notably, ScummVM).
Basically, there are menus for exit and help, but otherwise you
should use the menuing system in the application itself.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2231 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-10 15:04:19 +00:00
stephena 2da201c4a2 Added controller types 'Paddles_IAxis', 'Paddles_IDir' and 'Paddles_IAxDr',
which are specialized paddles classes that invert the axis, direction,
and axis+direction, respectively.  Updated all applicable ROMs in the
properties database.

Cleaned up the menus in the OSX port; some of them weren't even tied
to anything.  I'm seriously considering removing them all, except for
the Help and Quit items. 


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2230 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-06 19:58:56 +00:00
stephena 264145a939 Huge improvements to paddle and mouse handling:
- mouse can now emulate joystick, booster-grip and driving controllers
 - digital and mouse sensitivity for paddles can now be tweaked
   separately, and have a greater range
 - the mouse now correctly honours its controller setting, and only
   controls a device on one one port (not both at the same time)

Added support for 2600-daptor device.  Credit for creator of device
is forthcoming.  This device is basically an updated Stelladaptor,
with improved handling for paddle data.

Grabmouse functionality is no longer user-definable; the mouse is
always grabbed while playing a game, and released otherwise.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2228 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-05-06 14:29:39 +00:00
stephena a028e5327d Minor cleanup of Event class, removing redundant variable.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2224 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-04-22 18:45:13 +00:00
stephena f8a2e1c47a Updated Linux build script for recent Event class changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2222 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-04-22 18:26:08 +00:00
stephena e85d810032 Updated OSX project files for recent PNG changes.
Speed up the Event class by making all members inline.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2221 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-04-22 18:21:46 +00:00
stephena 72185d0848 Cleaned up formatting in Thumb ARM emulation code.
Wrapped THUMB ARM emulation in a define, so that it can be excluded
from builds.  To enable it, the 'THUMB_SUPPORT' directive must be
included in the build process.  This has been added to the OSX
project files, but is still TODO for Linux and Windows.

Removed some obsolete include paths from the OSX project files,
dating back about 5 years or so.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2215 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-04-16 16:53:41 +00:00
stephena bcb8dfbc2b First pass at fixing formatting issues in the ARM emulation code.
Also fixed warnings when compiling on 64-bit compilers.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2214 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-03-09 14:21:32 +00:00
stephena 4d16be1049 Some last minute ARM-emulation changes for the 3.3.01 test release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2212 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-31 03:07:52 +00:00
stephena a71158e1ce Some more changes to the DPC+ ARM emulation code.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2208 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-23 14:16:02 +00:00
stephena 935fd4df3f Added initial implementation of ARM emulation to the DPC+ bankswitching
scheme.  However, it doesn't seem to be working yet ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2204 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-16 21:23:03 +00:00
stephena f2427a6cbc Applied more DPC+ fixes from Batari, and added properties info
for Grandmas Revenge ROM.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2203 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-09 15:21:23 +00:00
stephena fcb12065ce Applied some updates to the DPC+ scheme, provided by Batari.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2202 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-08 16:02:00 +00:00
stephena c50a7efdd1 Added 'Toyshop Trouble' ROM info to the properties database, with
permission from the game author.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2201 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-01 22:26:34 +00:00
stephena 5d4de8291e Added mouse-as-joystick code from z26. This basically allows the mouse to
act as a controller in joystick-only games.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2200 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-01 19:25:27 +00:00
stephena 3339dc276d Updated copyright info for 2011. Happy New Year to anybody reading
these logs :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2199 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2011-01-01 16:04:32 +00:00
stephena f1bb09d8ac Updated internal ROM database with info from RomHunter 6 set.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2195 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-12-19 23:51:16 +00:00
stephena 595e7dc41f Some last minute final changes before the 3.3 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2188 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-12 18:54:08 +00:00
stephena ba1019a308 Updated documentation for missing commandline arguments.
Added infrastructure to System and Device classes to deal with CodeAccessBase
even when the bankswitching scheme bypasses the normal System::PageAccess
way of reading ROM space.  This allows bankswitching schemes 2E, AR, FE and
4A50 to support emulation core 'hints' for more accurate disassembly.  The
only scheme not supported now is MC, which isn't really working anyway (I've
never actually had a test ROM for this scheme).

It's getting close, folks ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2184 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-11 22:24:51 +00:00
stephena c9ab109524 Converted several 'toString' methods to use stringstreams instead of
multiple concatentation of strings.  This should be faster, or at least
lead to less string constructor calls.

Output of 'ROW' directives in the disassembly now shows only 8 items per
line, instead of 16.  This allows to see all the bytes without having a
'...' in between.  A future release may customize this to the size of the
output area.

Fixed output from debugger 'disasm' command to properly align different
directive types and show GFX and PGFX output.

Bumped state file version to 3.3 final, since there are no further
changes to the code that will break the file format.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2183 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-11 16:46:41 +00:00
stephena 7558f87adb And apparently, it's not the last time the file will change. Arrgh :(
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2179 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-10 14:37:44 +00:00
stephena 9adafb67ae Hopefully, this is the last time this file changes because of a commit.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2178 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-10 14:35:50 +00:00
stephena 277f034e89 Added register tracking for ORA, TSX and TXS. More testing is required
for these opcodes.

The 'data source' in the debugger CPU area now also shows the SP register,
since it's used for TSX and TXS.

Bumped version # for another test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2177 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-10 14:01:41 +00:00
stephena de67cc34fe Fixed M6502.ins file so that every change in revision # doesn't require
a new commit.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2176 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-09 01:17:27 +00:00
stephena c319e2ba82 Added CPU register tracking for illegal opcodes LAX, TAX, TAY, TXA, and TYA.
Still TODO is add support for PHA, PHP, PLA and PLP, and to somehow track
accesses that are stored in zero-page RAM first.  These latter items may
end up being pushed after the 3.3 release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2175 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-08 22:25:19 +00:00
stephena c3845314e4 Latest changes to M6502 m4 file.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2173 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-07 23:00:24 +00:00
stephena 773092142e Added rule for recompiling the M6502.m4 script to the Makefile, because I'm
tired of doing it manually every time it changes.

Tweaked the handling of JSR, RTI and RTS commands, so they don't erroneously
mark associated addresses as CODE when in fact they're never actually
executed.

Several parts of the Distella code were marking areas as DATA, even though
it depending on knowing the values for the X and Y registers (which it
doesn't, as it's a static analysis).  As such, these areas are now marked
as ROW instead, since that's as precise as a static analysis can do.  The
processing blocks are left there, though, in case Distella is improved in
a future release.

All the above changes allow for better disassembly with less
'false positives' (ie, areas marked as CODE or DATA when they really aren't).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2172 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-07 22:52:42 +00:00
stephena b756f8c14a Fixed several errors/crashes when attempting to open a window larger than
the given screen.  This is allowed in windowed mode, since the window
manager normally takes care of it.  In the case of fullscreen mode, however,
it is never allowed, and an error message is shown.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2169 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-07 16:19:26 +00:00
stephena e8b080551f Reverted grouping characters for multi-character debugger prompt commands
to use curly braces {} instead of apostrophes.  This matches the
functionality from older releases.

Fixed debugger prompt messages to show correct info when opening
various files (config files, autoexec, etc).

The debugger 'type' command now accepts a range of values.

Reverted handling of ROMs that aren't in the internal database;
they're inserted with their extension again, just as in older
releases.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2168 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-04 19:29:12 +00:00
stephena efcb7ffd43 Potentially fix a refresh problem in OpenGL mode, whereby the screens
weren't being flipped after a refresh.  This could be the cause of a
recently reported problem with fullscreen OpenGL mode 'bleed-through'
of the desktop.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2165 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-27 14:07:52 +00:00
stephena 3011aa7d12 Addresses directly after a relative branch should not be marked as DATA
in the emulation core, since at that point it's unknown what they are.
I suspect there are other places in the core where this is being done,
so I need to go over the entire M6502.m4 file again.

In Distella, when tentatively marking an address range as CODE, stop
when encountering the first address marked as DATA/GFX/PGFX by the
emulation core.  This is required since Distella will happily disassemble
CODE as far as possible, but addresses specifically marked as
DATA/GFX/PGFX obviously indicate the CODE range is finished.  This is
also why it's so important to correctly mark areas as DATA; the
Distella algorithm depends on accurate information to know when to stop.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2163 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-24 14:55:42 +00:00
stephena bea8ac0ffd Properly implemented an hierarchy wrt marking an address in the disassembly
in a consistent way.  Directives set manually have top priority, then the
results from a dynamic analysis (aka, from actually running the code), and
finally from a static analysis (aka, Distella itself).

Sometimes Distella will mark a section as CODE even if it hasn't been
marked as such dynamically.  This occurs after a relative branch, which
Distella has no idea how to evaluate.  It's possible that the code will
be executed eventually, but also that it will never be executed.  As such,
these lines are marked with a '*', indicating that disassembly results
are tentative.  If you get weird looking disassembly for these addresses,
it's probably a hint that it isn't really code at all.

PC addresses in the disassembly labels are now aligned with labels, and
shown in a lighter color.  These can still be toggled on and off.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2162 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-23 20:57:31 +00:00
stephena ccf6227b9d Data addresses used in peek operations should be exposed to the debugger,
whether or not they're in cart space (aka, above $1000).  Other parts of
the code can then choose whether to use them, if desired.  This fixes a bug
in the 'Data src' output in the CPU area of the debugger, whereby addresses
were zeroed if they resulted from addresses below $1000.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2158 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-21 21:16:55 +00:00
stephena 8cb6a83512 Reworked M6502 detection of debugger GFX sections, by moving the actual
detection and marking of those areas into the TIA class itself, specifically
at the location of the write.  In other words, there's no longer an IF
statement executed for every STx opcode; the marking is done directly
within the write to GRPx or PFx, so extra code is only executed when
actually storing to those locations.

Fixed several cases of opcodes marking an area as CODE when it should have
been DATA.

Added output to the CPU area of the debugger for displaying the source
address for loading data into the A/X/Y registers.  Note that these are
only modified when actual addresses are used, so immediate and zero-page
mode will show addresses as zero (meaning that no address was involved
in retrieving the data).

Tweaked console font to better diffentiate the disassembly output between
graphics for players and graphics for the playfield.

Bumped state file format because of changes to M6502.  This means old
state files will be broken.

Bumped version # for next test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2157 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-21 21:01:00 +00:00
stephena 0388ab89e5 Added a new directive called PGFX, used for playfield graphics (the
previously defined GFX directive is now used for player graphics
only).  The 6502 core tracks each of these separately, which provides
for more accurate disassembly.

Modified debugger font and disassembler to show GFX and PGFX with
special characters, instead of using 'X' as Distella does.  This also
allows gives much more informative disassembled outout.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2156 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-21 17:46:23 +00:00
stephena 7411867290 Decided to take a little break from the debugger stuff, and clean up
the various header files.  Basically, I'm following advice from
Effective C++, and including only what's absolutely necessary.  For
definitions that don't need to be included, the designation 'class xxx'
is used instead.  This could potentially lead to faster compile times.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2155 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-18 18:39:57 +00:00
stephena 2f11619e78 The emulation core now tracks writes to PF0/PF1/PF2 as well as GRPx,
marking them as GFX.  Still TODO is somehow differentiate these (based
on block, colour, etc).  Also requires testing to see if this slows
down the emulation too much.

Removed un-implemented debugger console commands to query the last
addresses used in the A/X/Y registers, since they're going to be added
to the debugger UI itself in the CPU area.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2153 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 23:32:37 +00:00
stephena e8c91c7876 Fixed infinite loop in Distella; a section of code needed to use 32-bit
values instead of 16-bit.

Fixed compilation of System class and M6502 disassembly tracking when
compiling without debugger support.  In this case, the tracking is not
done, and all related operations are completely #ifdef'ed out (resulting
in no extra speed/memory usage at all).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2152 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 23:06:37 +00:00
stephena 82bae93337 Changed GFX tracking stuff in M6502 m4 script to #defines instead of
embedding actual code.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2151 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 15:11:10 +00:00
stephena 47f7be341e Immediate mode peek commands shouldn't have the operand marked as CODE.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2150 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 14:51:48 +00:00
stephena 3ec26d3a29 First pass at tracking GFX sections within the emulation core. This is
currently done by remembering the addresses accessed on execution of
LDA/LDX/LDY, and marking them as GFX during a zero-page STA/STX/STY.
This is obviously as WIP and required much more testing, but I'm
pleasantly surprised by how useful it is so far.

Bumped version # for AtariAge test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2147 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 00:44:25 +00:00
stephena cb5a943928 Added more 'DATA' hints to the emulation core.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2146 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-10 22:06:54 +00:00
stephena 5624d30d93 The emulation core now tracks access to DATA areas (currently, any address
used as a peek operand).  Still TODO is deal with poke areas, which would
be relevant in carts with extended RAM.

The interaction between the internal tracking and Distella is now much
tighter, in that knowledge gained by Distella is used in the core code,
and vice versa.  This allows the best of both worlds, where the internal
tracking finds stuff at runtime (that couldn't be found in a static
analysis), and Distella tracks potential paths (that haven't occurred at
runtime yet).

Added 'type' debugger prompt command, which basically queries an address
for its disassembly type (CODE/GFX/DATA, etc).

Added debugger commands to query the last address used in an operation
for various registers, but they're only stubs at the moment.

Updated the bankswitch schemes to deal with accesses in and around the
hotspot areas.  Previously, peek accesses in these areas weren't being
recorded as DATA areas.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2145 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-10 20:24:22 +00:00
stephena fa3dc7cc38 Beginning the process of more properly integrating Distella (and disassembly
in general) into the emulation core.  For now, this means integrating the
directive names into CartDebug, and having Distella using those same names.
The new directive names were determined by discussion with Omegamatrix on
AtariAge, and are listed in order of decreasing hierarchy:

  SKIP  (the 'bit' trick to skip over sections of code)
  CODE  (addresses accessible to the program counter)
  GFX   (addresses where data is loaded into TIA GRPx registers)
  DATA  (addresses referenced somewhere in the ROM)
  ROW   (addresses never referenced at all)

The next TODO item is to have the 6502 core set these values during emulation.
This is currently (crudely) done with a true/false setting in System::peek,
where true corresponds to CODE.  This will be extended, so that false
corresponds to DATA.  Eventually GFX will also be detected, by watching writes
to the TIA GRPx registers.  Still to work out is how to detect SKIP sections.
Anything not marked with one of the above directives will be marked as ROW,
which essentially means ROM space that is never used.  This will have the
nice side effect of detecting dead ROM space, potentially leading to space
optimizations.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2143 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-07 22:34:22 +00:00
stephena 4b44dcb948 Added 'showaddr' commandline argument and associated UI item (right-click in
disassembly listing) to show/hide opcode/instruction addresses.

The disassembler now includes hints from current PC location *and* 'code
access points' from the emulation core.  Testing has shown that some ROMs
don't show completely accurate disassembled output unless both options are
used.

Updated most of the remaining bankswitch schemes to use the new 'code access
points' functionality during disassembly, allowing for very accurate
disassembled output.  Note that the more esoteric schemes (AR, 4A50, FE, MC)
are supported for now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2139 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-03 18:19:09 +00:00
stephena 5fe91e2841 Greatly improved the disassembler output, but having Stella keep track of
addresses used as part of code execution (ie, from the PC) during emulation.
This gives Distella much more information than can be determined from a
static analysis alone, resulting in an extremely accurate disassembly.
This also allows to generate very accurate debugger .cfg files.

Not all carts have been ported to this new scheme yet, particularly ones
having extended RAM that can be mapped out dynamically.

Note that this new scheme doubles the amount of RAM used for storing ROM
images, so up to 128KB extra will be used.  There's also a small runtime
check for each instruction executed.  Preliminary testing doesn't show
any slowdowns, but we'll see how it goes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2138 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-03 00:23:13 +00:00
stephena d6a38c8e44 Changed several string invocations to use references instead. For the
Cart class it's simply an optimization, but the Distella change actually
modifies the list of addresses (vs. modifying a copy of the list).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2137 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-30 15:56:38 +00:00
stephena f3483ca8b1 When in 'small' window mode and attempting to open PAL ROMs larger than the
screen size (vertically), the window will open in partially truncated mode,
where the top of the PAL image is cut off.  This normally won't be a problem,
as it's mostly blank space anyway.

App window centering is now honoured when changing video zoom levels, not
just when changing eventhandler states.

Bumped version # for another test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2135 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-21 19:39:30 +00:00
stephena cb6d2cf602 Fixed bug in app window centering, recently addressed in a 3.2.2 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2133 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-17 19:19:25 +00:00
stephena aba64fa8e4 'Center' window functionality should be off by default.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2128 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-09 13:40:15 +00:00
stephena 7f75957e11 When a ROM doesn't exist and is temporarily inserted into the properties
database, it now has its extension removed (.bin, .a26, etc).

Symbol and config files are now loaded when the debugger is first entered,
not when the ROM is actually loaded.  This speeds up ROM loading, since
the user may never need to access these file (ie, they may never enter the
debugger).

The debugger 'loadconfig' and 'saveconfig' commands are now implemented.

Bumped version # for next test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2126 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-06 23:29:05 +00:00
stephena 2d08d4e459 Cleaned up handling of various file paths throughtout the codebase.
Basically, directories are now guaranteed to always end in the path
separator.  Ensuring this makes certain sections of code work faster,
and guaranteeing it allows higher layers of code to not worry about it.

Added 'cfgdir' commandline argument, to specify the default directory
for Distella-like Stella-compatible config files.

Implemented 'loadconfig' debugger prompt command.  It's currently
working great with several test config files provided by Omega of
AtariAge.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2125 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-06 00:17:51 +00:00
stephena 8f68c677d4 Added commandline argument 'gfxformat', also accessible from a right
mouse button context menu in the disassembly listing.  This is used to
set the default display format for GFX data sections (currently, binary
and hex are supported).

Fixed bug in several debugger input areas to accept the '\' symbol.
This symbol is needed when entering data in binary format (it must
prefix the data if the default base for that field isn't binary).

Added 'jump' debugger prompt command, used to scroll the disassembly
to the given address (or there-abouts, if the address isn't valid).

Editing data in the disassembly now won't cause the display to jump to
the current PC.  The display will only move to the PC when it actually
changes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2123 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-05 17:57:21 +00:00
stephena 26b1654aa2 Some minor UI improvements to the InputSettings dialog; renamed the
'Virtual Devs' tab to 'Devices & Ports'.  Updated documentation and
snapshots for this change.

Added Halo 2600 ROM info to internal properties database.

Increased default setting for 'joydeadzone' from 0 to 13.  This means
the default deadzone is somewhere around half the axis range (~16500).

Fixed behaviour of hat events; events weren't actually being turned off
until the stick was centered.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2108 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-21 23:08:44 +00:00
stephena 8b3c0a00a9 RAM should be randomized by default.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2104 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-20 01:02:32 +00:00
stephena 60171fe69c And I always forget something after the final commit ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2101 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-19 21:52:30 +00:00
stephena b2ed949082 Some final changes for the 3.2 release, including documentation updates.
Added 'ramrandom' commmandline argument, used to toggle randomizing or
zeroing or all RAM in the system (both zero-page and SARA).

Disassembler now properly supports all test cases, including rewinding
within the debugger.

Added preliminary support for disassembling from zero-page RAM.

Bumped version # for final release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2100 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-19 21:48:28 +00:00
stephena 0a7726cb9f Fixed bug in handling illegal TIA reads; the value returned should always
'clipped' to the unused TIA bits.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2099 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-16 19:49:32 +00:00
stephena d007c3502f Several big improvements to the debugger:
The disassembler now accepts a range of start addresses and remembers
old entry points, so the disassembly becomes more complete each time
the debugger is used.

Changes to address offsets within the same bank are now supported
(ie, changing from $fxxx to $dxxx within the same bank properly
updates the display).

Re-added ability to manually change banks from the debugger prompt
and the disassembly UI.  This now works correctly with the Distella
code.

Cleanup of the Cartridge::bank(...) API: if a bank cannot be changed,
the calling code will now know about it.  This fixes confusion with
some ROMs, whereby changing a bank in the debugger prompt would print
a success message even if the operation failed.

Note that these changes have broken rewind in the debugger.  Actually,
it only exposes problems that the rewind functionality already had :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2098 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-16 16:41:24 +00:00
stephena 5a89e78fe2 A few UI improvements:
Some messages now use a smaller font, so the UI doesn't look quite
  so monotonous.

  SliderWidgets suppport the mouse scroll wheel to change values.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2097 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-14 01:01:27 +00:00
stephena 764e598536 Fixed debugger 'runto' command; it was case sensitive, so it never
matched anything most of the time.  Also, as this operation can take
a somewhat long time on slower systems, a progress bar is now shown.

Fixed handling of bit 6 in VBLANK TIA register, which is related to
how INPT4 and INPT5 are handled.  This fixes at least one ROM that
should have failed in Stella, but didn't.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2096 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-12 16:55:47 +00:00
stephena 111f40f875 Updated comments on setAppWindowPos, to clearly indicate that the
method is only used in windowed mode.  This eases the requirements
of the method, since fullscreen code need not be added.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2094 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-11 22:51:22 +00:00
stephena 6a5998c684 Multiple events can now be assigned to combo events from the UI. Still TODO
is update the documentation for this.

Fixed bug reported by Buzbard from AtariAge concerning very large images
in the RomInfoWidget being clipped too small.

Reworked 'center window' functionality.  Using the SDL_VIDEO_CENTERED
environment variable was always a hack, and a bug was introduced in X11
OpenGL mode in version 1.2.14.  However, since SDL is now in maintenance
mode and won't be receiving any further updates, we have to bypass it
entirely.  Added infrastructure for OSystem to center the application
window.  For now, only Linux X11 mode is supported.  Still TODO is add
support for Windows.  OSX was never supported anyway.  This also means
that the center window variable no longer requires the application to
be restarted.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2091 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-11 21:53:19 +00:00
stephena 8199dddb6f More work on mapping of multiple events to combo events. The UI is now
present, and it properly loads and presents events from settings.
Still TODO is implement saveConfig(), to send the new events to EventHandler.

Modified ContextMenu/PopUpWidget to honour the 'mwheel' setting when
scrolling with the mouse wheel (previously, it always scrolled at 1 line
at a time).

Updated OSX project files for recent ComboDialog addition.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2090 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-09 17:02:36 +00:00
stephena 497cce6079 First pass at adding a dialog to configure combo events in emulation mode.
It doesn't actually do anything yet ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2089 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-08 23:06:43 +00:00
stephena 091ed8935e More updates to Port B I/O of M6532, to match output from another test ROM
on AtariAge.  It seems the documentation regarding port B is incorrect.
Pins previously defined as input/read-only *can* in fact be set as output,
which are then overridden if the console switches are pressed.

Or at least that's my understanding of it; I'm not entirely sure if this
is correct or not.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2087 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-08 19:14:37 +00:00
stephena 6e3be6ea0d Fixed M6532 issues when handling the 3 unused bits in SWCHB. Previously,
these bits were ignored, and treated as high all the time.  A recently
reported Stella tracker posting noted that these bits could be
configured by SWBCNT to be input or output, and hence used as 3 extra
bits of storage.  This is now enabled.  Because of these changes, the
state file format has also changed.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2085 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-08 12:32:02 +00:00
stephena 044e1aa151 Some cleanups to the event mapping UI and associated functionality:
1)  Added a 'Reset' button to the UI, which resets (to defaults)
the currently selected item.  This is more fine-grained than the actual
'Defaults' button, which resets *all* events.

2)  Rearranged some buttons and resized UI.  There is now a main 'Defaults'
button on the bottom of the dialog, which applies to the currently selected
tab.  This also allows to set defaults for Virtual Devs, which didn't have
such functionality previously.

3)  Added a 'Combo' button to the Emulation events tab.  It doesn't do
anything yet, but eventually will allow to assign events to the 'combo'
events.

ContextMenu/PopupWidget now supports the scroll button on a mouse when
in scroll mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2084 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-03 21:04:58 +00:00
stephena c9cae47787 When in normal resolution mode (aka, >= 640x480), ignore all screen modes
smaller than 640x480.  Basically, the only way to use smaller modes is
on systems that report their desktop to be smaller than 640x480, or by
using the maxres commandline argument to simulate the same thing.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2079 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-29 17:33:07 +00:00
stephena ee43255ea1 Many changes to the UI to fully support the smallest resolution that
Stella can use (320x240).  The app should no longer crash in such
low-res situations.

Various improvements to the UI, adding many finishing touches.  The
text is more descriptive, and the options are somewhat better labeled.
As well, the available options are better presented based on the
restrictions currently in use (ie, if the maximum resolution is very
small, then the high-res resolutions are not shown in selectors, etc).

Added MessageBox to ROM Audit functionality, to warn that it is a
dangerous operation and that a file backup is advised.

Updated OSX build script to not crash when an older image has already
been created.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2076 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-29 15:22:27 +00:00
stephena 6faa9b4b69 Several fixes across the board for better functionality in 'small'
window mode.  Using modes smaller that 640x480 should now work in
all cases when using the 'maxres' commandline argument.  Also, the
lower limit of 320x240 is now strictly enforced in all cases.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2075 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-22 15:41:46 +00:00
stephena 2977801ffa Added ability to use 'combo' events. Basically, these events
are multiple normal events that are called in sequence.  The
infrastructure is in place to use these events, and they're
loaded/saved in the 'combomap' commandline argument.  Still
TODO is add a UI to edit the events (manually editing the
config file is really tiresome).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2074 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-21 17:05:34 +00:00
stephena edb9a28eb1 Added MessageBox class, used to present a small message to the user from
the UI.

Modified the ROM launcher to display a messagebox when running Stella for
the first time (which currently means when the 'romdir' hasn't been set).
This messagebox suggests setting the default ROM directory, and if the
user clicks on 'OK', only then is the ROM directory file browser
displayed.

Reworked some of the event handling methods in EventHandler to save
function calls on every event.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2071 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-19 16:36:37 +00:00
stephena c3bcf47170 Updated internal database with info about several multicart ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2070 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-11 21:47:50 +00:00
stephena 3e7662c478 Fixed bug in loading RGBA PNG images; Stella can only handle RGB data.
Also, fixed a potential future bug where Stella can't handle paletted
images.  Basically, the error handling is now more robust.

Minor rework of the CartF8 class; it now looks the ROM MD5 directly and
decides if it's a 'special' ROM.

Several updates to the built-in properties database, including better
support for each game in the 8-in-1 ROM image.

Fixed crash in TIA handling of the playfield mask; it could cause a 
segfault under certain circumstances.

Fixed bug in prune_snapshots script; it now properly handles directory
names containing spaces in both Linux and OSX (and probably Windows as
well, but this hasn't been tested).

Updated built-in PNG library to the latest version (1.4.3).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2066 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-10 17:12:45 +00:00
stephena 8bf546ce1d Always clear any current events when changing emulation states.
This fixes a bug in exiting pause mode, and 'remembering' the
events that were set previously.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2065 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-09 14:52:03 +00:00
stephena e0376c85d2 Tweaked navigating the UI with a joystick, particularly with analog
axes.  It shouldn't be nearly as sensitive now.

Cleaned up handling of joystick hats, and fixed continuous events
(so that holding down a hat now sends continuous events until the
hat is centered again).

Fixed bug in prune_snapshots script; it didn't work with a snapshot
directory name containing a space.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2062 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-07 14:19:45 +00:00
stephena c3f5aa2810 When starting Stella for the first time (ie, when the ROM directory hasn't
been chosen), a dialog box now appears, asking the user to enter the
default directory.  This directory will appear each time the ROM launcher
is entered, until the user selects a directory.  This will hopefully
eliminate bug reports from users that don't know what to do when first
starting Stella.

Big changes to the manual, separating the necessary, up-front information
from the advanced stuff that can be considered later (or not at all).
Also added more links to ease navigation.  This should make the manual more
readable for those that have complained it's too long.

The setting for TV color type is now 'Color' and 'BW', instead of
'BlackAndWhite', as before.  The old one will continue to work, though.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2059 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-06 15:08:35 +00:00
stephena 78fd3c0c7d Modified joystick axis event handling, so that digital output is always used
when sending axis events to the DialogContainer (ie, all UI-related stuff).
The UI code was originally written with this in mind, and wasn't designed for
analog input.  For normal digital sticks, nothing changes.  For analog sticks,
values are clamped to 3 points (max, min, off), and repeated consecutive
events are ignored.  This (partially) fixes bugs in the UI, where pressing
an analog stick would cause the current selector to move very fast.

Added repeat mode for joystick hats, similar to joystick axes (so holding
down a hat will cause continuous events to occur.  More testing is
required for this, as I don't actually have access to hats right now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2058 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-07-02 19:17:57 +00:00
stephena 99e7f6c5d0 The getTicks() method is updated to work similar to gettimeofday, for
systems where gettimeofday doesn't exist.  Basically, the functionality
for OSystem::getTicks() has changed to always output an increasing
value each time it's called, even between program runs (needed for
timestamps for continuous snapshots, but also for similar things in
the future).  It does this by refering to some set time in the past,
which is currently the UNIX epoch.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2056 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-16 15:40:57 +00:00
stephena 9b6ed83d7e Snapshots in continuous snapshot mode are now tagged with a timestamp,
so they don't overwrite previously created files.  This timestamp is
related to the millisecond that the snapshot was taken, so there's no
chance of overlap (snapshots can only be taken every 1 second / 1000
milliseconds at most).  The appended value is an 8-character hex
representation of this 32-bit value.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2055 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-16 13:45:32 +00:00
stephena a9f91c0e44 Updated the case-insensitive string comparison functions to be more
efficient, and use macros that have already been defined.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2047 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-12 14:13:03 +00:00
stephena dfd4d0cb22 Updated DPC+ bankswitching to match behaviour of Harmony cart.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2037 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-12 00:01:06 +00:00
stephena 03c6e2c4f0 Improved 'E7' autodetection; several ROMs that were detected as F6 are
now properly detected as E7.

Some minor cleanups to the Cart classes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2036 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-10 00:50:26 +00:00
stephena 2468585c3e Added 'Stay Frosty' PAL60 ROM to internal database.
Bumped version number so development can start on the next
release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2035 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-05 16:38:38 +00:00
stephena 5ca6d8c49d Removed 'uselauncher' from the UI, as it really shouldn't be there
(ie, disabling from the UI kills the UI on future runs, so you can't
enable it again).  This should fix problems where users go
'click-happy' in the UI, turning options on and off just to see what
happens.

Added 'showinfo' to the UI, so you don't have to drop to the
commandline to use it.

Updated all release files and bumped version number for 3.1.2
release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2031 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-03 12:01:43 +00:00
stephena f5dd4e6ce7 Updated DPC+ scheme to autodetect and use DPC+ carts in 32KB format.
These have ARM code appended to the beginning of the ROM, which is
(for now) ignored by Stella.

Improved memory usage for DPC and DPC+ schemes, so that an extra
copy of the ROM image is no longer required.  This also fixes a bug
in the getImage methods, which wouldn't have actually returned any
changes made by patching the ROM (it always returned the original,
non-modified copy).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2030 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-02 22:52:59 +00:00
stephena 5de12952ec Added OSystem::logMessage(), which abstracts the logging of messages to
an outputstream.  For now, the output simply goes to stdout or stderr,
just like before, but the possibility is now there to redirect to a
file if desired.

Changed 'showinfo' commandline option to accept 'levels' of output
instead of simply being a boolean.  The new default is level 1,
in which normal messages are output during a run.  Level 2 will
show more detailed info, and may be useful in debugging end-user
problems.  There's still more work to do wrt level 2.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2029 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-29 12:46:07 +00:00
stephena f8adf5c314 Final changes for the 3.1.1 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2027 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-25 23:33:49 +00:00
stephena f67c3b7690 Updated properties for several Dragster ROMs.
Bumped version number for next release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2021 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-23 12:09:14 +00:00
stephena 31d3233dc0 Fixed timing bug reported on AtariAge, also noticed on several versions
of OSX.  It was partially caused by 'negative time', or successive
calls to SDL_GetTicks() returning smaller values than previous calls.
This obviously totally confused the timing logic, which was never
designed for time to go backwards.  Related to this, setting the
framerate to 0 from the VideoDialog UI (indicating that auto-frame
should be used) ended up setting the time-per-frame to approx. 71
minutes, resulting in a delay of 71 minutes to the next frame
(which is what caused the 'lockup').

Changed all references to the Intel OSX build to also mention OSX
Snow Leopard (10.6), since the build won't run on 10.4 or 10.5.

Bumped version number to 3.1 (again).  Hopefully this is good to go.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2016 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-21 15:45:44 +00:00
stephena 10022676e9 Updated DPC+ code to latest version from Spiceware. Hopefully we can get
final support for this completed before the 3.1 release next week.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2015 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-18 15:01:38 +00:00
stephena 506f5357b1 OK, hopefully this is the final commit for 3.1 (yeah right!).
Updated all remaining issues with the documentation and
changelog, and bumped the version # to 3.1.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2013 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-14 23:49:02 +00:00
stephena 32aa9d3186 Fixed a *REALLY* annoying bug in Windows with the latest code. It seems that System::PAGE_xxx enumerations were already defined elsewhere in a Windows header file. This was very irritating to track down. As a result, they're now named System::PA_xxx (for 'PageAccess').
The file selector in Windows now ignores all items starting with '.', not just the directories '.' and '..'.  This is most apparent when using the Windows port and browing Linux shares, which shows many dot files.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2012 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-14 22:35:46 +00:00
stephena f94ebed340 Some improvements to continuous snapshot mode:
1) the interval between snapshots can be configured within the
'File Settings' dialog

2) the commandline option is now named 'ssinterval' instead of 'ssdelay'

3) the action is tied to the 'Alt/Cmd-s' key instead of a function key

There's just one more small issue to take care of in the Windows port,
and the next release should be ready.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2011 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-14 20:27:59 +00:00
stephena d0391c28f2 Added 'continuous snapshot mode', currently tied to the Shift-F12
key.  This enables automatically taking snapshots every X seconds
while in emulation mode.  The interval (in seconds) can be set
with the 'ssdelay' commandline argument.

Some minor cleanups to the EventHandler methods, making them
const when possible.

Added latest DPC+ changes from Spiceware.

Fixed issue with ROMs that run entirely from ZP RAM; no disassembly
was being generated when entering the debugger.  For now, this
special case is detected, and the disassembly is generated for
the code that ran before the PC entered ZP RAM space.  Eventually,
this will go away when the Distella fully supports disassembling
below 0x1000.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2009 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-14 15:41:42 +00:00
stephena af8c5a5133 Added 'PageType' infrastructure to PageAccess, which basically
informs the rest of the system about how a page of address
space is to be treated (READ, WRITE, READWRITE).  This makes it
much easier to track if a read from the write port has occurred.
As such, the _rwport command should now be somewhat faster.
Eventually, the debugger/disassembler will use this info to
colorize the output.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2004 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-12 19:56:14 +00:00
stephena a2ca2730c1 Cleaned up some more FIXME and TODO:
1) Removed all references to FBO in OpenGL.  I won't be taking this
path, and will wait until SDL 2.0 integrates it directly.  In fact,
most of the OpenGL TV filters will disappear in the next release, to
be replaced with Blargg NTSC filtering.

2) Defined the remaining color constants in OSystem.

Re-added showing the results of parsing debugger script commands
in the prompt.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2003 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-11 13:44:22 +00:00
stephena 2193c94b12 Updated boilerplate on top of each source file to include
'Stephen Anthony' (aka, me) in addition to Brad Mott as copyright
holders for Stella.  I think I've been with the project long
enough now (almost 10 years) to justify being specifically mentioned
above and beyond 'the Stella Team'.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2001 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 21:37:23 +00:00
stephena 452b22d9f8 Updated various files, changing version from 3.0 to 3.1.
Bumped state file header for 3.1 release, indicating that all older
state files will no longer work.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2000 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 20:29:51 +00:00
stephena ea6ea9a7bd Renamed 'autocode' commandline argument and associated UI item
to 'resolvedata', since that more accurately describes what it does.
Also, it now accepts arguments as strings (never, always, auto)
instead of 0, 1, 2.

Updated main documentation for changes in OSX port 'basedir'.

Updated debugger documentation for recent command additions, and
provided new snapshots where the UI has changed.

It seems to be getting close to a new release - perhaps this
coming Friday.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1999 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 20:00:16 +00:00
stephena 10c82a9457 Removed 'md5instate' commandline argument (it was previously added
post-3.0), and reworked how state files are accessed.  The cart type
now determines if a state file is valid, meaning developers can use
one state file across multiple builds of their program.

Added 'runtopc' debugger command, and associated UI item in the
RomWidget area.  This steps the code until the PC matches the given
value.

Added '16in1' bankswitch scheme, which is useful for ROMs named
'128-in-1' in RomHunter database.  Also, all multicart schemes now
show the current ROM onscreen while switching between them.

Fixed bug in Serializer class when accessing files in read-only mode.
Such files would be created and set to zero size, even if only
reading was requested.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1997 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-09 20:13:12 +00:00
stephena f22fbb3ca9 Some more removal/reassignment of FIXME and TODO.
Changed 'basedir' location of OSX port to
'~/Library/Application Support/Stella', which is more in line
with Apple guidelines (not to mention it's not a hidden
directory, so it can be seen in Finder).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1995 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-09 11:54:25 +00:00
stephena 5294859e6d Removed some redundant 'FIXME' and 'TODO' items.
Removed final traces of SpeakJet emulation (the SpeakJet class).
It doesn't look this is ever going to be resurrected.

Tab completion results in the debugger prompt widget are now sorted.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1993 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-08 21:22:15 +00:00
stephena 72b2ddd89b First pass at updating the documentation for the impending 3.1
release.  This won't have everything I'd have liked to include,
but the release time has dragged on enough (the last release
was in Sept 2009!).

Some general code cleanups for the OSX port, as well as fixes
to the menus.  The menus contained items that in some cases
weren't actually tied to any event, or showed the wrong
shortcut key.  Also removed some of the more esoteric menu
items, sticking with only the most basic ones (fullscreen vs.
window mode, volume control, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1991 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-08 13:11:36 +00:00
stephena a94c579fec Fixed bug in debugger 'runto' command; it now looks at the generated
disassembly instead of re-disassembling again.  Still TODO is make the
search case in-sensitive.

Added latest DPC+ code from Spiceware.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1988 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-04 13:15:35 +00:00
stephena 7bd307ebc8 First pass at getting function parsing working again in the debugger.
Added latest DPC+ code from Spiceware.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1986 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-03 12:45:20 +00:00
stephena 0d367461a4 Cleaned up the Cartridge API. Certain methods are now explicitly marked
as 'const', and return types are closer to the actual type of data
returned.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1985 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-02 22:09:31 +00:00
stephena 22994b4acf Fixed bug in load/save of DPC+ state; a 32-bit integer was being written as a
byte, but read as an integer.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1984 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-02 19:32:06 +00:00
stephena 8c3ea00bb2 '3E' bankswitch scheme now always reports 256+32 banks, even if there
really aren't that many ROM banks.  This is done so that the RAM banks
always start at number 256.

Added latest DPC+ updates from Spiceware.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1983 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-02 18:56:50 +00:00
stephena fe0e1c757e AR bankswitch scheme now works correctly after entering and then exiting
the debugger.  Still TODO is add debugger patch support.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1982 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-01 11:09:18 +00:00
stephena 779f3bfddb Some minor optimizations for AR bankswitch scheme. I'm not entirely sure
how this scheme works, so I have to research further before adding
patch support.  But before that even happens, I need to fix out why
entering the debugger in locking the ROM and eventually crashing Stella.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1981 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-30 21:01:33 +00:00
stephena 108a807017 Added debugger patch support for bankswitch schemes CV, DPC, DPC+
and E7.  DPC and DPC+ currently do not modify the DPC address space
on a patch; more research is required to figure out how to handle this.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1980 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-30 20:36:13 +00:00
stephena 4c75e52a96 Fixed segfault that could occur on startup when a ROM triggered a read
from the write port.  Basically, the cartdebug class depended on the
console existing, but it wasn't being created until after it was required.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1979 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-29 02:21:32 +00:00
stephena 088e3e954f Added Cart::patch support for all Superchip schemes as well as
4A50 and FA.

Fixed bankcount for 3E carts to also consider the RAM slices.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1978 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-28 16:01:31 +00:00
stephena 6bea26cd95 Moved the setDirtyPage call for read from write port from the Cart
class to the CartDebug class, since it's really a debugger feature.

Fixed comments on some of the methods in CartDebug.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1977 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-28 04:26:41 +00:00
stephena 6fee79ddff Modified most of the cart classes to properly set the 'page dirty' flag
when their address space has been modified by poke.  Any writes done
inadvertently by reading from the write port are also flagged.  This flag
is used by CartDebug to determine if cart address space has changed.
For now, it uses this information to do a complete re-disassembly.
Entire bank changes are signaled by setting myBankChanged to true,
which overrides the page dirty flag and short-circuits testing for it.

Still TODO is add support for 'AR' bankswitching, and fix the patch
method for several schemes.

Added latest DPC+ updates from Spiceware and Batari.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1976 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-28 03:13:10 +00:00
stephena 80dbfd6dfa Some small changes to the 0840 and 2K classes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1975 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 01:39:27 +00:00
stephena 8fe2d5f6c1 The System 'dirty page' code is now connected to CartDebug. It now tests
whether the range 0x1000 - 0x1FFF (aka cart space) has been modified, and
if so, it forces a re-disassembly.  Still TODO is modify all the cart
classes that manually handle poke operations to set the page as dirty
when a write actually succeeds.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1974 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 01:33:40 +00:00
stephena 2b384e2353 First pass at adding a 'dirty page' infrastructure to the System class.
The idea is that all direct-access pokes will set a flag indicating that
the page containing the poked address is set to be dirty.  Devices that
handle their own pokes will have to be updated to set this dirty flag too.
Overall, the point is to enable the debugger to know whether cart space
has been modified, and use that knowledge to selectively do a
re-disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1973 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 00:59:56 +00:00
stephena 9c73d139de The disassembly is now properly updated when performing a 'reset'
or rewind command.

Updated 'FE' bankswitch scheme to the new disassembly infrastructure;
it now properly indicates that it has two banks, and keeps track of
when the bank changes.

Some cleanups to CartXXX classes; most methods didn't need to be
virtual.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1971 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-23 18:00:47 +00:00
stephena dc22bc6b04 Some cleanups to the RomListWidget. Long '.byte' lines no longer spill
over onto the opposite side of the screen.  Breakpoints set by clicking
in RomListWidget only apply if they've actually been enabled.  This
fixes a bug whereby a breakpoint could look like it is enabled when
it really isn't.  Related to this, breakpoints cannot be set for
disassembly lines that don't contain a valid address or an empty
bytes area (basically, empty lines and lines containing '.byte' items).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1970 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-22 17:24:08 +00:00
stephena 6ece47c4ca Added 'DPC+' bankswitch scheme, as defined by SpiceWare and Batari from
AtariAge.  Basically, this is an enhanced version of the DPC class used
by Pitfall2.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1967 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-18 17:34:53 +00:00
stephena 0ed4a9fa79 OK, I've finally gotten back to Stella development and fixing the
disassembler.  Hopefully this will lead to a new release very soon.

Added 'autocode' commandline argument and associated UI item (in the
RomWidget debugger area), which controls how Distella will use the
'automatic code determination' option.  If set to 0/never, this is
completely disabled.  If set to 1/always, it is always enabled.
The default is 2/automatic, whereby it is first turned on, and then
turned off if the disassembly doesn't contain the current PC address.

RomListWidget has now been completely reworked, so that it informs
RomWidget of its intent to change breakpoints and patch ROM.  If
either of these fail, the action won't be performed, and more
importantly, it won't appear onscreen as if the action has succeeded.
This fixes an old bug whereby patching could fail, yet the onscreen
ROM data was actually changed.  Related to this, the list has been
made as efficient as possible, and its contents are never un-necessarily
copied.  Also, lines in the disassembly that cannot be modified no
longer show an edit area.

Due to the way the new disassembly works, you can no longer switch between
banks in the RomWidget (Distella would probably fail to disassemble in
such as case).

EditTextWidget can now indicate its contents have changed when adding
text to it.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1966 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-18 16:36:12 +00:00
stephena 2cc0d60940 First pass at adding 'hints' to each Cart class that its bank has changed.
This is very useful for conditional re-disassembly, since many bankswitch
schemes consist of ROM only, and once disassembled, cannot possibly have
a different disassembly at some later point.  This is mostly done for such
static schemes (2K, 4K, etc), but more work is required for carts with
extended RAM.  Basically, the cart knows best how its been accessed, so
it makes sense to have the hints there.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1965 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-06 18:56:36 +00:00
stephena e0310e8f35 Checking in WIP for Distella integration. Moved the internal text
handling to C++ stringstreams instead of C-style character arrays,
which fixed some segfaults (sprintf is evil).

First pass at tying the number of banks to the disassembly.  The idea
is that the startup bank (which is now identified by the cart) always
starts at address at 0xfffc, while the other banks are defined by the
PC at the first time we enter the debugger.  This is still a WIP,
since there's no actual checking done yet to see if the current PC
is in the current disassembly.

Added 'ctrlcombo' commandline argument, which completely disables
checking for Control-x key combos.  This is useful when playing
2-player games where the 'f', 'r' and 'Control' keys are supposed
to be treated separately.  Previously, pressing Control and 'r' or
'f' processed some other action (change framerate, reload rom, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1964 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-05 22:02:12 +00:00
stephena a7e0be4475 Changed the second button on the Genesis controller to correspond to
the BoosterGrip 'booster' button, since they both use the same analog
pin (pin 5).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1958 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-25 21:49:30 +00:00
stephena 67f53ceb6b ContextMenu dialog now properly works with scrolled content (both with
the mouse and the keyboard arrow keys).  Still TODO is change the scroll
placeholder text into something that looks a little nicer (perhaps a
graphic arrow or something).

Added output of field header names when using 'listrominfo'.  This makes
it very easy to see what each column actually represents.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1954 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-24 14:46:05 +00:00
stephena 7b5be35320 Updates 'Road Runner' ROM as recently talked about on AtariAge. It seems
the one in the database isn't actually the most authentic, original one.

The output from '-listrominfo' command now includes all ROM property info,
making it useful for generating a list that can be imported into a
spreadsheet or database (or otherwise manipulated by some emulator
frontend).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1953 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-23 21:53:09 +00:00
stephena 1a2e8d7cd0 Added keyword properties to SVN for Genesis class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1951 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-23 14:59:04 +00:00
stephena 691c9b2e1d Added support for the Sega Genesis gamepad controller. This
controller uses the directional pad and button 'B' as a normal
joystick, but can also use button 'C' as a second 2600 button
(with the logic reversed).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1950 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-23 14:49:12 +00:00
stephena f7d8334768 Some fixes for 'small screen' functionality. The lower bound of 320x240
is now enforced in more areas of the code, specifically, in BrowserDialog,
VideoDialog and InputDialog.

Rearranged some options in InputDialog (for spacing), and removed the
'mouse is paddle ...' option.  It was never being saved to the config
file anyway, and is still selectable with Ctrl-0,1,2,3 keys.

Added 'maxres' commandline argument, which overrides the built-in
determination of desktop size normally done by SDL.  This is not
documented, and is not meant to be used by anyone other than those
testing Stella on 'small' systems.  It's basically a way to set the
desktop size without recompiling Stella each time.

Still TODO is look at all other dialogs, making sure they fit in the
minimum size.  PopupDialog in particular needs to be fixed.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1942 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-13 18:34:24 +00:00
stephena c12a2e6043 Checks are now performed when attempting to open a window smaller than
320x240 (the minimum that Stella supports).  On 'small' systems using
1x video mode, this means most NTSC games will open in a window of size
of 320x240, even though the native size is normally 320x210 (or so).
In these cases, the image will be centered vertically.

Added FrameBuffer::invalidate(), used to signal that the complete
framebuffer can be trashed and entirely written over.  This is only
active in software mode for now, where it fixes 'overdraw' problems
with 320x240 dialogs drawn underneath 320x210 TIA images.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1937 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-10 22:55:08 +00:00
stephena eb5f8efc78 Added ability to completely disable the mouse from being used as a
controller.  Added '-usemouse' commandline argument and associated
UI item in InputDialog to accommodate this.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1935 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-08 20:02:47 +00:00
stephena 28114a8c51 OK, this is the first pass at a huge reorganization of the debugger
classes.  First off, the distella code has been integrated into a
DiStella class.  This code isn't yet tied to the debugger, but it does
at least compile and generate valid output.

The RamDebug class has been replaced by a CartDebug class, which
takes responsibility for the previous RamDebug stuff as well as 
things related to Cart address space (read from write ports,
disassembly, etc).

Fixed E7 bankswitching when reading from the write port in the upper
256byte area.

Fixed 'read from write port functionality' in general for all carts
that supported it previously.  Basically, if _rwport is enabled, the
address is checked to be an actual read (vs. one that's part of a
normal write cycle), *and* it's actually an illegal access (each
cart/bankswitch type now provides a hint to indicate this condition).

Still TODO is clean up the rework, properly integrate DiStella, and
fix labels and defines (which seem to be completely broken).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1922 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-17 16:48:45 +00:00
stephena e234139a3c Updated Stella headers in all files:
The license file is actually named 'License.txt', not 'license'
  The 'Stella Team' has a capital T, not lowercase.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1921 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-10 03:23:32 +00:00
stephena d372671277 Updated copyright dates to 2010.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1920 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-10 02:58:28 +00:00
stephena be2d42202e Fixed 'read from write port' bug in E7 bankswitching; while the read
from write port was correctly detected for the 1K area, it was actually
zeroing ROM instead of RAM!

Added support for 'read from write port' logic for the upper 256 byte
page in E7 bankswitching.

Bumped version # for release to testers on AtariAge.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1919 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-09 20:50:38 +00:00
stephena 48a48d8619 Added '-md5instate' commandline argument, which determines how a state load
is related to the currently running ROM.  If enabled (the default and current
behaviour), state files that do not match the currently loaded ROM will not
be loaded.  Otherwise, the state file will attempt to load.  Note that in the
latter case, this will probably cause 'bad things' to happen.  It's mostly
for developers who are constantly recompiling a ROM, and wish to use a
previously created state file even when the ROM MD5 changes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1915 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-12-18 22:56:48 +00:00
stephena 88df583c23 First pass at reorganizing the disassembler code. The entire functionality
will be integrated intp CpuDebug, which will also be merged with distella.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1914 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-12-17 21:07:56 +00:00
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