Nunuhara Cabbage 851a19acc1 Work around for FFI heap reallocation bugs
ref types are currently passed to HLL functions as pointers into the
heap. If the HLL function itself needs to allocate memory from the heap,
it can cause the heap to be reallocated, rendering these heap pointers
invalid.

In order to work around this, hll_call now guarantees 64 slots are
available on the heap before calling any HLL function. This is not a
great solution, but it should work to the extent that HLL functions only
allocate a fixed number of heap slots < 64.

This bug could be easily triggered by scrolling up on the message log in
Sengoku Rance.
2021-02-20 20:41:05 -08:00
2020-09-04 20:33:47 -07:00
2020-09-03 23:16:08 +09:00
2021-02-20 10:23:12 -08:00
2019-12-31 17:50:40 -08:00
2019-10-06 19:35:36 -07:00
2020-08-10 15:51:33 -07:00
2020-09-04 20:33:47 -07:00
2020-09-05 10:05:33 -07:00
2019-10-20 21:26:51 -07:00

xsystem4

xsystem4 is an implementation of AliceSoft's System 4 game engine for unix-like operating systems.

NOTE: This is a work in progress. I am focusing primarily on the Japanese version of Sengoku Rance (and by extension, the English fan translation) which is currently more or less playable. Some other games from the same era may also work, but I have not done any significant testing on them so breakage is likely.

Building

First install the dependencies (corresponding Debian package in parentheses):

  • chibi-scheme [optional, for debugger]
  • bison (bison)
  • flex (flex)
  • meson (meson)
  • libffi (libffi-dev)
  • libpng (libpng-dev)
  • libturbojpeg (libturbojpeg0-dev)
  • libwebp (libwebp-dev)
  • SDL2 (libsdl2-dev)
  • SDL2_mixer (libsdl2-mixer-dev)
  • SDL2_ttf (libsdl2-ttf-dev)
  • zlib (zlib1g-dev)

Then fetch the git submodules,

git submodule init
git submodule update

(Alternatively, pass --recurse-submodules when cloning this repository)

Then build the xsystem4 executable with meson,

mkdir build
meson build
ninja -C build

Finally install it to your system (optional),

ninja -C build install

Running

You can run a game by passing the path to its game directory to the xsystem4 executable,

build/src/xsystem4 /path/to/game_directory

Alternatively, run xsystem4 from within the game directory,

cd /path/to/game_directory
xsystem4
S
Description
No description provided
Readme
23 MiB
Languages
C 96.5%
GLSL 2.7%
Meson 0.3%
CMake 0.2%
Scheme 0.2%