lokigames:sc3u

no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


lokigames:sc3u [2026/07/13 18:22] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Sim City 3000: Unlimited ======
  
 +SC3U is by far the most difficult of these old games to run on modern system.
 +
 +===== Install & patch the game =====
 +
 +To install the game, mount your CD & run the installer with ''linux32'' from the ''util-linux'' package :
 +<code>
 +# mount /dev/cdrom /media/cdrom
 +$ linux32 bash /media/cdrom/setup.sh
 +</code>
 +
 +Apply the last released [[https://ftp.lokigames.twolife.be/pub/updates/sc3u/sc3u-2.0a-x86.run|patch]] :
 +<code>
 +$ linux32 bash sc3u-2.0a-x86.run
 +</code>
 +
 +Patch the binaries to use (system provided) SDL1.2 instead of the bundled SDL1.1
 +<code>
 +cd <installation-directory>
 +$ patchelf --replace-needed libSDL-1.1.so.0 libSDL-1.2.so.0 sc3u.dynamic
 +$ patchelf --replace-needed libSDL-1.1.so.0 libSDL-1.2.so.0 sc3bat.dynamic
 +</code>
 +
 +
 +===== Libs =====
 +<code>
 +# apt-get install libsmpeg0:i386
 +</code>
 +
 +
 +==== libopenal-0.0.so ====
 +The dynamically linked version of the binaries requires a //very// old ''libopenal-0.0.so'', with a specific ABI, released in 2000. I can't even find source code for a such ancien version.
 +
 +All I could find is a binary version bundled at [[https://www.improbability.net/loki/loki_compat_libs-1.5.tar.bz2|https://www.improbability.net/loki/]]. This version cames from the original UT99 release.
 +
 +<code>
 +LD_LIBRARY_PATH="./" ./sc3u.dynamic
 +</code>
 +
 +==== undefined symbol ====
 +''./sc3u.dynamic'' greets you with //"undefined symbol: __ti9exception"// 
 +
 +The missing function can be found in a //very// old ''libstdc++'', 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/]]
 +
 +===== Segmentation fault =====
 +Now that we have all the old libs required, you would think "OK let's run it!" and try:
 +
 +<code>
 +LD_LIBRARY_PATH="./" LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so" ./sc3u.dynamic
 +</code>
 +
 +but all you will get is //“Segmentation fault”//
 +
 +Very short story: the game need another serie of tricks to run with a modern glibc.
 +
 +You need to use a little [[https://github.com/twolife/sc3u-nptl/|shim]] that hijack the //pthread_kill()// function and does some magic.
 +
 +Now you can start the game:
 +
 +<code>
 +LD_LIBRARY_PATH="./" LD_PRELOAD="./sc3u-nptl.so:./libstdc++-3-libc6.2-2-2.10.0.so" ./sc3u.dynamic
 +</code>
 +
 +
 +If you are interested by all the gory details, I encourage you to read the comments in the sourcecode https://github.com/twolife/sc3u-nptl/blob/main/sc3u-nptl.c
  • lokigames/sc3u.txt
  • Dernière modification : 2026/07/13 18:22
  • de twolife