Commit Graph
24 Commits
Author SHA1 Message Date
kichikuou b08b9f80f2 Add some helper functions to GameId 2024-12-24 12:22:10 +09:00
kichikuou 9173742ffb Introduce GameId class 2024-12-11 10:43:28 +09:00
kichikuou 48d780add6 Introduce Dri class
It caches the link table.
2024-12-08 13:39:23 +09:00
kichikuou 4174e0c1bb Refactor DRI 2024-08-17 12:59:36 +09:00
kichikuou 58859deec1 Refactor mako_midi.cpp 2024-08-17 10:15:05 +09:00
kichikuou 480548191f Add -mididevice option 2024-08-17 08:50:22 +09:00
kichikuou 41e69d7610 Real-time MIDI playback using RtMidi
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.
2024-08-16 10:11:41 +09:00
kichikuou cc75dd7c94 Convert linebreaks from CRLF to LF 2022-04-03 11:34:48 +09:00
kichikuou 60a0b43831 Fix warnings in MSVS build 2021-01-02 10:45:38 +09:00
kichikuou 79b4efa63e MIDI: Generate at least 60 seconds of MIDI data 2020-10-25 14:52:52 +09:00
kichikuou 01608c8fd5 Generate just right amount of MIDI data
Before this, MIDI data was generated until a fixed number of bytes was
reached. After this, MIDI data is generated for the duration of one
playback of the entire music, plus 1-second fade out.
2020-10-17 16:18:02 +09:00
kichikuou 6d39b6feee Merge upstream changes: Merge DRI changes
- Fail if file entry's size is 0
- load_mda() can now load MDA from subsequent disks.
2020-05-22 19:39:47 +09:00
kichikuou 657057fa64 Merge upstream changes: CRC32 updates
- Check CRC32 of both ADISK.DAT (storead as crc32_a) and BDISK.DAT (crc32_b)
- Update the CRC32 database adding more titles
2020-05-22 16:09:55 +09:00
kichikuou dadf0aa6b5 MIDI: Improve SMF generation
- Fade out in the last second
- Emit channel reset messages at the end
2020-05-17 14:13:40 +09:00
kichikuou 7a1cc2a483 Convert all Shift_JIS files to UTF-8 2020-02-24 18:06:38 +09:00
kichikuou 20ba438300 Unify executables
Instead of building multiple executables using #ifdefs, create a single
executable (still called "system3") that can run all System1-3 games.
2020-02-22 16:15:47 +09:00
kichikuou 387c5febf2 Remove tchar.h shim 2020-02-16 15:57:05 +09:00
kichikuou 51b65c84af MIDI playback with SDL_mixer
Instead of controlling MIDI device in real time, generate a data stream
in SMF format and feed it to SDL_mixer.
2020-02-15 17:27:34 +09:00
kichikuou de3bbf2595 System1: Detect game title by CRC32 2019-08-18 16:55:17 +09:00
kichikuou b442d4d966 Only win/ depends on windows.h 2016-04-02 23:52:51 +09:00
kichikuou d1fd4bd3e3 No windows.h dependency in .h files 2016-04-02 22:55:45 +09:00
kichikuou fff314587b Load MDA from file 2016-04-02 19:45:05 +09:00
kichikuou 1ca785f418 Use SDL timing functions 2016-03-27 19:38:45 +09:00
kichikuou 65221695d8 Import system3 for win32 2016-01-16, downloaded from
http://homepage3.nifty.com/takeda-toshiya/alice/index.html
2016-03-27 15:01:10 +09:00