Commit graph

97 commits

Author SHA1 Message Date
JetSetIlly 24f3f32342 simplified notifications package
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
2024-04-06 10:12:55 +01:00
JetSetIlly 821ff26a79 screenshotting improvements for OpenGL 3.1
OpenGL 2.1 renderer does not support screenshotting
2023-11-22 10:12:31 +00:00
JetSetIlly 5a4b01fd13 added rendering support for OpenGL2.1
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
2023-11-20 16:58:32 +00:00
JetSetIlly 3f6bd27324 modal dialog warning that non-supported DWARF data is being used
improved how modal dialogs are handled
2023-07-31 08:57:41 +01:00
JetSetIlly 28a22ab2b3 added coprocessor developer icon to cartridge notification area
corrected display of existing notifications. for example, emulation
notifications (pause, mute, etc.) would not display if cartridge
notification was visible
2023-07-31 08:57:41 +01:00
JetSetIlly e5045458cf coprocessor/developer package refactor
after work on callstack in the previous commit it became more apparent
than ever that this package needs a major refactor in order to improve
clarity
2023-07-24 16:11:48 +01:00
JetSetIlly 74c608415f new/refined screenshot modes
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)
2023-05-29 20:36:08 +01:00
JetSetIlly a8009b513f simplified the setting of FPS cap from the command line
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
2023-05-23 20:26:50 +01:00
JetSetIlly 9cb6cce02e added macro package and command line option
screenshot request to GUI system can specify a filename
2023-04-20 23:01:31 +01:00
JetSetIlly 11fb367ff5 periperhal event PaddleSet now takes a pair of float32 values
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
2023-02-27 21:27:21 +00:00
JetSetIlly 3aa5885ebe removed curated pacakge. replaced with wrapped errors
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
2023-02-13 21:58:39 +00:00
JetSetIlly a4945f6cb9 added ReqCoProcSourceLine to gui requests
GREP COPROC will send the request to open the source window at the
correct line
2023-01-25 22:41:45 +00:00
JetSetIlly b996a3abb7 gui.SetFeature() error value checked correctly in all instances 2022-08-31 14:37:00 +01:00
JetSetIlly 4975240831 remove DISPLAY command and ReqSetVisibility
very old concept no longer used in the current application
2022-08-31 14:37:00 +01:00
JetSetIlly 0cde9cc7fb added Notifications package
this replaces Event in govern package and in the mapper package.
NotificationHook moved from cartridgeloader package to new package
2022-08-31 14:37:00 +01:00
JetSetIlly 28ffedbf11 removed emulation package. moved types to debugger/govern package
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
2022-08-31 14:37:00 +01:00
JetSetIlly 738273519f removed gui.ReqShowFPS and -showfps command line option
state of fps overlay is saved on exit so there is now need for those
requests/options
2022-05-14 23:00:14 +01:00
JetSetIlly d4bcc9e6e7 state of fps overlay saved to preference file on program exit 2022-05-14 22:56:45 +01:00
JetSetIlly f247722f86 window position now aware of emulation mode
the same window can have a different position depending on
emulation mode
2022-04-29 13:50:33 +01:00
JetSetIlly db5d736f38 added -showfps option. shows FPS overlay by default in playmode 2022-02-16 21:17:54 +00:00
JetSetIlly 34d7c2e9d0 controller notification always shown according to preferences
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
2022-01-29 08:58:05 +00:00
JetSetIlly fe2bd37451 videochess bot behaves correctly if chess engine (stockfish) can't be found
cleanup up how bo GUI features are requested/discarded
2021-12-10 13:45:17 +00:00
JetSetIlly 8dca33d2ec bot window doesn't open by default. opens with F8 2021-12-06 21:33:09 +00:00
JetSetIlly 76d6d163b0 finished implementing the bots package. added the bots.wrangler package
videochess bot moved into the chess package

more flexible feedback from the bot
2021-12-05 22:04:01 +00:00
JetSetIlly 01f0a4f2ae videochess bot works with image (partly implemented) 2021-12-05 20:17:43 +00:00
JetSetIlly 8cbe5bf1c1 comparison emulation quits when entering the rewind state
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.
2021-12-05 20:17:43 +00:00
JetSetIlly 5a66dc20b7 plusrom prefs moved to hardware.preferences pacakge
this means the plusrom preferences are more easily accessible and
available even when a plusrom cartridge is not in use
2021-12-05 20:17:43 +00:00
JetSetIlly 0e3ec6a5d5 add visual comparison tool. command line option and gui
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
2021-12-05 20:17:42 +00:00
JetSetIlly 3f6bd5fccb preview thumbnails in ROM selector
added thumbnailer package to support thumbnailing
2021-11-15 13:37:50 +00:00
JetSetIlly aea9bc1340 readded plug monitor. removed and not reimplemented during playmode refactor 2021-11-06 16:27:17 +00:00
JetSetIlly 92d96cc4e9 major refactor. amalgamated debugger/playmode emulations
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)
2021-11-04 09:38:35 +00:00
JetSetIlly 22ead85bdc emulator event notification icons
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
2021-10-26 19:40:12 +01:00
JetSetIlly 321cf62d2d gopher2600 can be launched without filename on command line
this works for both playmode and debugmode. in playmode a ROM selector
will be shown immediately
2021-10-15 08:48:51 +01:00
JetSetIlly 7020df3ca5 playmode links Emulation to GUI before attaching a cartridge
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
2021-09-26 05:12:25 +01:00
JetSetIlly 6ac1a8858d removed gui.ReqState. replaced entirely with emulation.State()
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
2021-09-22 15:36:10 +01:00
JetSetIlly cc22223313 refactor of ports package
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
2021-08-24 16:02:12 +01:00
JetSetIlly 7b1cc9ffc0 changed controller notifcation to be more similar to cartridge notification
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
2021-08-23 18:12:36 +01:00
JetSetIlly 6d0bdb26c8 generalised cartridge events
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
2021-08-23 09:10:50 +01:00
JetSetIlly c2616c2573 added emulation package / gui.EmulationState (re)moved 2021-07-25 18:44:12 +01:00
JetSetIlly 89b7596837 implemented pausing in playmode
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
2021-07-24 08:07:23 +01:00
JetSetIlly 0f169f41bc TV fps now adjusted to match incoming signal
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
2021-06-22 22:22:07 +01:00
JetSetIlly b52e5e1599 controller change notification in playmode 2021-03-15 11:29:49 +00:00
JetSetIlly 156534a3fd added userinput package
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.
2021-03-09 22:37:08 +00:00
JetSetIlly a7cecfe0fe improved disasm window
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
2021-02-21 06:34:27 +00:00
JetSetIlly 564b0f50bb ReqChangingCartridge replaced with a ReqState type
using StateInitialising for the time being. may need it's own type but
it seem okay at the moment.

less noisy solution to the same problem
2021-02-19 19:24:49 +00:00
JetSetIlly 616dc894cf TIA revisions window accessible in playmode
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
2021-02-16 15:49:48 +00:00
JetSetIlly 19e2c7dbc0 changed/streamlined how playmode/debugmode is initiated and handled 2021-01-31 21:08:59 +00:00
JetSetIlly ab6c4aaeeb streamlined window/menu creation in sdlimgui
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.
2021-01-04 10:57:37 +00:00
JetSetIlly d5fa669b1b fullscreen command line option
can start playmode in fullscreen mode
2021-01-01 16:50:53 +00:00
JetSetIlly c22caf852b CRT blur (very basic chromatic aberration)
blur options added to CRT prefs window

CRT prefs now accessible from playmode (F10)
2021-01-01 14:29:46 +00:00