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
when the Console runs autodetection routines at startup.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2344 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Tweaked the sound code again, to eliminate garbage data between
loading ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2342 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
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
other than that specified by 'romdir'. I'm not going to document
this functionality, since it's a convenience function that will
probably only be used by me anyway.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2333 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Updated all bankswitch schemes for potential buffer overflow
issues. Copying was being done without regard for the size of the
ROM buffer.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2325 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
these aren't fully activated yet, but they're the next thing I plan
to work on.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2322 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
it should always display the playfield colour, even if it
would normally use P0/P1 colours in normal mode.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2317 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
mean 'hardware-accelerated, double-buffered'. This distinction
is important, since eventually such a mode won't necessarily be
OpenGL-backed (it might be Direct3D, OpenGLES, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2312 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
but at least it progresses through different screens when you press
1, 2, 3.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2307 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Eventually I'll find a more elegant way to represent this.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2301 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
separately to different paddles.
Updated documentation for impending 3.5 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2296 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
'const string&', which saves a string c'tor call each time they're
accessed.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2293 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
when it isn't needed. According to SDL this shouldn't be necessary, but
some combinations of video modes and audio hardware cause sound to stop
working if it's repeatedly opened and closed. So we have to keep it open.
Always attempt to use 2 channels (aka stereo) when opening the SDL audio
device. This is now required, since ROMs can request mono or stereo mode,
and the sound system can no longer be closed and re-opened with the
desired settings. So we need to always use 2 channels to accommodate
when it might be needed. This actually more closely emulates the 2600,
which does have two audio channels. The 'mono' vs 'stereo' ROM property
basically controls whether these channels are exposed (ie, does the
virtual console have two-channel audio hardware installed). In that sense,
these settings control how the channels are mixed.
Updated some settings to have more reasonable defaults.
Added acknowledgement for people that have donated hardware to help with
development.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2291 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
They were being saved correctly for all sticks, but only loaded for
the first one.
Removed some redundant settings related to TV effects stuff.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2289 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
ROMs with an odd # of scanlines will display the image in
black & white, just as on a real system.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2287 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
have actually been loaded during the program run. Otherwise,
it will erase previous mappings.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2286 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
saved per device, so that unplugging and replugging a joystick won't cause
the previous mappings to be lost.
All attributes of a joystick (ie, number of sticks, number of axes, buttons,
hats on each stick) are dynamic, meaning that hardcoded values are no
longer used, making the handling more robust.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2285 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
desktop on OSX and Windows, and the home directory in Linux.
The associated commandline has been changed to 'snapdir'.
Added 'GL VBO' toggle button to the Video Settings UI, and in
general cleaned up its interface.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2282 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
in this area.
Added commandline argument 'thumb.trapfatal', which causes fatal errors in
the Thumb ARM emulation to really be treated as fatal (ie, the emulation stops
and throws an exception). This is enabled by default (as it always should be).
When disabled, fatal errors simply log the error and continue with emulation.
This was added because the current HarmonyCart ARM code isn't always exactly
compatible with the emulation in Stella, and there is a lagtime from when
Harmony implements something to when the same functionality is added to Stella.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2279 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Specifically, the 3-voice audio routines read from ROM instead of RAM, and
the setting the ARM MAM register no longer causes the ARM emulation to crash.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2278 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
distinct GUI vs non-GUI (aka TIA) classes. This makes it easy to proceed
from this point on, since I don't have to worry about breaking one mode
when making changes to the other.
Preliminary support for TIA scanlines in OpenGL mode. It's disabled for
now, but is progressing nicely. This will be part of the new TV effects
in the next major release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2273 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
compliant. It actually went smoother than I thought it would.
This show allow Stella to run well on *any* hardware-accelerated
OpenGL machine, not just those with beefy video cards.
Cleaned up the code a little, removing more references to the old
OpenGL TV filtering (which will be replaced by Blargg NTSC
filtering soon enough). Also removed 'gl_texrect' option, which
specified to use the GL_TEXTURE_RECTANGLE_ARB extension (for
non power-of-two textures). It was never enabled by default,
didn't work with ATI cards, and wasn't accessible in the UI,
so I doubt anyone will miss it. Besides, it's not supported in
OpenGL ES 1.x.
Next is to look into VBO/PBO, to see if more optimizations can
be done.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2265 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
don't normally use the commandline (mostly Windows, but in some cases OSX as
well). The 'showinfo' commandline argument has been renamed 'loglevel', but
it has the same purpose. A new option 'logtoconsole' has been added, which
determines whether log output should also be directed to the commandline/
console (previously, it was always printed to the console). All these items
are now accessible from Options -> System Logs.
For anyone reading this (and that cares), now I can finally move on to the
OpenGL rewrite. The plan is that the new code will use OpenGL ES, which
is a subset of OpenGL 1.5. The main advantages are that you won't need
an advanced OpenGL card, and OpenGL ES is supported on most new 'smaller'
systems (iPhone, Android, etc), making ports much easier.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2264 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
Fixed bug in handling analog axes with jitter; they were overriding events from
digital, hat and keyboard input.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2251 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
several cases (fixes problems when moving the mouse too fast or
when changing between video modes). Added extra signature to the
bankswitch autodetection for the 4A50 scheme.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2249 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
- it doesn't have a hotkey any more
- it is changed in the "Input Settings' UI, not in 'Video Settings'
- it only has meaning while in emulation mode
- it is enabled by default
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2245 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
which are specialized paddles classes that invert the axis, direction,
and axis+direction, respectively. Updated all applicable ROMs in the
properties database.
Cleaned up the menus in the OSX port; some of them weren't even tied
to anything. I'm seriously considering removing them all, except for
the Help and Quit items.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2230 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
- mouse can now emulate joystick, booster-grip and driving controllers
- digital and mouse sensitivity for paddles can now be tweaked
separately, and have a greater range
- the mouse now correctly honours its controller setting, and only
controls a device on one one port (not both at the same time)
Added support for 2600-daptor device. Credit for creator of device
is forthcoming. This device is basically an updated Stelladaptor,
with improved handling for paddle data.
Grabmouse functionality is no longer user-definable; the mouse is
always grabbed while playing a game, and released otherwise.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2228 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Wrapped THUMB ARM emulation in a define, so that it can be excluded
from builds. To enable it, the 'THUMB_SUPPORT' directive must be
included in the build process. This has been added to the OSX
project files, but is still TODO for Linux and Windows.
Removed some obsolete include paths from the OSX project files,
dating back about 5 years or so.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2215 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Also fixed warnings when compiling on 64-bit compilers.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2214 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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
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
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
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
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
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
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
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
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
'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
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
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
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
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
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
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
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
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
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
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
1) the interval between snapshots can be configured within the
'File Settings' dialog
2) the commandline option is now named 'ssinterval' instead of 'ssdelay'
3) the action is tied to the 'Alt/Cmd-s' key instead of a function key
There's just one more small issue to take care of in the Windows port,
and the next release should be ready.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2011 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
'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
Bumped state file header for 3.1 release, indicating that all older
state files will no longer work.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2000 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
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
Changed 'basedir' location of OSX port to
'~/Library/Application Support/Stella', which is more in line
with Apple guidelines (not to mention it's not a hidden
directory, so it can be seen in Finder).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1995 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
release. This won't have everything I'd have liked to include,
but the release time has dragged on enough (the last release
was in Sept 2009!).
Some general code cleanups for the OSX port, as well as fixes
to the menus. The menus contained items that in some cases
weren't actually tied to any event, or showed the wrong
shortcut key. Also removed some of the more esoteric menu
items, sticking with only the most basic ones (fullscreen vs.
window mode, volume control, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1991 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
as 'const', and return types are closer to the actual type of data
returned.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1985 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
really aren't that many ROM banks. This is done so that the RAM banks
always start at number 256.
Added latest DPC+ updates from Spiceware.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1983 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the debugger. Still TODO is add debugger patch support.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1982 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
how this scheme works, so I have to research further before adding
patch support. But before that even happens, I need to fix out why
entering the debugger in locking the ROM and eventually crashing Stella.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1981 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and E7. DPC and DPC+ currently do not modify the DPC address space
on a patch; more research is required to figure out how to handle this.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1980 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
4A50 and FA.
Fixed bankcount for 3E carts to also consider the RAM slices.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1978 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
when their address space has been modified by poke. Any writes done
inadvertently by reading from the write port are also flagged. This flag
is used by CartDebug to determine if cart address space has changed.
For now, it uses this information to do a complete re-disassembly.
Entire bank changes are signaled by setting myBankChanged to true,
which overrides the page dirty flag and short-circuits testing for it.
Still TODO is add support for 'AR' bankswitching, and fix the patch
method for several schemes.
Added latest DPC+ updates from Spiceware and Batari.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1976 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
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
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 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
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
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
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
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
is related to the currently running ROM. If enabled (the default and current
behaviour), state files that do not match the currently loaded ROM will not
be loaded. Otherwise, the state file will attempt to load. Note that in the
latter case, this will probably cause 'bad things' to happen. It's mostly
for developers who are constantly recompiling a ROM, and wish to use a
previously created state file even when the ROM MD5 changes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1915 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
them in under src/emucore/m6502/src, and bspf under that again at
bspf/src. It just made searching for classes that much harder.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1907 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
get nearly enough attention. This is about to change, since I'm moving
to using it full time at work (still Linux at home though!).
The 'Control' key modifier for OSX is now the actual Control key, just like
on every other platform (instead of Command). The 'Alt' key modifier for
OSX is now the Command key (instead of Shift-Cmd). Maybe in the past it
made sense for this, when keyboards weren't the same between platforms, but
that's no longer the case. And since Stella requires at least OSX 10.4,
everyone using it from this point on probably has newer hardware.
Still TODO is consider a few special keys for OSX (minimize, hide, etc).
Updated documentation for new key combos, as well as the recent build
and debugger improvements.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1906 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
controlled by 'tiafloat', which has now been removed. Now, all
undriven pins take on the last value on the databus. This fixes a bug
in those reads where bit 6 or bits 6 & 7 are also undriven (previously,
these bits would always be zero, and only bits 0-5 were from lastdatabus.
Added new commandline argument 'tiadriven', which defaults to false.
In this default case, relevant bits take on values from the databus.
If true, relevant bits still take on databus values, but some are
randomly driven high as well. This helps to expose bugs when
developers assume the values for undriven/floating bits.
Added 'uimessages' commandline argument and associated UI item. When
disabled, messages which are normally shown in-game are disabled.
Certain messages which indicate a serious error are still shown, however.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1900 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Fixed BSPF_ARCH macro to correctly detect i386 and x86_64 in Windows.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1898 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
version and SDL library.
Bumped version # for test builds for AtariAge members.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1897 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
The values written and returned in such a case are now more accurate,
and are a combination of the previous databus value and randomization
(the latter emulating the randomness of Z-state bits). This provides
more accurate emulation than before, where zeros were used instead.
In particular, types 3E and E7 are now working correctly for the first
time. Thanks to Batari for suggestions in this area.
Moved random number generation from Cartridge to System class.
The Subversion build number is now shown in the AboutDialog box.
Still TODO is add architecture information (i386, x86_64, etc).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1895 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
was duplicate code in many Cart classes and in M6532 class, and since all
these classes are subclasses of Device, it made sense to move the
functionality there instead.
Carts 3E and E7 now return a random value when attempting to read from
the write port. Still TODO is determine what happens to the value at
that address (is it randomized or zeroed?). Thanks to Batari for
suggestions and sample code.
Fixed bug in E7 carts when entering the debugger; bankswitch was being
inadvertantly triggered which caused emulation to fail.
Overall, I need to figure out exactly what happens when reading from
the write port for all carts with extended RAM. There are two things
to consider: what value is written to the address, and what value
is returned.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1892 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
determining whether we're running in 32 or 64-bit mode on a particular
system (especially in OSX, where the same app could contain up to 4 actual
builds).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1889 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
objects. These actions are tied to the same keys as for toggling the
objects themselves, with the addition of the 'Shift' key. For example,
toggling the P0 object is 'Alt z', and toggling P0 collisions is
'Shift-Alt z'. Note that disabling an object will obviously disable
its collisions as well. Still TODO is work out how these keys map on
OSX; the Shift key is already being used for something else.
Reverted Cosmic Ark 'starfield effect' to match the descriptions
given in the 'Stella 3.0 released' thread on AtariAge. It seems the
system I tested this on has an Svideo mod board that changes the
output from a normal console.
Bumped state file format header, since the TIA internals have changed
again. As well, bumped version # to 3.1_svn.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1884 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
all graphical objects in different colors in fixed debug colors mode,
even those that normally share a color register (ie, P0/M0, P1/M1, etc).
Removed TIA::updateFrameScanline, an unwieldy 600+ line function. It
was useful as an optimization measure when Stella was first written,
but at this point I think it's more trouble than it's worth. Removing
the code not only makes the TIA class much smaller and easier to
understand, it also fixes some graphical bugs in fixed debug colors
mode (bugs that probably wouldn't have been found otherwise). Next on
the chopping block are the various 'masks', or at least the alignments
(which cause the arrays to be 4 times larger than they need to be).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1871 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
normal scan. Previously, the blanking was done each frame, but the new
way more accurately emulates what happens on a real system.
Added a few tweaks for the properties database.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1870 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
The movement was already correct, but one of the missiles has weird
behaviour caused by 'confusing' the TIA. This results in a four
colour-clock wide missile with the third pixel turned off. I don't
know if this is entirely accurate, but I do know that the snow in
Stay Frosty now looks exactly the same in emulation as is does on a
real system, so I'm content to leave it for now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1866 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
screwed up by my placement of the 'mmr' logic.
Added StayFrosty ROM info to properties database.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1863 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
starfield effect. More research is required in this area.
Large update to exception handling throughout the codebase. It seems
that in many cases, the correct 'catch' block was never being called.
I never see exceptions thrown very much, so that area doesn't get much
testing. But I guess it's good that Stella doesn't generate many
exceptions :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1862 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
many more scanlines than a real TV would allow. This fixes both graphical
corruption and slowdowns in Q-Bert ROM (which contains code to do a tight
loop extending VBLANK time, in effect generating a 'frame' with 1000's of
scanlines).
First pass at a method to determine the first 'relevant' scanline of
a TIA frame. This isn't easy, because there are many conditions
for this to occur. The eventual goal is to eliminate Display.YStart
tweaks in the properties file, and have the TIA code itself figure out
the best value.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1858 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
of a boolean. It now accepts value '-1' to mean 'completely disable
fullscreen mode switching'. This was added because some systems with
buggy video drivers can't handle fullscreen mode, and accidentally
trying to do so can lock up such a system.
Fixed fullscreen/windowed switching wrt grabbing the mouse. Sometimes
switching from fullscreen to windowed mode had the cursor trapped in
the window, even if grabmouse was disabled.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1852 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
of is the 6K version of 'Cubis'. Thanks to Eckhard Stolberg for advice
on this.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1847 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
near the top of the list. The TIA HMOVE stuff is well underway, the
Blargg NTSC emulation is being done by the Georgia Tech team, and the
debugger improvements (disassemble zero-page RAM, Distella integration,
and rewind in the debugger) will be started soon.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1846 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
documentation by using more appropiate variable names.
Added enum's for collision bits to TIATables and TIA classes,
making it easier to visualize what the code is doing.
Fixed poke delay for NUSIZx registers. This fixes display issues
in 'Bumper Bash' and 'Pole Position'. The remaining graphical bugs
in those ROMs is fixed by the new TIA code.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1843 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
of 'FA' and 'F0', respectively, as defined in Kevin Horton sizes.txt
and used in z26. For compatibility, the old names can still be used.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1842 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
very difficult, as I'm working on 3 different branches at the same time :(
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1840 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
detection being done outside the displayable area. Originally, areas
above 'YStart' scanline were not processed as all, as an optimization.
However, several ROMs can do collision detection above ystart, so
we now process the entire frame (but only display the stuff below ystart).
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1839 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
mapped to Backspace, and is used in the ROM launcher and various
BrowserWidgets. The event can be remapped if desired. When I'm
testing Stella, I tend to use the keyboard almost exclusively, and
it was getting a little tiring to reach for the mouse each time I
wanted to change directories.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1836 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
so we need to make sure that Sub2K ROMs less than 64 bytes are
properly 'paged' to that size.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1825 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
and doesn't know what intxx_t datatypes are. So we need yet another
check for Win32-specific stuff in BSPF.
Folded getTicks() from UNIX and OSX back into OSystem directly.
The default is now to use OSystem::getTicks() unless it's
overrided by a platform-specific OSystemXXX class.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1824 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
problems with integer overflow, which could sometimes cause Stella to
sleep for long periods of time. For those who are interested, the
problem was that SDL_GetTicks() wraps every 49 days (32-bit int
overflow), but since OSystem::getTicks() provides info in microseconds,
it multiplied the value by 1000. This caused wraparound in 49/1000
days, or 70.56 minutes. This almost exactly matches the reports on
AtariAge of 'lockups' occuring every 71 minutes or so. It also
explains why attaching to Stella with GDB and bypassing the delay
allows the program to continue (as reported by another bugtester).
Added signature to detect UA bankswitching for Gingerbread Man ROM.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1823 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
they're properly loaded and saved in the config files. The code to
correctly load strings containing backslashes was already there over
7 years ago, and I deactivated it and never even noticed. That must
be a new record for a long-standing bug :)
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1812 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
shown within the UI use the '~' symbol whenever possible. This means
that paths from the settings file are now truly relative; change your
home directory, and the settings file will still work (it no longer
contains absolute path names).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1776 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
more sense, as it isn't a double-negative any more).
Made PropSet::getMD5() more explicitly return a boolean indicating if the
properties were found, vs. having a CartName of 'Untitled' indicating that
it wasn't found.
The file being used by Stella in multi-file ZIP archive is now shown in
the window title, vs. showing the name of the ZIP file itself. Related
to this, a file with an extension of 'rom' is now valid inside ZIP
archives.
Updated documentation for bankswitch types, more clearly indicating which
ones support autodetection and the debugger.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1775 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
as if they were 32in1 carts, in that you have to do a on-off power cycle to
switch between each ROM.
Updated ROM properties for the aforementioned BS types, and fixed some
others (SWOOPS, etc).
Added PERL tool to scan a snapshot directory and report any extra and/or
missing snapshots.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1774 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Added OpenGL info to the TV effect tab of the VideoDialog, so users
can see why the effects aren't available if OpenGL is not sufficient.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1772 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
start with game 0 (as if it's been unplugged for some time), but reloading
the ROM with Ctrl-r will cycle through each game (emulating a power-cycle).
Fixed crash when specifying a directory on the commandline; only files
are supported as ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1770 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
not by actually copying pieces of ROM, but by addressing different
parts of the ROM with an appropriate mask. This fixes a patching
bug I just found, whereby patching one part of the ROM wasn't
propagating it to the rest of the image.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1769 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Because the version was always being returned as 0, the TV effects were
always disabled, even on hardware that could support them.
Creation of OpenGL video mode is now more robust. If it fails for any
reason, fallback to software mode is now done (and a message stating
that it happened). This still won't protect against the operating
system lying to Stella and saying OpenGL support is really available
when it isn't, though.
Added support for ROMs smaller than 2K. These are still treated as
2K ROMs, but have their contents mirrored appropriately.
Bumped version number.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1768 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Randomized value placed in accumulator after exiting the SC BIOS for
SuperCharger ROMs. This should fix issues in Dragonstomper, where it
seems the randomization of its items depending on a random accumulator
value.
Re-added '-fastscbios', and when enabled, it completely skips
the emulation of SC BIOS progress bars (previously, the bars were
simply sped up). This defaults to off, for more authentic emulation.
Related to this, added a UI item in VideoDialog to enable/disable it.
Thanks to Eckhard Stolberg for advice on the SCROM, and how to
modify it.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1763 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
wrote this back in 2000 or so, after I had just finished an algorithms
design course, and insisted on coding my own ADT. I've come to realize
that in most cases, rolling your own is just a waste of time :) Related
to this, the 'listrominfo' commandline argument now correctly shows all
the ROM info built in to Stella internal database.
Bumped version # to 2.8. I just need to check out OSX, and then we
should be ready for the next release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1757 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the ones that bankswitch in RAM, since I don't know what should happen there.
Added 'exitlauncher' commandline argument, which specifies the functionality
of the 'Exit to launcher' action; should exiting a game actually go back to
the launcher, or exit the program entirely. Also added a UI item in UIDialog
for this.
Reworked the fullscreen/windowed handling in FrameBuffer, simplifying the
logic for determining whether the SDL surface is actually in fullscreen
or not.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1752 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
the Stella header/disclaimer, just like all the other source files.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1751 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
General updates to the documentation for people I forgot to include in
previous releases. Also added websites where applicable.
Update AboutDialog to be more current, showing only those members
currently active in the Stella project and the other teams that have
contributed code. For more specifics, you should now see the manual.
Basically consolidated all contribution info into one document, so it
has to be kept up-to-date in only one place.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1750 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
correctly for the PAL version of the ROM. I'm still not really
satisfied with the paddle emulation, but I guess it will do for now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1746 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Added CRT simulation as described by Ian Bogost in the AtariAge thread
'CRT simulation for Stella. This is just the first pass, but things
are working nicely so far (for those systems that can support it). It
requires at least OpenGL 2.0 with GLSL (GL Shading language). Added
the commandline arugments 'tv_tex', 'tv_bleed', 'tv_noise' and 'tv_phos'
used to set these various effects, as well as the ability to set them
within the Video Settings dialog. More documentation is forthcoming
on this.
All bankswitch modes that use SC RAM now act correctly when reading
from the write port (the RAM is erased).
Patching ROMs with bankswitch type 0840, SB, UA and X07 is now working.
Went through all the bankswitch classes and converted multiplication/
division to shift operations whenever possible. It's a
micro-optimization, but what the heck; every little bit of speed counts.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1739 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba