1 Punkte von GN⁺ 2025-12-12 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Basierend auf dem Super Mario 64 Decompilation Project für Nintendo 64, eine auf PlayStation (PSX) portierte Version
  • Enthält umfangreiche Anpassungen für PS1-Hardware wie DualShock-Vibrationsunterstützung, Umstellung auf Festkomma-Mathematik und Rendering-Optimierungen
  • Leistungsverbesserungen durch Grafikpräprozessor, Texturkompression und Optimierung des Animationsspeichers wurden ergänzt
  • Mehrere bekannte Fehler sind vorhanden, darunter eine unvollständige Kamerasteuerung, Kollision- und Absturzfehler sowie ein nicht mögliches Musik-Build
  • Ein plattformübergreifendes Portierungsexperiment eines Klassikers, das als relevantes Beispiel für die Entwicklung auf Legacy-Konsolen und Reverse-Engineering-Forschung gilt

Projektübersicht

  • Dieser Code ist ein Fork der vollständigen dekompilierten Super Mario 64 (J/U/E/SH)-Version und ist nur für PSX und PC (Debugging) gedacht.
    • Der Nintendo-64-Build wird nicht mehr unterstützt.
    • Derzeit kann nur ein US-ROM gebaut werden.
  • Der Spiel-Build enthält keine Original-Assets, daher ist ein Extrahieren der Assets aus einem gültigen ROM erforderlich.

Hauptfunktionen

  • DualShock™-Kompatibilitätsgrafik wurde hinzugefügt und imitiert die originale Anzeige „Rumble Pak Compatible“.
  • Unterstützt sowohl analoge Vibrationssignale für den großen DualShock-Motor als auch digitale Signale für den kleinen Motor.
  • PSX-Implementierung für Low-Precision-Soft-Float senkt den Performance-Verlust bei Fließkomma-Berechnungen.
  • Festkomma-Mathematik ersetzt Teile des Codes; 16-Bit-Integer-Vektoren und -Matrizen nach PSX-Standard.
  • Render-Graph-Worker vereinfacht und neu geschrieben.
  • Polygon-Splitting (bis zum 2-fachen) reduziert Probleme bei großen Polygonen.
  • RSP-Displaylisten werden in ein JIT-basiertes eigenes Format konvertiert, um die Verarbeitungsrate zu steigern.
  • Ein Displaylisten-Präprozessor entfernt unnötige Befehle und optimiert Meshes.
  • Mario-Animationskompression (580,632 → 190,324 Bytes) und direkte Platzierung im VRAM.
  • Eigenen Profiler und 4bpp-Textur-Encoder hinzugefügt.
  • Aufgrund der Transparenzgrenzen der PSX wurden hexagonale Schatten eingesetzt.
  • (Geplant) Kameradrehung mit dem rechten Analogstick und eine Überarbeitung des Goddard-Subsystems.

Bekannte Probleme

  • Schwebende Bäume, manche Animationen funktionieren nicht oder stürzen ab
  • Musik-Build nicht möglich, Soundeffekte fehlen oder klingen fehlerhaft
  • unvollständige Kamerasteuerung, Abstürze beim Betreten bestimmter Levels
  • Laden der Endsequenz schlägt fehl, Lakitu taucht nicht auf, Pol funktioniert nicht
  • lange Ladezeiten durch einzelnes Laden von Texturen, Texturverzerrungen aufgrund von PSX-Limits
  • Verbesserung des Grafikpräprozessors erforderlich, einige Textur-Rendering-Fehler, nicht vollständiger Titelbildschirm, Pause-Menü funktioniert nicht

Build-Methode

Linux

  • Toolchain mipsel-none-elf-gcc installieren und das Repository klonen
  • Datei baserom.us.z64 im Stammverzeichnis ablegen
  • (Optional) Soundtrack-.wav-Dateien (0~37) im .local-Ordner hinzufügen
  • make ausführen, um ein ISO-Image zu erzeugen (build/us_psx/sm64.us.iso)
  • Die Benchmark-Version (make BENCH=1) erzeugt ohne ISO nur ELF/EXE und benötigt eine 8 MB RAM PSX

Windows (nicht verifiziert)

  • Nach Installation von MSYS2 die mingw-w64-Pakete einrichten
  • mipsel-none-elf-gcc installieren und das sm64-psx-Repository klonen
  • baserom.us.z64 ablegen und make ausführen
  • Das Build-Ergebnis wird im selben Pfad wie unter Linux erzeugt

Fehlerbehebung

  • Bei nicht erkanntem gcc prüfen, ob die falsche MSYS2-Umgebung ausgeführt wird
  • Bei fehlendem baserom.us.z64 den Dateistandort überprüfen
  • Bei nicht gefundenem Makefile den Verzeichnispfad prüfen
  • Bei Paketfehlern mit pacman -Syu und pacman -Su aktualisieren
  • Die Funktionsfähigkeit von mipsel-gcc prüfen mit mipsel-none-elf-gcc -v
  • Beim Plattformwechsel make -C tools clean ausführen, um Tools neu zu kompilieren

Projektstruktur

  • actors: Objektverhalten, Geo-Layout, Displaylisten
  • assets: Animations- und Demodaten
  • src: Kern-C-Quelle des Spiels (Audio, Engine, Spielablauf, Menü, Portierung usw.)
  • textures, text, levels: Grafik- und Level-Daten
  • tools: Build-Tools
  • lib: enthält N64-SDK-Code

Beiträge

  • Pull Requests sind willkommen.
  • Vor größeren Änderungen empfiehlt sich die Erstellung und Diskussion eines Issues.

Noch keine Kommentare.

Noch keine Kommentare.