- simplified register implementations
- program counter now a separate type
- register package renamed to registers
- moved status register to registers package
- reworked tests
- 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
- saving scripts (playback and state scripts) are now prepended with
info about what type of script it is. in practice it has proved
useful to know this from a glance, rather than opening up the file.
o gopher2600
- playing back recordings is now more intuitive
- removed option to specify the filename that a new recording will
save to but I think that's acceptable.
- 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
- sketched in web interface
o cartridge
- cartridge will now load from http:// target as well as local file
system
o Makefile
- added web and webserve targets
- 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
- calls to future.Schedule all now use references to static
functions and not functions created on demand
- massive speed up
o future
- added ScheduleWithArg() function to better handle the above
changes without closures
- 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
- timestamping of memory access can now be turned off
- call to time.Now() is expensive
o debugger / reflection
- REFLECT command now turns on/off timestamping in vcs memory
- 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