allows sdlimgui to work at it's own frame rate (60fps) independent of
what is happening with the emulation
the reason the FPS limiter was in PixelRenderer at all was because of
the emulator's early development. originally, the television and pixel
renderer were the same thing; then it was decided that the television
should be independent of the renderer and the renderer (wasn't called
that originally) 'embedded' the television implementation; eventually we
got the system we have now. that's my memory of it anyway, the git logs
might tell a different story.
flow anlaysis is now something completely different to decoding
address masking for cartridge.SetBank()
mnetwork cartridges now return correct bank for upper segments
added iterate type and functions to help the traversing of disassembly
rather than the playmode events handler sending ReqMouseCapture events,
the gui handles the capturing directly
imgui interface requires more flexibility than what the request system
allows
main thread now installs a default ctrl-c handler. can be reset if the
run mode provides a better/context specific handler instead.
for example, debugger and playmode already provide handlers. we don't
want the default handler to conflict with it in any way.
the last commit didn't fail as expected (!) so the code has been
polished a little. error return channel from main thread to sub-thread
commentary improvement
makefile: for some reason I had added the -+ flag to the "go build"
-gcflags. I must have misunderstood what it was for
last commit still did not work in MacOS. this is a second attempt.
it will still probably fail but in a different way. it should let us
know if we're on the right track though.
sdl gui events are now serviced in the main thread. previously, the sdl
event had its own goroutine loop. this worked on Linux systems but
didn't seem to work on MacOS
A new interface called gui.EventsLoop has been created. When a gui that
implements this interface has been created (such as sdlplay and
sdldebug), the interface is passed back to the main thread. the
ServiceEvents() function then becomes part of the main loop.
simplified PAL detection. removed remainder of cruft from earlier TV/GUI
implementation. the method was too complex.
Tapper now auto-detects PAL correctly. Chiphead demo likewise
removed gui.ReqSetOverscan. it was ugly and not needed
the location of the configuration directory now depends on how the
binary is built. release versions of the binary will look for the
gopher2600 directory in the user's os configuration directory.
non-release versions will look for the .gopher2600 directory in the CWD.
paths.ResourcePath() will create the paths that don't exist
paths.ResourcePath() now clearly differentiates paths and files
added build target to the Makefile; disabled release target for now
removed fixes previously added to account for Pitfall silences. caused
problems with other ROMs, particularly chiphead demo
added option to PLAY mode that presets window to use overscan area.
prevents excessive window resizing when overscan use is detected.
commentary fixes
- result sub-package renamed to execution
- renamed Instruction type therein to Instruction
o disassembly
- reworked structure of pacakge
- better grep. scope of grep can now be specified
- display sub-package added
- disassemblies now store instance of display.DisasmInstruction instead of a formatted string
o debugger
- ammende GREP to support new disassembly features
- FromMemory() now creates disassembly instance rather than being a
function attached to the type
- comments and documentation
o debugger
- fixed usage of disassembly.FromMemory()
- the reason we went with the old method for FromMemory() was to aid
in how symbol tables were created and pointed to from debug-memory.
however it was dumb and confusing. problem is now solved correctly
- implemented audio
- using Ron Fries' method as the basis
- removed sample playback - performance of Fries' method is good
enough that we'll never need it again
- sdl audio routines using QueueAudio() - maybe better if we use
callbacks?
- sketched wavwriter AudioMixer - not usable yet
- removed references to SdlPlay and SdlDebug
- constructors for debugger and playmode now expect instances of GUI
and Television, rather than creating them
- this should help future porting efforts
o peripherals
- renamed Events to Actions
- to avoid confusion with Events in the GUI package
o television
- renamed StellaTelevision to television; a better name because
it serves as a reference implementation and is the only television
implementation currently needed.
- originally, PixelRenderers were implemented as Television that
embedded StellaTelevision; it made sense to use a more unique name
- note that we're still keeping and using the Television interface
- reworked specifications file
- saving scripts (playback and state scripts) are now prepended with
info about what type of script it is. in practice it has proved
useful to know this from a glance, rather than opening up the file.
o gopher2600
- playing back recordings is now more intuitive
- removed option to specify the filename that a new recording will
save to but I think that's acceptable.