Zitat von wenz71
Das "Intro" ging ganz normal, aber als ich eine Kapagne auswählen wollte,
blieb die Maus hängen, nichts rührte sich und das Speil stürte ab.
Folgende Fehlermeldung erscheint:
AppName: panzer3d.exe AppVer: 0.0.0.0 ModName: panzer3d.exe
ModVer: 0.0.0.0 Offset: 000111d1
...
Hat jemand eine Idee, was ich machen kann ?
Hallo,
ich habe mir den Fehler mal mit einem Debugger angesehen. Das Problem mit dem Absturz unter XP liegt nicht wie bisher vermutet an einer Inkompatibilität mit DirectX sondern an PG3D selbst. Das Spiel enthält einen Speicherfehler beim kopieren einer Grafik von einem Teil des Videospeichers in einen anderen Teil. Win95 und Win98 nehmen es mit dem Speicherschutz im Grafikspeicher nicht ganz so genau wie XP und daher hat den Fehler damals niemand bemerkt.
Wenn man das Spiel ohne Hardwarebeschleunigung spielt, befinden sich die Grafiken dagegen nicht direkt in den Videospeicher der Grafikkarte, sondern werden erstmal in normalen dem Anwendungsspeicher von DirectDraw verwaltet, bevor sie dargestellt werden. Da dieses Speichersegment recht groß ist, gibt es im Softwaremodus ebenfalls keine Probleme. Wenn man mal davon absieht, dass die Maus im Softwaremodus viel zu schnell scrollt, da hier das VertikalRetrace nicht emuliert wird. Letzteres Problem war für mich unzumutbar.
Details zum Fehler:
Das SurfaceObject des bunten Mauszeigers hat eine Größe von 90x70=6300 Byte. In dem Moment, wenn sich der Mauszeiger über einem Menüknopf befindet soll ein Text dargestellt werden, welcher den Menüknopf näher erläutert. Dabei wird aufgrund eines Fehlers der Inhalt eines anderen SurfaceObjects in das SurfaceObject des Mauszeigers kopiert. Da das andere Surface mit 200x60=12000 Byte viel größer ist, kommt es zu einer Speicherschutzverletzung und das Spiel wird von XP beendet.
Was kann man machen?
1.) Das Programm (PG2UK220.EXE) mit einem Hexeditor (z.B. HxD) öffnen.
2.) Die Adresse 00084289h suchen, welche mit einer 55h gefüllt ist
3.) Die 55 durch C3 ersetzen
4.) Das Programm unter neuen Namen im selben Ordner speichern, z.B als PG2UK221.EXE
5.) PG2UK221.EXE ganz normal starten (also mit Hardwarebeschleunigung)
Dieser Patch funktioniert nur bei dem UK-Patch 2.20. Für andere PG3D-Versionen müsste man die richtige Adresse erst noch raussuchen.
Der Patch ist auch noch nicht optimal, da ich einfach die fehlerhafte Routine ausgeschaltet habe, welche die Menühilfetexte zeichnet. Also nicht wundern, wenn diese Texte plötzlich fehlen. Mich selbst stören die fehlenden Texte nicht so, da ich die Bedeutung der Knöpfe eh aus dem FF kenne.
Dafür genieße ich jetzt beim spielen wider, dass angenehm langsame scrollen mit der Maus über die Karte.
Ciao Waitsnake