Comment 2 for bug 912427

Revision history for this message
Tobias Netzel (tobias-netzel) wrote : Re: Array-Bereichsüberschreitung beim Laden von S2/DATA/RESOURCE.DAT

Bin mittlerweile selber vorangekommen bei der Fehlersuche.

Habe herausgefunden, dass beim Laden der 16-Bit-Offsets zu Beginn einer Bitmap nicht auf Endianness geachtet wird. Dies habe ich an allen notwendigen Stellen fürs Laden und Speichern ergänzt und das Spiel kann dann geladen und auch gespielt werden - offensichtlich zum ersten Mal auf einer Big-Endian-Plattform!

Allerdings kann ich nur spielen, wenn ich verhindere, dass der Sound-Treiber geladen wird, da das Programm abstürzt bei dem Versuch, das Klick-Geräusch im Hauptmenü per SDL abzuspielen.

Habe außerdem noch einen recht fatalen Endian-Fehler beim Reservieren des Speichers für MIDI-Tracks korrigiert; die Länge eines MIDI-Tracks wurde mit der falschen Endianness ausgelesen, was in Speicherreservierungsversuchen von über 3GB Größe resultierte. Dies führte auf meinem 32-Bit-PowerPC dazu, dass das Programm vom MacOS umgehend gekillt wurde.

Meine bisherigen Patches habe ich als diff angehängt.