notifications interface instance moved to environment from
cartridgeloader. the cartridgeloader package predates the environment
package and had started to be used inappropriately
simplified how notifications.Notify() is called. in particular the
supercharger fastload starter no longer bundles a function hook. nor is
the cartridge instance sent with the notification
all references to opengl are now made through the renderer interface.
which renderer is to be used is controlled by buildtags
now requires minimum go version of 1.21
CRT preferences and CRT preview in debugger TV window are disabled for
OpenGL2.1
corrected display of existing notifications. for example, emulation
notifications (pause, mute, etc.) would not display if cartridge
notification was visible
screenshot modes are now divided into single, motion and composite
'single' works well with regular displays (ie. Pitfall etc.)
'motion' works well with some flicker kernels (eg. zookeeper and similar)
'composite' meanwhile is very good at creating images with most flicker
effects eliminated (eg. Wenhop) and capturing motion (eg. Wabbit)
command line now only accepts true/false as options. previously, the
options were aimed at allowing different syncing methods with the
monitor but that's not needed now
float32 pair defined as ports.EventDataPaddle
added functions to convert the float32 to and from a playback entry.
conversion from the playback entry tolerates a single float32 value
meaning that old recording files will work
rename plugging.PortLeftPlayer and plugging.PortRightPlayer to just
plugging.PortLeft and plugging.PortRight
curated package predated the standard errors package introduced in
go1.13
the standard package does a better job of what curated attempted to do
the change of package also gave me a opportunity to clean up the error
messages a little bit
the emulation package has been unecessary since the amalgamation of the
debugger and play modes. in order to allow switching between the two
modes it was necessary to remove the playmode package and to move all
playmode loops and other considerations into the debugger package. as a
result the abstraction offered by the emulation package is uncessary
previously notifications were not shown on startup and only on
subsequent changes. that was intentional but it doesn't work well with
the new fingerprint system
added gamepad notification icon. increased notification icon size
rewinding the main emulation breaks the strict synchronisation
constraints with the comparison emulation. it should be possible to
maintain two parallel rewind instances *and* to maintain the constraints
but I've chosen not to tackle that just yet.
userinput for two emulations synced by RIOT ports. RIOT port
driver/passenger synchronisation ensures user input is seen by the
emulations at the same time (relative to the emulation's television)
does not yet handle RNGs (randomise on startup or the RNG in the DPC or
DPC+ formats yet). we need to add a context type first
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
attaching a cartridge can trigger an event that causes the GUI to try
and access the Emulation. we need to attach the emulation before that
happens.
Supercharger tapes send a ReqCartridgeEvent and we don't want that
happening too early
I had started to do this work but hadn't finished it.
added gui.ReqEnd so that gui can exit gracefully (save window
preferences etc.) this was previously handled by ReqState
added PeripheralID type to complement PortsID type. renamed keyboard
peripheral to keypad, which is more accurate and removes any potential
confusion with the physical keyboard the user might be using
it's a distinct mechanism but they are used in similar ways. I don't
think there's any need just yet in rationalising all notifications to
use the same system
this replaces the supercharger and plusrom activities used with the
VCSHook mechanism
guis can no accept ReqCartridgeEvent feature requests
added tape icon which will show when tape/soundfile is playing
this has revealed the way forward for an effective convergence of
playmode and debugging mode. for this commit a Playmode interface has
been added but this will abstracted into an Emulation interface in the
future
TV frame will never resize if frame is unsynced
Play-screen FPS counter shows target frame frequency
sdlimgui playscreen: screen will not roll on first couple of non-synced
frames. the screen is tolerant of the odd rogue frame.
gui vsync options renamed to monitor sync to clarify distinction wth
emulated television VSYNC
debugger and playmode refer to userinput package rather than the common
code being in the playmode package
GUI events are now userinput events
more versatile handling of EventData in controller package. parsing of
EventData is handled by the controller types as required. added
EventDataPlayback type to ports package to help distinguish source of
data.
EventDataStick used to specify stick data value. used to help
distinguish between setting a stick direction and toggle a stick
direction. the latter case is useful for (physical) gamepad input and
the former for input from a keyboard.
Gamepad analogue stick can be used for paddle input. PaddleFire removed
and Fire used instead.
version number of playback file increased to 1.1. version detection of
recorder.IsPlaybackFile() improved.
lazy system now pulses the update time. is used by the disasm window to
synchronise updating
clearer method of switching between play and debugmodes (not fully
implemented yet)
extended mapper.BankInfo fields to include Name (useful for identifying
BIOS in the supercharger, probably not much else)
cart summary info moved from disam window to menubar
window positions in playmode are not saved. saved window positions from
debug mode does not affect playmode
updated play and performance mode instantiation so that TIA revisions
window in playmode works correctly
removed gui.ReqSavePrefs. prefs should only be saved under explicit
instruction from the user
added gui.StateEnding to be used with gui.ReqState when debugger and
playmode (and maybe other modes) are finishing. sdlimgui uses this to
save window information.