Big-Endian support is broken
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Return To The Roots | Status tracked in S25client | |||||
S25client |
Fix Released
|
Medium
|
FloSoft |
Bug Description
Mithilfe von libgmalloc.dylib konnte ich den seit Jahren bestehenden Bug eingrenzen, der auf Mac OS X PowerPC das Spiel beim Starten zum Absturz bringt.
Es kommt zu einer Array-Bereichsü
Wäre schön, wenn das endlich beseitigt werden könnte. Da ihr das wahrscheinlich nicht selber tun könnt, bitte ich um Hilfe beim Debuggen. Der angehängte backtrace könnte schonmal helfen.
Wurde RTTR schon einmal erfolgreich auf einer Big-Endian-
summary: |
- Array-Bereichsüberschreitung beim Laden von S2/DATA/RESOURCE.DAT + Big-Endian support is broken |
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 Speicherreservi erungsversuchen 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.