kichikuou a627a8ea3d Add VM variable storage type
Define a dedicated `vmvar_t` type for values stored in variable pages
and propagate it through interfaces that expose those values. Keep the
type as int for now so this commit does not change runtime behavior.
This separates VM storage from ordinary int buffers and makes a later
conversion to 16-bit storage mechanically checkable.
2026-07-17 08:48:10 +09:00
2025-11-09 22:26:15 +09:00
2026-07-17 08:48:10 +09:00
2026-07-17 08:48:10 +09:00
2026-07-17 08:11:01 +09:00
2024-01-20 11:04:43 +09:00
2024-05-24 21:31:49 +09:00
2026-07-05 14:51:50 +09:00
2026-07-16 20:53:19 +09:00
2014-04-26 18:40:24 +09:00
2026-06-28 13:27:35 +09:00

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. Supported audio file formats are MP3 and Ogg. 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 -debug option will launch the debugger with a console interface. Type help to see a list of available commands.

Streamer Mode

xsystem35 introduces a "Streamer Mode" to make playing games with NSFW content safer for streaming or public viewing. When enabled with the -censor <file> option, images specified in the provided file will be automatically mosaiced.

The misc/censor/ directory contains example censor list files for some games.

Installation

Prebuilt packages for Windows and Android can be downloaded from the Releases page.

Note for Windows:

  • The 64-bit version supports Windows 10 or later. For older versions of Windows, please use the 32-bit version.
  • Debugging is supported only in the 64-bit version.

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

See xsystem35 command manual for detailed usage.

Building

Linux (Debian / Ubuntu)

$ sudo apt install build-essential cmake libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libportmidi-dev libcjson-dev asciidoctor
$ 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 portmidi cjson asciidoctor
$ 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-portmidi 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.

S
Description
No description provided
Readme
18 MiB
Languages
C 83.2%
Java 10.6%
Kotlin 5%
CMake 1.1%