51 Commits
Author SHA1 Message Date
kichikuou 981c302dfc Migrate Android from SDL2 to SDL3
Make SDL3 the default and only supported SDL version for Android. Download
the official SDL3 Android AAR during Gradle configuration and expose it to
the native CMake build through Prefab. SDL_ttf 3 is built from source with
HarfBuzz and PlutoSVG disabled.
2026-09-16 09:24:40 +09:00
kichikuou 3e32da1d37 Add SDL3 support alongside SDL2
Add optional SDL3 support while keeping SDL2 as the default. SDL3 builds
must be selected explicitly with the SYSTEM3_SDL_VERSION CMake option.

Centralize most SDL2/SDL3 API differences behind compatibility interfaces.
Audio playback uses a dedicated SDL3 backend based on SDL3 audio streams,
implemented separately in mako_sdl3.cpp.

Android and Nintendo Switch remain on SDL2 for now.
2026-09-16 08:44:23 +09:00
kichikuou 64e99b9235 Add headless scenario tests
Run a compiled System 1/2/3 scenarios with SDL's dummy video and audio
drivers, and report failures through the text hook and exit status.
2026-08-08 08:16:38 +09:00
kichikuou 6f5933adaf Replace SDL_mixer with dr_mp3/stb_vorbis + SDL audio
- 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.
2026-08-03 17:09:59 +09:00
kichikuou 9640fa2dd9 CI: Fix MSVS build by not pinning the VS generator version 2026-06-22 13:11:22 +09:00
kichikuou 24ef2289cc CI: Fix emscripten build failure 2026-04-12 22:46:31 +09:00
kichikuou 891c9cbbfb CI: Update GitHub actions 2026-04-12 22:44:37 +09:00
kichikuou a911d71b57 CI: Disable debugger on mingw32
nlohmann-json MSYS2 package is no longer provided for mingw32.
2025-11-04 09:27:23 +09:00
kichikuou 065b34dd08 CI: Package MSYS2 build 2025-01-20 10:10:48 +09:00
kichikuou 1fd72a28eb ci: install nlohmann-json 2024-12-28 14:09:57 +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 d489c0b8c1 CI: Build with latest emscripten 2024-06-11 07:43:05 +09:00
kichikuou 60d4c7de2c CI: Enable COMPILE_WARNING_AS_ERROR on Windows and Emscripten 2024-02-16 13:43:50 +09:00
kichikuou 618631c642 CI: Update GitHub actions 2024-02-16 13:26:49 +09:00
kichikuou 6996482362 Move CMakeLists.txt to project root 2024-01-11 13:28:18 +09:00
kichikuou 2e4d452aa8 Android/Windows: Upgrade SDL to 2.28.5 2023-11-17 13:36:38 +09:00
kichikuou 73a7380a69 Switch Windows 64-bit MSYS2 build from mingw64 to ucrt64
This only affects CI, because our release binaries are MSVC builds.
2023-11-17 09:24:08 +09:00
kichikuou 3e11ba1b44 Update emscripten to 3.1.44 2023-08-06 21:54:42 +09:00
kichikuou 0171433618 Update emscripten to 3.1.34 2023-04-09 18:32:33 +09:00
kichikuou 50120d32ce Update emscripten to 3.1.32 2023-02-25 15:06:26 +09:00
kichikuou 52a0e5e139 Android CI: Generate signed apk 2023-01-08 12:03:04 +09:00
kichikuou 82e5bde5e2 CI: Update GH actions 2022-11-27 11:21:47 +09:00
Adrian Graber 05ff59cff2 Add Nintendo Switch support
- Bundle resources folder through romfs
- Added Switch-exclusive romfs init/exit code
- Add icon for NRO
- Add Switch-exclusive CMake code for NACP/NRO generation
- Add GitHub Actions Switch workflow
2022-10-29 08:25:07 +09:00
kichikuou 0860c2f471 Update emscripten to 3.1.18 2022-08-07 18:14:04 +09:00
kichikuou b1a2221f9f emscripten: Change build type from MinSizeRel to Release
It generates 2.5x faster code for ymfm.
2022-08-07 15:58:10 +09:00
kichikuou 8a6a81b334 Windows CI: Use windows-latest image 2022-03-06 15:13:21 +09:00
kichikuou 208b0a1dc8 MSYS2 CI: Use msys2/setup-msys2 2022-03-06 14:39:31 +09:00
kichikuou ea6eff1cdf Update emscripten to 3.1.2 2022-01-30 12:07:42 +09:00
kichikuou 6015f53b76 Android: Upgrade gradle plugins
Now it works with CMake 3.20+.
2021-12-22 13:21:59 +09:00
kichikuou 8ee2e952f9 Update emscripten to 2.0.31 2021-10-14 20:58:54 +09:00
kichikuou 643eb02448 Add COPYING.txt file in MSVC build artifact 2021-09-20 09:22:58 +09:00
kichikuou b64e8ed129 emscripten CI: Use standard setup-emsdk way to cache 2021-07-14 18:34:05 +09:00
kichikuou 8f48093409 Update emscripten to 2.0.25 2021-07-14 18:29:50 +09:00
kichikuou 4a04eaff9e Android CI: downgrade CMake to 3.19
To workaround build error with NullPointerException
(actions/virtual-environments#3078).
2021-06-06 14:57:59 +09:00
kichikuou 59b7dd85cd Update emscripten to 2.0.15 2021-03-18 15:27:39 +09:00
kichikuou c9413c451d Add GitHub workflow for MSVS build 2021-01-02 09:10:56 +09:00
kichikuou 2de55f9f4d Windows: FM sound support 2020-12-11 16:49:48 +09:00
kichikuou 04206abb77 Android: FM sound support 2020-11-29 18:27:46 +09:00
kichikuou 89d5fdcbc6 CI: Fix emscripten build 2020-11-23 16:38:05 +09:00
kichikuou 893f716ef3 Add FM synthesizer support
This adds support for "real" FM sound that can be used instead of MIDI
sound. (Currently only available on platforms where SDL_mixer is used.)

The MakoFM class interprets AMUS.DAT to create a write sequence to the
OPNA registers, from which fmgen generates an audio stream.
2020-11-21 13:40:21 +09:00
kichikuou f426bf87e1 Update emscripten to 2.0.7 2020-10-24 18:56:02 +09:00
kichikuou b618d61ca5 CI: Address deprecation of add-path and set-env 2020-10-10 16:19:12 +09:00
kichikuou e3ca7d0ecd Android CI: Use the system's default JDK 2020-08-23 14:07:20 +09:00
kichikuou 91a117c355 Android: Upgrade build environment
- targetSdkVersion 28
- Android Gradle plugin 4.0.1
- Kotlin 1.3.72
- Gradle 6.1.1
2020-08-23 11:09:24 +09:00
kichikuou 4526ffa517 Linux CI: Run 'apt update' 2020-08-08 12:09:50 +09:00
kichikuou 94723e501e Update CI for emscripten
- emscripten SDK 1.40.1
- mymindstorm/setup-emsdk@v6
- actions/cache@v2
- actions/upload-artifact@v2
2020-08-08 11:40:29 +09:00
kichikuou a0396679a6 CI updates
- Add Windows build
- Run Debug and Release builds on Linux
- Run CI against pull requests
2020-06-04 09:55:15 +09:00
kichikuou ac1bf0bac1 Update emscripten to 1.39.16
And add a fix for emscripten-core/emscripten#10746.
2020-05-28 19:27:51 +09:00
kichikuou e574b826d9 Add GitHub workflow for Android build 2020-02-23 21:58:09 +09:00
kichikuou ca16b99846 Add GitHub workflow for Linux build 2020-02-23 18:41:01 +09:00