fs package is an abstraction layer for those function in the standard os
package that are used by gopher2600. for non-wasm builds the functions
are fowarded straight to the os pacakge.
for wasm builds, the calls are swallowed.
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
collision combinations now stored by bit pattern and not string. the
string is useful for the debugger but has performance implications on
the playmode. new method is probably marginally more efficient for the
debugger too.
only restarts inputloop on rewind if necessary
added SetFeatureNoError() as a speed optimisation
- for situations where we know for certain we don't need to
wait for the error to be resolved
reduced gui loop speed
RESET command resets last result information
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.
there are some latent visual artefacts that can occur because of the
nature of the lazy evaluation system but it's insignificant. in general,
the slider feels solid.
cartridge mappers can prevent rewinding past certain points. used by the
plusROM container type to prevent the replay of network events.
fixed rewinding to frame one after reset
- this caused issues during rewinding
simplified signal history in television storage
simplified pixelrenderer.NewFrame()
simplified pixel management for GUI screen implementation
frame limiter turned off for rewind events