the simpler method was fine except that it didn't work well with the
strict scaling policy that we introduced in d45e609534.
it was particularly noticeable when moving to full screen when a fully
"extended" NTSC image would not look right unless the ROM really did use
the entirity of the screen. for example Spike's Peak looks okay but
otherwise, there would be enormous black bars.
new initialisation value means GotoFrameCoords() when pushed from the
debugging screen will not cause an array out of bounds error between
television reset and the first NewFrame()
Man Goes Down screen size is wrong without this
this is on top of the existing additional scanline for Hack Em Pacman.
meaning that Man Goes Down requires an additonal two scanlines.
implemented deep-poking of playfield values. there may be pathological
instances where this does not work. not all addressing modes have been
added to the deep-poke function.
to be clear, non-playfield graphic elements (player, missile, ball) have
not had this feature added yet.
will probably also require some way of feeding back information, making
it clear what has actually happened or actually changed. changing of an
immediate value should probably trigger a redisassembly.
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 optimistion reflection overlay
it didn't show all optimisations that are now done in the TIA emulation
and it was difficult to present the information meaningfully. plus, it's
information about the emulation itself and not about the emulated machine.
cleaned up lint errors
this means that frames must be consistent for N frames before the resize
is committed to the PixelRenderers.
sdlimgui screen is now correct height to show limits of screen.
it's less clumsy when used as a label and it's accurate with regards to
how the VCS is documented. not sure why I thought HorizPos was a better
label. maybe it helped my thinking in the earlier phases of development.
resizer counts N frames (currently 5) before committing to a resize.
this gives the ROM change to expand the screen slowly without any visual
side-effect. the supercharger BIOS expands noticeably without this
mechanism.
fixed off by one error for Ladybug and Hack'Em Pacman (and probably
others)
missing doc files for crt and crt/shaders packages
menu entries for windows can have diferent labels to the window title.
(this was already a feature but it is now more clear/onvenient. change
prompted by lint error).
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
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
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
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
- 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
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