- 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
- ANDing of breakpoints now works correctly
- listing of ANDed breakpoints now correct
- corrected command template for BREAK
o debugger
- STEP command template and parsing corrected
- moved future package to delay package
- schedule delays are not part of delay package
- VBLANK trigger moved back to tia package
- TODO: could do with some more work. maybe moving
onFutureColorClock and onFutureMotionClock to a single type; and
then passing a copy to types that need them; delay values could be a
table that lists delay cycles alongside which delay group it is
associated with; maybe make delay values adjustable at run time (?)
- added help command
- nested groups
- extensive commentary
- improved error message when not all tokens have been parsed
- repeat groups
- removed %* placeholder
o debugger
- updated command definitions to match new commandline package
- reworked debugger memory routines
- implemented an addressInfo type that normalises display of address
information
o memory
- renamed vcssymbols package to addresses
o console / colorterminal / easyterm
- tidy up
o debugger
- tidied up break, trap, watch, symbol commands
- refined when motion clock is set/unset. if HMOVE has been set then
motionclock is set/unset at a different color clock.
- clarification/tidy-up of comments and function names
- changed peripheral identifcation from a string to a type
(PeriphID)
- recorder.playback can now more efficiently filter, using an array
rather than a map
- removed CENTRE event and replaced with more flexible NOLEFT,
NORIGHT, NODOWN and NOUP events
- splace joystick ammended as appropriate
o sdl
- keyboard down events not forwarded if event is a repeat event
o performance
- tidy up
- linear disassembly could cause bank switches naturally through
memory accesses
- this caused the linear loop to write the disassembly to the wrong
array
- fixed by resetting the bank every loop iteration
- 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
- fixed bug caused by interaction between basictv and digesttv
- some roms (games_that_do_bad_things_to_hmove) failed playback when
the screen limits changed
- the best solution I could find was to prevent basictv calling
registered renderers once the last possible scanline was reached
- in previous versions, the last scanline was redrawn over and over
until a new frame was ready
- this however, caused a hashing issue in digesttv when playing back
recording input. it is unclear to me why this hashing issue arose.
however, the solution is a more natural response to end of frame
conditions as well as a being a fix for this bug
o regression
- regression top level functions now output to an io.Writer passed
as an argument, rather than to Stdout directly
- playback will now save an image of the current frame (via imagetv)
in the event of playback failure
o television
- NewFrame() and NewScanline() implementations both require a
frameNum and scanlineNum argument
- added performance package
- moved fps() function from gopher.go to new package
- added percentage of full-speed indicator to fps
o gopher2600
- changed FPS mode to PERFORMANCE
o polycounter
- squeezed a little more time out of polycounter by changing the
receivers of some frequently called functions to pointer receivers.
o television / colors
- changed how colors are transalted from signals
- the color specifications are pre-processed in an init() 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
- 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
- stores string representation of disassembly rather than instances
of result.Instruction
- it was felt that the context of result.Instruction maybe
misleading if probed after the disassembly process (it may not be
obvious to a user of the disassembly package what the limitations are)
o commandline
- in all instances, error messages containing placeholders now
contain descriptive messages rather than the placeholder itself
o debugger
- added analysis option to CARTRIDGE command
- lots more work required on this
- added a "linear" disassembly that deciphers every address in the
cart as though it were a valid instruction. this solves the problem with
the original disassembly algorithm (now called flow) caused when the
debugger reaches an area of the code that cannot be found with the flow
mechanism.