Wie ich Freunde für PlayStation 2 und PlayStation Portable gefunden habe (Spoiler - kombiniert in einem Emulator)

Hallo Leser. Letztes Jahr habe ich mein Hobbyprojekt Red Omega PS2 Emulator veröffentlicht . Die Idee war, die Steuerung des ursprünglichen PCSX2-Emulators für Spiele auf dem Surface Pro über den Touchscreen anzupassen.

Der ursprüngliche PCSX2-Emulatorcode wurde in Form eines DLL-Moduls neu geschrieben und mit einer grafischen Oberfläche in WPF in C # -Code geladen. Das Projekt erwies sich als praktikabel und erfolgreich - Final Fantasy X und Final Fantasy XII gingen mit einem Knall los. Aber vor sechs Monaten bin ich auf einen Link zu Valkyria Chronicles 4 bei Steam gestoßen. Ich habe die ersten Valkyria Chronicles auf der CD gekauft und mich "geschlagen", aber es gibt eine Frage - wo ist die zweite und dritte!?! Die Antwort wurde schnell gefunden - diese Fortsetzungen kamen nur auf Spielekonsolen heraus. Die für die PlayStation Portable verfügbaren Versionen erwiesen sich als die am besten zugänglichen - über den PPSSPP-Emulator. Das Smartphone ist nicht schlecht, aber auf dem Surface Pro hat mir die Steuerung über Touch nicht gefallen. Ja, und von Omega Red zu PPSSPP zu wechseln, und umgekehrt ist keine Jagd. Und dann kam eine "verrückte" Idee auf - den ursprünglichen PPSSPP-Code in Form eines DLL-Moduls umzuschreiben !!! Und verwandle Omega Red in eine PLATTFORM für PlayStation 2 und PlayStation Portable !!!


Leicht zu sagen, aber viel schwieriger zu tun. Der ursprüngliche PPSSPP-Emulator wird als Open Source-Projekt entwickelt und ist in Form eines vollständigen Codes zum Studieren und Ändern verfügbar. Der Code ist interessant und kann auf einer Vielzahl von grafischen APIs ausgeführt werden: OpenGL, DirectX9, DirectX11, Vulkan. Darüber hinaus verfügt es über eine integrierte Benutzeroberfläche. Die PPSSPP-Architektur ist jedoch „klarer“ als PCSX2 - mehr Modularität und Abhängigkeiten werden vereinfacht. Der Hauptschlüssel zur Verwirklichung meiner Idee war die Möglichkeit, eine Spiel-CD zu laden und als Argument für das Programm zu speichern. Die elementare Lösung besteht darin, die Eingabe-EXE-Funktion in die EXPORTED DLL-Funktion umzuschreiben. Natürlich wird es Probleme geben, ein zweites „Fenster“ zu erstellen, die Ausgabe des Grafik-Renderers in den WPF-Grafikkontext umzuleiten, Touch-Code zu verbinden usw. usw., aber das alles habe ich bereits entschieden, als ich den Code für PCSX2 neu geschrieben habe - es gibt bereits funktionsfähige Vorlagen.

Was ist das Ergebnis - die Lösung funktioniert! Es war möglich, zwei so unterschiedliche Emulatoren in einer Lösung zu kombinieren und nahtlos zwischen Spielen für verschiedene Emulatoren zu wechseln. Das Ergebnis kann im Video ausgewertet werden:


Darüber hinaus möchte ich die folgenden Änderungen gegenüber der ersten Version des Red Omega PS2-Emulators erwähnen:

1. Das Farbschema wurde geändert - die Kommentare wiesen auf die Unannehmlichkeiten des Farbschemas der Benutzeroberfläche hin - Rot. Eine seltsame Unannehmlichkeit - aber ich habe beschlossen, einen umgekehrten Bereich von "Blau" hinzuzufügen:

Bild

2. Tessellation - Für Spiele auf PCSX2 wurde die Funktion „Tessellation“ von DirectX 11 hinzugefügt. Mit dieser Funktion können Sie die Anzahl der Polygone für Modelle erhöhen:

Bild

Tessellation wird aus der Option "Rendering-Schema" ausgewählt:

Bild

STANDARD

Bild

Tessellated

Bild

STANDARD

Bild

Tessellated

Bild

3. FXAA - Für Spiele auf PCSX2 wurde die Funktion „FXAA aktivieren“ hinzugefügt, um Schritte entlang der Grenzen von Polygonen zu entfernen. Die Lösung funktioniert nicht perfekt, funktioniert jedoch:

Bild

4. Schnelles Speichern - Speichern Sie den Emulatorstatus mit einem Befehl:

Bild

5. Lautstärkeregler:

Bild

Derzeit ist das Programm verfügbar unter: Omega Red und wird auf GitHub: OmegaRed präsentiert

Source: https://habr.com/ru/post/de445022/


All Articles