Problem-Lösung

Kurz nach der Freigabe von Starbirds zeigte sich, dass Starbirds nicht auf allen Systemen zum Laufen gebracht werden konnte. Schon bald stand fest: es handelt sich ausschliesslich um AMIGA-Systeme mit BlizzardPPC- Karten. Mit einem Patch kann Starbirds nun auch auf diesen Systemen zum Laufen gebracht werden.

Jetzt stellt sich aber die Frage, weswegen nur die Systeme mit BlizzardPPC- Turbokarten von diesem Problem betroffen waren, denn mit den CyberStormPPC- Turbokarten gab es diese Probleme nicht. Was unterscheidet denn die BlizzardPPC von der CyberStormPPC und was davon könnte dazu führen dass solche alten Spiele nicht mehr laufen?

Die Antwort auf diese Frage liegt auf der Hand: der grosse Unterschied zwischen diesen Turbokarten ist das Flash-ROM bzw. deren Inhalt. Es hat sich tatsächlich gezeigt, dass dieses Flash-ROM Schuld daran war, dass Starbirds nicht lief. Im folgenden wird auf die Gründe näher eingegangen und die BlizzardPPC-Besitzer werden auch erfahren, was dieses Flash-ROM tatsäich alles anrichtet.

Das BlizzardPPC-Flash-ROM beinhaltet unter anderem die ppc.library und die 68040.library/68060.library. Über das Problem der ppc.library und dessen Auswirkungen auf WarpUp braucht wohl nicht mehr diskutiert zu werden. Was aber noch kaum zur Kenntnis genommen wurde, ist, dass auch das Starten der 68040.library/68060.library grosse Auswirkungen haben kann. Die Aufgabe dieser Libraries ist die korrekte Konfiguration von neueren Prozessoren, damit deren volle Leistungsfähigkeit zur Verfügung stehen kann.

Auf jedem System mit Ausnahme der BlizzardPPC-basierenden Systeme wird die 68040.library/68060.library beim Ausführen des 'SetPatch'- Befehls in der startup-sequence geladen. Das hat zur Folge, dass ein solcher AMIGA direkt nach dem Booten sich noch grösstenteils wie ein Low-End-AMIGA verhält. Bei den BlizzardPPC-Systemen ist das nicht der Fall, dort wird die Maschine bereits direkt nach dem Booten in einen 'High-End-Modus' gezwungen, und die Folge davon ist eine grosse Inkompatibilität zu alter Software, vor allem zu alten Spielen.

Die folgenden Operationen, welche die 68040.library/68060.library beim Start ausführt, führen zu einer sehr grossen Inkompatibilität zu alter Software:

  • Es wird die Exception-Area des 68K (also die Vektortabelle) ins FAST-RAM verlegt, indem das VBR-Register mit einem neuen Wert gefüllt wird. Dieses Register ist beim 68000 nicht vorhanden, daraus folgt direkt, dass jedes Spiel, welches zur einer Zeit geschrieben wurde, als es noch keine neueren 68K-CPU's gab, mit jeder Garantie nicht mehr läuft, wenn es sich um ein Spiel handelt, welche die Hardware direkt anspricht. Das war auch einer der Gründe, warum Starbirds nicht funktioniert hat. Denn die Annahme, dass das VBR nach dem Booten den Wert Null hat, ist LEGITIM, da der Wert des VBR-Registers beim Reset der CPU tatsächlich den Wert Null hat, und da es Aufgabe von 'SetPatch' in der startup-sequence ist, solche Features, welche nicht von allen Prozessoren unterstützt sind, einzuschalten.
  • Der Datencache des 68K wird eingeschaltet. Viele Spiele kommen damit überhaupt nicht klar, da sie zu einer Zeit geschrieben wurden, wo die Caches noch kleiner oder nicht vorhanden waren, und wo schon gar keine Copyback-Caches existierten. Die Annahme, dass der Datencache direkt nach dem Booten ausgeschaltet ist, ist LEGITIM, da dies bei allen 68K-Prozessoren der Fall ist, und da es Aufgabe von 'SetPatch' ist, den Datencache einzuschalten.
  • Die MMU wird konfiguriert, es werden viele Manipulationen an den Registern vorgenommen und es wird eine Pagetable aufgesetzt. Die MMU ist erst Bestandteil der 68K-Prozessoren seit dem 68040 (als externe Einheit schon seit dem 68030). Auswirkungen solcher MMU-Programmierung konnten von den Programmieren solcher Spiele natürlich überhaupt nicht vorausgesehen werden. Die Annahme, dass die MMU auf einem mehr oder weniger neutralen Stand ist, welcher solche Applikationen nicht beeinträchtigen, ist LEGITIM, da nach dem Reset keine Pagetable aktiv ist, und die Transparent Translation-Register so aufgesetzt sind, dass die Kompatibilität zum 68000 möglichst hoch ist, und da es Aufgabe von 'SetPatch' ist, ein MMU-Setup durchzuführen
  • Weitere Modifikationen an 68040/68060-spezifischen Registern können durchaus einen Einfluss auf die Kompatibilität zu alter Software haben.
  • Wir sind davon überzeugt, dass die wenigsten Besitzer einer BlizzardPPC-Hardware sich überhaupt im Klaren darüber sind, dass nicht die CPU selber schuld ist an den grossen Inkompatibilitäten, sondern dass das Flash-ROM zu einem grossen Teil dafür verantwortlich ist.

    Bei Starbirds konnten wir glücklicherweise einen Patch erstellen, welcher das Problem löst. Dieser Patch setzt das VBR wieder auf Null, schaltet den Datencache aus und schaltet die MMU ab und füllt die entsprechenden Register mit neutralen Werten. Bei vielen anderen Spielen besteht praktisch keine Möglichkeit, solche Patches einzusetzen, da sie direkt vom Bootblock starten. Solche Spiele haben auf BlizzardPPC- Systemen solange keine Chance, wie kein neues Flash-ROM ohne die ppc.library/68040.library/68060.library erschienen ist.