mirror of
https://github.com/nunuhara/xsystem4.git
synced 2026-10-04 12:58:04 +03:00
74c5b91e0c7c31bc99645bd3fc190130647d43fb
Type 82
-------
I am assuming this is an iterator type because it always appears as a
local variable alongside "dummy" variables with "foreach" in their name,
and the naming of the variables suggests an iterator. Probably there is
a new syntax like:
foreach (iter_var in array_var) { ... }
Type 89
-------
An instance of an interface. This is a 2-valued type (similar to ref
int, etc.) where the first value is the index of a struct page, and the
second value is an index into the struct's vtable.
Any struct that implements an interface gets an array<int> named
"<vtable>" as its first member. This array stores indices into the
global function table. CALLMETHOD now looks up methods in the vtable
rather than the global function table.
Types 92, 93
------------
These are enum types. Type 92 is the normal enum type, and type 93 is
the reference-to-enum type. The "struct type" for these types stores an
index into the enum table.
Types 86, 91
------------
Type 86 only seems to be used as the return value from EnumType::Parse
methods. In the ain file, it has an extra type descriptor, similar to an
array type. This extra type descriptor always has data type 91, and its
struct type is an index into the enum table. Type 91 is simlar to types
92 & 93: it stores an enum table index in its struct type.
Type 86 is a 2-valued type. The first value is the value of the enum (an
integer between 0 and n). The second value seems to be either 0 or -1,
depending on whether EnumType::Parse was able to produce a valid enum
value.
It is possible that type 86 is actually some kind of generic maybe-error
type that only happens to be used by the enum code. But that doesn't
explain why it is paired with type 91 and not type 92.
xsystem4
xsystem4 is an implementation of AliceSoft's System 4 game engine for unix-like operating systems.
NOTE: This is a work in progress. Some simple ADV games run more or less okay, but most games are not fully working or have game-breaking bug when run with xsystem4.
Building
First install the dependencies (corresponding Debian package in parentheses):
- chibi-scheme [optional, for debugger]
- meson (meson)
- libffi (libffi-dev)
- SDL2 (libsdl2-dev)
- SDL2_mixer (libsdl2-mixer-dev)
- SDL2_ttf (libsdl2-ttf-dev)
- zlib (zlib1g-dev)
Then build the xsystem4 executable with meson,
mkdir build
meson build
ninja -C build
Running
You can run a game by passing the path to its "System40.ini" to the xsystem4 executable.
build/src/xsystem4 /path/to/System40.ini
For now, xsystem4 needs to be run in the top-level project directory (i.e. the directory that contains this README file). This will change in the future.
Languages
C
96.5%
GLSL
2.7%
Meson
0.3%
CMake
0.2%
Scheme
0.2%