this is marginally quicker but I feel it's neater. to solve the problem
of distunguishing between returns values (true, nil) and (false, nil)
the latter can implemented with a sentinal error.
it's less clumsy when used as a label and it's accurate with regards to
how the VCS is documented. not sure why I thought HorizPos was a better
label. maybe it helped my thinking in the earlier phases of development.
this affected regression tests when random state was switched on
- although regression tests reset the preferences to a known state
the timer was not affected when the VCS was reset, causing some
tests to fail inexplicably
added ability to skip tests during a regression run by issuing an
interrupt signal (ctrl-c). two such signals within 250ms will stop the
run completely
corrected log regression. now makes sure log is clear before beginning
collation
removed all messages from errors package. the strings are now hard coded
in place. the original reason for extracting the error strings like that
was (a) for redundancy and (b) for localisation possibilities. However,
in reality there is not much redundancy and since the project started
the scope of localisation is much larger (particularly due to the
addition of a GUI)
this is the first step. the next step is to remove the errors package
altogether. recent additions to Go mean that the functionality of the
errors package is no longer required. moreover, the original idea for
the errors package functions turns out not to have been as useful as
first appeared (the Error() functionality which makes sure no repeating
sub-strings occur is probably better achieved with static tooling).
one idea that comes from this which is quite interesting is the idea of
a curated error. that is, any error that has been "wrapped" as some
'generic' type. the IsAny() function in the errors package effectively
serves this purpose. we use that in one place in the input loop of the
debugger. not strictly necessary but nice to have so it would ideal
if we could remove the errors package but keep that idea.
log test records hash of log output
renamed digest test to video test. removed audio testing
added -log output to "regress add" mode. note that this has nothing to
do with the log test. it simply echos new log entries as the appear to
the console, supressing regression progress meters
the note about historical versions also being covered wasn't strictly
needed and was ugly. the LICENCE being in the root file from the very
first commit is sufficient.
unified/normalised static area structure and presentation
better tab bars for static area window
corrected cropped cursor drawing for pixel position on the VBLANK
boundary
TV specification changeable at command line and via GUI's debug screen
window
abstracted resizing mechanism opening the possiblity
for more sophisticated analysis
digest/video handles TV specification changes
bumped imgui-go version to 2.4.1
static data window in debugger
reworked menu system to allow cartridge specific window menus
cleaned up how cartridge RAM information is specified and retrieved
renamed cartridge.Format() to ID() and reference to "cartridge format"
to "cartridge mapping". format is an overloaded word already and it was
confusing.
because I'm sick of looking at it in the root package :-)
regression package made a reference to the clear line code sequence, but
honestly ANSI is so well understood there's really no need to delegate
this to another package. local copy of the code in regression package.
clarified when and how playback is allowed when TV types differ
currently there is only one television implementation but we may
need to expand on this in the future
the location of the configuration directory now depends on how the
binary is built. release versions of the binary will look for the
gopher2600 directory in the user's os configuration directory.
non-release versions will look for the .gopher2600 directory in the CWD.
paths.ResourcePath() will create the paths that don't exist
paths.ResourcePath() now clearly differentiates paths and files
added build target to the Makefile; disabled release target for now
- removed ErrorID, using the error message as the ID
- works just as well and simplifies maintenance
- the messages should be moved to the relevant packages OR to a
locale package. not sure which yet.
- improved documentation
- some tidying up
o regression
- improved documentation
o digest
- Digest interface now requires Hash() rather than String()
- warning: use of String() may now break things
- implemented audio
- using Ron Fries' method as the basis
- removed sample playback - performance of Fries' method is good
enough that we'll never need it again
- sdl audio routines using QueueAudio() - maybe better if we use
callbacks?
- sketched wavwriter AudioMixer - not usable yet
- 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.
- 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.
- 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)