This fixes https://github.com/kichikuou/xsystem35-sdl2/issues/45. The behavior when the contents of link table differ between ALD volumes is different between System 3.8 and System 3.9, and System 3.9 uses the link table of the first volume. The MangaGamer version of Rance 5D depends on this behavior. As far as I know, the only game that depends on the System 3.8 behavior is Child Assassin (in Alice CD 2.50). Considering the additional complexity, we do not implement switching to the old behavior.
xsytem35-sdl2
This is a multi-platform port of xsystem35, a free implementation of
AliceSoft's System 3.x game engine.
Compatibility
See the game compatibility table for a list of games that can be played with xsystem35-sdl2.
Unique Features
In addition to the original System 3.x functionalities, xsystem35-sdl2 offers the following features:
Playing Audio Files as Virtual CD Music
Many System 3.x games feature music as audio tracks on the CD-ROM. xsystem35
can play music from audio files, eliminating the need to insert CDs. To use
ripped audio files, create a file named playlist.txt in the game directory
and list the paths to your tracks, one per line. For example:
# The first line is not used
BGM/track02.mp3
BGM/track03.mp3
...
The first line is not used because the first track on a game CD is typically a data track.
Some games have integrated music as MIDI. In such cases, the music won't play
using the virtual CD feature. If you encounter a Cannot load MIDI error
message, you might need to set the SDL_SOUNDFONTS environment variable to
point to an .sf2 file. For example:
SDL_SOUNDFONTS=/usr/share/soundfonts/GeneralUser.sf2 xsystem35
Unicode Translation Support
While the original System 3.x only supported Shift_JIS (a Japanese character encoding), xsystem35 supports Unicode and can run games translated into languages other than Japanese and English.
For instructions on how to build a game with Unicode support, see the xsys35c documentation.
Debugging
xsystem35 features a built-in debugger that allows you to step through the game and examine or modify game variables. There are two ways to use the debugger:
- Through Visual Studio Code (recommended): The vscode-system3x extension provides a graphical debugging interface for System 3.x.
- Using the CLI Debugger: Running xsystem35 with the
-debugoption will launch the debugger with a console interface. Typehelpto see a list of available commands.
Installation
Prebuilt packages for Windows and Android can be downloaded from the Releases page. For other platforms, refer to the Building section.
Running
Windows
Copy xsystem35.exe to the game folder and run it.
Android
See android/README.md.
Other Platforms
Run xsystem35 from within the game directory.
$ cd /path/to/game_directory
$ xsystem35
Building
Linux (Debian / Ubuntu)
$ sudo apt install build-essential cmake libgtk-3-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libcjson-dev
$ mkdir -p out/debug
$ cd out/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../../
$ make && make install
MacOS
Homebrew is required.
$ brew install cmake pkg-config sdl2 sdl2_mixer sdl2_ttf webp cjson
$ mkdir -p out/debug
$ cd out/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../../
$ make && make install
Windows
MSYS2 is required.
$ pacman -S cmake mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-SDL2_ttf mingw-w64-ucrt-x86_64-SDL2_mixer mingw-w64-ucrt-x86_64-libwebp mingw-w64-ucrt-x86_64-cjson
$ mkdir -p out/debug
$ cd out/debug
$ cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug ../../
$ make
Emscripten
$ mkdir -p out/wasm
$ cd out/wasm
$ emcmake cmake -DCMAKE_BUILD_TYPE=MinSizeRel ../../
$ make
To use the generated binary, check out
Kichikuou on Web and copy out/xsystem35.*
into its docs directory.
Android
See android/README.md.