Commit Graph
70 Commits
Author SHA1 Message Date
kichikuou bdb93bf7ed Add SDL3 support alongside SDL2
Centralize the differences between SDL2 and SDL3 behind compatibility
interfaces and select the appropriate implementations with the
SYSTEM3_SDL_VERSION CMake option. The default is SDL2 except on Android,
which supports only SDL3.
2026-09-15 15:21:22 +09:00
kichikuou 630fec153c Use scenario filename for debugger symbols 2026-09-09 11:18:16 +09:00
kichikuou 167bc54dc0 Add -fullscreen option 2026-08-17 09:04:06 +09:00
kichikuou c8ef298c56 Add quit confirmation dialog
On Android, the back button opens the dialog.
2025-03-06 08:54:57 +09:00
kichikuou c205806d7b Fix header include paths 2025-02-08 12:55:14 +09:00
kichikuou d12c1575e0 emscripten: Notify shell of game ID 2025-01-16 10:38:09 +09:00
kichikuou ffe11c695e Reorganize initialization error reporting
- Invalid game id -> sys_error() in GameId::GameId()
- Unknown crc32 -> SDL_ShowSimpleMessageBox() in GameId::GameId()
- Cannot open ADISK.DAT -> sys_error() in NACT::NACT()
2025-01-03 12:36:27 +09:00
kichikuou 7f7ff91439 GameId: Replace CRC32 with enum
This makes it possible to define games that do not have a CRC32.
2025-01-03 08:52:27 +09:00
kichikuou d771352346 Fix typo 2025-01-02 21:32:19 +09:00
kichikuou edb48f2513 Send warnings to DAP client 2025-01-02 16:53:27 +09:00
kichikuou ddc790b268 Add error message when game files not found 2024-12-31 22:05:04 +09:00
kichikuou 909140f3bc Add support for Debug Adapter Protocol 2024-12-28 14:09:56 +09:00
kichikuou 8883bd5d68 Add command line debugger 2024-12-28 14:09:53 +09:00
kichikuou f8acad01d8 Move TexthookMode enum to config.h 2024-12-14 10:22:38 +09:00
kichikuou 4930154d45 Expose g_nact 2024-12-11 14:03:55 +09:00
kichikuou e791af2a1e Refactor window creation logic 2024-12-11 10:43:32 +09:00
kichikuou 9173742ffb Introduce GameId class 2024-12-11 10:43:28 +09:00
kichikuou e79f24d8b9 Replace NACT::fatal() with global sys_error() 2024-12-10 07:54:56 +09:00
kichikuou 8303f7c770 Refactor FILEIO 2024-12-08 15:06:00 +09:00
kichikuou 0b04f5f334 Add texthook_suppress option
For suppressing text hook on specified scenario pages.
2024-12-06 10:24:36 +09:00
kichikuou 1e7a59f9cd Add texthook option
`-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.
2024-12-04 16:33:50 +09:00
kichikuou e330a0dba6 Add warning message about game ID detection 2024-11-26 08:26: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 15b7236230 emscripten: Don't let SDL change document.title 2024-02-16 13:07:09 +09:00
kichikuou 30ca8b714b Reorganize flags for exit and restart
Pure refactoring, no user-visible changes.
2023-09-27 16:41:05 +09:00
kichikuou c3556c5213 Replace sprintf_s with snprintf 2023-04-15 09:16:14 +09:00
kichikuou ec1dfbffcf Use non-square pixels for Gakuen Senki
Stretch 512 horizontal pixels to 582 pixels. This is the same pixel
aspect ratio used by WebMSX.

Also set SDL_HINT_RENDER_SCALE_QUALITY to "linear", to improve the
scaling quality.
2023-04-09 18:23:39 +09:00
kichikuou 36cee9aff8 Treat touches outside the viewport as right-clicks
The old method to simulate right click (two-finger touch) still works.
2023-03-03 10:50:54 +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
Adrian Graber 361e51085d Add timiditycfg setting 2022-10-29 08:25:07 +09:00
kichikuou 93b9cc0e1a Show system3-sdl2 version on window title bar 2022-08-07 21:40:41 +09:00
kichikuou 2cb0b2a2a2 Reuse SDL_Renderer after VM reset
Otherwise mouse input doesn't work after restart in emscripten port.
2022-06-26 15:00:23 +09:00
kichikuou 578a8bf095 Emscripten: Expose sys_restart() function 2022-06-26 14:56:23 +09:00
kichikuou 6ec42bbdfc Make window resizable 2021-08-14 13:28:56 +09:00
kichikuou 0f4984bef5 Introduce Config struct
For now, it's just a container for command line arguments.
2021-06-06 16:18:17 +09:00
kichikuou cbb40d0b67 emscripten: minor refactoring
- Remove the use of EXPORTED_FUNCTIONS in favor of EMSCRIPTEN_KEEPALIVE
- SDL_Delay is no longer aliased to emscripten_sleep
2021-01-17 13:55:43 +09:00
kichikuou 4351f21dc4 Make FILEIO::Fopen() case insensitive 2021-01-11 10:53:32 +09:00
kichikuou 56bb588ca7 Support building with Microsoft Visual Studio 2021-01-02 09:10:51 +09:00
kichikuou 297ce20a83 Warn if crc32 is unknown and -game is not specified 2020-12-30 22:22:18 +09:00
kichikuou 4b4053cf1e Add -fm command line option 2020-11-21 14:01:38 +09:00
kichikuou 9637701340 Windows: Implement reset menu command
A bit hacky but works.
2020-10-10 15:26:01 +09:00
kichikuou 81d66c4075 Enable text anti-aliasing by default
To disable it, use -noantialias command-line option.
2020-06-04 10:24:39 +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 a0af5ef10c Windows: Embed default font as a resource
After this, embedded MTLc3m.ttf is used unless the -fontfile option is
specified.
2020-05-24 22:01:32 +09:00
kichikuou e518f9e23e Fix build and character encoding issues in Win32 2020-02-24 19:46:32 +09:00
kichikuou d6aaf31b1a Change the semantics of -savedir option
Now trailing '@' is replaced with the game id.
2020-02-23 12:02:29 +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 487bd49745 CD-DA BGM playback support with SDL_mixer
This adds -playlist command line option to specify a "playlist" file
which lists music files to be played instead of CD audio tracks.
The format of playlist file is the same as xsystem35's.
2020-02-15 17:27:37 +09:00
kichikuou 2d0619a19a Android: Store saved files under game-id/ subdirectory
This is to prevent overwriting saved files of other games, since System3
uses common save file names regardless of the game.
2020-02-10 13:09:07 +09:00