replacement for GuiStateRewinding request removed in previous commit
particularly effective when rewind snapshot frequency is greater than
one frame
colorterm should now work correctly with RawEvents and RawEventImm (I
don't really use colorterm anymore but this corrects an oversight)
rewind system feels smoother and quicker. fixed bug in TV plumbing
introduced by recent commit
removed StateRewinding / StateGotoCoords requests. it was slowing things
down and it seems other recent changes have removed the need for them in
the first place (purely visual reasons).
cart ram/static areas show changes across time
supercharger TV reset after tape load no longer resets frame number.
this affected the rewind system and how it stores historical data.
improved responsiveness of service loop polling
VCSReturnChannel so the television can inform the VCS about a change in
television spec. The VCS uses this information to forward clock
information to the cartridge.Step function
DPC and DPC+ music generators now use correct VCS clock value in all
instances
while it works under Linux it doesn't work on Darwin on Windows. the
ideas behind it though, I've retained and am now using the
sdl.WaitUntilTimeout() function which does a close enough job and is
guaranteed to work on all systems.
two polling methods have been abstracted into two files polling_fancy
and polling_simple. these are built according to the build constraints.
currently fancy polling is used by linux and darwin and simple by
everything else.
deadlock prevention for new service loop - caused by serviceWake channel
being serviced on both ends in the same goroutine. fixed with
select/default construct
fixed bug which caused screen-cursor being shown when emulation is
running
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
Collision tests run less frequently
Pixels are reused more often
Streamlined Playfied.pixel() and Player.pixel() functions
Tiny improvment to ARM MapAddress() imlplementations (CDF and DPC+)
Small improvement to performance of ARM read 16/32 bit memory functions
Unchanged overlay renamed to "Unoptimised"; now highlights pixels that
were generated without any optimisation at all
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)
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
the reset routine now tests each bank to see if the reset vector is
sensible. probably applicable to some other mapping formats but
keep it to the Atari ROMs for now.
I've flip-flopped on what the start bank should be for atari cartridges.
I'm reasonably happy that this is now correct.
fixes Voice Enhanced Bezerk ROM while retaining correct beahviour for
all test ROMs
software interrupts unimplemented
DPC+ function call hotspot expanded to support copy functions and
parameters
DPC+ARM ROMs working:
frantic
space rocks
unholy
donkey kong arcade
oofescape
zaxxon demo
DPC and DPC+ windows renamed accordingly
cartridge peek/poke now read/write cartridges in passive mode
- it should always have been like this
cartridges with coprocessors no longer alter anything when in
passive mode
- this affects DPC and DPC+
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
NewFrame() non-synced is now only called if VBLANK is off
this fixes: flappy, the chase screen on Hack'Em Pacman, ProTennis; while
not breaking ROMs that deliberately do not send VSYNC like (Andrew
Davies' Chess ROMs)
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