====== Shogo: Mobile Armor Division ====== ===== Install the game ===== To install the required util : # apt-get install patchelf To install the game, mount your CD & run the installer with ''linux32'' from the ''util-linux'' package : # mount /dev/cdrom /media/cdrom $ cd /media/cdrom $ linux32 ./setup.data/bin/Linux/x86/setup ===== Register the game ===== The file ''client'' 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 client ===== Hack hack hack ===== Patch the binaries to use (system provided) SDL1.2 instead of the bundled SDL1.1 patchelf --replace-needed libSDL-1.1.so.0 libSDL-1.2.so.0 cdaudio.dll patchelf --replace-needed libSDL-1.1.so.0 libSDL-1.2.so.0 client patchelf --replace-needed libSDL-1.1.so.0 libSDL-1.2.so.0 shogolauncher rm libsmpeg-0.4.so.0 libfreetype.so.6 libSDL-1.1.so.0 Bypass the anti-copy protection: mkdir custom files truncate -s 207618048 files/data.tgz ===== Replace the startup script ===== Replace the provided startup script ''shogo'' with this one: #!/bin/sh export SHOGODIR="$PWD" export SHOGO_MOVIEPATH="$PWD/Movies" export SHOGO_CDROM="$PWD" if ! test -d ~/.hyperion ; then echo Creating directory ~/.hyperion mkdir ~/.hyperion fi if ! test -d ~/.hyperion/Shogo ; then echo Creating directory ~/.hyperion/Shogo mkdir ~/.hyperion/Shogo fi if ! test -e ~/.hyperion/Shogo/autoexec.cfg ; then echo Creating default autoexec.cfg file echo '"MaxFPS" "30"' > ~/.hyperion/Shogo/autoexec.cfg cat $SHOGODIR/autoexec.cfg >> ~/.hyperion/Shogo/autoexec.cfg fi if ! test -e ~/.hyperion/Shogo/ShogoLauncher.ini ; then echo Creating default settings file cp $SHOGODIR/ShogoLauncher.ini ~/.hyperion/Shogo fi if ! test -d ~/.hyperion/Shogo/Save ; then echo "Creating Save directory" mkdir ~/.hyperion/Shogo/Save fi cd $SHOGODIR if ! test -e $SHOGO_CDROM/files/data.tgz ; then ./messagebox " Please mount the Shogo CD-ROM " "OK" exit fi cmdline=`./shogolauncher --inidir ~/.hyperion/Shogo --shogodir $SHOGODIR $@` if test -z "$cmdline" ; then exit fi export MESA_EXTENSION_MAX_YEAR=2002 export _ _GL_ExtensionStringVersion=17700 eval "$cmdline" unset LD_PRELOAD unset _ _GL_ExtensionStringVersion unset MESA_EXTENSION_MAX_YEAR rm >/dev/null -f /tmp/*.dll /tmp/*.lto ===== Prevent a game crash ===== ''./client: symbol lookup error: ./client: undefined symbol: set_new_handler__FPFv_v'' 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 [[https://github.com/twolife/lokishim|shim]] that add back functions required by a bunch of old games like this one. LD_PRELOAD="/path/to/lokishim.so" shogo ==== 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/loki_compat_libs-1.5.tar.bz2|https://www.improbability.net/loki/]] LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so" shogo