the emulator could crash with an array bounds panic if execution reached
the end of memory
if the check fails (ie. the panic would occur if the check was absent)
then the ARM yields with with a YieldExecutionError
this isn't strictly necessary for correct operation of DPC+ and CDF due
to how they work but it does allow the coprocessor registers window to
update as expected
atarivox does not start the engine except for the main emulation. ie.
thumbnailers and preview emulations, etc. do not use festival
atarivox does only steps if the builtin savekey is in the stopped state
preview can be used to run a ROM for a short period in order to gather
information about the ROM that can only be found through execution. this
is useful for example, for setting the TV dimensions
previously, the static memory was not subject to the Snapshot()
function required by the rewind system. static memory is now copied
on every snapshot. this isn't normally needed because in DPC the data
cannot be changed by the 6507 progam. however we might want to change
the data through the debugger and it is therefore desirable that copies
are kept for comparison and rewind purposes
apart from better organisation, these changes fix a bug in CDF that
could cause a crash caused by the ARM program accessing a memory address
that is not represented in the emulation
sometimes the command line argument, AUTO, was sent rather than the
detected specification as a result of the AUTO request. this resulted in
a spurious/misleading log message
for example, in ROM Hunter's archive there are directories called "PAL
VERSIONS OF NTSC ORIGINALS" and "NTSC VERSIONS OF PAL ORIGINALS". these
cause false positives in the TV spec search
this replaces the PAL60 specification. PAL60 can still be specified on
the command line (and embedded in ROM filenames) but it is now treated
exactly the same as PAL
EventDataPaddle can now specify whether the values are relative or
absolute values. previously all values were absolute
hardware mice use relative values whereas devices like the stelladaptor
use absolute values
removed gamepad trigger operation of paddles. it was a poor solution to
the problem
values internal to the paddle implementation are integer based rather
than float based. incoming events are still float based
paddle resistance value set correctly on reset. this means unplugged
paddles are positioned correctly
tick value reset to zero on VBLANK. not resetting to zero could cause
visible jitter on the screen
mouse capture now uses SDL "relative mouse mode" this means the mouse
movement is based on the screen rather than the window
improved the detection of the starting bank for Atari cartridges by
searching the banks for a "correct" reset address. basically, if the
reset address is in cartridge space then it is assumed to be correct and
that bank selected, otherwise the next bank is tested
Berzerk (Voice Enhanced) does not work with anything other than a
starting bank of 0
extensive commentary added to atari.Reset() function about why bank 0 is
correct
the TV is reset in the same manner as supercharger on receipt of the
notifcation. This allows the TV to auto-detect the specification from
the movie content and not the attract screen
the disadvantage of this is that the NTSC attract screen will show for a
PAL movie but this is a small complaint. the way around this would be
for the first dozen frames of the movie to be run unseen before the
attract screen starts and for the TV to detect the specification from
that
updated QUANTUM and STEP commands to accoodate new quantum
control window changed to support the three quantum options
improved/corrected the conditions under which the ONSTEP command is run
disassembly.ExecutedEntry() updates existing entry
this means that a mapper only needs to implement the Patch() if it makes
sense
mappers that don't need it have had the Patch function removed.
implemented function for SCABS and UA
corrected error messages for atari mappers - some messages weren't
referencing the correct atari mapper and simply stated "atari"