XenonRecomp – Das Xbox 360-Rekompilierungs-Tool

XenonRecomp ist ein innovatives Tool, das darauf ausgelegt ist, ausführbare Xbox-360-Dateien in erneut kompilierbaren C++-Code zu konvertieren. Es könnte bald auch andere Plattformen unterstützen. Derzeit beschränkt sich das Tool auf x86-Plattformen, da es stark auf x86-Architektur basiert, aber die Entwickler arbeiten daran, die Kompatibilität zu erweitern.

Inspiriert vom Projekt N64: Recompiled, das die Neukompilierung von Nintendo-64-Executables ermöglicht, verfolgt XenonRecomp ein ähnliches Ziel für Xbox-360-Spiele und -Anwendungen. Das Tool übersetzt PowerPC (PPC)-Instruktionen der Xbox 360 in C++-Code, wodurch eine Neukompilierung für andere Architekturen möglich wird. Allerdings ist der generierte Code nicht besonders leserlich, da die Instruktionen ohne Umstrukturierung direkt übersetzt werden.

XenonRecomp arbeitet, indem es den CPU-Zustand (einschließlich der PPC-Register) als Argument an jede PPC-Funktion übergibt. Obwohl die Xbox 360 eine Big-Endian-Maschine ist, funktionieren die implementierten Instruktionen in Little-Endian. Daher sind Anpassungen für Speicheroperationen und Vektorregister erforderlich, bei denen die Reihenfolge der Elemente umgekehrt werden muss.

Vektor-Instruktionen (VMX) sind aktuell in x86 implementiert, aber die Entwickler erwägen den Einsatz von Bibliotheken wie SIMD Everywhere, um Multi-Architektur-Kompatibilität zu ermöglichen. Einige Funktionen, darunter MMIO (Memory-Mapped I/O), das für Hardware-spezifische Operationen wie XMA-Dekodierung verwendet wird, sind jedoch noch nicht implementiert.

XenonRecomp nutzt eine perfekte Hash-Tabelle, um virtuelle Funktionsaufrufe effizienter aufzulösen. Dies stellt eine Verbesserung gegenüber früheren Methoden dar, die übermäßige Speicherzuweisungen erforderten. Für Jump Tables (Sprungtabellen) greift das Tool auf vorhersehbare Assembly-Muster zurück, wobei für neuere Xbox-360-Spiele Anpassungen erforderlich sein könnten, da sich der Compiler im Laufe der Zeit weiterentwickelt hat.

Die Analyse der Funktionsgrenzen wird unterstützt, allerdings gibt es Herausforderungen bei Funktionen, die Sprungtabellen enthalten. Nutzer können die Funktionsgrenzen manuell in einer TOML-Konfigurationsdatei definieren.

XenonRecomp bietet mehrere Optimierungen zur Leistungssteigerung, darunter das Entfernen überflüssiger Registeraufrufe und die Umwandlung bestimmter Register in lokale Variablen. Diese Optimierungen können die Größe der Executables um mehrere Megabyte reduzieren und die Renderzeiten verbessern. Außerdem ermöglicht das Tool, PPC-Funktionen direkt zu patchen, sodass Nutzer Funktionen durch eigene Implementierungen ersetzen können, während der Zugriff auf die Originalfunktionen erhalten bleibt.

Trotz dieser Fortschritte unterstützt XenonRecomp derzeit keine Exceptions (Ausnahmen). Dies liegt an der technischen Herausforderung des Link Registers und der schwer vorhersehbaren Natur von Exception-Handlern. Zudem sind einige PPC-Instruktionen, insbesondere solche im Zusammenhang mit D3D-Operationen, noch nicht vollständig implementiert.

Der Hauptentwickler von XenonRecomp, blueskythlikesclouds, stellt regelmäßig neue Builds zur Verfügung, falls das Projekt von Interesse ist.