removed some unused GUI requests. originaly added to support earlier and
simpler GUI implementations, that have since been removed
ESC key now toggles input capture in debug mode
` (backtick) key toggles run state in debug mode
FPS measured even when fpscap is not active. measurement will be
done more reliably.
FPS indicator will always remain on top of playscreen
spelling mistake in Makefile .PHONY list
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
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
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.
rather than taking a snapshot of the reflection system, rewind replays
the emulation from the previous frame. this is a considerable saving
in memory. it also allows us to remove the signal history from the
television state information saved by the rewind system. this is also a
significant memory saving.
more efficient memory use possible I think by saving every other frame
or every third frame and allowing the emulation to run to fill in the
interim frames. this would require folding the input recording system
into the rewind system.
TIMELINE <n> function doesn't work as required just yet
screen refresh could be better on rewind plumbing
occasional deadlock when moving rewind slider
(this version is exceedingly memory heavy. including tv signal and
reflection history in the rewind system is a mistake. work will now
concentrate on the rewind system storing VCS state only and recreating
the tv/reflection signal when a state is restored.)
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.
television signal history array is static
PixelRenderer.SetPixel() now expects an augment SignalAttributes
instance. Color is indexed by the PixelRenderer implementation. SDLImgui
implementation now stores copy of specification for speed.
PixelRefresher folded into PixelRenderer. SetPixel() should be called
between two calls UpdatingPixles(true) and UpdatingPixels(false) for all
PixelRenderer implementations - whether it does anything or not.
emulation is halted (temporarily) when slider is moved and will resume
again when slider is released, from the new rewind position.
stored state information is copied and assigned to the emulation, rather
than just pointing the emulation to the stored copies. the old way
worked but running the machine could then clobber what was stored in the
rewind structures.
updates attached pixelrenderers. added Refresh() function and added
'refreshing' flag to SetPixel()
cpu and tia memory references updated on rewind
fixed rewind.Append()