# Loki Games ohne Audio

## snova

Linux ist zwar keine Game-Plattform, aber hin und wieder will man dann doch ne Stunde zocken.

ich habe einige ältere Spiele von Loki, die ich gerne mal wieder spielen würde.

Ich hab mir dazu auf der Seite Linux Installer For Linux Gamers die passenden Scripte runter geladen und konnte die Spiele, nach einem hin und her installieren.

Nach weiterem rumprobieren kann ich die Spiele auch im großen und ganzen starten, aber der Sound ist dabei stumm.

Bei den Spielen handelt es sich um folgende:

 Alpha Centaury

    Bild wird angezeigt, kein Sound

 Alpha Centaury - Cross Fire

    Bild wird angezeigt, kein Sound

 Alpha Centaury - Pack (?) 

    Funktioniert gar nicht. Keine Ahnung was das Binary oder das Shellscript hier tun soll.

 Civilization: CtP

    Bild wird angezeigt, kein Sound, keine Audi-CD (CDDA)

    CDDA hat auch glaube ich damals nicht funktioniert, oder ich hatte es nie probiert?

    Benutze den cdemu-daemon und binde die Bin/Cue darüber ein. XFCE will auch gleich die CDDA abspielen.

 Erics Ulitmate Solitair

    Funktioniert gar nicht

 Heros of Might and Magic III

    Bild wird angezeigt, kein Sound

 Railroad Tycoon II

    Bild wird angezeigt, kein Sound

 Sim City 3k

    Bild wird angezeigt, kein Sound

 Sim City 3k - bat (?)

    Funktioniert gar nicht. Keine Ahnung was das Binary oder das Shellscript hier tun soll.

In den Start-Scripten habe ich überall Alsa als Treiber hinterlegt.

Im Internet hatte ich mal eine OSS-DSP-Emulation für ALSA auf sourceforge gefunden. Die lief aber so schlecht, dass ich das wieder verworfen habe. Damit war zumindest in Sim City 3k (und bei einem weiterem Spiel) ein Sound zu hören. Mit der Emulation stotterte der Sound und war in einer sehr schlechten Qualität.

Die Doku auf http://icculus.org/lgfaq/#setthatdriver habe ich mir angeschaut, aber das meiste scheint veraltet zu sein.

Andere, jüngere Spiele laufen mit Audio (aber die nutzen ja auch kein OSS). Es ist also kein generelles Audio-Problem. Spiele die laufen:

Legend Of Grimrock

Neverwinter Nights Enhanced

Robin Hood

Unreal Turnament

X2

Hat vielleicht jemand nen Tipp was ich ausprobieren könnte. Mir fällt so langsam nichts mehr ein.

PS:

Bei der OSS-Emulation dürfte es sich um https://sourceforge.net/projects/osspd/files/ gehandelt haben. 100% sicher bin ich mir aber nicht, ist schon einige Zeit her.

----------

## snova

Ich hab mal weiter rumgeforscht und fand die folgende Seite ...

https://tetration.github.io/Simcity3000_Modding_Revival/linux_installer_page.html

Dort scheint es ein Python-Script zu geben, dass von sich behauptet das SC3 mit Ton zu installieren.

Nach nem kurzen scharfen Blick in das Python Script stellte ich fest, dass es für die Ton-Ausgabe nur ein "apt-get install osspd" probiert.

Ich bin also nochmals auf der Suche nach dem Tool gegangen und fand zwei Quellen:

https://github.com/libfuse/osspd

und die bereits bekannte URL

https://sourceforge.net/projects/osspd/

Die von Github lässt sich nicht kompilieren.

Die von Sourceforge lässt sich zwar kompilieren, aber bringt im aktuellem Falle dennoch keinen Ton aus Sim City 3k raus.

Laut den Zeitstempeln in den Zip-Archiven ist die Git-Variante jünger (6 Dez 2011 zu 4 Okt 2010).

PS:

Manchmal kanns so einfach sein...

Die Zeile in die "/etc/modprobe.d/alsa.conf" hinzufügen ...

```

options soundcore preclaim_oss=0

```

und ein "chmod 666 /dev/dsp" nach dem Start der dsp-Emulation und SimCitty3k ist mit Ton. Der Ton ist sogar akzeptabel, nicht so wie es vor 2 Monaten mal war...

Ab zum nächsten Problem  :Smile: 

----------

## Christian99

wenn du die windowsversionen der spiele hast, würde ich mal wine probieren. das funktioniert meistens recht gut.

Selbst getestet mit smacx und homm3, die anderen hab ich nicht.

----------

## snova

Bei dem Spiel Heros of Might and Magic 3, bei Civilization Call to Power und Railroad Tycoon bekomme ich die folgende Fehlermeldung:

```

Running game with Loki-Compat libraries.

ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default

```

Bei Railroad Tycoon II sind noch mehr Meldungen enthalten. Denke das ist aber die Hauptaussage. Lib nicht gefunden.

Wenn ich mich  jedoch im System umschaue finde ich diese Lib in 32 und 64bit.

```

jini ~ # find /usr -iname libasound_module_conf_pulse.so

/usr/lib64/alsa-lib/libasound_module_conf_pulse.so

/usr/lib/alsa-lib/libasound_module_conf_pulse.so[/list][/list]

jini ~ # 

```

Jemand ne Idee?

 *Christian99 wrote:*   

> wenn du die windowsversionen der spiele hast, würde ich mal wine probieren. das funktioniert meistens recht gut.
> 
> Selbst getestet mit smacx und homm3, die anderen hab ich nicht.

 

Wine ist mir immer ein rätsel. Heute gehts, nach einem Update darfste alles nochmal machen. Zumindest wars früher mal so...

Und hab leider die Spiele nicht für Windows. Gibts sicherlich bei Gog für nen schmalen Taler, aber es geht ja auch um die Herausforderung  :Wink: 

----------

## firefly

Eventuell hilft es wenn man die openal lib aus dem install folder des spiels verschiebt und das paket openal installiert. Dadurch wird die system lib verwendet.

Funktioniert aber nur, wenn es kein ABI inkompatibilitäten gibt, wäre aber ein versuch wert

EDIT: Wegen osspd dass ist nur ein Proxy, welcher oss simuliert. Dafür gibt es auch aoss (alsa-oss paket) https://wiki.ubuntuusers.de/alsa-oss/

----------

## snova

 *firefly wrote:*   

> Eventuell hilft es wenn man die openal lib aus dem install folder des spiels verschiebt und das paket openal installiert. Dadurch wird die system lib verwendet.
> 
> Funktioniert aber nur, wenn es kein ABI inkompatibilitäten gibt, wäre aber ein versuch wert

 

Spannend, Vielen Dank. Das werde ich ausprobieren. 

Ich hab gestern noch https://forums.gentoo.org/viewtopic-p-7059586.html#7059586 gefunden und das sieht vielversprechend aus.

 *firefly wrote:*   

> 
> 
> EDIT: Wegen osspd dass ist nur ein Proxy, welcher oss simuliert. Dafür gibt es auch aoss (alsa-oss paket) https://wiki.ubuntuusers.de/alsa-oss/

 

Das ist ein sehr guter Hinweis, danke.

alsa-oss ist auch auf dem System, aber wusste bis dahin nicht, dass ich das explizit aufrufen muss.

Der erste Versuch war aber wenig glücklich. Dennoch ziehe ich die Tools des Systems vor, als irgendwelche selbst gestrickten ...

```

snova@jini ~ $ padsp /opt/games/SimCity3kU/sc3u.dynamic.sh 

English (US) installation detected!

German installation detected!

Running WITH lokicompat libs!

./sc3u.dynamic: error while loading shared libraries: /usr/$LIB/pulseaudio/libpulsedsp.so: cannot open shared object file: No such file or directory 

snova@jini ~ $ 

snova@jini ~ $ 

snova@jini ~ $ aoss /opt/games/SimCity3kU/sc3u.dynamic.sh 

English (US) installation detected!

German installation detected!

Running WITH lokicompat libs!

Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed!

snova@jini ~ $ 

```

----------

## snova

Anscheinend wird das wohl nichts mit dem Sound...

So wie ich es nun verstanden habe scheint es eine Inkompatibilität zur glibc zu geben. Diese Inkompatibilität wurde wohl auf dem Weg zur glibc2.3 eingebaut.

Daher schlägt auch der Audio-Zugriff über padsp fehl.

Der Sound über die osspd ist immer wieder mit starken Qualitätseinbusen verknüpft, was so keinen Spaß macht.

Hier scheint aktuell wohl Wine der einzige brauchbare weg zu sein.

Schade hatte mich auf die alten Schinken gefreut. 

Dennoch, danke für euer Unterstützung. Vielleicht bringt ja die Zukunft etwas auf den Plan, dann würde ich es erneut probieren. Viel Hoffnung hab ich aber nicht.

----------

## snova

Ich denke, ich habs ...

```

modprobe snd_pcm_oss

```

in den Scripten von Alsa auf OSS (oder die Variable auskommentieren) stellen.

Einige der vorgefertigten Scripte starten das Spiel nicht sauber, aber wenn man das ganze per Hand aufruft läuft es ohne Probleme.

```

LD_LIBRARY_PATH=<Pfad zu den Loki Compat Lipsb> <Pfad zu den Loki Compat Lipsb>/ld-linux.so.2 <Loki-Spiel als dynamic gelinkt>

```

Falls jemand Fragen hat, bei mir läuft jetzt bis auf das Solitär alles aus der Liste (Civilization leider ohne CDDA-Audio).

Happy Gaming!  :Smile: 

PS:

Das Solitär läuft nicht, weil es die gtk-lib nicht findet. Mal sehen ob man die noch aus glibc2-Zeiten noch irgendwo findet ...

```

./EricsSolitaire.dynamic: error while loading shared libraries: libgtk-1.2.so.0: cannot open shared object file: No such file or directory

```

In den Loki Compat Libs ist sie leider nicht enthalten.

----------

## snova

Ich hab mal beim Eric's Ultimate Solitair in liflg-Installer geschaut und dort einige Libs gefunden und diese in einem eigenen Ordner der Spiele-Installation entpackt

```

@jini ~ $ ll /opt/games/EUS/lib

insgesamt 1800

dr-xr-xr-x  3 root games    4096  6. Aug 18:56 ./

drwxr-xr-- 12 root games    4096  6. Aug 18:56 ../

drwxr-xr-x  2 root games    4096 13. Jan 2006  esound/

lrwxrwxrwx  1 root games      16 16. Sep 2010  libesd.so.0 -> libesd.so.0.2.36

-rw-r--r--  1 root games   40856 13. Jan 2006  libesd.so.0.2.36

-rwxr-xr-x  1 root games  247657 12. Nov 2009  libgdk-1.2.so.0*

-rwxr-xr-x  1 root games  164253 12. Nov 2009  libglib-1.2.so.0*

-rwxr-xr-x  1 root games   12211 12. Nov 2009  libgmodule-1.2.so.0*

-rwxr-xr-x  1 root games 1356310 12. Nov 2009  libgtk-1.2.so.0*

@jini ~ $ 

```

Starte ich nun mittels LD_LIBRARY_PATH das Spiel und schau mir mittels ldd die libs an, komme ich auf:

```

@jini ~/desktop $ LD_LIBRARY_PATH=/opt/lib/Loki_Compat/:/opt/games/EUS/lib/ ldd /opt/lib/Loki_Compat//ld-linux.so.2 /opt/games/EUS/EricsSolitaire.dynamic | grep "=>"

   libgtk-1.2.so.0 => /opt/games/EUS/lib/libgtk-1.2.so.0 (0xf7e57000)

   libgdk-1.2.so.0 => /opt/games/EUS/lib/libgdk-1.2.so.0 (0xf7e23000)

   libgmodule-1.2.so.0 => /opt/games/EUS/lib/libgmodule-1.2.so.0 (0xf7e20000)

   libglib-1.2.so.0 => /opt/games/EUS/lib/libglib-1.2.so.0 (0xf7dfd000)

   libdl.so.2 => /opt/lib/Loki_Compat/libdl.so.2 (0xf7dfa000)

   libXext.so.6 => /opt/lib/Loki_Compat/libXext.so.6 (0xf7dec000)

   libX11.so.6 => /opt/lib/Loki_Compat/libX11.so.6 (0xf7d27000)

   libpthread.so.0 => /opt/lib/Loki_Compat/libpthread.so.0 (0xf7d13000)

   libesd.so.0 => /opt/games/EUS/lib/libesd.so.0 (0xf7d09000)

   libm.so.6 => /opt/lib/Loki_Compat/libm.so.6 (0xf7ce8000)

   libc.so.6 => /opt/lib/Loki_Compat/libc.so.6 (0xf7bc9000)

   libXi.so.6 => /usr/lib/libXi.so.6 (0xf7b85000)

   libaudiofile.so.0 => not found

   libasound.so.2 => /opt/lib/Loki_Compat/libasound.so.2 (0xf7acd000)

   librt.so.1 => /opt/lib/Loki_Compat/librt.so.1 (0xf7abc000)

@jini ~/desktop $ 

```

Also habe ich mich mal auf den Weg gemacht und mir die erste CD von Debian Lenny besorgt und libaudiofile daraus extrahiert. Hiernach wollte er auch noch libXi haben, was ich auch von der CD entnommen habe. Nun nochmals geschaut...

```

@jini ~ $ LD_LIBRARY_PATH=/opt/lib/Loki_Compat/:/opt/games/EUS/lib/ ldd /opt/lib/Loki_Compat//ld-linux.so.2 /opt/games/EUS/EricsSolitaire.dynamic 

/opt/lib/Loki_Compat//ld-linux.so.2:

   statically linked

/opt/games/EUS/EricsSolitaire.dynamic:

/opt/games/EUS/EricsSolitaire.dynamic: /opt/lib/Loki_Compat/libc.so.6: version `GLIBC_2.3' not found (required by /opt/games/EUS/lib/libesd.so.0)

/opt/games/EUS/EricsSolitaire.dynamic: /lib/ld-linux.so.2: version `GLIBC_2.1.1' not found (required by /opt/lib/Loki_Compat/libc.so.6)

/opt/games/EUS/EricsSolitaire.dynamic: /lib/ld-linux.so.2: version `GLIBC_2.2.3' not found (required by /opt/lib/Loki_Compat/libc.so.6)

/opt/games/EUS/EricsSolitaire.dynamic: /lib/ld-linux.so.2: version `GLIBC_2.2' not found (required by /opt/lib/Loki_Compat/libc.so.6)

   linux-gate.so.1 (0xf7f0f000)

   libgtk-1.2.so.0 => /opt/games/EUS/lib/libgtk-1.2.so.0 (0xf7dea000)

   libgdk-1.2.so.0 => /opt/games/EUS/lib/libgdk-1.2.so.0 (0xf7db6000)

   libgmodule-1.2.so.0 => /opt/games/EUS/lib/libgmodule-1.2.so.0 (0xf7db3000)

   libglib-1.2.so.0 => /opt/games/EUS/lib/libglib-1.2.so.0 (0xf7d90000)

   libdl.so.2 => /opt/lib/Loki_Compat/libdl.so.2 (0xf7d8d000)

   libXext.so.6 => /opt/lib/Loki_Compat/libXext.so.6 (0xf7d7f000)

   libX11.so.6 => /opt/lib/Loki_Compat/libX11.so.6 (0xf7cba000)

   libpthread.so.0 => /opt/lib/Loki_Compat/libpthread.so.0 (0xf7ca6000)

   libesd.so.0 => /opt/games/EUS/lib/libesd.so.0 (0xf7c9c000)

   libm.so.6 => /opt/lib/Loki_Compat/libm.so.6 (0xf7c7b000)

   libc.so.6 => /opt/lib/Loki_Compat/libc.so.6 (0xf7b5c000)

   libXi.so.6 => /opt/games/EUS/lib/libXi.so.6 (0xf7b54000)

   libaudiofile.so.0 => /opt/games/EUS/lib/libaudiofile.so.0 (0xf7b31000)

   libasound.so.2 => /opt/lib/Loki_Compat/libasound.so.2 (0xf7a79000)

   /lib/ld-linux.so.2 (0xf7f10000)

   librt.so.1 => /opt/lib/Loki_Compat/librt.so.1 (0xf7a68000)

@jini ~ $ 

```

Starte ich nun das Spiel, kommt es zu einem Fehler.

```

@jini ~ $ LD_LIBRARY_PATH=/opt/lib/Loki_Compat/:/opt/games/EUS/lib/ /opt/lib/Loki_Compat//ld-linux.so.2 /opt/games/EUS/EricsSolitaire.dynamic 

Inconsistency detected by ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed!

@jini ~ $ 

```

Jemand ne Idee, wie ich das weiter Debuggen kann?

"strace" liefert mir, aus meiner Sicht, keine brauchbaren hinweise. Vielleicht ist auch mein Vorgehen so komplett falsch???  :Embarassed: 

----------

## snova

Ich hab unter http://icculus.org/lgfaq/files/eus_libpatch-0.1.run ein Script gefunden, mit dem Erics Ultimate Solitär tatsächlich läuft.

Einfach nach dem Entpacken des Spiels nur noch ein:

```
EUS_DIR=<Pfad zum EUS Ordner> sh eus_libpatch-0.1.run
```

Aufrufen und das Script erzeugt ein "lib" Odner und ein Startscript mit den Namen "eus.launch". Sollte eines von beidem im Vorfeld vorhanden sein, so muss das entfernt werden. 

In dem Script befindet sich ab Zeile 376 ein angehangenes tar.gz, welches die LIBs und das Startscript inne hat.

Das Startscript selbst setzt nur die LD_LIBRARY_PATH auf den entpackten Lib-Ordner und startet anschließend EricsSolitaire (nicht EricsSolitaire.dynamic).

Der Lib-Ordner enthält 39 Libs und 36 Links. Teile der Libs sind vom Namen her mit dem Loki_Compat Libs gleich. Entfernt man diese aus dem Lib Ordner und erweitert die LD_LIBRARY_Path um die Compat Libs startet das Solitär ebenso. Im Lib-Ordner verbleiben anschließend nur noch 19 Libs und 16 Links

----------

