Had to refactor a decent bit in order to support running the program
without a running emulator. Now will open with the menu bar selected to
help indicate that a rom should be opened. Some day it might be nice to
just render something into vram to show on the screen instead, but
that's a future issue.
Also added screen clearing between frames, although this might break
blending. Will need to revisit. This allows imgui to render properly
when no emulator is rendering, though.
Finally, I made it clear settings between roms, since the options for
syncing, blending, etc were getting out of sync with the actual state of
the emulator. In the future, I should make sure that these are tied into
actual emulator state.
Now the Frontend drives the Emu, which is wrapped with an Accessor which
will eventually define which actions are available per Emu, and wrap
around calls into that Emu.
Added the ability to pause and toggle audio syncing from the menu bar.
This alone seems to fix Golden Sun. Many games like Gadget Racers still
don't work, but this seems to be a closer approximation of "correct".
Finally, the best game for the GBA is playable... I'm sad that this was
all it took to "fix" lol.
The next step will be abstracting features between the two, like the
scheduler, apu, display, and anything else than can be abstracted. Once
this is abstracted, I can go back to trying to fix the CryBoy APU that
started having trouble once it was on the scheduler. This will ensure
consistency between the two projects.
this improves performance dramatically in games that utilize halting, including pokemon ruby and golden sun. in both games, framerate was doubled or trippled in many cases