There was a bug in the JIS to Shift_JIS conversion code, causing out-of-
range access to the gaiji array. Since the conversion was not necessary
in the first place, the indexes to the array are now calculated directly
from JIS code points.
`L [1-26]` should set RND to 0 after load, and `Q [1-26]` should set RND
to 1 after save. This behavior is used by the following games:
ayumi_fd, prog_fd, funnybee_cd, funnybee_fd, onlyyou, prog_cd, ayumi_cd,
yakata3_cd, otome, hashirionna2
Especially in hashirionna2, not setting RND breaks the control flow.
* `Z 2, 0:` clears the graphic screen.
* `Z 2, 1:` restores the screen by loading the background image, but
with a transparent color so that the preceding G command can be seen.
Fixes#31.
`-texthook print` prints text to console, and `-texthook copy`
automatically copies text to clipboard (for use with text hooker tools).
On Windows, copy mode can be toggled from the menu bar.
Before this, MIDI playback was done by generating an SMF data stream,
which was then played using platform-specific methods (MCI on Windows,
MediaPlayer on Android, SDL_Mixer on other platforms). However, this
approach had an issue where the Y18 command (which reads loop counts and
markers) did not work correctly.
With this change, the MAKOMidi class now uses the RtMidi library to
control MIDI devices in real-time. This approach was used in the
original "System3 for win32", but has now been made cross-platform.
The dependency on RtMidi is optional. If RtMidi is not available at
build time or a MIDI device is unavailable at runtime, FM synthesis will
be used.