github shadps4-emu/shadPS4 v.0.21.0
shadps4 v0.21.0 - codename Until Mavethee Dawn

latest release: Pre-release-shadPS4-2026-10-30-860d73b7e99559106a3ffa3d3d69f0f9237e115e
3 hours ago

Another week another release . There are ton of changes , so why not ?

Core

  • Properly check where an input came from for digital->analog input smoothing
  • cpu_patches: Work around Rosetta 2 mistranslating negated scalar compares
  • file_sys: Report stable file identities in stat and fstat
  • Allow file type identification for '/addcont' path
  • emulator: stop clearing temporary data on boot
  • Add PT_SCE_MODULE_PARAM case
  • cpu_patches: Fix JIT patching at addresses outside any module
  • core: Fix MemoryManager::Free unmapping past the released rang
  • file_sys: don't abort when a guest path goes through a regular file
  • use VMA pointers instead of copies in TryWriteBacking
  • cpu_patches: Workaround Rosetta 2 crash on VMASKMOVPS/PD
  • Handle ELF metadata and toolchain comments program headers
  • common: reuse one high-resolution waitable timer per thread in AccurateSleep
  • Don't abort when optional ELF metadata segments can't be read
  • cpu_patches: Fix register clobbering in Rosetta 2 VMASKMOV workaround
  • renderdoc: Add library name for macOS
  • renderdoc: Add alternate path for macOS
  • lru_cache: Fix early stop in ForEachItemBelow
  • Avoid deadlock when Shutdown is re-entered on the same thread
  • Check if elf info is initialized when shutting down

Libraries

  • kernel: Implement I/O event queue APIs with Core::Net integration
  • kernel: fail rmdir on non-empty directories with ENOTEMPTY
  • app_content: Implement sceAppContentTemporaryDataMount
  • kernel: Try lock without wait in timed mutex if deadline has passed
  • usbd: Implement libSceUsbStorage HLE for virtual USB media access
  • http: allowing headers with surrounding whitespace
  • kernel, rtc: Fix timezone and DST calculation
  • music: Implement libSceMusicPlayerService HLE
  • videodec2: Drain pending frames and wrap in RAII
  • usbstorage: Correct OrbisUsbStorageDeviceInfo layout and population
  • app_content: Implement sceAppContentAddcontUnmount
  • app_content: Implement TemporaryData mount and unmount
  • np_auth rewrite
  • Ajm: Auto-detect and safely parse RIFF headers for ATRAC9
  • libSceVoice: stub a disconnected microphone to fix BO2 and BO3 hangs
  • net: report recv_queue_length in sceNetGetSockInfo
  • kernel: Register missing filesystem symbols and fix /dev/null device
  • kernel: return ENOENT from mkdir when the parent does not exist
  • kernel: return EBADF when writing to a file opened read-only
  • kernel: return EINVAL from ftruncate for bad lengths and read-only fds
  • kernel: return ENOENT from unlink when the file does not exist
  • pad: Implement scePadReadExt and scePadReadStateExt
  • gnmdriver: Fix remapped compute queues starting at a stale ring offset
  • app_content: Load additional content from linked services (SERVICE_ID_ADDCONT_ADD_n)
  • app_content: Populate add-on entitlement keys
  • app_content: Fix entitlement keys and service labels
  • playgo: Fix language mask UB and default install speed
  • kernel: Fix self-rename deletion and host path tracking in posix_rename
  • music: Implement sceMusicPlayerServiceSetUsbStorageDeviceInfo
  • kernel: Implement posix_flock and sceKernelFlock
  • audio3d: Fix swapped attribute ids
  • audio3d: Fix swapped attribute ids (OpenAL)
  • kernel: Improve Neo mode handling and implement missing APIs
  • kernel: return ENOENT from open(O_CREAT) when the parent does not exist
  • videodec: libSceVdecCore HLE and VideoCore server interface callbacks
  • np_trophy: Fix platinum trophy never unlocking
  • threads: fix stack base value in windows
  • share_play: Implement sceSharePlayGetCurrentConnectionInfoA
  • net: answer PS4 device discovery on UDP 987
  • np_score : fixed a few inaccurancy returns and data transfers
  • kernel: Fix filesystem validation and posix_select
  • pad: report the DualShock 4 touchpad height (942) instead of 950
  • kernel: return ENOTDIR from mkdir when the parent is a file
  • save_data: deliver backup completion callbacks
  • fiber: Relocate fiber stacks away from GPU tracked heap on Windows
  • np_score : improved score data transfer, comparable dates and improved friends ranking

Video Core

  • Garbage Collector part 2
  • vk_runtime: Copy every mip level in CopyImageWithBuffer
  • Support stencil-only depth targets and decouple stencil sizing
  • Fix CE/DE counter synchronization in PM4 packets
  • texture_cache: keep subresource data when its parent image is first created
  • texture_cache: don't copy stale CPU-dirty image contents in ExpandImage
  • Fix global CE task scheduling
  • texture_cache: Drop GPU-modified images whose untracked edges the guest overwrote
  • video_core: Handle PM4 IT_GET_LOD_STATS packet
  • video_core: reset hash on image refresh
  • video_core: Fix Ubscaled number format name
  • vk_instance: Support RenderDoc on drivers without capture replay
  • liverpool: Follow chained indirect buffers without returning
  • liverpool: Advance past a packet by the size read before running it
  • video_core: Compare subresource extents per dimension
  • vk_rasterizer: Bound the render area of passes without attachments by the scissors
  • video_core: Handle PM4 Type 2 and Rewind packets in Constant Engine
  • video_core: Implement PM4 streamout buffer updates

Shader Recompiler

  • Emit undefined 64-bit integers
  • Preserve CFG fallthrough edges
  • Stabilize phi deduplication order
  • Account for singleton dimensions in LDS barrier analysis
  • Exclude GetUserData from Phi folding
  • Accept S_SLEEP as a scheduling hint
  • Handle buffer cache invalidation instructions
  • Add fast_shader_math setting to relax float rules
  • info.has_derivatives.Assign now also checks for MimgModifier::CoarseDerivative
  • Handle HW_ID.SE_ID reads
  • Support GsOp::EmitCut in S_SENDMSG

Don't miss a new shadPS4 release

NewReleases is sending notifications on new releases.