debugger and playmode refer to userinput package rather than the common
code being in the playmode package
GUI events are now userinput events
more versatile handling of EventData in controller package. parsing of
EventData is handled by the controller types as required. added
EventDataPlayback type to ports package to help distinguish source of
data.
EventDataStick used to specify stick data value. used to help
distinguish between setting a stick direction and toggle a stick
direction. the latter case is useful for (physical) gamepad input and
the former for input from a keyboard.
Gamepad analogue stick can be used for paddle input. PaddleFire removed
and Fire used instead.
version number of playback file increased to 1.1. version detection of
recorder.IsPlaybackFile() improved.
window positions in playmode are not saved. saved window positions from
debug mode does not affect playmode
updated play and performance mode instantiation so that TIA revisions
window in playmode works correctly
added IterateBlessed() function for Disassembly type. more convenient
method of outputting disassembly to a string.
instruction defintion notes whether opcode is undocumented
linter flags use of undocumented opcodes
renamed DISASSEMBLY command to DISASM
added single address disassembly to DISASM command
removed gui.ReqSavePrefs. prefs should only be saved under explicit
instruction from the user
added gui.StateEnding to be used with gui.ReqState when debugger and
playmode (and maybe other modes) are finishing. sdlimgui uses this to
save window information.
expanded --profile option for DEBUG and PERFORMANCE so that different
profile options can be selected/combined
added --profile option to PLAY mode.
many lint errors removed (re-added "make lint" to git pre-commit hook)
removed options related to setting scale of debug/play window
- can be done more effectively window controls
preference initialisation for debug and play modes is more clear
- removed errant playmode setting (terminalOnError - not applicable)
simplified window management
nicer feedback on rewind slider
screen will buffer a small number of frames it can use to smooth out
variations in the speed at which frames come from the emulation
results in better synchronisation for flicker kernels
result of changing rewind maxentries value displayed correctly in win_control
timer randomised on startup (if preference selected)
changing symbols preference updates disasm window vertical alignment
file selector:
- scrolls to top on directory change
- centres on current ROM when first opened
help note for the -state flags (REGRESS ADD)
changed default window position for timer window
removed some logical dead-ends
introduced the concept of restarting the input loop. this is important
when resetting the emulation for example. if the machine is reset during
a video cycle then the emulation will resume inside the video inputloop.
however the reset machine expects to be inside a cpu inputloop, causing
havoc. also used to ensure the rewind system works correctly.
restarting the input loop is tricky. it requires a RawEventReturn channel
that works like the RawEvent channel but returns control to the input
loop on completion.
added GetFeature() to gui interface to better support the rewind
subsystem. renamed ReqFeature() to SetFeature(). Added FeatureReqData
type for clarity.
line terminal debugging still works but without a GUI (for now). will
replace with an ASCII GUI and display in the future.
add gui.Stub to ease transition.
added CartHotspots debugging bus. used by symbols package to get
cartridge symbols information. should be useful for disassembly too
renamed hotspot() functions (in cartridge mapper implementations) to
bankswitch() for clarity
sdlimgui disassembly window shows address labels. disassembly iteration
updated to better support that.
SYMBOL command prints all mirrors for cartridge addresses
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
noticeable in the result of plusrom ID generation
plusrom first initialisation window. no longer need to press return
in nick textinput, clicking the "I'm happy..." button will register
the entered name.
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
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.
rather than being part of the Destroy() procedure
sdlimgui.Destroy() was run even in case of panics which would very
likely mean the save preferences procedure failed, leaving a broken
preferences file
playmode now uses the sdlimgui playmode, rather than a separate pacakge.
this removes a lot of duplicate code but it should also make it easier
to add support to flip between debugger and playmode on the fly.
bumped imgui-go version to 2.40
moved sdldebug and sdlplay to deprecated package. partly for neatness
but partly with the intention of removing in a future version
refactor and re-comment of sdlimgui package
sdlimgui tv screen window now properly resizeable
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.