- preparation for adding 7800 emulation
cpu (6507) package uncoupled from upstream dependencies
- cpu no longer logs execution of KIL instruction
- randomisation of registers on startup can be handled by the called of
the cpu's Reset() function
- address errors are filtered by an optional IsAddressError() function
in the Memory interface implementation
- Error field removed from execution.Result type
all references to interface{} replaced with any
the logger.Permission interface indicates whether the environment making
the logging request is allowed to create new log entries. the
environment.Environment type satisifies the Permission interface
logger.Allow is provided as a convienient way of indicating the the log
entry should always be created
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
AudioTick() function in tracker interface accepts TrackerEnvironment
instance. tracker implementation differentiates emulation instances and
records AudioTick() information accordingly
float32 pair defined as ports.EventDataPaddle
added functions to convert the float32 to and from a playback entry.
conversion from the playback entry tolerates a single float32 value
meaning that old recording files will work
rename plugging.PortLeftPlayer and plugging.PortRightPlayer to just
plugging.PortLeft and plugging.PortRight
curated package predated the standard errors package introduced in
go1.13
the standard package does a better job of what curated attempted to do
the change of package also gave me a opportunity to clean up the error
messages a little bit
previously the controller state could be left in a latched state despite
the physical controller being in the resting state. this was
disconcerting to the player
the problem was known about and a fix previously attempted so this is
actually a bugfix
QuickStep() removes all checking for changed memory state. moreover, if
the CPU RDY flag is false, we can say that QuickStep() is always
prefered to Step() because by definition the state of memory cannot have
changed
a small but significant performance improvement. a side effect of this
improvement is that execution speed will increase depending on the
number and length of WSYNCs
this allows the ports type to apply the mute state on newly inserted
peripherals
this prevents the situation on startup in which the mute is applied
before the peripheral is inserted
audioEnabled preference values renamed to audioMute
this is to facilitate the differentiation of muting and disabling
AtariVox output. muting of AtariVox is a subset of audio mute.
restarting the festival engine causes havoc when rewinding, causing the
festival engine to be quit and restarted over-and-over very quickly.
RestartPeripheral interface implemented by AtariVox and called
indirectly when changing AtariVox preferences
added Unplug() function to Peripheral interface. existing peripherals
updated to satisfy interface
volume mix increased. better balance with festival default volume
path to festival is currently hardcoded to be /usr/bin/festival
moved controllers and savekeys package to new peripherals package
removed auto controller
changed lazy.Controllers to lazy.Peripherals and Controllers window to
Peripherals window
changed CONTROLLER command to PERIPHERAL command. removed AUTO option
added savekey as an option to PERIPHERAL command and Peripheral window
addresses and bus interface removed and split into cpubus and chipbus
packages.
ReadZeroPage() no longer has any distinction from normal Read()
function.
INPTx input is masked correctly
RIOT.Ports no longer keep private copies of SWCHA, SWACNT, SWCHB or
SWBCNT. added ChipRefer() to ChipBus interface. this makes the interface
with memory more natural. for example, a POKE command will now correctly
be referred to by the Ports implementation in all instances.
playback/recorder and driven input systems moved out of the the ports
package and into a new input package. how the input systems interact has
been clarified and improved - for example, it is now posssible for a
playback file to be used to drive two emulations for comparison purposes
the debugger startup procedure has been clarified with two distinct
startup functions for playmode and debugger - each of which take
different arguments. the clarity has allowed the reintroduction of
recording and playback to the main play mode
this is now used when passing events and event data around. it also
records the port and time (in TV coordinates) which are required by
driver/passenger synchronisation and playback recording
removed television interfaces from signal package and moved the
interfaces to where they are needed
userinput for two emulations synced by RIOT ports. RIOT port
driver/passenger synchronisation ensures user input is seen by the
emulations at the same time (relative to the emulation's television)
does not yet handle RNGs (randomise on startup or the RNG in the DPC or
DPC+ formats yet). we need to add a context type first
this allows more elegant handling of unpause on controller input - no
unpause unless the controller is plugged in. ie. paddle input won't
cause the game to unpause unless the paddle controller is "plugged in"
added gamepad bumper (rewind in playmode) and guide button
(debugger/playmode switcher)