Commit Graph

662 Commits

Author SHA1 Message Date
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 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 dac213c6c3 Added debugger prompt commands for the remaining directive types.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2161 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-23 17:50:45 +00:00
stephena 0af08634a8 Addresses marked with certain directives within Distella should not propagate
to the emulation core.  That is, if something is determined to be CODE in
Distella and *not* in the emulation core, then it shouldn't be marked as such.
Note that the disassembly will still show it as CODE; it's just that the core
will not.  This fixes issues with manually specifying directives from the
debugger prompt, whereby setting a directive and later turning it off never
actually turns it off (as it was being permanently set).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2160 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-22 20:24:37 +00:00
stephena 3c4bcf3900 Changed label for recently added 'source address' items in the CPU area
of the debugger.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2159 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-22 11:22:36 +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 bd06b3db1e Fixed bug in OSX port, where the name of the application wasn't shown
in Activity Monitor.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2154 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-12 15:29:22 +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 b775a83e00 Fixed crash in starting up the debugger; a re-disassemble should only occur after the debugger has started up completely.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2148 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 14:21: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 5d0b25cd48 Re-added 'REFERENCED' type to Distella, instead of always using 'DATA'. I just
realized that not all things that are referenced are actually data; code can be
referenced too.

Implemented handling of 'DATA' directive.  This is very similar to 'GFX',
except X's are not shown for the bits, and the disassembled bytes are always
in hex.  For now, it can only be activated manually with a cfg command.
Its real value will become apparent once the emulation tracks when
addresses are actually accessed, differentiating from addresses that are
never referenced (ie, 'ROW').  This will fix the current deficiency in 
modifying DATA values (it can't be done, since they're packed into 16 bytes per
line and not changable).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2144 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-09 17:55: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 f51c16c54f Shortened some options in the right-mouse click menu in the disassembly
view.  Instead of showing each separate item (in related items), simply
show a 'toggle' option instead.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2142 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-05 00:15:12 +00:00
stephena 9e583f146f The various trap commands in the debugger (trap, trapread, trapwrite) now
accept a second argument, indicating a range is to be used.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2141 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-03 22:09:34 +00:00
stephena 64ca5275d2 Fixed disassembly output error for 'relative' opcodes; only the signed
operand should be shown, not the two-byte address which it resolves into.

Bumped version # for another test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2140 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-03 18:48:44 +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 cb7b93f8d1 Debugger 'saveconfig' wasn't taking pathname of ROMs into account; it always
used the current directory.

Fixed error in generating directive lists; there sometimes were 'holes' 
at the boundary of CODE <=> DATA transitions.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2129 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-11 14:26:21 +00:00
stephena db8fd2465f Added 'clearconfig' debugger prompt command, to quickly remove all
directives associated with a given bank (or all banks).  Sometimes the
directives are so borked that's it's easier to remove them all at once.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2127 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-07 22:03:20 +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 871d851e4d Make sure address selected with 'jump' command is valid.
Bumped version # for next AtariAge test release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2124 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-05 18:02:26 +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 00d64f9f02 Further improvements to adding directives to the disassembler.
There was a bug in the linked list code causing directives to be added
incorrectly.  Also, merging is now done when possible instead of
creating new nodes.  This keeps the directive count as small as possible,
and also helps with memory (less allocations happening).

Fixed bug in printing the 'ORG' directive; it was being printed
before the bank was disassembled, so on the first run it was always 0.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2122 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-09-01 16:44:31 +00:00
stephena f8b2621ab5 Many big improvements to disassembler directives. Directives are no
longer simply added to a list, but intelligently 'merged' (so that
the entire range represented by all directives contains no overlap).
This makes the disassembly a little faster, since it doesn't have to
iterate redundantly.  Still TODO in this area is intelligent insertion
for the same type (ie, if inserting in between like blocks, the
blocks should coalesce, instead of being clipped and then a new range
inserted in between).

Added 'loadconfig' and 'saveconfig' debugger prompt commands, which
will eventually access Distella-like config files.  No implementation
is present yet.

Added 'listconfig' debugger command, which lists all directives
currently defined by the user, as well as the directives resulting
from a disassembly of a bank (taking into account extra knowledge
that Stella has WRT cached entry points).  This command can show
information for a specified bank, or all banks in the cart.

User-defined directives can now be removed; simply issue the same
command that caused an insertion (ie, attempting to insert the same
type and range will remove it instead).

Fixed bug in Distella processing of directives; similar to the
standalone Distella, directives should be processed *before* any
automatic code determination is done.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2121 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-31 16:37:27 +00:00
stephena e0dd8b1451 First pass at extending the disassembler to support CODE/DATA/GFX commands
from a Distella config file.  For now, the commands are only accessible
within the debugger prompt, and can only be added (no removal/editing).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2120 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-30 12:04:56 +00:00
stephena d664beb45d Several changes to make entering commands at the debugger prompt
case-insensive.  Currently supported are all commands and
pseudo-registers.  Equates/labels and user-defined functions are
still a WIP, since they're stored in various hashtables accessible
by name, which is still a case-sensitive operation.  In general,
tab completion is mostly case-insensitive.

Changed the delimiter for surrounding lines with spaces from curly
braces ({}) to the apostrophe (').


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2115 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-23 16:19:17 +00:00
stephena f742f67788 Optimized Distella in the case of 2K ROMs. Now only half the
address space is shown (either $F000 - $F7FF or $F800 - $FFFF).
This eliminates a lot of .byte directives that are invalid in
2K mode anyway, and speeds up the disassembly a little.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2113 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-23 12:07:09 +00:00
stephena 0fa706c558 Fixed bug in debugger rewind states are reported in the Stella tracker. It
seems that bankswitching wasn't being enabled before rewinding, and hence
any bankswitching being done on state load was being ignored.  This also
affected the loadstate and savestate debugger commands, which weren't working
for exactly the same reason.

Bumped version # for impending point release.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2107 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-08-21 21:05:12 +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 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 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 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 ec096dca6f Updated configure script to test for an external PNG library, and if
not found fall back to using the internal version (for Linux, and all
systems that use the configure script).

The debugger can now be resized in between ROM launches (ie, before
a ROM is actually started).  Previously, the entire program had to
be restarted for resizing to take effect.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2045 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-11 19:09:20 +00:00
stephena cd34147f5e Oops, the disassembly output should align based on the length of the
entire disassembled text, not just the label length.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2043 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-05 01:23:39 +00:00
stephena ffae9a0d56 Size hints are now passed to the disassembly output, so that the cycle
counts are aligned after the disassembly text with as little space as
necessary.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2042 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-05 01:17:03 +00:00
stephena 4735feda13 Mostly completed support for showing .sym label information in the
disassembly output.  Still TODO is add some visual improvements
(ie, align the cycle counts to not take too much space, etc).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2041 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-04 16:33:56 +00:00
stephena befafd5d62 Second pass at integrating .sym labels into disassembly output.
There's currently a problem in the internal code I have, so I need
to submit in pieces until it's tracked down.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2040 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-03 12:54:45 +00:00
stephena 88f7f656e6 First pass at integrating dasm '.sym' labels into the disassembly output.
For now, only the infrastructure is being modified.

Make disassembly output a little nicer by drawing a vertical line
separating disassembly text from the actual raw bytes.

Some changes to the SDL sound code initialization, which will (hopefully)
eventually lead to a fix for those users with ATI video drivers, and
not having sound after the first game has been played.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2039 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-06-03 12:41:49 +00:00
stephena 0c1029076c First pass at making Distella aware of labels defined in a .sym file
or from the user.  Before this is done, the parser needs to recognize
variable-length labels (right now, it used fixed spacing and assumes
the largest label is 8 characters).

Fixed bug in Distella; a label was being printed with an incorrect
quote symbol, which would break parsing of that line.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2038 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-05-12 00:04:14 +00:00
stephena dd832f2ef4 Only return a label for IO registers if one has been defined.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2023 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-23 22:05:57 +00:00
stephena 66690033c4 Fixed segfault when accessing RIOT IO registers, any of its mirrors,
and associated labels in the debugger prompt.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2022 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-23 19:25:11 +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 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 b65adcd49b Removed some debugging code, and tweaked the docs a little.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2006 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-12 22:44:30 +00:00
stephena 132b947ee2 Debugger pseudo-registers are now available in prompt tab completion.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2005 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-12 22:26:41 +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 b3a16fc0a5 Fixed another Distella bug wrt RELATIVE addressing. This fixes an
issue I noticed River Raid, where labels were being generated above
0x10000 (the maximum should be 0xFFFF).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2002 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 21:57:49 +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 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 b781611925 Some updates to the PromptWidget and DebuggerParser.
The descriptions for the debugger commands are more streamlined
and better explained, and are neater when output.

Added 'cls' debugger command, which actually isn't for the debugger
at all, but for the prompt.  This erases all showing text and history.

Removed 'bank' debugger command, since it was already removed from
the RomWidget UI.

Removed 'listwatches' debugger command, since it wasn't implemented
anyway.  Besides, any watches are printed on every command access,
so it was pointless to have another function to do it.

Removed 'poke' debugger command; 'ram' and 'rom' do the same thing.

Fixed bugs in 'function' debugger command; it now correctly adds
functions without crashing.  Related to this, added 'listfunctions'
and 'delfunction' debugger commands for user-defined commands.

Fixed bug in completions for functions; it was including user-defined
functions twice.

Some general code cleanups in DebuggerParser (use ostringstream
instead of constantly creating new strings) and Expression
classes (make some methods const, for safety).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1998 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 00:52:47 +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 aab9ff0d54 Oops, I forgot that Visual C++ doesn't support static allocation of a dynamic array. This must be a gcc-only thing.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1994 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-08 21:30:35 +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 964415508d Tab completion in the PromptWidget is now working again. As well,
the completion now includes functions (built-in and user-defined).

Cleaned up some more of the debugger documentation, mostly
related to tab completion.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1992 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-08 18:21:00 +00:00
stephena 56b6e74f04 Finally updated the Changelog, which should have been done way before
this.  That's the main problem with long delays between releases; I
forget exactly what's changed.

Fixed bug in Distella in handling relative addressing.  Wraparound
was potentially occuring on a 32-bit integer, which caused a crash
when accessing a 4K array.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1990 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-06 21:47:46 +00:00
stephena e536a9ee00 Some minor cleanups to the Distella class.
The debugger 'disasm' command now works again for addresses below
0x1000, and it also now correctly accepts the number of lines to
output in the disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1989 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-06 15:15:44 +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 1103f1dfbb Some cleanups to various classes, removing some debug print statements.
Partial cleanup of the debugger 'help' command, making the output line
up a little nicer.  More work is required in this area.

Fixed bug in EditableWidget; setEditString now implies that editing will
be started (if it's been enabled).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1987 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-03 17:11:23 +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 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 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 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 4ca87ba76b Re-disassemble and reset the start vector in the debugger if the disassembly
doesn't result in the PC being present.  This fixes some bugs in the more
esoteric bankswitch schemes, and also enables rewind to show the correct
disassembled results.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1972 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 00:03:35 +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 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 6de4e358e1 More changes to CartDebug. Labels read from a symbol list or defined on
the debugger commandline are now reflected in most parts of the debugger UI.
Still TODO is have DiStella use those labels in the disassembly, and deal
with the formatting issues this will entail.

Still completely broken are built-in functions, getting an equate address
based on label, and tab-completions.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1963 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-28 17:12:16 +00:00
stephena 0c6f564fa8 Fixed segfault where output from DiStella::disasm wasn't being parsed
correctly.  Disabled built-in functions until I get to that area of
code, since I'm tired of seeing an error message every time I test
new changes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1962 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-27 23:21:14 +00:00
stephena 8b22097cb6 Further improvements to read vs. write mode in the debugger for TIA
addresses.

Fixed a bug in processing accumulator-access opcodes in the debugger;
an uninitialized char array was causing a segfault.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1961 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-27 22:46:20 +00:00
stephena a150ece7ae Updated DiStella disassembly to differentiate between the intent of an
instruction (read vs. write) for those addresses that have different
meanings based on how they're accessed.  For now (and probably forever),
this only affects TIA addresses.

These ideas were ported from the old Stella disassembler.  Perhaps they
should be ported to distella as well, since it makes for more accurate
results.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1960 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-27 21:24:24 +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 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 8ca34a4d90 Checking in WIP for DiStella integration. The disassembly is now shown in
the RomListWidget instead of being printed to the terminal.  There are still
graphical glitches with this, but for a first pass, it's nice to see actual
Distella output in Stella.

Partially working 'disasm' command from the PromptWidget.  Currently, it
only disassembles cart address space (aka, 0x1000 or above).

Removed the old disassembly code from CartDebug.  Still TODO is fix the
label stuff, both in getting DiStella to use it, and adding/removing
labels.  This is greatly reduced now that we only have to worry about
user labels.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1934 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-07 21:23:26 +00:00
stephena 03191759ab More DiStella cleanups; the disassembly now properly uses peek() and dpeek()
methods from Debugger directly.  As well, the start address is now passed
into DiStella::disassemble() directly; decision to start from the reset
vector is done outside DiStella.  This is in preparation for starting
the disassembly from any valid address.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1933 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-02 22:21:03 +00:00
stephena deedb04709 DiStella::disassemble is now called from RomWidget! Of course, the output
isn't actually sent to the UI yet (it's still printed to the console), but
at least the two parts of the code are now talking to each other.  Note
that the disassembly window in the debugger will be empty until I get this
changeover complete.  And with that, I'm not feeling well, so I'm taking
the rest of the night off.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1932 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-01 22:24:38 +00:00
stephena 91f1406ed4 Checking in WIP of converting DiStella to use the System class
from within Stella (vs. reading ROM data from a file).
Compilation is currently broken.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1931 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-02-01 20:00:50 +00:00
stephena 898d16b863 Further improvements to the DiStella class. The output is now properly
parsed into a DisassemblyList structure.  For now, this is just being
printed out again.  The next change will be to pass this to RomWidget
and have it displayed in the UI.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1929 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-31 19:41:57 +00:00
stephena 231958dbdf Checking in current progress of DiStella class. The code now directs all
output to a specified function instead of the console.  The formatting is
also in a very fixed format.  That makes the next part easier; parsing
the output into a DisassemblyList structure that Stella can deal with
and show in the RomWidget.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1928 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-31 02:07:19 +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 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 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 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 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 6144e4fd57 Improved ROM launcher so that going to a parent folder automatically
selects the item that was previously selected.

Fixed bug in Cheat dialog where editing a cheat didn't remove the old one.

Updated TODO, rearranging improved disassembly as the #1 priority for the
next release; I don't have time to finish it now.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1873 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-09 15:59:22 +00:00
stephena 383bce947b Fixed gcc warning.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1869 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-09-02 00:12: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 a13fad2d0f Only add states to the rewind/undo list with actions triggered by the user;
don't add one when the console is first created.


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

Bumped version # to alpha3.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1860 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-25 12:46:56 +00:00
stephena 28f347cf86 It seems that in Windows, stringstreams must be initialized with data immediately after creation before they can be used. This really doesn't make sense to me, but at least it allows the rewind code to work. I hope this fixes similar issues in OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1859 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-08-24 23:42:01 +00:00
stephena 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 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 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 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 e34594d1b7 Update to documentation for 'exitlauncher' command.
Add Shift-PageUp/PageDn for scrolling with the keyboard in DataGridWidgets
(most useful with the new RAM UI having multiple banks of RAM).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1755 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-08 13:13:05 +00:00
stephena 805300ceb8 Check if RAM change succeeded in debugger RAM UI. This previously
wasn't necessary, as ZP RAM can always be changed.  In the new scheme,
however, sometimes the RAM view will actually show ROM, and in those
cases it definitely shouldn't be modified.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1749 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-06-04 09:54:18 +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 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