- reworked scan counter to correctly handle 4x stretching
- changing NUSIZ value while scan counter is active now works
correctly in most cases - some additional consideration of
secondary copies required
- playback regression entries will now end with an error if
emulation has not terminated at 100%
- shouldn't ever happen except during development of the emulation
core. none-the-less it is useful for regressions to end in all
instances.
- loosened up tab completion so that session doesn't reset if only
trailing space has changed
- removed erroneous call to tabcompletion.Reset() in colorterm (* it
may once have been required)
- 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)
- played around with timings to try a get resetting of sprites
during an active HMOVE to work correctly
- the solution maybe a misstep because I've had to alter when the
additional HMOVE clock occurs, with no other good reason
- none-the-less there is some good work clarifying code
- questions about accuracy added to FUTURE document
- 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
- implemented Has() function
- Error() now de-duplicates error string parts
* for example, instead of:
error: foo: foo: bar
Error() will now return:
error: foo: bar
- small reordering of recording setup to make sure startup events
are transcribed into the playback transcript
o regression/play
- playback regression and playing of playback scripts ...
- ... cartridges not attached with setup system
- any required setup events are in the playback transcript
- 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
- added setup package
- rerouted all vcs.AttachCartridge() calls through new package
o regression/database
- split database package from regression package
- the three clocks/scanline attributes are the same whatever TV
specification is used
- these three values are now constants in the package rather than
attributes of the Specification type
- playfield was errantly reporting that playfield pixel was on in
the HBLANK area in certain circumstances.
- this was causing phantom collisions in certain situations
- reworked start drawing condition to account for restarted start
signals
o player
- debugging string now shows which copy of the sprite is being drawn
- added permanent accumulator instances, rather than calling
NewAnonRegister every time I need one
o missile
- improved accuracy of reset-to-player
o ball/missile
- implemented pixel condition necessary for Cosmic Ark starfield
o tia
- moved future package into tia package (from delay package)
- removed delay package
o video
- fixed priority/scoremode color selection
- 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