The idea is that all direct-access pokes will set a flag indicating that
the page containing the poked address is set to be dirty. Devices that
handle their own pokes will have to be updated to set this dirty flag too.
Overall, the point is to enable the debugger to know whether cart space
has been modified, and use that knowledge to selectively do a
re-disassembly.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1973 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
AtariAge. Basically, this is an enhanced version of the DPC class used
by Pitfall2.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1967 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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 BoosterGrip 'booster' button, since they both use the same analog
pin (pin 5).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1958 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
should occur.
Removed some dead code (Surface class that hasn't been used
for quite some time).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1955 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
the one in the database isn't actually the most authentic, original one.
The output from '-listrominfo' command now includes all ROM property info,
making it useful for generating a list that can be imported into a
spreadsheet or database (or otherwise manipulated by some emulator
frontend).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1953 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
than the enclosing screen. Selecting images with the mouse
is working, but the up and down 'buttons' are currently just
drawn text/placeholders.
Still TODO is get the keyboard actions (cursor up/down, etc)
working.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1949 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
is now enforced in more areas of the code, specifically, in BrowserDialog,
VideoDialog and InputDialog.
Rearranged some options in InputDialog (for spacing), and removed the
'mouse is paddle ...' option. It was never being saved to the config
file anyway, and is still selectable with Ctrl-0,1,2,3 keys.
Added 'maxres' commandline argument, which overrides the built-in
determination of desktop size normally done by SDL. This is not
documented, and is not meant to be used by anyone other than those
testing Stella on 'small' systems. It's basically a way to set the
desktop size without recompiling Stella each time.
Still TODO is look at all other dialogs, making sure they fit in the
minimum size. PopupDialog in particular needs to be fixed.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1942 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
mode in software mode. This error is pretty serious; I'm surprised nobody
reported it before. I'm probably going to do a 3.0.1 release just to
address this.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1938 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
320x240 (the minimum that Stella supports). On 'small' systems using
1x video mode, this means most NTSC games will open in a window of size
of 320x240, even though the native size is normally 320x210 (or so).
In these cases, the image will be centered vertically.
Added FrameBuffer::invalidate(), used to signal that the complete
framebuffer can be trashed and entirely written over. This is only
active in software mode for now, where it fixes 'overdraw' problems
with 320x240 dialogs drawn underneath 320x210 TIA images.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1937 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
size isn't at least 640 pixels wide. This is the start of the UI
cleanup I was supposed to do after release 2.7. I need to check all
UI dialogs to make sure they fit in 320x210 (the minimum resolution
that Stella supports).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1936 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
don't normally have it (notably, Windows). I've only tested in Linux
so far.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1926 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
from write port was correctly detected for the 1K area, it was actually
zeroing ROM instead of RAM!
Added support for 'read from write port' logic for the upper 256 byte
page in E7 bankswitching.
Bumped version # for release to testers on AtariAge.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1919 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
in accordance with the naming scheme defined by Apple. This means
upgrading to the next version of Stella will lose all settings for
OSX users (unless they manually rename their current plist file).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1918 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
simply as 'Stella', just as it is on other platforms (instead
of StellaOSX). This indicates that the OSX port is now a
first-class citizen, with the same importance as Linux and Windows.
Also cleaned up various text files for spelling mistakes and
formatting issues in OSX.
Added credits for Richard Kennehan, who donated a 2600 console
and various controllers to help with Stella development.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1916 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba