A title can open AudioOut2 ports of type 0x3 (the controller's speaker) and 0x6 (its two voice-coil actuators) next to its bed and object ports. Both were folded into the TV mix, so the haptics came out of the PC speakers as low thumps and the controller got nothing. A USB DualSense is also a 4-channel 48 kHz sound card: channels 1-2 feed the speaker and headset jack, channels 3-4 the left and right actuators. When SDL lists such a card, a context with these ports opens it and queues a grain on it with every push: the speaker port on channels 1-2 (a mono port duplicated) and the vibration port's left and right channels on 3-4, at the port volumes and clamped. Both ports then leave the main mix. The card's queue gets the main queue's silence cushion when it runs dry and drops grains that run more than two grains beyond the main queue, so the controller keeps pace with the TV. An unplugged card is released (its ports return to the main mix) and looked for again every 2 s. Without a card nothing changes, and other port types and channel counts keep their routing. SDL2's PulseAudio backend labels a 4-channel stream FL FR FC LFE instead of quad, and the sound server then folds channels 3-4 into the speaker. Under that backend the card is opened as 5.1 with FC and LFE silent and the actuators on the back pair, which lands on the card's RL/RR. |
||
|---|---|---|
| .github | ||
| 3rdparty | ||
| core | ||
| docs | ||
| tools | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| 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.
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).
Technical debt of the project, code style conventions
Build
The relinker uses only the C++20 standard library and should build with any conforming compiler.
libc.prx implementations contain compiler-specific code. Linux builds work with GCC; on Windows, MinGW-w64 GCC 15.2.0 (winlibs-gcc15, x86_64-ucrt-posix-seh) is currently required.
The project targets maximum compiler portability. Support for additional compilers will be addressed after the first successful game launch.
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.