GameCube-Emulator: Dolphin kann jetzt jedes Spiel booten
Die Macher des GameCube-Emulators Dolphin haben eine neue Softwareversion veröffentlicht, mit der nun auch das letzte noch fehlende Spiel läuft. Aufgrund von Besonderheiten bei der Speicherverwaltung war Star Wars: The Clone Wars lange Zeit unspielbar. Erfolg brachte erst eine echte Emulation der Speicherverwaltung.
Memory Management Unit wurde nicht wirklich emuliert
Die Memory Management Unit (MMU) des PowerPC-Prozessors in Nintendos GameCube ist dafür verantwortlich, den Spielen einen schnellen Zugriff auf Daten und Code zu geben. Die Spiele greifen dabei nicht direkt auf die Speicheradressen zu, sondern auf virtuellen Speicheradressen, die die MMU in physische Adressen übersetzt.
Dies hat zwei Vorteile. Zum einen kann die CPU dadurch Zugriffe puffern, um die Abfrage häufig abgefragter Werte zu beschleunigen. Zum anderen verfügt Nintendos GameCube nur über 24 MByte Arbeitsspeicher, den die CPU mappen kann. Dem steht ein 4 GByte großer Adressraum gegenüber. Die meisten physischen Speicheradressen würden daher ins Leere und bei einem versuchten Zugriff zum Absturz des Spiels führen, während die MMU beim virtuellen Speicher einen Fehler ausgeben kann.
Annahmen leichter umzusetzen als echte Emulation
In der Vergangenheit wurde die MMU nur zu einem gewissen Grad emuliert, indem mit einer gewissen Genauigkeit Annahmen darüber getroffen wurden, wie sie sich in bestimmten Situationen verhält. Ziel war es vor allem, Block Address Translations (BATs) und Page Tables für die Speicherverwaltung möglichst effizient zu handhaben. Eine hierfür getroffene Annahme war, dass BATs statisch sind und sich nicht verändern.
The Clone Wars macht den Annahmen einen Strich durch die Rechnung
Mit Ausnahme von Star Wars: The Clone Wars funktioniert dies auch bei allen GameCube-Spielen mehr oder weniger gut. Doch Clone Wars arbeitetet nicht mit festen BATs, sondern erstellt mehrmals im Laufe des Spiels eigene BATs, was das Spiel bisher im Emulator unspielbar machte. Um dies in Dolphin umzusetzen, musste die MMU-Emulation komplett neu geschrieben werden. Mit der neuen, dynamischen BAT-Emulation in Dolphin 5.0-540 sind aber auch einige andere Probleme in Spielen verschwunden, die im Prinzip bereits liefen.
Die Leistung der Spiele ist durch die neue MMU-Emulation zwar ein wenig gesunken, die Dolphin-Entwickler sind aber optimistisch, durch Optimierungen wieder ein paar Prozent zurück zu bekommen. Eine ausführliche Erklärung des alten Ansatzes zur MMU-Emulation und seiner Probleme sowie zur dynamischen BAT-Emulation bietet der Blogeintrag der Entwickler. Dolphin 5.0-540 steht für Windows-Systeme (64-Bit), OS X und Android als Download bereit.