previously, the cached instructions still required a significant amount
of decoding. the new method captures the state of the decoding much
closer to the variable element of the instruction (eg. using what's in
the register etc.)
most of the benefit of the caching still comes from not having to reread
program memory every instruction but the new method does add a small
performance increase and arguably, more clarity to the code
the function no longer returns (uint8, bool) tuple. it instead expects a
function that can be called from the Tick() function itself, in the case
of "success"
this has significant performance improvements due to the frequency of
calls to delay.Event.Tick()
screenshotting now uses exactly the same CRT sequence as the playmode. a
single file for each screenshot rather than a selection of images
results aren't exactly comparable but the new pipeline means it should
be easier to manipulate to get the results we want
this target build a console friendly version of the windows binary.
tagged with development indicator because we don't ever want to release
these as an actual version
removed some old and unused make targets
BusStuff and CoProc functions are called a lot and type assertions are
moderately expensive and noticeable when done frequently. by making the
assertion in when the cartridge is inserted we can reduce the test to a
simple boolean comparison
the font rendering used for build and release target will use the
freetype library unless the go version indicates that it's being built
on MacOS with an M2 CPU (darwin/arm64)
for some reason not yet fully understand, using freetype causes an issue
on darwin/arm64
go-wav, statsview and memviz all indirectly used gopkg.in/yaml.v3 which
I do not want to depend upon
WAV functionality is no longer available for wav writing or reading
(supercharger tapes). will try to reintroduce functionality in the
future
Makefile updated to build with freetype by default.
building without the imguifreetype build tag will cause the application
to use the default proggyclean font
embeds JetBrainMono-Regular.ttf under the OFL-1.1 License
added -fpscap to emulate() function (used by both playmode and the
debugger) making it a good alternative to the -display option
getting performance mode to work with an increasingly complex
gui-emulation communication just isn't worth it. it would make the code
too complex.
this paves the way for removing the Emulation interface and using a
straight-forward Emulation type, which will be current Debugger type
renamd. the Debugger type is currently handling the playmode, performing
well and allowing tighter integration of the debugger and playmode.
the thumbnailer does the actual emulation in a new goroutine so there's
no lag here but it's necessary to PushRawEvent() so that
rewind.GetState() doesn't race
switch between debugger and playmode with F6 or backtick key
pakage debugger remains for now but it will be renamed to emulator or
something like that. playmode package removed.
commandline options for both debugger and playmode are the same
currently, with some playmode features being lost (temporarily)
like peripheral event and cartridge event notifications but placed in
the top-left corner of the screen
fixed race condition by calling playmode Pause() from the GUI thread
The error mecahnism worked but the VCSHook solution is more general and
has the added benefit of keeping all special-cartridge-handling code
together and keeping it out of the input-loop
this simplifies the sdlimgui/screen type in addition to the NewFrame()
and Resize() functions in the PixelRenderer interface
will allow better overview and summarising of television performance
playscreen F7 window shows "total scanlines" rather than "visible
scanlines"
added includeDetail argument. this adds the Go version string and time
parameted to the filname of any profile file (specified by the profile
parameter)
simplified GUI creation process in main goroutine sync
corrected Makefile spellings