moved controllers and savekeys package to new peripherals package
removed auto controller
changed lazy.Controllers to lazy.Peripherals and Controllers window to
Peripherals window
changed CONTROLLER command to PERIPHERAL command. removed AUTO option
added savekey as an option to PERIPHERAL command and Peripheral window
file extension and -mapping option to indicate superchip for mappers
that support it, changed SC rather than +. For example, "2KSC" and not
"2k+". This avoid confusion with mappers that use the + symbol for other
purposes (for example, DPC+)
cartridge.Attach() will log cartridge insertion with mapping ID
information
removed description field from all cartridge mappers that still had it.
the field was no longer referred to but we may add something similar in
the future
this replaces the supercharger and plusrom activities used with the
VCSHook mechanism
guis can no accept ReqCartridgeEvent feature requests
added tape icon which will show when tape/soundfile is playing
The error mecahnism worked but the VCSHook solution is more general and
has the added benefit of keeping all special-cartridge-handling code
together and keeping it out of the input-loop
regressionDB wasn't storing the requested cartridge mapping correctly.
for example, if no mapping was specified by the user but a mapping was
detected by file extension then the detected mapper was stored. this
caused problems with supercharger audio files - the AR mapping was
stored in the DB but no that it was an audio file
DB now stores the user specified mapping in all instances (ie. not the
mapping detected by the file extension).
related to this was that the deserialisation of DB entries was not using
the cartridgeloader package correctly. instead of using NewLoader, the
deserialisation was populating the Loader type manually.
soundfile (WAV or MP3) will stop when cartridge stops looking for tape
data and will rewind when it reaches the end of the file.
tape position slider in debugger
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.
very rough currently. race conditions in network access, requires
restructuring.
no logging from network access. again, requires some engineering in the
log package to avoid race errors
hook function will be called when $fa1a is read to tidy up emulation
before continuing with the newly loaded ROM (eg. TV reset, dissassembly
of loaded data)
cartridgeloader package allows WAV file extensions
supercharger tape window added to debugger
not completed: known problems include cartridge not being
re-disassembled after tape loading.
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.