Added infrastructure to System and Device classes to deal with CodeAccessBase
even when the bankswitching scheme bypasses the normal System::PageAccess
way of reading ROM space. This allows bankswitching schemes 2E, AR, FE and
4A50 to support emulation core 'hints' for more accurate disassembly. The
only scheme not supported now is MC, which isn't really working anyway (I've
never actually had a test ROM for this scheme).
It's getting close, folks ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2184 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
Still TODO is add support for PHA, PHP, PLA and PLP, and to somehow track
accesses that are stored in zero-page RAM first. These latter items may
end up being pushed after the 3.3 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2175 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
(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
the given screen. This is allowed in windowed mode, since the window
manager normally takes care of it. In the case of fullscreen mode, however,
it is never allowed, and an error message is shown.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2169 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
weren't being flipped after a refresh. This could be the cause of a
recently reported problem with fullscreen OpenGL mode 'bleed-through'
of the desktop.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2165 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
whether or not they're in cart space (aka, above $1000). Other parts of
the code can then choose whether to use them, if desired. This fixes a bug
in the 'Data src' output in the CPU area of the debugger, whereby addresses
were zeroed if they resulted from addresses below $1000.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2158 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
currently done by remembering the addresses accessed on execution of
LDA/LDX/LDY, and marking them as GFX during a zero-page STA/STX/STY.
This is obviously as WIP and required much more testing, but I'm
pleasantly surprised by how useful it is so far.
Bumped version # for AtariAge test release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2147 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
Updated Create_builds to properly deal with spaces in Win32 home directory, and to pause until the EXE release file(s) are actually created.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2136 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
screen size (vertically), the window will open in partially truncated mode,
where the top of the PAL image is cut off. This normally won't be a problem,
as it's mostly blank space anyway.
App window centering is now honoured when changing video zoom levels, not
just when changing eventhandler states.
Bumped version # for another test release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2135 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
'Virtual Devs' tab to 'Devices & Ports'. Updated documentation and
snapshots for this change.
Added Halo 2600 ROM info to internal properties database.
Increased default setting for 'joydeadzone' from 0 to 13. This means
the default deadzone is somewhere around half the axis range (~16500).
Fixed behaviour of hat events; events weren't actually being turned off
until the stick was centered.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2108 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
Some messages now use a smaller font, so the UI doesn't look quite
so monotonous.
SliderWidgets suppport the mouse scroll wheel to change values.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2097 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
method is only used in windowed mode. This eases the requirements
of the method, since fullscreen code need not be added.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2094 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
is update the documentation for this.
Fixed bug reported by Buzbard from AtariAge concerning very large images
in the RomInfoWidget being clipped too small.
Reworked 'center window' functionality. Using the SDL_VIDEO_CENTERED
environment variable was always a hack, and a bug was introduced in X11
OpenGL mode in version 1.2.14. However, since SDL is now in maintenance
mode and won't be receiving any further updates, we have to bypass it
entirely. Added infrastructure for OSystem to center the application
window. For now, only Linux X11 mode is supported. Still TODO is add
support for Windows. OSX was never supported anyway. This also means
that the center window variable no longer requires the application to
be restarted.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2091 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
present, and it properly loads and presents events from settings.
Still TODO is implement saveConfig(), to send the new events to EventHandler.
Modified ContextMenu/PopUpWidget to honour the 'mwheel' setting when
scrolling with the mouse wheel (previously, it always scrolled at 1 line
at a time).
Updated OSX project files for recent ComboDialog addition.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2090 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
on AtariAge. It seems the documentation regarding port B is incorrect.
Pins previously defined as input/read-only *can* in fact be set as output,
which are then overridden if the console switches are pressed.
Or at least that's my understanding of it; I'm not entirely sure if this
is correct or not.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2087 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
these bits were ignored, and treated as high all the time. A recently
reported Stella tracker posting noted that these bits could be
configured by SWBCNT to be input or output, and hence used as 3 extra
bits of storage. This is now enabled. Because of these changes, the
state file format has also changed.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2085 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
1) Added a 'Reset' button to the UI, which resets (to defaults)
the currently selected item. This is more fine-grained than the actual
'Defaults' button, which resets *all* events.
2) Rearranged some buttons and resized UI. There is now a main 'Defaults'
button on the bottom of the dialog, which applies to the currently selected
tab. This also allows to set defaults for Virtual Devs, which didn't have
such functionality previously.
3) Added a 'Combo' button to the Emulation events tab. It doesn't do
anything yet, but eventually will allow to assign events to the 'combo'
events.
ContextMenu/PopupWidget now supports the scroll button on a mouse when
in scroll mode.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2084 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Fixed compile error in Zlib for Windows; unistd.h is not (normally) available on the Windows platform.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2082 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Context menus, both as right-mouse button popups and those part of
PopupWidgets now have arrows that support scrolling, without having to
continuously click the mouse button. The scroll arrow color also
changes to disabled when they reach the upper or lower range.
Also, the maximum number of items shown in a ContextMenu is now 16,
which looks quite a bit nicer than showing 30 or so all at once.
ScrollBarWidget now looks a little nicer, as the scroll bar is a little
wider, and the arrows are larger (same ones from ContextMenu). As well,
click and hold works on the scroll buttons, even during mouse movement.
This means you no longer have to hold the mouse completely still to
get continuous mouse click events.
Dialogs can now register whether they want to receive continuous mouse
click events (aka, click and hold of a mouse button). Most dialogs
don't need it, and some even work incorrectly when it's activated.
This fixes a bug in ContextMenu, where click and hold on a PopupWidget
would continuously open and close the list of items.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2080 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
smaller than 640x480. Basically, the only way to use smaller modes is
on systems that report their desktop to be smaller than 640x480, or by
using the maxres commandline argument to simulate the same thing.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2079 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Stella can use (320x240). The app should no longer crash in such
low-res situations.
Various improvements to the UI, adding many finishing touches. The
text is more descriptive, and the options are somewhat better labeled.
As well, the available options are better presented based on the
restrictions currently in use (ie, if the maximum resolution is very
small, then the high-res resolutions are not shown in selectors, etc).
Added MessageBox to ROM Audit functionality, to warn that it is a
dangerous operation and that a file backup is advised.
Updated OSX build script to not crash when an older image has already
been created.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2076 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
are multiple normal events that are called in sequence. The
infrastructure is in place to use these events, and they're
loaded/saved in the 'combomap' commandline argument. Still
TODO is add a UI to edit the events (manually editing the
config file is really tiresome).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2074 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Set default rom directory to '~' ($HOME), instead of the current
directory.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2072 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the UI.
Modified the ROM launcher to display a messagebox when running Stella for
the first time (which currently means when the 'romdir' hasn't been set).
This messagebox suggests setting the default ROM directory, and if the
user clicks on 'OK', only then is the ROM directory file browser
displayed.
Reworked some of the event handling methods in EventHandler to save
function calls on every event.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2071 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
proper C++, I find out there's a PERL script to do it in about 5 seconds.
Yes, I feel like an idiot.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2069 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Also, fixed a potential future bug where Stella can't handle paletted
images. Basically, the error handling is now more robust.
Minor rework of the CartF8 class; it now looks the ROM MD5 directly and
decides if it's a 'special' ROM.
Several updates to the built-in properties database, including better
support for each game in the 8-in-1 ROM image.
Fixed crash in TIA handling of the playfield mask; it could cause a
segfault under certain circumstances.
Fixed bug in prune_snapshots script; it now properly handles directory
names containing spaces in both Linux and OSX (and probably Windows as
well, but this hasn't been tested).
Updated built-in PNG library to the latest version (1.4.3).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2066 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This fixes a bug in exiting pause mode, and 'remembering' the
events that were set previously.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2065 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The event mapping for such events is now done on the release of the
axis/hat, and not on the first press. This should fix the remaining
problems with sensitivity, as the user must explicit press and then
release the axis/hat, with all other events occurring the meantime
being ignored.
Fixed bug in continuous events for axes/hats; event that represent
'off' should not be continuously sent.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2063 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
axes. It shouldn't be nearly as sensitive now.
Cleaned up handling of joystick hats, and fixed continuous events
(so that holding down a hat now sends continuous events until the
hat is centered again).
Fixed bug in prune_snapshots script; it didn't work with a snapshot
directory name containing a space.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2062 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
been chosen), a dialog box now appears, asking the user to enter the
default directory. This directory will appear each time the ROM launcher
is entered, until the user selects a directory. This will hopefully
eliminate bug reports from users that don't know what to do when first
starting Stella.
Big changes to the manual, separating the necessary, up-front information
from the advanced stuff that can be considered later (or not at all).
Also added more links to ease navigation. This should make the manual more
readable for those that have complained it's too long.
The setting for TV color type is now 'Color' and 'BW', instead of
'BlackAndWhite', as before. The old one will continue to work, though.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2059 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
when sending axis events to the DialogContainer (ie, all UI-related stuff).
The UI code was originally written with this in mind, and wasn't designed for
analog input. For normal digital sticks, nothing changes. For analog sticks,
values are clamped to 3 points (max, min, off), and repeated consecutive
events are ignored. This (partially) fixes bugs in the UI, where pressing
an analog stick would cause the current selector to move very fast.
Added repeat mode for joystick hats, similar to joystick axes (so holding
down a hat will cause continuous events to occur. More testing is
required for this, as I don't actually have access to hats right now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2058 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Stella actually needs. I suspect more stuff will be excluded as
I look through the options.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2057 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
systems where gettimeofday doesn't exist. Basically, the functionality
for OSystem::getTicks() has changed to always output an increasing
value each time it's called, even between program runs (needed for
timestamps for continuous snapshots, but also for similar things in
the future). It does this by refering to some set time in the past,
which is currently the UNIX epoch.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2056 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
so they don't overwrite previously created files. This timestamp is
related to the millisecond that the snapshot was taken, so there's no
chance of overlap (snapshots can only be taken every 1 second / 1000
milliseconds at most). The appended value is an 8-character hex
representation of this 32-bit value.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2055 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
The UNIX builds for Debian and Redhat/RPM now default to using the
builtin PNG and zlib libraries. This will ease issues at release
time, since we don't need to worry about those libraries being
present on the destination systems.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2054 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
interlaced or row-filtered images to be correctly processed.
Updated the non-Intel XCode project to include libpng support.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2050 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
version isn't available. Of course, because of compiler errors it doesn't
actually compile yet :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2048 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
efficient, and use macros that have already been defined.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2047 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
similar to the recent Zlib addition. This is required for the
RomListWidget, which currently doesn't parse valid PNG files
that are generated outside Stella (in particular, those that
have been optimized and use row filtering).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2044 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
now properly detected as E7.
Some minor cleanups to the Cart classes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2036 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Bumped version number so development can start on the next
release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2035 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
(ie, disabling from the UI kills the UI on future runs, so you can't
enable it again). This should fix problems where users go
'click-happy' in the UI, turning options on and off just to see what
happens.
Added 'showinfo' to the UI, so you don't have to drop to the
commandline to use it.
Updated all release files and bumped version number for 3.1.2
release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2031 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
These have ARM code appended to the beginning of the ROM, which is
(for now) ignored by Stella.
Improved memory usage for DPC and DPC+ schemes, so that an extra
copy of the ROM image is no longer required. This also fixes a bug
in the getImage methods, which wouldn't have actually returned any
changes made by patching the ROM (it always returned the original,
non-modified copy).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2030 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
an outputstream. For now, the output simply goes to stdout or stderr,
just like before, but the possibility is now there to redirect to a
file if desired.
Changed 'showinfo' commandline option to accept 'levels' of output
instead of simply being a boolean. The new default is level 1,
in which normal messages are output during a run. Level 2 will
show more detailed info, and may be useful in debugging end-user
problems. There's still more work to do wrt level 2.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2029 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
after I say it's the last commit :) Maybe for the next
release I'll create some scripts to handle this ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2017 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of OSX. It was partially caused by 'negative time', or successive
calls to SDL_GetTicks() returning smaller values than previous calls.
This obviously totally confused the timing logic, which was never
designed for time to go backwards. Related to this, setting the
framerate to 0 from the VideoDialog UI (indicating that auto-frame
should be used) ended up setting the time-per-frame to approx. 71
minutes, resulting in a delay of 71 minutes to the next frame
(which is what caused the 'lockup').
Changed all references to the Intel OSX build to also mention OSX
Snow Leopard (10.6), since the build won't run on 10.4 or 10.5.
Bumped version number to 3.1 (again). Hopefully this is good to go.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2016 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
final support for this completed before the 3.1 release next week.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2015 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
to bump it again.
Rant mode : each release of Stella seems to get harder and harder.
I have to fight to force myself to get ready for release time,
and when it comes, there always seems to be something popping
up at the last minute. This time, it's crashes on various
iMacs that I just got access to (while everything is working
perfectly on my Macbook Pro). I sometimes think it's time
to throw in the towel, and move on to other things ...
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2014 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Updated all remaining issues with the documentation and
changelog, and bumped the version # to 3.1.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2013 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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