- removed REFLECT ON/OFF system
- the performance hit is not that great
o cpu
- added backward branching test
- added branching page fault test
o debugger_test
- increased timeout for rcvOutput()
- built testing harness. allows interactive debugger to be tested
with "go test"
- debugger can now be started with empty cartridge loader
- gopher2600 still expects a named cartridge but the debugger package
can function without one
- FromMemory() now creates disassembly instance rather than being a
function attached to the type
- comments and documentation
o debugger
- fixed usage of disassembly.FromMemory()
- the reason we went with the old method for FromMemory() was to aid
in how symbol tables were created and pointed to from debug-memory.
however it was dumb and confusing. problem is now solved correctly
- 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
- implemented SdlPlay
- simplified and more efficient SDL interface
- renamed PixelTV to SdlDebug
- SdlDebug implies debugging is allowed so removed AllowDebugging
request from gui interface
- removed stability code from SdlDebug
o television
- added stability detection to base television implementation
- added top/bottom scanline figures to specification types. more
intuitive to work with in some contexts
- reworking of comments and naming for clarity
o gui
- reworking of comments and naming for clarity
- moved overlay code to gui
- removed overlay package and renamed concept back to metapixels
- 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
- replaced machineinfo concept with instrumentation interface
- for now instrumentation is the same as the Stringer interface
- plans to add more advanced instrumentation with additional
interface requirements. Stringer is a good first step
o debugger
- removed verbose/terse modes
o regression
- fixed how frame regression gets state information (otherwise
broken by changes removal of machineinfo)
- streamlined how CPU results are created and stored
- speeds up execution a little
o debugger
- implemented Disable() function for consoles
- used to stop output when running initialisation script
- Attaching of cartridges now uses CartridgeLoader type
- CartridgeLoader type allows the caller to specify the cartridge
path and the format of the cartridge, if fingerprinting needs to
be overridden
- An expected hash value for the loaded cartridge can also be
supplied
o regression / playback
- regression database and playback scripts now include entries
specifying the cartridge format
- 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
- added setup package
- rerouted all vcs.AttachCartridge() calls through new package
o regression/database
- split database package from regression package
- 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
- 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
- renamed STEPMODE to GRANULARITY
- video granularity prompt no longer printed in bold type. easier to distinguish
between that a cpu granularity prompt
- keyboard events now include modifier keys
o debugger / playmode
- only react to keyboard presses with the correct modifier
- fixes problems when workspace switching with ALT-1 etc.
o hardware / vcs
- renamed MC attribute to CPU
o television / basic
- better emulation of Stella's method of counting pixels
- improves A/B testing
- implemented an out-of-spec HsyncSimple signal to help with this
o tia
- now sens HsyncSimple signal in addition to Hsync signal
- "TODO" comments notation changed to "!!TODO" to help with vim-todo
- TODO file changed to FUTURE to better indicate its purpose and not
to confuse with the autogenerated todo.txt
- 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
- reworked basic television
- added AUTO tv type to the command line - switches tv specification
to PAL automatically when visible screen exceeds NTSC limits
- updated all renderer implementation (sdl, digesttv, imagetv) to
handle specification switches
- 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
- 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
- commands can now be deemed unsafe
- script recording can handle embedded scripts
- script playback/recording moved to their own package
- videocycle prompt changed
o gopher2600
- improved default command line parsing
o general tidying up
o sdl/imagetv
- wrong error reporting
- 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
- updating SWCHA does not now clobber the entire register, only the
nibble for the controller being strobed
o playmode
- default recording name now includes seconds
- recording doesn't start until cartridge has been inserted (so if
the cartridge fails to load there is no useless recording file left
over)
o memory / periphbus
- PeriphWrite simply writes straight to memory, rather than through
a channel
- work on how controllers are implemented means this is no longer
necessary.
- 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