Run GameActivity in a private :game process and terminate it after SDL
shutdown completes, ensuring that each game starts with fresh native
state.
Refresh the launcher game list from disk when it resumes instead of
using the process-local Launcher singleton from GameActivity.
Move ZIP install jobs from GlobalScope to a Launcher-owned coroutine
scope and store progress, success, and failure in InstallState. This
lets a recreated LauncherActivity render the current install state and
consume completed results once, even when observer callbacks happened
while the activity was absent.
ymfm's fm_engine_base::output() contains OPL-specific rhythm code that
accesses m_operator[13]/[17], which is out-of-bounds when instantiated
for OPN (OPERATORS=12). The code is unreachable at runtime because
rhythm_enable() returns false for OPN, but newer clang (emscripten) flag
it statically.
If CD audio is not available (no playlist) but CD playback is specified,
MAKO::play() falls back to FM/MIDI.
Also, on Windows, gray out the "CD Audio" menu item if CD audio is not
available.
Rapid register writes could cause audio glitches [1].
This introduces a queue to process one write per audio generation cycle.
This approach is the same as the one used in ymfm's vgmrender.cpp.
[1] https://github.com/aaronsgiles/ymfm/issues/1
This adds minimal command support to enable Gakuen King's music mode:
- P: Set text color
- I: Allow user to select a grid item using mouse/keyboard input
- Y25: Switch text window
- Y118: Set text X coordinate
- Y119: Set text Y coordinate
The meanings of these commands were investigated from the implementation
of Gakuen King's system3.5 port.
This introduces "Streamer Mode" to mosaic specified NSFW images, making
the game suitable for streaming or public viewing. This feature is
enabled via the '-censor <file>' command-line option, which takes a file
containing a list of image numbers to be filtered.
This fixes https://github.com/kichikuou/system3-sdl2/issues/34.
Some PMS in Rance 4.1/4.2 fan English translation have one less row of
pixel data than image height.
When such data is encountered, decoding stops. The image rows decoded
up to that point are transferred to VRAM.
<0x86A2> (U+2500, BOX DRAWINGS LIGHT HORIZONTAL) is used in Funny Bee
and Only You.
Note that these are not part of CP932, so they should not be added to
the unicode table of xsystem35/xsys35c.
This also makes the tables const.