HLE ist die Art, wie PS5PCEM die Firmware-Aufrufe beantwortet, die ein Titel importiert. Jede numerische NID wird zu einer Zig-Funktion auf einem Host-Stack, wobei die System-V-Aufrufkonvention des Gastes unter Windows erhalten bleibt.
So funktioniert esUmsetzung
So arbeitet PS5PCEM
Jede Seite ist ein Mechanismus, den der Emulator wirklich ausführt: was die Konsole tut, was der Zig-Code tut und was noch fehlt.
Repository-Notizen bis 17. Oktober 2026
Firmware und HLE
AMPR-Zähler
TeilweiseAMPR in PS5PCEM ist ein prozesslokales Softwaremodell der Zähler- und Abschlussbefehle der Konsole. 128 Zähler nehmen Stores, atomare Feldaktualisierungen, paarweise Lesezugriffe und maskierte Wartebedingungen entgegen, in der Reihenfolge der Einreichung.
So funktioniert esAPR-Dateikennungen und Lesevorgänge
TeilweiseAPR löst eine Titeldatei einmal auf und trägt danach eine prozesslokale Kennung in späteren Befehlspuffern. Aufgeschobene AMPR-Lesevorgänge öffnen dieselbe nur lesbare Datei unter /app0 erneut, ohne einen Host-Deskriptor dauerhaft zu behalten.
So funktioniert esDirekter Speicher, flexibler Speicher und Pools
FunktioniertGastadressen sind echte Hostadressen. Direkter Speicher ist ein dünn belegter gemeinsamer physischer Pool, der in diesen Raum abgebildet wird, und MemoryPool setzt Reservierung, Commit und Batch-Operationen auf demselben Backing darauf.
So funktioniert esSpielstände
FunktioniertEin eingehängter Spielstand-Slot wird zu einem beschreibbaren /savedata0. Der Titel nutzt die gewöhnliche Datei-API, und der nächste Start findet dieselben Dateien unter dem Produktcode, den der Titel bekannt gibt.
So funktioniert esSchriftausgabe
TeilweiselibSceFont rastert vom Titel gelieferte TrueType- und OpenType-Schriftschnitte mit FreeType. Anforderungen einer Systemschrift nutzen den mitgelieferten Ersatz Noto Sans für Lateinisch, Griechisch und Kyrillisch.
So funktioniert esPNG kodieren und dekodieren
TeilweiseDer PNG-Kodierer schreibt 8-Bit-RGB- oder RGBA-Dateien aus RGBA- oder BGRA-Pixeln mit Pitch. Der Dekodierer liest nicht verschachtelte Bilder in Graustufen, Palette, RGB und RGBA in einen geprüften Gastpuffer.
So funktioniert esEchtzeituhr
TeilweiseRTC prüft Kalenderfelder, wandelt Windows-FILETIME um und rechnet Ticks geprüft. Der Gast sieht eine zusammenhängende Uhr ohne die Sommerzeitumrechnung des Hosts.
So funktioniert esFibers und User-Level-Threads
TeilweiseUnter Windows ist jeder Fiber von libSceFiber ein echter Windows-Fiber, sodass ein Wechsel die Gastregister und den Gast-Stack behält. User-Level-Threads starten über denselben pthread-Pfad.
So funktioniert esAsynchrone Dateilesungen des Kernels
TeilweiseDie AIO-API des Kernels nimmt einen Batch von Lesevorgängen an und gibt eine Kennung zurück. PS5PCEM führt den Batch bei der Einreichung aus, was die Schnittstelle erlaubt, und der Titel holt ein fertiges Ergebnis ab.
So funktioniert esGrafik
AGC und der PM4-Befehlsstrom
TeilweiseEin PS5-Titel baut GPU-Pakete in seinem eigenen Speicher und reicht den Puffer ein. PS5PCEM dekodiert diesen PM4-Strom, behält den Registerzustand und führt Zeichenaufrufe und Dispatches der Reihe nach aus.
So funktioniert esRDNA2-Shader nach SPIR-V
TeilweiseShader der PlayStation 5 sind RDNA2-Maschinencode. PS5PCEM dekodiert die GFX10-Familien, baut einen Kontrollflussgraphen und senkt die unterstützten Operationen auf SPIR-V 1.5 für Vulkan ab.
So funktioniert esNGG-Vertex-Shader
TeilweiseZusammengeführte NGG-Vertexprogramme, einschließlich eines Fetch-Shaders, der mit S_SETPC_B64 fortsetzt, werden als eine Grafikstufe übersetzt. Das Exportprogramm behält sein eigenes User-Data-Fenster.
So funktioniert esBildladevorgänge über mehrere Texel
TeilweiseIMAGE_LOAD_BY2, BY4, PCK2 und PCK4, einschließlich der Formen mit explizitem Mip, werden für die gemessenen nativen 2D-Formate ausgeführt. Ein BY-Ladevorgang liefert aufeinanderfolgende Texel. Ein PCK-Ladevorgang packt ihre Rohbits in ein Register.
So funktioniert esHorizontale Gathers
TeilweiseIMAGE_GATHER4H und IMAGE_GATHER4H_PCK sammeln einen Kanal über eine waagerechte Gruppe von Texeln. Die gemessene direkte Teilmenge für 1D und 2D ist durch 1,242 GPU-Dispatches abgedeckt.
So funktioniert esSkalare Shader-Aufrufe
TeilweiseS_SWAPPC_B64 und S_CALL_B64 sichern eine volle Rückkehradresse und führen ein begrenztes lokales Unterprogramm aus, auch einen Callee, der hinter ENDPGM liegt. Ein geprüfter AGC-Fetch-Shader kann auf dieselbe Weise verbunden werden.
So funktioniert esVulkan-Renderer
FunktioniertDas Vulkan-Backend lädt den Treiber zur Laufzeit, verlangt Vulkan 1.2 und gibt Gastbilder über eine Swapchain aus. Renderziele, Storage-Images und Pipelines bleiben über Zeichenaufrufe hinweg resident.
So funktioniert esDirect3D-12-Backend
TeilweiseEin experimenteller nativer Windows-Renderer, hinzugekommen nach 0.3.5. Er teilt sich den PM4-Decoder und die RDNA2-Shaderübersetzung mit Vulkan und führt dann über D3D12 und DXGI aus und stellt dar. Vulkan bleibt Standard, und Spiele laufen über diesen Weg noch nicht.
So funktioniert esMSAA
TeilweisePassende Samplezahlen von 2×, 4× und 8× für Farbe und Tiefe bleiben bis zu einem späteren Resolve auf dem Host-Bild. Asterix nutzt diesen Pfad für MSAA-Tiefe und Stencil, wodurch ein großes versehentliches Rücklesen entfiel.
So funktioniert esHTILE, DCC, CMASK und FMASK
TeilweiseHTILE, DCC, CMASK und FMASK sind die komprimierten Tiefen- und Farbmetadaten der Konsole. PS5PCEM verfolgt die Zeiger, löscht HTILE in den Fällen, die es versteht, und weist ein Layout zurück, das es sonst falsch entkacheln würde.
So funktioniert esEntkacheln von Texturen
TeilweisePS5-Texturen liegen in GFX10-Swizzle-Mustern, nicht in linearen Zeilen. PS5PCEM wendet die Adressgleichungen auf der CPU an und auf der GPU für die großen Oberflächen mit 4, 8 und 16 Byte, die dafür infrage kommen.
So funktioniert esGPU-Seitenverfolger
TeilweiseDer zuschaltbare Seitenverfolger beobachtet Gastseiten von 16 KiB. Der erste native CPU-Store löst einen Fehler aus, erhöht eine Generation und macht die GPU-Kopie ungültig, sodass unveränderte Seiten nicht in jedem Bild gehasht und hochgeladen werden.
So funktioniert esVideoOut
FunktioniertVideoOut registriert die Anzeigepuffer des Gastes und schließt einen Flip erst ab, nachdem der Darstellungsrückruf das Bild angenommen hat. Das Host-Fenster ist eine Vulkan-Swapchain in 1080p SDR.
So funktioniert esTon und Video
AudioOut
FunktioniertAudioOut gibt Gast-PCM auf einem Windows-Gerät mit 48 kHz wieder. Ältere Ports haben eigene Ströme und Warteschlangen, sodass Musik und Effekte zusammen laufen, und ein Underrun behält die Sample-Reihenfolge.
So funktioniert esACM-Faltung
TeilweiseDie ACM-Faltung führt den partitionierten Hall von FMOD auf der CPU aus. Batches mit gemeinsamem Eingang transformieren ein Dry-Signal, wenden Impulspartitionen in Float oder Halbfloat an und fügen das Wet-Ergebnis per Overlap-Add zusammen.
So funktioniert esAJM-Codecs
TeilweiseAJM dekodiert ATRAC9, MP3, MPEG-4 AAC und Opus. Jede Codec-Instanz behält ihren eigenen Zustand, und ein unbekannter Codec wird abgelehnt, statt als stiller Erfolg gemeldet zu werden.
So funktioniert esNGS2
TeilweiseNGS2 behält Handles für System, Rack und Voice, liest gewöhnliche RIFF/WAVE-Daten und taktet ein stilles Grain mit 48 kHz, damit ein Software-DSP-Worker nicht in einer Schleife drehen kann. Die Voice-Synthese selbst ist unvollständig.
So funktioniert esAvPlayer
FunktioniertSceAvPlayer dekodiert Filmcontainer mit FFmpeg in NV12-Bilder, die dem Titel gehören, und in Stereo-PCM mit 48 kHz. Die Wiedergabe endet, wenn die Dauer der Quelle überschritten ist, auch wenn der Titel einen der Ströme nie liest.
So funktioniert esCPU, Lader und Werkzeuge
Native Gastausführung
FunktioniertUnter Windows x86-64 läuft der Maschinencode des Gastes direkt. Ein Host-Worker trägt jeden Gast-pthread, und die FS-Basis wird nach jedem blockierenden Aufruf wiederhergestellt, weil Windows sie nicht behält.
So funktioniert esLaden von ELF und SELF
FunktioniertDer Lader bildet entschlüsselte PS5-SELF- und nackte ELF64-Module ab, wendet Relokationen an und löst Importe gegen die HLE-Registrierung auf. Der Titel erhält danach stabile Handles für Module, die er selbst startet.
So funktioniert esController und Tastatur
FunktioniertDualSense, DualSense Edge und DualShock 4 werden über HID gelesen, an USB und Bluetooth. Pads, die zu Xbox passen, nutzen XInput. Die Tastatur wird über ein Launcher-Profil auf die Sticks abgebildet.
So funktioniert esPKG-Extraktor
Teilweisepkgextractor packt die in der Entwicklung beobachteten Debug-Layouts von FPKG aus: das äußere Paket, das innere PFS, NAPS-Namensabbildungen und mit Kraken komprimierte Nutzlasten. Verschlüsselte Retail-Pakete liegen außerhalb des Umfangs.
So funktioniert esWorum es auf diesen Seiten geht