- reverted previous change for fixing an visual artefact in Tapper
* c56bea71231273bb2731400f14c6ebdea24cf9ef
- it broke homebrew Donkey Kong (there was no regression test)
- 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
- timings for writing playfield color register COLUPF and COLUBK now
distinct from the timing of writing playfield data
* fixes Tapper
o tia / player
- rule added that says draw deferment only applies for the primary
copy of the sprite and not for the second or third copies
* fixes Tapper
o sdl television
- metapixel layer now shown regardless of whether screen is unmasked
or not
- video Pixel() function (now named Resolve()) is called every cycle
and not only when HBLANK is off
- the function also sets the collision registers which needs to be
done even if pixel cannot be seen
* fixes Fatal Run
o basic television
- threshold for automatic-specification switching increased to 10
scanlines (from one scanline)
- added MachineInfo() functions to Instance type
o debugger
- added FUTURES argument to TIA command
- better filtering of empty strings in the debugger.print() command
* formatting of string no longer deferred to UserPrint()
o player sprite
- better handling of NUSIZ setting
- fixed command line parsing bug
- default run mode was broken such that flags were not recognised
- bug introduced in bf03447dc79fde2b21d0e9f0c62211ba5f77f601
- seeding of random number generator
* some areas of the emulated hardware start in a randomised
state (not committed yet)
- better argument parsing. better help messages for sub-modes
- 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