- removed references to SdlPlay and SdlDebug
- constructors for debugger and playmode now expect instances of GUI
and Television, rather than creating them
- this should help future porting efforts
o peripherals
- renamed Events to Actions
- to avoid confusion with Events in the GUI package
o television
- renamed StellaTelevision to television; a better name because
it serves as a reference implementation and is the only television
implementation currently needed.
- originally, PixelRenderers were implemented as Television that
embedded StellaTelevision; it made sense to use a more unique name
- note that we're still keeping and using the Television interface
- reworked specifications file
- cartrdiges no longer return CartridgeListen error if nothing is
done in listen() function
- generating a new error is expensive to do every video cycle and
serves no purpose in this instance
o error
- remove CartridgeListen error
- corrected error handling for GUIEvents
- fixes erroneous crash caused by setting a duplicate mouse break
when emulation is running
- gui event handling now differentiates up and down mouse button
events
- renamed metavideo concept to reflection
- moved metavideo/reflection to its own package
- added ReflectionNotRunning error
- error message shown if overlay is turned on without reflection
processing running
- improved DISPLAY command
o sdl
- type assertion panics now caught in sdl.SetFeture() and returned
as a PanicError
- setup package now uses database package and matches entries to the
specified cartridge and applies the changes listed
- only panel entries supported so far
- database file must be hand written
- renamed FormattedError to AtariError
- renamed NewFormattedError to New
- implemented Is() and IsAny() for more convenient testing
+ changed all error testing to use Is() and IsAny()
- renamed FatalError to PanicError to better indicate the intent
- reworked index bug handling in CPU
- fixed slo opcode defintion (wrong addressing mode specified)
o debugger
- added BUG option to CPU command
- debugger now optionally prints CPU BUG messages on the step it
occurs
- RAM command now has CART option. displays any additional RAM the
cartridge may have
o cartridge
- implemented RAM() command. returns copy of RAM array
- save/restore banks functions are now save/restore state and deal
with cartridge RAM in addition to bank information
o debugger/memory
- better error messages for peek and poke
- reworking of timings
- improved MachineInfo() text
- work on NUSIZ * more to be done
o stella tv
- error if no flyback signal has been sent
o metavideo
- improved metavideo
- now visualises delayed effects
- added state option to frame regression
- records CPU-step granularity recording of the TV state
- intended to test for integrity of TV state recording
- feedback from regression entries now crop filenames to just the
last part of the path
- moved database code into its own package
- correctly filters PlaybackHashErrors - results in "failure" rather
than "error"
o gopher2600 / regression
- added VERBOSE argument to REGRESS RUN mode - prints error messages
- added FAIL argument to REGRESS RUN mode - regression test that end
in an error normally cause the sesssion to end. this option forces
it to continue
o RIOT
- removed randomised start value for INTIM
- makes regression tests more reliable
o television
- renamed BasicTelevision to StellaTelevision
- the source file had been renamed already
- debugger now handles CTRL-Z signals for terminal that have been
put into raw mode; like the colorterm package
- CTRL-C now asks for confirmation
- added EXIT command as an alternative to QUIT
o colorterm
- CTRL-C clears input line if anything has been typed
- input buffer checked for length before writing
- more general and more flexible handling different cartridge
mapping schemes
- implemented parker bros cartridges
o disassembler/debugger
- changes to bank detection to support changes to cartridge module
- a recent refactor caused the vcs to initialise with the basic
television rather than the sdl gui/tv
- this meant that the sdl implementation of MetaSignal was not being
called
o basic television
- scanline extension corrected
o errors
- messages corrected
- added progress meter for playback regression types
o errors
- added FatalError type. intended to be used instead of panic()
o limiter
- created limiter package
- moved sdl fpsLimiter to new package
- added HasWaited() function in additio to Wait() function
- renamed Recorder to Scribe
- any references to script "recording" has been altered
o errors
- some effort expended tidying up error messages display and
construction
- commandline package now uses errors package
o removed panics that would be better served with errors
o removed extraneous calls to fmt.Println and fmt.Printf
- added regression entry listing operation
- added playback regression type
- playback regression makes a local copy of playback script. delete
operation deletes it
- better database key handling
- running of regression tests can now be limited to a list of
specific keys
- renamed HeadlessTV to BasicTelevision
- imagetv and digesttv moved to a single package (called renderers)
- for example, an SDL GUI and a digestTV instance can now use the
same BasicTelevision instance
- hooks now implemented as a Renderer interface
- simplified GetState() interface
o debugger
- debugger now initialises an instance of digestTV, using the same
underlying BasicTelevision as the SDL GUI
- added DIGEST command
- reimplemented system monitor as metavideo
- system monitor was trying to be too general to the point where it
was confusing
- refactored sdl implementation accordingly
o debugging / script
- "script capture" reclassified/renamed as "script recording"
- i want to use capture to refer to the capturing of control input
(joystick, etc.)
o assert
- moved assert package to be a sub-package of hardware/cpu/register
- not required anywhere other than the test packages for cpu and
register
- parse input routines improved
- empty input will repeat the last step command (eg. STEP FRAME)
- added CAPTURE command
- user input is copied to a script file. suitable for future
playback with the SCRIPT command
- scripts now pass through input loop, allowing commands that
control the emulation (like RUN or STEP) to be effective
- reworked ONSTEP and ONHALT commands
- added STICK0 and STICK1 commands
o memory / pia
- improved RAM debugging output
- fixed bug that caused sprite position to be misrecorded
- caused by reckoning the effects of HMOVE from the reset position
rather than the current (possibly already adjusted) position
o debugger / colorterm
- implemented HOME/END keys for input loop
o monitor / sdltv staterecorder
- generalised colour assignment
- not perfect but more flexible
o debugger / breakpoints
- parsing of negative numbers now allowed
- debug colours (just the players for now)
- hmove type now uses a latch to keep track of when hmove event is
over, rather than the rather clumsy and prone to error method we
had previously. this goes someway to fixing a bug in the
emulation caused by late HMOVEs
o polycounter
- modified MachineInfo() output
- updated test routines to reflect changes to MachineInfo output
o debugger
- added DEBUGCOLORS toggle to DISPLAY command
- PLAYER command in verbose mode now prints player 0 and player 1
side by side for easier comparison
- similarly for MISSILE command
- verbose PLAYER output now includes commentary of the sprite size
setting
- similarly for MISSILE command
- corrected initialisation script error output
- removed tab completion time limit - can now cycle through options
until another key is pressed
o television
- improved screen size detection and stability routines
- this currently breaks the fix we had in place for Plaque Attack
but I think we can probably fix that some other way
- reworked disassembly routines so that it works better with
multi-bank cartridges.
- unfinished
o cpu
- reworked cpu testing routines
- NoSideEffects has been changed to NoFlowControl
* this means that memory is now written
* it is intended that NoFlowControl CPU instances be supplied with a
memory shim that can filter out write addresses as appropriate
* this was done so that we can see switching of cartridge banks
- tidy up of command line parsing
o regression testing
- added regression package
- implemented simple database to facilitate regression tests
- uses DigestTV
- implemented a headless television that can save the last image to a file
o DigestTV
- implemented a headless television that updates a screen digest
every frame
o gopher2600
- added "regress" mode. uses digesttv and will be used as the basis
of a complete regression testing mode
- implemented BRK and RTI instructions - not fully tested
- tidied up when NoSideEffect is checked
o debugger
- fixed breakAndTrapCallback
- fixed instruction result validity check crash caused when
instruction step resulted a runtime error
o cartridge
- added support for half-size cartridges
- tidied up error handling
o various commentary cleanups/clarifications
o move test files to test/ directory
- added 0x80 - immediate 3-byte nop
o vcs
- reset operation now resets TIA and RIOT in addition to CPU
o cpu
- reset attempt mid-instruction now returns suitable error
instead of panicking
o debugger
- fixed breakpoint/trap check when it occurs mid-instruction
- broken in 6045b9a9b65d623800b8e386e06fe0fdfb71998f
- fixed PEEK command
- fixed SYMBOL command
- SYMBOL command now takes optional ALL argument - prints every
mirror address of the resolved symbol
- tidy up how state requests are made
- added info requests
- implemented MOUSE info request
o debugger
- implemented 'LAST DEFN'. prints the definition of the last
instruction executed
- STEP now takes optional CPU or VIDEO keywords
- removed critical sections and replaced with channel
communication
- better lexing/parsing of command input
- break/trap on instruction effect (read, write, etc.)
(we had to implement a more flexible way of satisfying the
target interface for this. it works but it's a bit ugly)