Open Gaming & Graphics

shadPS4 v0.21.0 adds significant kernel HLE, video decoding, and Rosetta 2 fixes

Key Takeaway

The shadPS4 v0.21.0 update introduces extensive High-Level Emulation (HLE) for kernel services, improved video decoding, and critical CPU patching workarounds for macOS users.

Summary

The shadPS4 emulator has released version 0.21.0, codenamed 'Until Mavethee Dawn,' featuring a massive expansion of its High-Level Emulation (HLE) capabilities. This update focuses heavily on implementing missing kernel APIs, filesystem behaviors, and networking protocols required for higher game compatibility.

Significant improvements were made to the Video Core and Shader Recompiler, alongside critical CPU patching fixes specifically targeting Rosetta 2 translation issues on macOS. The release also addresses various library stubs for audio, USB storage, and controller input, moving the project closer to a more complete PlayStation 4 software environment.

Technical breakdown of shadPS4 v0.21.0

  • Kernel and Filesystem HLE: Implemented numerous POSIX-compliant behaviors including posix_flock, posix_rename, and posix_select, while adding specific error code handling for mkdir, rmdir, open, and unlink to match guest OS expectations.
  • macOS and Rosetta 2 Optimization: Introduced critical CPU patches to work around Rosetta 2 mistranslating negated scalar compares and to prevent crashes during VMASKMOVPS/PD instructions, including fixes for register clobbering.
  • Video and Audio Subsystems: Added libSceVdecCore HLE and VideoCore server interface callbacks, implemented libSceMusicPlayerService HLE, and improved ATRAC9 header parsing via Ajm.
  • Video Core and Rendering: Advanced the Video Core Garbage Collector, added support for stencil-only depth targets, and implemented PM4 streamout buffer updates and Type 2/Rewind packet handling in the Constant Engine.
  • Input and Peripheral Support: Implemented scePadReadExt and scePadReadStateExt for controllers, added libSceUsbStorage HLE for virtual USB media access, and corrected DualShock 4 touchpad height reporting.

Why it matters

This release significantly advances the technical maturity of the shadPS4 project, particularly for users running the emulator on macOS via Rosetta 2. The extensive implementation of kernel and filesystem APIs reduces the likelihood of crashes and hangs in complex titles, providing a more stable foundation for future PlayStation 4 software emulation on Linux and desktop platforms.

What to do

  • Update shadPS4 to version 0.21.0.

Original reference: github.com →