Playstation 1 ROMs modifizieren?
Hallo, ich spiele einige PS1 ROMs auf meinem Raspberry Pi 4 und beschäftige mich auch mit Unity und Blender.
Ich würde gerne tiefer in die Spieldesign Materie einsteigen und deswegen bestehende Spiele modifizieren wollen. Zunächst rein grafische Aufwertungen. D.h. erstmal Texturen bearbeiten, später vllt. bessere 3D Modelle einbinden, sofern die Mechanik das zulässt.
Für umfangreiche Mods habe ich schon öfters was über psxdev.net gelesen. Aber hat jemand schon Erfahrung, wie und womit ich gezielt auf die PS1 ROMs Inhalte zugreifen kann, um grafische Inhalte zu bearbeiten und das Game damit zu testen?
1 Antwort
Ich habe von 2004 ...13 an der Entwicklung diverser Emus und Plugins mitgewirkt (Fehlermanagment, Shader, Lokalisierung,Support).
So einfach wie Du Dir das ganze vorstellst ist das nicht.
Für Deine angedachte Verfahrensweise müsstest Du mit einem Debugger für das PSOne-Chipset das Programm des Spiels analysieren/ändern. Es nutz recht wenig nur Bilder/Videos/Meshes zu ändern. Das Programm ist auf den auf der PSOne vorhandenen Speicher/Prozessor(en) ausgelegt. Es könnte keine größeren MediMedien verarbeiten.
Einige Tricks wie Widescrenn klappen leidlich wenn man die entsprechenden Speicherstellen im geladenen Programm patcht. Dabei müssen einige Speicherstellen permanent überwacht werden um ein Fallback zu verhindern. (leider ist es nicht möglich alle hardcodierten Settings zu ermitteln. ) Ein höllischer Aufwand,der überhaupt erst auf Mehrkernern möglich wurde und jedem "sauberen" Programmierer das Blut in den Adern gefrieren lässt (nicht Threadsafe).
Beim Rice-GPU-Plugin (Project64) war es möglich für Nutzerdefinierte Bilder/Texturen on the fly zu "spiegeln".
Für PS1/2 wurde mit dieser Technik experimentiert. Das scheiterte jedoch an der schieren Menge an Texturen bei Spielen auf diesen Plattformen und der Verteilung der Zuständigkeiten für die Dekodierung der Medien. (Das GPU-Plugin hat keinen Einfluss auf die Verarbeitung seitens der CPU). Im Großen und Ganzen ein riesen Kuddelmuddel aus resizeden und statischen Texturen/Videos.
Vergiss Deine Ideen, die hatten schon viel klügere Köpfe (soll keine Diskriminierung Deiner Grauen Masse sein). Wir haben viele Jahre darauf verwendet um dergleichen zu lösen.
PS1/2 waren kleine Wunderwerke der Ingenierskunst und weit mehr als die Summe ihrer Bauteile:
- https://arstechnica.com/features/2000/04/ps2vspc/
- https://www.spieleforum.de/threads/357970-einige-grundlegende-worte-zur-ps2-emulation-pcsx2-0-9-6?p=3754744&viewfull=1#post3754744
Schon lange bevor man beim PC auf Mehrkerner kam, kannten die kleinen Spielekonsolen auf mehrere Prozessoren verteilte Aufgaben und breite Datenleitungen. (Die verfügte schon über einen 128bit Datenbus, wovon PCentwickler noch heute feuchte Träume bekommen).
Entsprechend der Aufgabenverteilung und Synchronisation sind Programme der kleinen PlayStations nur schwer zu Disassemblieren oder Patchen. Vieles ist auf Speed optimiert (hardcoded, nicht über Variablen gesetzt). Unmöglich jeden Befehl zu analysieren und was Dieser wann tut.
Emulatoren für PS1/2 sind HighLevelEmus. Diese folgen nicht den einzelnen Chip-Befehlen, sondern versuchen zu nachzubilden, was Aufrufe von übergeordneten Funktionen bewirken.
Das Ganze war und ist eine Mamutaufgabe. (In Spitzenzeiten waren allein an den Emu-GPUplugins bis zu 20 erfahrene Programmierer involviert und wir hatten die Spezifikationen der Chipsetbefehle, welche Sony bis heute nicht offiziell offengelegt hat.)
Wenn Du nicht vorhast mit einem Nervenzusammenbruch in einer Jacke mit sehr langen Ärmeln zu landen, suche Dir ein nettes Hobby. Lerne beispielsweise Programmieren , damit hast Du für die nächsten 40 Jahre Hobby ohne Ende.
Ich hab noch 4 Jahre bis ich die 40 Jahre Programmierpraxis voll habe, dann werde ich wohl senil genug sein um im Park die Enten zu füttern 🤭🥳🤪👻
Vielen Dank für die ausführliche Aufklärung. War wohl wirklich zu einfach gedacht :D