BSPF_snprintf instead, which should eliminate any potential
buffer overflows. Also moved from static arrays to stringstreams
where appropriate to make things safer and more C++ like.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2263 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Blargg NTSC filtering, but we need to revert to base functionality first.
Cleaned up the debugger API wrt converting values from integers to strings
(and vice-versa). There is now only one method for each of these functions,
rather than several ways to do so. In the process, convert from unsafe
sprintf functions into snprintf (eliminate potential buffer overflows).
The debugger 'print' command now indicates if any assigned label represents
a read-only location (R), a write-only location (W), or a read/write location
(R/W).
Fixed bug in DataGridWidgets (used in debugger ROM and CPU registers), where
scrolling the mouse-wheel would cause a segfault. Scrolling the mousewheel
now changes these items as expected.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2260 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
'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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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