Table des matières

SiN

Install the game

To install the required utils & library:

# apt-get install patchelf xxd libsmpeg0:i386

To install the game, mount your CD & run the installer with linux32 from the util-linux package :

# mount /dev/cdrom /media/cdrom
$ linux32 bash /media/cdrom/setup.sh

And now the fun begins :-) The installer is a mess and doesn't do half of what it is supposed to. We need to do a good half of the job ourself :

cd <installation-directory>
install -m 755 /mnt/cdrom/bin/x86/registergui ./
tar xfz /mnt/cdrom/base/maps.tar.gz -C ./base/
mv ref_soft.so.gz ref_soft.so
mv ref_gl.so.gz ref_gl.so
mv game.so.gz game.so
mv game.so base/game.so
mv sin.exe.gz sin.exe

Register the game

The file sin.exe is “encrypted” (I didn't spend time on this, maybe it's trivial to bypass, maybe not) ; and we need to combine the provided tool with our cdkey to get a usable binary.

The hard part in today's world is to get the required libraries to run that tool. We need GTK1.2 compiled for i386.

After that it's easy:

./registergui sin.exe

Remove a useless dependency

The game is linked to 2 versions of the SDL library: libSDL-1.1.so.0 & libSDL-1.2.so.0 ; it's useless and harmful, since you will not find a libSDL-1.1 for you distribution easily. Lets remove that:

patchelf --remove-needed libSDL-1.1.so.0 sin.exe

Fix crash when using the OpenGL renderer

Like in others games we need to patch the OpenGL renderer to prevent a crash.

echo -n "2020" | xxd -r -p -seek 0x38A08 - ref_gl.so

Prevent a game crash

This is due to a change in libgcc that broke some binaries that where compiled with gcc 2.95 in an unusual way (like compiling C++ code with gcc instead of g++).

Option a

You can use a little shim that add back functions required by a bunch of old games like this one.

LD_PRELOAD="/path/to/lokishim.so" ./sin.exe +set vid_ref gl +set gl_driver_lib /usr/lib/i386-linux-gnu/libGL.so.1

Option b

The missing function can be found in a very old libstdc++, and you can use libstdc++-3-libc6.2-2-2.10.0.so from https://www.improbability.net/loki/

LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so" ./sin.exe +set vid_ref gl +set gl_driver_lib /usr/lib/i386-linux-gnu/libGL.so.1