8_8_8_8 and 16_16_16_16 targets with COMP_SWAP 2 or 3 keep the exported alpha in their first channel and red or blue in their fourth, so a plain Vulkan blend would run the alpha equation on a color channel. Such draws threw "blending into a color target with a reversed component order is not implemented" (Gran Turismo 7, #4782). The AMD SI and CIK register references describe CB_TARGET_MASK in the order of components after blending and before COMP_SWAP is applied, and RADV programs CB_BLENDn_CONTROL without regard to the swap while it renders R4G4B4A4, B4G4R4A4, R5G5B5A1 and B5G5R5A1 through SWAP_STD_REV and SWAP_ALT_REV and passes the CTS blend tests on Navi10. The color block is therefore taken to blend in export order: the alpha equation and source-alpha factors use the exported alpha and the destination alpha is the first channel. TranslateReversedBlend keeps the factor pairs Vulkan applies per channel in the pipeline. Other source factors are computed by the pixel shader from its MRT0 export (clamped for UNORM targets, as BLEND_CLAMP says) and handed to the blend as a dual-source second color, which the fragment output post-pass adds at location 0 index 1; when both positions need it, the export is premultiplied by its source factor. The code is a pipeline specialization, serialized in request version 26, and stays out of the prepared shader key. sRGB, SNORM and integer targets, constant and second-source factors, destination alpha in the color equation, destination factors the two equations do not share, different color and alpha operations, MIN or MAX with factors other than ONE, other color exports when the shader computes factors, and devices without dualSrcBlend still throw, now with the blend control, mapping and format in the message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
About
Tool for automatic executables porting to Linux and Windows.
Web converter - files stay on your device.
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.
Discord, Usage, Build instructions, Architecture, 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.
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
Per-game progress (stage reached, open blockers, libraries and GPU coverage) is tracked on the blocker map, a community project built from public GitHub data (source). Test reports go in the Game bring-up discussions, one thread per title.
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.