Map redraws used to snap the view and the player sprite directly to
their new position. Compose the view into an offscreen screen, and slide
it into place over several frames, interpolating the sprite alongside it,
so scrolling reads as smooth movement instead of a jump cut.
The original leaves the selection feedback to the mouse pointer,
which may be missing or impossible to move in system3-sdl2. Draw the
mouse cursor image extracted from GAKUEN.COM on the grid while the
keyboard drives the selection.
- MP3/OGG files are now decoded with dr_mp3 and stb_vorbis via the new
MakoMusic backend.
- Merge src/win/mako.cpp into src/generic/mako.cpp: Windows now uses the
same SDL audio path.
- A single SDL2 audio device mixes FM, BGM and PCM in its callback with
SDL_MixAudioFormat.
- PCM plays through SDL_AudioStream.
- dr_mp3 and stb_vorbis are vendored under deps/ and included from
mako_music.cpp. Warnings for that translation unit are silenced.
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.
* The parameter is the number of times to loop, e.g. Y103,2: will play
the sound twice. This still does not work on Windows because
PlaySound() does not support specifying the loop count.
* Get AMSE data size from its header. This fixes audio glitch at the end
of sounds.