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
that will be in the next release (ppc32, i386, x86_64).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1891 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
Leopard (10.6). From this point on, the lowest supported version is
OSX 10.4.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1886 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
better viewing in OSX default text editor.
Added build script and template DMG to automatically build a
StellaOSXver.dmg file.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1880 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
Updated the documentation for build info for Windows. Still TODO is add more detailed info for Linux and OSX.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1876 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
debugger disassembly improvements, so it will have to wait until 3.1.
Updated various files for impending 3.0 release.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1874 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
selects the item that was previously selected.
Fixed bug in Cheat dialog where editing a cheat didn't remove the old one.
Updated TODO, rearranging improved disassembly as the #1 priority for the
next release; I don't have time to finish it now.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1873 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
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