the Settings class to use Variant. Still TODO is modify various UI elements
that currently accept StringMap to use Variant instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2726 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Some cleanup of the various enum's in the UI classes.
Fixed issues with ordering when adding dialog boxes; this fixes a
bug when adding a dialog from another dialogs ::loadConfig(), in
which case the first one is placed below the second and can't be
seen (mostly applies to MessageBoxes).
Fixed bug in handling OSystem::setBaseDir(); if the directory didn't
exist, then the newly created one wouldn't have a slash appended at the
end. This causes all further (sub)directories to be created/named
incorrectly.
Started work on extending BrowerDialog to load files as well as
directories, and to allow editing of the items from within the dialog
itself.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2713 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
commit (AR), this one isn't yet fully implemented.
That's it for the bankswitch schemes. Now I can move on to the
remaining items for the 3.9 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2709 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
how one thing leads to another. This started when I noticed that exiting
the debugger with a context menu still onscreen locked that widget, and
it couldn't be selected again ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2708 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
No extra functionality is present; this will have to wait
until a future release after I have a better understanding
of the AR scheme.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2707 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
virtual keyboard added to the UI at some point).
Cleaned up the CheckBoxWidget API, and introduced new checkbox
'contents' that will hopefully more clearly indicate what is going
on (fully drawn square means selected, square with empty circle means
selected by not editable, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2706 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
extended into yet another tab, since there's still the need to
show the display bank, frequency bank and DPC Harmony RAM. Or
maybe there isn't a need to see this extra stuff??
Some more cleanups of the graphics/UI API.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2703 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The remainder of this commit is basically some cleanup of the
Widget API, and infrastructure fixes to allow CartDebugWidgets to
have change tracking.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2702 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
it only contains the same functionality as F8; it needs to be
expanded to show more DPC-specific stuff.
Updated all schemes that contain a fixed RAM address range
(mostly the Superchip ones) to exclude that range from the
accessible ROM area.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2700 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
to erase/load/save the Flash memory in the FA2 scheme (it's stored
in the Harmony cart, but emulated with a file). This is a debugger,
so it might as well have access to all the lower-level stuff in
the cart.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2697 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Harmony flash with hotspot $FF4 is mentioned, but currently
unsupported).
Implemented changing banks for MC scheme (although no test ROMs
exist, so we don't even know if the scheme works).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2696 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
don't have any test ROMs to confirm whether the current
bankswitching code even works.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2695 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
never actually included info on how to enable/disable it.
StringParser is now width-sensitive, in that it can also split
on a maximum string length. This is useful for making the various
UI items font-size independent, and to flow the text accordingly.
Increased minimum size of debugger window to 1080x720, which allows
things to be laid out a little nicer, and gives some much needed
extra room. Sorry guys, the most common resolution now in use
is 1366x768, so it's time to move with the times.
Cleaned up some of the descriptions in the ROM debugger tab(s).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2694 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
a multibank scheme, the tab doesn't allow to change banks,
since the current bank is at address-level resolution, and
it would immediately change back upon the next address change.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2693 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Improved keyboard and mouse navigation for PopupWidget and associated
ContextMenu dialogs.
Tweaked bankswitch autodetection for 29K ROMs; the only possibilities
are ARM (FA2) or DPC+.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2692 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
test ROM, and it is extremely basic, I can't be sure how well this
new functionality works.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2691 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
esoteric schemes (ie, the ones that no longer follow the '4K per bank'
design). Arguably, this is the entire point of adding the cart-specific
debugger ROM tab; to make it easier to work with such schemes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2689 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
For now, only 4K is shown. Eventually this will be included for all
bankswitch types, whereby the UI will be tailored to the specifics
of each scheme, so that ROM/RAM banks will be able to viewed and
changed more easily.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2680 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
debugger. In the process, I had to spend several days extending
the UI/dialog class to actually contain multiple tabs. This was
harder than expected, and it still isn't quite finished. In many
ways, we're beginning to reach the limits of the current code; it
was never designed for a full-fledged, graphically rich UI.
For now the tab is empty, but eventually it will contain general
info about the ROM bankswitch type (size, virtual layout, etc),
but also cart-specific info, including the ability to change
banks, which can be vary greatly among the different schemes.
Eventually, it may even allow to see/modify very cart-specific
info (like display RAM in DPC, etc).
Better handle errors in opening the serial port (AtariVox support)
for Windows and OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2678 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the saved disassembly to be compiled to the exact same binary.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2669 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
colour-blind; the old (light) colour was very hard to see. Actually,
I agree with that assessment, even though I'm not colour-blind myself.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2668 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
undefined. The rest are defined but illegal, which is different
(mostly because many ROMs released in the past 10 years make
extensive use of illegal opcodes).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2667 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
out-of-range labels for cases where a label is in the middle of a
multi-byte instruction (Kool Aid Man), and properly indicates
mirrors of TIA read/write addresses (Meltdown).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2666 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
- Removed 'SKIP' directive, since it wasn't implemented anyway, and
I see no way to implement it
- Add 'aflag' setting to diassembly output, matching usage in Distella.
This is needed for diassembly output, otherwise DASM barfs on the code.
- Fixed several long-standing bugs in Distella disassembly wrt ROW
directives and labeling. Previously, the output you see in the debugger
wasn't completely correct, since it wasn't compiling properly in DASM.
- Illegal opcodes are now shown as .byte directives; this allows the code
to compile in DASM.
- Print 16 bytes per line in .byte directive in external disassembly,
same as Distella.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2665 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
DiStella works, so you don't have to include a vcs.h file.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2659 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
working quite well for a single-bank ROM, but more work is required for
multi-bank. Output is currently sent to the console, as I'm still in
the formatting phase. Saving to a file will be easy once the format
is nailed down.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2657 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
matter (since they're updated anyway), but it's more correct to always
set defaults.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2639 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
TODOs and pointed out areas where improvements are likely needed,
in preparation for asking for help in the implementation.
Turned off 'resolvedata' in the debugger when disassembly ZP RAM.
It seems to be buggy in certain cases, and it's easier to just
leave it off in that mode, since (a) not many games run from ZP,
and (b) it's only at most 128 instructions.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2617 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
state of the registers and messed up further emulation.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2614 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Eventually, this will have to be done for all GUI elements.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2601 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Distella '-r' option (Relocate calls out of address range) to
the disassembler core. Also added UI item to dynamically
change the setting.
Renamed 'resolvedata', 'showaddr' and 'gfxformat' commandline
arguments to start with 'dis', indicating that they're part
of the disassembler.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2504 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
option was set, which normally isn't when disassembling standalone
ROMs. As such, the disassembly didn't match standard Distella output.
The 'fflag' and 'rflag' options from Distella have therefore been
integrated, but they're not configurable at this point (hardcoded
to true and false, respectively).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2502 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
cases, these archives contain directories named '__MACOSX' which
contain link files that were being erroneously detected as actual
ROMs.
Added FilesystemNode::isFile() method, and updated several places
in the code to use it. Previously, determining whether something
was a file was simply testing if it wasn't a directory, but this
logic isn't always valid (it's possible to be neither a regular
file *nor* a directory).
Bumped version # for RC release. It's getting very close ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2477 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
available, which helps with constant resizes of arrays with a large number
of push_backs. For now, only the ROM launcher and debugger disassembly
really needs it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2442 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
make another pass at getting rid of raw pointers. As I've come
to realize over the years (and in particular with reading the C++11
standard), raw pointers are evil and error-prone. So this fixes
some of them at least.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2438 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
in the debugger, and updated the debugger documentation.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2377 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and take 'swapport' and 'swappaddles' settings into account. Next TODO is
add per-ROM settings for specific axis mode.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2371 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
debugger before it has been initialized.
Tweaked the format auto-detection by also looking at the TIA scanline
at which drawing first occurs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2359 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
generic than SDL, but less generic than simply using int's for everything.
This will help once we start porting to SDL2, which has an updated keycode
handling system. The plan is that the internal core keyboard stuff is now
insulated from any further changes in SDL.
This also allows eventually adding support for CompuMate controller,
which needs access to keycode names in a generic way.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2356 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Cleaned up the Event object in the EventHander, turning
it into a reference instead of a pointer (pointers are evil).
Minor speed optimization to Keyboard class; the update method
isn't required, since all work is done on the initial write().
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2350 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Updated ROM properties for 'Gingerbread Man' homebrew ROM, which
uses the Genesis controller.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2341 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
any UI items within the debugger.
Added BoosterWidget UI class for changing BoosterGrip data in
the debugger I/O tab.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2339 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
first time that paddle movement is able to be set from within
the debugger!
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2337 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
I/O tab in the debugger. For now, only joystick is
partly implemented. Eventually, all Stella controllers
will have UI items (where it makes sense), allowing to
completely control input devices from within the
debugger.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2334 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
actually change values in the emulation core when clicked.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2328 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
I'm still waiting on a test ROM to verify that its output is valid.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2319 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
these logs!
Moved TODO and Credits info directly to the webpage, where it will hopefully
be easier to maintain.
Fixed 'crackling' sound when loading a new ROM, introduced with the 3.5
sound restructuring. It looks like stale data was being loaded by the
sound processing callback. As well, moved the computation of certain
division variables from the sound callback to the framerate re-calculator
(where it's recomputed 1/5 of the time or less).
Updated AboutDialog with info about Stella DonationWare status, and active
members of Stella development.
Updated OSX in-app HTML documentation about Stella DonationWare status.
Bumped version # to 3.5.1_svn, and the process starts again.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2318 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
of the C++ standard.
Fixed bug when using snprintf; we must use BSPF_snprintf, since the function
has different names in different OS's.
Optimized loading of PNG images in the RomInfoWidget so that memory allocations
aren't continuously being done. Basically, memory is allocated once and then
only re-allocated if a new image is larger than all previous ones. This can
increase memory use slightly, as the image data stays around between image loads,
and it remembers the largest image loaded. But if you images are all mostly the
same size, it should hurt memory usage too much. And it really helps on certain
systems where repeated (re)-allocations can cause problems.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2261 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
contents. The file was being accessed and read, but the commands it contained
weren't being executed! This bug appeared in April 2010, so it looks like
not many people are using this feature (or at least they're not reporting it).
Cleaned up a few compiler warnings in DebuggerParser class.
Bumped version # for beta release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2254 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The debugger 'saverom' command now uses absolute filenames, and by default
will save data in the users home directory if a proper path isn't included
in the filename. This fixes a major bug where ROMs were being saved to
the current or application directory, which in some cases were invalid
locations.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2250 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
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
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
Removed reference to disassembly 'SKIP' command, since it isn't implemented
yet.
Decided on Nov. 15 for the 3.3 release date, and updated all relevant files.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2181 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
disassembly. This allows the debugger 'jump' command to be more accurate.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2180 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
(ie, each bit now takes priority over ones with lower value). This
doesn't change the processing in any way, but simply makes the bitstring
more accurately reflect what's going on.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2174 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
emulation core, and distella). This allows to better see exactly how an
address is marked in the disassembly.
Updated Changelog with changes I forgot that I made (you know it's time
for a new release when you forget what's been added since the last one).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2170 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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
'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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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