blog · git · desktop · images · contact & privacy · gopher


Need for Speed 2 für Wine fit gemacht

Hier fliegen ja noch so einige alte Spiele rum. Eines davon ist Need for Speed 2, was mittlerweile schon um die 12 Jahre auf dem Buckel hat. Nachdem mit Wine heute vielen Dingen wieder Leben eingehaucht werden kann, hab ich dem Dings mal eine Chance gegeben. Ganz auf Anhieb klappt es zwar nicht, aber nach ein paar Schritten kann man wieder heizen. :)

Das erste und größte Problem dürfte sein:

initmem - INSUFFICIENT MEMORY TO CONTINUE
FILE win\initmem.c LINE 242

Nun, dazu findet man recht bald auf der Seite zu NFS2 beim WineHQ den Hinweis, man möge doch einen "Fix" saugen und ausführen. Sowas löst bei mir aber ein bisschen Unbehagen aus, also kurz weitergesucht: Im Bugreport dazu stehen ein wenig mehr Informationen und im Posting Nummer 11 ist dann auch der Quellcode des Patches verlinkt.

Wollte trotzdem mal sehen, was genau der Fix macht: Er ändert die "MajorSubsystemVersion" von 4 auf 3. Was das in einem richtigen Windows bewirken würde, entzieht sich meiner Kenntnis, aber es triggert diesen Patch in Wine. Ein so altes Programm wie NFS2 kommt wohl nicht mit den heutigen Arbeitsspeichermengen zurecht, es gibt einen kleinen Überlauf und das Programm sieht eine negative Speichermenge. Der Wine-Patch begrenzt die "sichtbare" Menge nach oben hin, wodurch das Problem umgangen wird.

Man kann sich NFS2 mit VIM (siehe ":help hex-editing" oder auch bei zInformatik im Blog) oder einem Hexeditor seiner Wahl auch selbst patchen:

Ich habe das deshalb hier so ausführlich beschrieben, weil sich das Prinzip auch auf andere Programme anwenden lässt -- und dort sieht der Offset zum NT-Header vielleicht anders aus. Wine bringt übrigens ein paar Headerfiles mit. In "/usr/include/wine/windows/winnt.h" kann der Aufbau der Header in einer Exe nachvollzogen werden.

Weiter geht's:

iSNDmixbuf - FRAMES NOT A MULTIPLE OF 16.
FILE mix\smixer.c LINE 962

Das lässt sich schon wesentlich einfacher beheben: In "winecfg" entweder die Hardwarebeschleunigung für Sound ausschalten, was ihn bei mir aber ruckeln lässt, oder in Wine vom Alsa-Treiber auf den OSS-Treiber wechseln.

Zuguterletzt sollte man NFS2 wohl hierüber starten, wenn man mehr als eine CPU im System hat:

schedtool -a 0x1 -e wine nfsw.exe

Andernfalls kommt es aus dem Trott und/oder stürzt ab.

Das dürfte es gewesen sein. ;)