PPSA21564's final composite renders into 4K 10-bit scanout buffers (COLOR_2_10_10_10 with the alternate swap, A2R10G10B10). No guest texture format matched that color format, so the target stayed non-resident: every frame's composite draw ran synchronously (about 11 ms, 143 per 10 s at the title) and the flip read the frame back through guest memory. The blue-low 10-bit color target now keeps its bits in the storage image of its surface's red-low 2-10-10-10 format, as B8G8R8A8 targets map to R8G8B8A8. Presenting it: DisplayTexelFormat names a display buffer's texel order as the guest-memory path reads it (R8G8B8A8 base: red low, else blue low; the 10-bit variant: A2B10G10R10 or A2R10G10B10). ResidentPresentPath blits a resident image only when it holds the display's 8-bit texel format (an exact copy). A 10-bit image (whose blit would round where the guest path drops the low two bits), the other 8-bit order or an sRGB type is converted instead: GpuColorTransfer::DetileImage copies the image's texels raw and runs the guest path's own conversion shader on them, so both paths present the same pixels. The image's write-back is unchanged: its results stay pending like any resident target's and are stored when a reader of the memory flushes them. Tests: agc_driver_recorder_tests checks the format decision for both 8-bit and both 10-bit orders, and converts an image in each order, comparing it with the CPU decode and the GPU detile of the same words in guest memory. |
||
|---|---|---|
| .github | ||
| 3rdparty | ||
| core | ||
| docs | ||
| tools | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
README.md
About
Tool for automatic executables porting to Linux and Windows.
Includes a relinker that converts executable to the target system's native format and implementations of system prx libraries suitable for dynamic linking. No emulation or separate runtime process.
Usage, Build instructions, Technical debt of the project, code style conventions, contributing
Status
* System libraries: percentage of the functions known to the project so far (declared in core/libs/prx), not of every PS5 system function. The total grows as more functions are declared.
Dreaming Sarah (2D platformer) runs at a stable 60 fps on a GTX 1050 Ti / i5-7500 3.4GHz.
Unsupported or unexpected states strictly throw std::runtime_error. what() is printed to stderr and the process terminates.
The shader recompiler successfully produces SPIR-V (validated via Spirv-Tools when built with ANYPS5_ENABLE_SPIRV_TOOLS).
Compatibility
See the game compatibility list for tested games and known issues.
Input mapping
SDL-mapped game controllers are supported, including analog sticks and triggers. Keyboard and mouse controls can be configured with an anyps5-input.ini file. See input mapping for the supported devices and configuration format.
Disclaimer
This project is intended for interoperability, research, preservation, and compatibility purposes. It does not include, distribute, or require copyrighted software, firmware, cryptographic keys, or proprietary libraries. Users are responsible for ensuring that any binaries used with this project are obtained and used in accordance with applicable laws and their respective license terms.
License
This project is licensed under the GNU General Public License version 2 only.