EmuNews

shadPS4

shadps4-emu/shadPS4

18 tracked updates · latest 12 min ago · last stable v.0.21.0 7 days ago

GitHub

Pre-release-shadPS4-2026-11-06-8b80480

Pre-release-shadPS4-2026-11-06-… nightly / pre-release
What changed · 4 files

AI summary of 42 commits · qwen3.5:9b

  • Fixed save data corruption by preserving param.sfo after crashes and preventing writes on read-only mounts.
  • Improved video output by refreshing GPU-written frames to prevent old YUV planes from showing in compute shaders.
  • Added support for new system services including Closed Captions, Accessibility settings, and custom button assignments.
  • Fixed audio decoder resets and MP3 parser state handling to prevent crashes when switching tracks or streams.
  • Corrected user color mapping and JPEG decoding errors to ensure proper display of avatars and images.
  • Implemented new Vulkan features like DS_MIN_F32/DS_MAX_F32 and improved shader recompiler precision for F32x2 values.
  • Added per-game setting to submit recorded work every N draws to improve performance on specific titles.

Full Changelog: v.0.21.0...8b80480

Pre-release-shadPS4-2026-11-06-4dc007a

Pre-release-shadPS4-2026-11-06-… nightly / pre-release
What changed · 4 files

AI summary of 41 commits · qwen3.5:9b

  • Fixed crashes and data loss when saving games after an unclean exit or mounting read-only saves.
  • Improved video decoding by correctly refreshing frames written by compute shaders.
  • Added support for new system services including accessibility settings and custom button assignments.
  • Implemented the libSceJpegDec library to better handle JPEG image decoding in supported games.
  • Fixed audio issues by resetting the MP3 parser when a decoder is reset and ignoring invalid AAC resets.
  • Corrected user color mapping and file system error codes to match official PS4 behavior.
  • Added a per-game setting to submit recorded work every N draws for performance tuning.

Full Changelog: v.0.21.0...4dc007a

Pre-release-shadPS4-2026-11-06-7201424

Pre-release-shadPS4-2026-11-06-… nightly / pre-release
What changed · 4 files

AI summary of 40 commits · qwen3.5:9b

  • Fixed crashes and errors in save data handling when exiting abruptly or mounting read-only saves.
  • Improved JPEG decoding to prevent memory errors and fix color space reporting for supported games.
  • Added support for new system service parameters including closed captions and accessibility settings.
  • Implemented libSceJpegDec library functions for better image processing compatibility.
  • Fixed shader recompiler issues with specific float operations and vector instruction handling.
  • Improved network callback handling to avoid redundant events when state hasn't changed.
  • Added per-game setting to control frequency of recording work submission in the rasterizer.

Full Changelog: v.0.21.0...7201424

Pre-release-shadPS4-2026-11-06-0d5f273

Pre-release-shadPS4-2026-11-06-… nightly / pre-release
What changed · 4 files

AI summary of 39 commits · qwen3.5:9b

  • Fix save loading crashes by restoring param.sfo data when exiting uncleanly or mounting read-only saves.
  • Improve JPEG decoding to prevent errors and correctly handle color spaces and image dimensions.
  • Add new system service parameters for closed captions, accessibility features, and custom button assignments.
  • Correct file system behavior to return proper error codes for missing directories and invalid rename operations.
  • Update VR library stubs to support the sceVrServiceDialog interface without crashing on unsupported calls.
  • Improve texture cache handling by clamping mip levels and refreshing GPU-written image planes correctly.
  • Implement new network callback mechanisms to filter redundant state events and prevent unnecessary updates.

Full Changelog: v.0.21.0...0d5f273

Pre-release-shadPS4-2026-11-05-98ef621

Pre-release-shadPS4-2026-11-05-… nightly / pre-release
What changed · 4 files

AI summary of 38 commits · qwen3.5:9b

  • Fixed save data loading to prevent crashes and data loss when exiting the emulator while a game has its saves mounted.
  • Improved JPEG decoding support by implementing new functions and correcting color space handling for better image compatibility.
  • Added support for fcntl, dup, and dup2 system calls to improve file descriptor management and socket operations.
  • Corrected user color mapping in the service library to prevent crashes when games access player index data.
  • Implemented new shader recompiler instructions (DS_MIN_F32, DS_MAX_F32) to improve graphics compatibility for specific titles.
  • Fixed file system logic to correctly handle read-only mounts and prevent unintended updates to save metadata timestamps.
  • Updated the AppImage build process to include a required PNG icon for proper desktop integration on Linux systems.

Full Changelog: v.0.21.0...98ef621

Release notes · 3 files

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
Release notes · 3 files

That was close wasn't it? I know you are not used to so close releases but we have a lot of new things to demonstrate so why not? This release is following the first official stable release of shadNet 0.1.0, so we have some online playability available (yes Bloodborne fans, online Bloodborne is now officially available). There are also a tons of fixes to different areas of emu , you can check the list below. The release is dedicated to our friend Stephen, who is taking a break from shadPS4 due of his studies. Stephen if you are reading this we already miss you ;/

Core

  • cpu_patches: Apply comprehensive SSE4a CPU patches on macOS
  • Shutdown NpHandler before restarting
  • cpu_patches: Enable static patching on Linux
  • cpu_patches: Patch (V)RCPPS and (V)RSQRTPS on Intel
  • Speed up game ID resolution
  • Anchor the FPS counter at startup and refactor counter movement check
  • address_space: Restore protections after splitting a mapped region on Windows
  • kernel: Implement POSIX file attribute and sync APIs
  • file_sys: Normalize guest paths and fix mount matching
  • Do not expand host mmap range during POSIX AddressSpace::Unmap
  • Advance the source pointer for each backing run in TryWriteBacking
  • Removed the signaling_info setting as it is no longer in use.
  • log SIGABRT signals on POSIX

Libraries

  • kernel/time: Implement monotonic real-time network clock
  • Camera code cleanup and fixes
  • ajm: Fix MP3 parser OOB and support Xing/VBRI headers
  • sysmodule : Fixed incorrect validateModuleId return.
  • Major Net rework. sceNet library has been rewritten with P2P support
  • gnmdriver: Implement sceGnmSetGsRingSizes and sceGnmSetupMipStatsReport
  • http: Redact credential headers in logs
  • http: Honor disable_https in HTTPS transport and private options
  • Implement private pthread barriers
  • Implement POSIX thread context, naming, file and process APIs
  • Fixes 33ms analog smoothing being accidentally applied to controller analog stick and triggers input
  • signaling-fix: always answer the offer
  • Implement sceGnmRequestFlipAndSubmitDone and sceGnmDrawIndirectCountMulti
  • Implement sceGnmComputeWaitSemaphore
  • signindialog: basic error returns
  • Added matching delay

Video Core

  • Renderer optimizations pt2 (texture cache edition)
  • Cover presentation waits and fragment texture reads
  • texture_cache: scan only the first page in FindImageFromRange
  • buffer_cache: allocate sparse backing with device address support
  • buffer_cache: Remove duplicate SynchronizeMemoryFromImage
  • vk_runtime: Use buffer copies to copy between D32 and D32S
  • vk_rasterizer: Track vertex, index and indirect buffers properly
  • vk_rasterizer: Restore image copy fast path
  • region_manager: Add lock free bypass check when no state update is required
  • liverpool: free the frames of nested indirect buffer tasks
  • texture_cache: initialize added depth-overlap subresources
  • video_core: Emulate zero/one MIN/MAX blend factors
  • vk_rasterizer: Apply pending fast clears on FMASK decompress
  • Link the stencil plane of DepthStencilCopy destinations
  • allow buffer copies between different layer counts
  • tile: Expand table to 2048x2048 images
  • renderer_vulkan: Bind a null index buffer instead of requiring maintenance6
  • Read CMask metadata
  • Handle null index base address in BindIndexBuffer

Shader Recompiler

  • shader_recompiler: Improve NaN handling
  • translate: Apply unbiasing to all instance id uses
  • Enable early fragment testing when configured
  • Allow step rates with base instance
  • Preserve EXEC scope after empty branch
  • Add subgroup barriers for shared memory dependencies
  • Implement proper clamping and handling for V_RCP_CLAMP_F32, V_RSQ_CLAMP_F32, V_RSQ_LEGACY_F32, V_LOG_CLAMP_F32
  • Detect fp64 usage from instruction types
  • Implement IMAGE_GATHER4_C_L
  • Unbias vertex and instance ids in every indirect draw
  • Handle another sharp patching pattern

UI

  • Big picture: recursive folder scanning
  • don't depend on console language always load cjk font
  • Added new shadnet notifications

shadps4 v0.19.0 - codename The Shadoween special

v.0.19.0 release
Release notes · 3 files

Welcome back to another shadPS4 release . It is over one month since our previous release and guess what we are back again with a lot more fixes and a lot more playable games . Rapid work has been done in different areas of the emu, but i guess the glory goes to the huge amount of GPU fixes that improved so many games, some of them are really playable now . I won't steal the fun of discovering these, so here is a brief list of changes.

Core

  • Rewrote signal emulation again
  • Fixed incorrect error return on attempting to create a file in a nonexistent folder in a writable mount
  • Fix reserved region coalescing in POSIX address space code
  • Support loading entitlements from RIF licenses
  • Optimized logger by replacing hash map with table lookup and hide implementation details
  • Support loading DLC as ZAR
  • Reworked slot vector
  • Fixed sceKernelReserveVirtualRange alignment and add ClearName

Libraries

  • Use present scheduler for blank frame prepare
  • np_auth : Change default GetAuthorizationCode returns to be valid
  • np_trophy: Fixed displaying of trophy name
  • http2 : Fixes and cleanups
  • np_tss : Added TSS support
  • camera : Use a system mapping for camera frame data
  • np_utility: Initial impelmentation
  • vdec2: support for h265/hevc
  • ajm mp3: rely on ffmpeg parser for packet boundaries
  • Kernel.Pthread: Remove RunThread stack logging
  • np_web_api : Added pTo and pFrom to OrbisNpPeerAddressA support
  • Very basic HLE Keyboard library
  • scePthreadRwlockTimedrdlock / scePthreadRwlockTimedwrlock take a relative timeout in microseconds
  • Implemented sceKernelGetProcessType
  • Implemented sceKernelReleaseFlexibleMemory and POSIX mlock/munlock aliases

Video Core

  • Improve tsharp robustness
  • Use stb_image_write for screenshots
  • Emulate scaled min/max blending
  • Do not auto-select a software rendering device
  • Decode sRGB for A2R10G10B10Srgb display buffers
  • Handle QuadStrip as a triangle strip
  • Add R8G8Srgb fallback to R8G8Unorm
  • buffer_cache: Refactor buffer manager with sparse arenas
  • Commit the emulated-LDS allocation taken from the stream buffer
  • Only enable sampler comparison for comparison fetches
  • Respect SPI_BARYC_CNTL front-face encoding
  • Invalidate cached images after raw buffer writes
  • Fixed locking behaviour for signals delivered to GPUComm thread
  • buffer_cache: Rework memory tracker and implement batched uploads
  • Moved on_submit callback before EndSession
  • Fixed compute shader floating-point mode
  • page_manager: Keep the fault probe within the faulting page
  • Bind a default sampler for S# with undefined fields
  • Fix sparse backing offsets, barriers, and memory budgeting
  • texture_cache: Avoid associating color images with stencil
  • Fixed mip layout and detiling of tiled textures

Shader recompiler

  • Properly handle BaryCoord attributes on non-AMD GPUs
  • Compute GDS offset dynamically instead of as compile-time constant
  • Storage buffer related clean-up
  • Neo: MIMG instructions
  • Improve ssa rewrite pass correctness and readability
  • Add support for virtual registers
  • Add ssa destruction pass
  • Decorate written storage buffers as Coherent
  • Structurize later in the pipeline and cleanup
  • Enhance shared memory barrier handling and add divergent loop detection
  • Split resource tracking and flatten load from buffer for sharp source
  • Reimplemented B64 SALU opcodes with U64 masks
  • Implemented S_MEMTIME
  • Implement S_BITSET0_B64 and S_BITSET1_B64
  • Skip lowering for null buffer sharps
  • Implemented some V_CMPX_U64 ops
  • Lower wave64 constructs for wave32
  • Refactor runtime info as two tagged unions
  • resource_patching_pass: Accept ds_append/consume without users
  • Implement support for base vertex/instance in indirect draws
  • Recognize sharp sources broadcast via V_READFIRSTLANE_B32
  • Properly check for immediate args in GetRealValue
  • Refactored parser to enable vertex count calculation for position only copy shaders
  • Implemented fragment sample coverage input
  • Added pull-model barycentric support
  • Test S_BITCMP_B64 against the full 64-bit src
  • Fixed geometry invocation count comparison
  • Lower ballot and MBCNT as a pair
  • Define SampleId for BaryCoordSmoothSample on the KHR path
  • Eliminate readlanes before the tessellation and ring passes
  • Read user data from the flat buffer
  • Fix gradient and offset for 1D images
  • Lower PackedAncillary from attribute loads
  • resource_patching: Patch thread id add instead of id itself
  • Allow InverseBallot folding to fail on unhandled immediate arguments
  • Fix OpImageTexelPointer coords for 1D
  • V_CVT_PK_U8_F32 fixup
  • V_ALIGNBIT_B32 / V_ALIGNBYTE_B32 fixup

ShadNet

  • Online trophy support

shadps4 v0.18.0 - codename UltraPersona

v.0.18.0 release
Release notes · 3 files

shadPS4 v0.18.0 "UltraPersona"

Hello there, it hasn't been a while, has it? While not much time has passed since our last stable release, we are here again with a brand new one. The main reason for this release is broken shadNet authorization in certain cases on the 0.17.0 release, but we have some more interesting new features as well.

Firstly, after some fixes, AvPlayer can now be loaded as LLE, meaning that you need the libSceAvPlayer.sprx (and libSceAvPlayerStreaming.sprx) module(s), which makes broken videos in a few games now work properly.

The above change was enabled by calling sceLibcInternalMemoryMutexEnable in LLE LibcInternal at boot, found by @liuk7071, the developer of ChonkyStation4, another PS4 emulator.

A kernel event flag rewrite has also fixed Shadow of the Colossus often hanging on boot, and the game now consistently gets to menus.

Another big feature is the experimental red zone protection, which fixes an issue specific to 12th generation and onwards Intel CPUs exclusively on Windows, that was causing crashes and other undefined behaviour in lots of games that were not expecting to have their stacks' red zone clobbered by Windows exception handling.

NpTus is also included in this new release, bringing more functionality to shadNet.

A few more fixes on GPU are included, such as fixing shadows in Persona games, or some effects in inFAMOUS and Gravity Rush 2. There's probably fixes in some other games too, but that's you, the testers' and users' job to figure out.

Below you can find a full list of changes for 0.18.0. Happy testing :)

Core

  • Rewrote kernel event flags
  • Added experimental workaround for Windows red-zone protection
  • Fixed ordering of loading libs (libScePad before sceNpManager), fixed issues in shadNet authorization
  • Added /dev/zero device
  • Added some exports needed for VSH
  • Call sceLibcInternalMemoryMutexEnable LLE on startup
  • Added --mount flag, updated the no-flags popup text with Big Picture Mode info, and fixed a few edge cases with command line parsing
  • Load guest modules below 4 GiB

Libraries

  • Videodec: Flush codec buffers on packet EOF
  • NpWebApi2: Fixed sceNpWebApi2GetHttpResponseHeader functions
  • Libc_Internal: Added back HLE sceLibcHeapGetTraceInfo for when LLE libSceLibcInternal is not present
  • Kernel: Implemented sceKernelIsDevkit and sceKernelIsCex
  • Kernel: Do not double destroy threads when free threads exceeds MaxCachedThreads
  • AvPlayer: You can now use LLE
  • Sysmodule: Enabled some more safe library LLEs
  • Kernel: Only clear oact if oact is provided
  • NpTus: Added NpTus support
  • AudioOut: Fixed deadlocks on stop
  • NpTrophy: Fixed issues related to platinum trophies

Video Core

  • Added more FMask formats
  • Honor STENCILOPVAL for GCN ReplaceOp stencil writes

Shader Recompiler

  • Fixed cubed array layer in FixCubeCoords
  • Lower user clip planes to clip distances
  • Use a*b+c instead of fma for v_mad* ops

Big Picture Mode

  • Launch game in clean process
  • Added zar support
  • Fixed update checker crash with certain zar/folder combinations

Misc

  • Fixed external FPS counters
  • Added draw call and dispatch counts to frame info overlay
  • Append last time played for each game in play_time.txt
Release notes · 3 files

shadPS4 v0.17.0

Welcome to another big release of shadPS4. This release is the first to introduce shadnet support, which although still doesn't offer much it allows to post your online scores and share them with other players. Still you can't play multiplayer games but we are working towards to make it possible one day. Another big update is ZArchive support. Forget the 20.000 files per game you can now use ZArchive files for compressing games and having them in 1 file instead of hundreds. KosmicKrisp has also landed in the world of macOS giving much better compatibility and speed to macOS users. There are several other fixes let's cover the most important below

Highlights

Online stuff

  • ShadNet, our own networking backend, is now integrated for the first time
  • Most of the matchmaking library is implemented — lobbies, rooms, joining, signaling
  • Friends support. Make your online friends in shadnet
  • Invitation dialog
  • Your name now switches to your Online ID once you're connected
  • NP Manager got new settings and general cleanup
  • Web API layer grew a lot: new library implemented, multipart uploads, push events
  • NP Commerce
  • Trophy handling tidied up

Mouse support

  • sceMouse is emulated now, so the handful of games that supported a USB mouse are playable with one
  • Plus a bunch of follow-up fixes for opening, closing, and games that check whether a mouse is even plugged in

AvPlayer, video & audio

  • AvPlayer got a serious cleanup: audio/video sync, startup races, stack usage, frame sizes, buffer handling
  • Video decoder flush behaviour fixed
  • Audio3D mix queue reworked
  • AT9 no longer crashes from reading past the end of its data
  • AT9 encoder now runs natively
  • OpenAL fixes and NGS2 fixes

Graphics

  • NVIDIA clip distance emulation
  • T# min_lod implemented through VK_EXT_image_view_min_lod
  • Depth write state is now respected for register clears
  • Robustness2 is now required, allowing the null buffer/image workarounds to be removed
  • Sampler garbage collection added to the texture cache
  • Texture cache: image download handling refactored
  • sRGB handling for BC formats refactored
  • Buffer barriers for compute-written vertex/index buffers and indirect dispatch/draw buffers
  • Assorted validation errors fixed and miscellaneous renderer fixes
  • Shader cache invalidation caused by struct padding in memcmp fixed

Shader recompiler

  • GCN thread mask accuracy fix
  • Vertex attributes are always specialised on number class
  • Geometry shader vertex offsets initialised from the input primitive type
  • V_ADD_I32 carry-out propagation, V_LOG_CLAMP_F32, V_PK_MUL_LO_U16 fix
  • IREmitter atomic operation corrected from And to Or

Kernel, memory & core

  • Filesystem abstraction layer
  • File reads now go through an intermediate buffer before being copied to guest memory
  • PthreadOnce uses pthread primitives instead of std::mutex
  • TLS leak on non-primary threads fixed
  • Code patches for cmp and xor instructions involving the TCB
  • sceKernelAllocateDirectMemory now honours search_end
  • Fixed mappings with a zero address on older games is now handled properly
  • HLE libraries are no longer loaded when force-LLE is set
  • Unresolved objects are no longer auto-stubbed
  • Null dereference fixes in save data mount checks
  • Memory patch fixes, with hex exception handling
  • LLE malloc init, fixing issues with LLE fonts and allowing more LLE libs to run

Input & peripherals

  • Pad state latency reduced for single-sample reads
  • Users are no longer logged out when a pad disconnects
  • Controller colours reset on shutdown
  • Fixes to Camera support

Interface & quality of life

  • Fullscreen startup behaviour polished
  • The window icon is now set to the game's icon
  • Big Picture UI settings improved
  • Shader list, memory map and module list widget states are saved, duplicate shader dump windows prevented
  • New shadPS4 log with a logging refactor, an option to flush the log
  • MS_VC_EXCEPTION is now passed through to the handler on Windows
  • Trophy fixes and an auto-generated PathType::TrophyDir
  • NP checks moved into sceNpTrophyRegisterContext
  • Improvements to the in-app bug report flow

shadps4 v0.16.0 - codename Plutie-fueled

v.0.16.0 release
Release notes · 4 files

shadPS4 v0.16.0 Released

The shadPS4 team is excited to announce the release of shadPS4 v0.16.0, our largest update to date. This release delivers major improvements across emulation accuracy, graphics, audio, input handling, user experience, platform support, and developer infrastructure.

With hundreds of changes from dozens of contributors, v0.16.0 represents another significant step toward broader game compatibility and a more complete PlayStation 4 emulation experience.

Highlights

New Configuration System

v0.16.0 introduces the foundation of a new configuration architecture. This modernized system simplifies settings management, improves game-specific configuration handling, and lays the groundwork for future features.

The migration also includes save and trophy migration support to help users transition smoothly from previous versions.

Initial OpenAL Audio Backend

A major milestone for the project is the introduction of an OpenAL-based audio backend. This work establishes a more flexible and portable audio foundation for future improvements while continuing to expand compatibility with PS4 audio functionality.

Camera Support Begins

Initial camera emulation support has landed, bringing us closer to supporting titles and applications that rely on PlayStation Camera functionality.

Local Multiplayer Support

One of the most requested features is finally here. Multiple users can now enjoy supported games together through the new local multiplayer infrastructure, further expanding gameplay possibilities within the emulator.

Big Picture Mode

A brand-new Big Picture Mode provides a console-like experience designed for controllers and living-room setups. The interface includes dedicated settings integration, game folder management, and several quality-of-life improvements.

Screenshot Functionality

Users can now capture screenshots directly from the emulator, including support for overlays or game-only captures.

HTTP Library Progress

A substantial amount of work has been completed on the PS4 networking stack, with the first large implementation stages of the HTTP subsystem landing in this release. These additions improve compatibility with games and applications that depend on online communication APIs.


Graphics and Rendering

Graphics emulation received extensive work throughout the release cycle.

Improved Vulkan Stability

Numerous Vulkan fixes address validation errors, synchronization issues, resource destruction order problems, swapchain handling, and presentation stability. These changes significantly reduce crashes and improve reliability across a wide range of hardware.

Memory and Synchronization Improvements

Several fixes target GPU synchronization hazards, stale GPU memory handling, write-after-write scenarios, image layout transitions, and memory protection updates. Together these changes improve rendering correctness and reduce graphical corruption.

Mipmapping and Texture Improvements

A large collection of mipmapping fixes resolves texture quality issues and rendering artifacts in various titles.

Expanded Neo GPU Instruction Coverage

The shader recompiler and GCN decoder received major upgrades including support for:

  • New VOP3P instruction definitions
  • SDWA instructions
  • Additional Neo-specific ALU instructions
  • Float16 packed arithmetic
  • Integer packed arithmetic
  • Bit manipulation instructions
  • New min/max/median operations
  • Expanded test coverage for GCN instruction decoding

These additions improve compatibility with titles that heavily utilize PlayStation 4 Pro ("Neo") GPU features.

Support for combined geometry and tesselation pipelines

Support has been expanded for more advanced pipeline configurations, including additional tessellation and geometry shader combinations required by modern PS4 titles.


Audio Improvements

In addition to the new OpenAL backend:

  • Audio3D functionality has been expanded
  • Trophy sound playback no longer depends on SDL_mixer
  • Several AVPlayer and video decoding fixes improve multimedia playback
  • Improved stream duration calculations and error handling

Input and Controller Enhancements

Controller support continues to mature with:

  • Local multiplayer support
  • Multiple DualShock compatibility fixes
  • Improved deadzone defaults
  • Touch input edge-case fixes
  • TV remote support corrections
  • New option to swap the Enter button between Cross and Circle
  • Improved pad information reporting

Several Unity-engine titles and games such as Driveclub also benefit from input regression fixes included in this release.


User Experience

Trophy System Improvements

The trophy system received substantial attention:

  • New trophy directory structure
  • Trophy migration support
  • Improved extraction reliability
  • Better handling of separated game updates
  • Missing trophy key workarounds
  • Trophy sound playback improvements

Notifications

The emulator now includes a notification system with support for positioning and icons, providing a more polished user experience.

Translation Updates

Localization support continues to expand through updated translations and improved UTF-8 path handling.

Easy Mods Folder

A new mods directory structure makes it easier to organize and deploy game modifications.


Platform Support

This release improves portability across multiple operating systems:

  • Initial x64 FreeBSD support
  • Additional POSIX compatibility functions
  • Improved GNU/Linux and macOS file handling
  • MinGW-w64 compilation fixes
  • Fedora 44 and Clang 22 build fixes
  • Expanded Nix development environment support
  • Updated MoltenVK integration

Core Emulator Improvements

A significant amount of engineering effort focused on stability and correctness:

  • Thread-safety improvements
  • Race condition fixes
  • Memory overlap fixes
  • Memory mapping corrections
  • Address-space management improvements
  • Pthread implementation fixes
  • Kernel signal handling improvements
  • Better logging infrastructure through spdlog migration
  • Enhanced error reporting and diagnostics
  • Expanded automated testing infrastructure using Google Test

These changes improve overall emulator reliability and make future development easier.


Compatibility Improvements

Hundreds of library updates, stubs, kernel fixes, and subsystem enhancements contribute to improved game compatibility.

Notable areas include:

  • NpTrophy
  • NpAuth
  • NpPartner
  • AppContent
  • VideoOut
  • Audio3D
  • SystemService
  • Posix
  • Kernel
  • Pad
  • Camera
  • HTTP
  • Network-related functionality

Many games that previously crashed, hung, or exhibited incorrect behavior now progress further or operate correctly.


Looking Ahead

v0.16.0 is another major milestone in shadPS4's development. With foundational work completed for configuration management, audio, networking, multiplayer, camera support, testing infrastructure, and graphics emulation, the project is now positioned for even faster progress in future releases.

Thank you to everyone who contributes code, testing, bug reports, translations, documentation, and community support.

Enjoy shadPS4 v0.16.0!

Full Changelog: https://github.com/shadps4-emu/shadPS4/compare/v.0.15.0...v.0.16.0

shadps4 v0.15.0 - codename RE6_PRIG

v.0.15.0 release
Release notes · 3 files

Greetings, fellow users, testers, devs.

Missed us already? Here is a brand new shadPS4 release for you out there. A lot of new features is here to improve compatibility and general user experience as well. It is recommended to use 0.15.0 for some time since there are a lot of breaking changes coming to 0.15.1 WIP (that will correct and improve a lot of things), but we hope it will be production ready quite soon.

Enough talking, here is the latest shadPS4 version and it’s changes:

Core

  • Automatically add missing hotkeys to the global input config
  • Fixed in Settings:InternalScreenWidth would get internalScreenHeight instead of InternalScreenWidth
  • Kernel.Pthreads: Remove unreachable in posix_pthread_mutex_timedlock
  • Volume hotkey: show volume value, set game_specific arg correctly, clamp value
  • Kernel.Process: Implement sceKernelGetModuleInfo2, sceKernelGetModuleList2
  • Log: Group same lines with counter
  • Prevent protects during unmaps
  • Mount system fonts
  • Kernel.Equeue: Only reset trigger state on events that clear.
  • Filesystem: fix crashes caused by returning a pointer from an std::vector
  • Threads: initialize TLS on thread creation
  • Implement guest signal handlers
  • Mount /data to /data instead of /data/gameid
  • Kernel.Event: Implement kqueue and kevent
  • IPC: Tweak LoadFigure and RemoveFigure
  • Improved signal emulutation
  • Fixed game arguments with CLI11
  • PSF: close file after encode

Shader recompiler

  • Handle operand fields execlo and exechi for S_MOV
  • Fixed r128
  • Support 32 thread sharing mode
  • Implemented IMAGE_ATOMIC_CMPSWAP

Libraries

  • Improved sceAudioOut and SDL3 backend
  • Implemented npWebApi library
  • Added sceAudioOutGetSystemState
  • Added some NPTus Functions
  • Implemented some HLE libcInternal calls
  • Fixed some issues in scePad and refactoring
  • Improved motion controls emulation
  • Lib.GnmDriver: Fix flip arg for sceGnmSubmitAndFlipCommandBuffers
  • Lib.VideoOut: Fix pending flips limit
  • Fix some logic bugs in sceHttpUriParse
  • Audio3d SDL improvements
  • Lib.Net: Proper resolver errors when isConnectedToNetwork is disabled
  • Lib.GnmDriver: Implement sceGnmDrawIndirectMulti
  • Lib.Net: Fix Windows-specific incorrect error in PosixSocket::Connect
  • SSL module returned an empty certificate data instead of no certs
  • SysModule HLE implementation
  • Stub data for sceSslGetCaCerts

GPU

  • Copy image handle 2d->3d copies and opossite now
  • Skipped guest/host marker parsing/calls when disabled
  • Added Relaxed,precise modes in readbacks
  • Force subgroup size to 64 when possible

shadps4 v0.14.0 - codename JustShadow4

v.0.14.0 release
Release notes · 3 files

Greeting fellow users , testers , devs.

Here is a brand new release from shadPS4 , It took as some time but some nice features are here so we wanted to share them with all of you out there . This new release brings some more compatiblity with games and several bug fixes. You can check the list below

Core

Added thread name to log lines Fixed float parsing in memory patcher Read compiled sdk version from eboot Added global emulator state class Corrected physical based handling for memory pools Add libSceRtc, libSceJpegDec, libSceJpegEnc, and libScePngEnc LLEs Changing the mouse speed does not affect the mouse speed offset Added libSceAudiodec to lle modules list Introducing key_manager for storing encryption keys Miscellaneous memory fixes and slight optimizations Added new cli parser using CLI11 filesystem: fill in timespec values for fstat Kernel.Vmm: Fix bug with VMA physical area tracking

Libraries

M4AAC support in ajm Fixed dialog text input in IME dialog Fixed issues with winsock in sockets (sceNet) Stubbed libSceRudp Reimplemented dirents Stubbed libsceNpWebApi2 Lib.Videodec2: Stub sceVideodec2AllocateComputeQueue to return a valid computeQueue pointer Lib.Audio3d: sceAudio3dGetDefaultOpenParameters fix Ajm: fix init params initialization Improved path detection in Avplayer NetFixes : workaround for Epolls on P2P sockets implemented sceImeDialogGetPanelSizeExtended in Ime Dialog Np: libSceNpPartner001 stubs Added NpTus stub Delete unused fds in sceNetEpollDestroy and sys_socketclose Added pngenc HLE Fake Matching2 Skip stdin fd for want_read in select Fix default pthread attributes Prevent posix_pthread_mutexattr_settype from setting invalid mutex types ajm mp3: check frame size on every frame

shader_recompiler

Some fixes for tess shaders VS clip distance emulation for NVIDIA GPUs Implemented V_LSHR_B64 Implemented V_CMP_OP_F64 Implemented V_FFBH_I32 fix for incorrectly outputted attribute if cdist emulation is not needed

Video Core

Small readback optimization Small fixes regarding GDS Prevent Rasterizer::IsMapped from returning true for memory ranges that wrap the address space

shadps4 v0.13.0 - codename Ghost of Matthewshima

v.0.13.0 release
Release notes · 3 files

Here we are again with an early Christmas present. Santa might not have reached your home yet, but shadPS4 will.

This release brings the long-awaited Bloodborne speedup fix, along with a lot of AJM fixes from our great Roamic dev, who was kind enough to resolve some weird sound issues (God of War 3 and other games now almost have perfect sound).

There are also many additional fixes; I’ll try to summarize as much as I can below.

This release is dedicated to Matthew, who did a lot of work setting up our new shadps4.net site, so greetings to him as well.

So, Merry Christmas to all of you out there. Let’s hope the new year comes with world peace and a bit more logic out there.

Thank you all for your support!

Core

-Windows: Limit address space maximum when higher addresses are not needed -FS: Prevent writing to directories -Kernel.Vmm: Protect Fixes -cpu_patches: Patch stack canary accesses -libkernel: Implement sceKernelEnableDmemAliasing, proper mapping type checks in posix_mmap -ENAMETOOLONG, posix_rename fix

Libraries

-Stubbed libSceNpCommerce -Add basic mouse-to-touchpad emulation -np: Add dialog state tracking for NpCommerce -Implement http uri escape unescape,sceHttpUriSweepPath -Network: Fixed null string crash on sceNetResolverCreate -A lot of AJM fixes

GPU

-Avoid initializing Shader::PsColorBuffer in RefreshGraphicsKey -vk_rasterizer: Attempt to optimize compute clears -buffer_cache: Split DMA fault handling code from buffer cache -video_core: Reimplement inline data as buffer fill -renderer_vulkan: Remove primitive restart disable support check. -video_core: Initial implementation of pipeline cache -video_core: Scheduler priority pending operation queue

Shader recompiler

-Fix V_CMP_U64 -Implement V_FLOOR_F64 -Handle -1 as src1 in v_cmp_u64

Misc

-Re-implement custom trophy sounds using sdl3 mixer -Make FSR off by default

shadps4 v0.12.5 - codename kyosan

v.0.12.5 release
Release notes · 3 files

Some would say, "why a new release this early"? While releases came every 2-3 months before, the previous 0.12.0 release had an input change, which made multiple games unplayable, so we needed to patch it quite early. With that, some other interesting features and bugfixes came from development continuing as before, so enjoy. ;)

Core

-Fix divide by zero in kernel time -Reverted controller change from 0.12.0 since it appears it breaks a lot of games -Fix patches being applied multiple times redundantly -Fix game arguments not being passed under a certain condition -Simulate write-only file access with read-write access -filesystem: return st_mtim in posix_stat (fixes RB4 / CUSA02901 DLC crash) -ImGui: keep drawing when there's a pending change_layer

Libraries

-usbd: Implement usb backend system -usbd: Emulated Skylander Portal Backend -usbd: Add Infinity Base Backend -usbd: Added Dimension Toypad -Added get_authinfo -HttpLib: Implemented a few more functions -Initial font lib implementation -Better return stub for sceNetPoolCreate -Libkernel: Implement/stub some functions

GPU

-buffer_cache: smaller regions -add null gpu notice -Implement sceGnmDrawInitToDefaultContextStateInternal functions

Qt

-Remove Qt from emulator - Using lauchers from now on

shadps4 v0.12.0 - codename fire-square

v.0.12.0 release
Release notes · 6 files

Happy halloween ppl! It is a special day today and what more special than having a brand new shadps4 release . Although it was announced that it Qt builds were gonna removed from 0.12.0 , we decided to release it for one last time . Starting from 0.12.1 , shadPS4 will be cli only , but we already have launchers for you ready , check the download section of the site. Enough talking here is the latest shadPS4 version and it's changes

Core

physical backing for flexible and pooled memory allocation Refactor direct memory handling Memory: Implement sceKernelMemoryPoolGetBlockStats Allow overlapping direct memory mappings Memory code cleanup and further direct memory fixes Handle various edge cases related to executable permissions. Kernel.Fs: Device file cleanup and /dev/rng implementation Lock linker mutex in RelocateAnyImports Increase address space limits and rework Windows address space initialization Fix alignment for mmap Fix return for running out of flexible memory Fix NoOverwrite flag behavior in MapMemory Read-only file mmap fix

Libraries

Net: Epoll support avplayer: implemented AddSourceEx, SetAvSyncMode, Pause and Resume avplayer: do not start the video multiple times ajm: handle ParseRiffHeader flag avplayer: fix play request state handling Implemented sceSystemServiceLoadExec Fixing missing png extraction from trophy files Implemented sceNpTrophyGetGameIcon audioout: Do not wait for data within timer. avplayer: remove maximum audio delay Use correct trophy folder for games with multiple trophy lists NpManager: Implement more request-related behavior NpAuth: Improved stubs Ime fixes Fixes scePlayGoDialog status stub

Video Core

Handle mixed samples attachments Better handling of image copies with DmaData Fix some image copy and buffer offset validation errors. image: Improve enforcement of image copy layer rules Move HDR swapchain configuration to present thread. buffer_cache: Bring back CPU path image_info: Fix guest size calculation for linear render targets amdgpu: Split liverpool registers and cleanup

Shader recompiler

Implement fallback path for missing shaderFloat16support Fix: V_MUL_I32_I24 | V_MUL_U32_U24

GUI

Make UpdatePlayTime not depend on Qt Make sys_modules folder configurable Add configurable extra memory Update Qt to 6.9.3 Add CLI argument to launch the emulator with global config or with default settings IPC: commands for volume adjustment, input parsing, fsr, gamepad select Add informative update message for Qt build deprecation

shadps4 v0.11.0 - codename nettone

v.0.11.0 release
Release notes · 6 files

A brand new release just dropped in . As usual we have a lot of new features and bugfixes to this release with the most important that games that uses Unreal Engine are now start to booting and some of them are even playable.

Core

  • mmap executable memory
  • Zero top bits in INSERTQ/EXTRQ
  • Fix read-only file unmaps on Windows
  • Standardize RegisterLib names for HLE libraries
  • Filesystem: Fix create flag handling in open
  • If CONTENT_ID is empty in param.sfo, try using TITLE_ID as fallback
  • Add an unreachable on hitting ud2 instead of getting stuck in an infinite loop
  • Microphone support
  • Only update configs when using a different build
  • Core: Return error if DirectMemoryQuery address is too high
  • Simple IPC for external control
  • Filesystem: Fix error behavior for close calls on std handles
  • Sockets fixes
  • Add entries for . and .. in MntPoints::IterateDirectory
  • Log user CPU, total RAM, and OS
  • Filesystem: Directory-related fixes
  • Memory: Align size and address in posix_munmap
  • Filesystem: Abstract handling of directory files
  • Replace direct usage of wrgsbase and rdgsbase with a more portable solution
  • config: Add present mode option.
  • Game specific configs
  • Improve memory address validation logic
  • Remove checks for symbol version_major and version_minor
  • Fix MXCSR and FPUCW registers on created threads
  • Log error on MapMemory out of flexible memory case
  • Open a dummy audio input device if none is present in the system
  • Ds4 Speaker Audio

Libs

  • libkernel: Add missing mprotect export
  • IME fixes
  • video_out: Internal Resolution Support
  • Implement sceKernelGetSystemSwVersion
  • Implement sceAudio3dTerminate
  • Implement sceAudioOutGetLastOutputTime
  • Register posix_rename
  • Implement sceKernelError
  • Using custom usb lib
  • inet_ntop and inet_pton
  • Extract netmask and default gateway from host system
  • Implement simple DNS name resolution
  • Return the number of samples enqueued in AudioOut
  • Return an error before a pad is opened
  • scePadResetOrientation
  • Fix sceAudioOutOutputs
  • Fixed RetrieveNetmask for windows
  • Net: Fix various socket-related issues
  • sys_getpeername
  • Implement ORBIS_NET_CTL_INFO_HTTP_PROXY_CONFIG
  • Fix get/setsockopt levels
  • libkernel: more network functions for OpenOrbis compatibility
  • libSceAppContent: Use last 16 characters of DLC folder to determine entitlement label
  • Make libSceRtc fully HLE
  • Fixed green artifacts in movies/animations (ffmpeg)
  • Select support
  • libSceAppContent: Determine entitlement labels from additional content param.sfo
  • Fix sceVoiceGetPortInfo
  • Fix handling of RFC 3339 formatted dates
  • libSceNpParty: Stub out functions with not-in-party behavior
  • Add stubbed libSceNpProfileDialog library
  • Better libSceMove stubs
  • Better libSceCamera stubs
  • Implement ORBIS_NET_SO_ERROR_EX in GetSocketOptions
  • Improved libSceHmd stubs
  • libSceHmdSetupDialog stubs
  • libSceVrTracker stubs
  • semaphore: Invert priority order
  • semaphore: Fix determining wait status when canceled/deleted
  • Implement send/recvmsg
  • libkernel: Return EINVAL if mmap is called with length = 0
  • SaveData fixes
  • Handle null event flags in cancel and clear
  • AF_UNIX preliminary support
  • Np libraries cleanup
  • Implement sceKernelIsInSandbox, update OrbisSysModule Enum
  • equeue: Few fixes for sceKernelWaitEqueue
  • Implement getargc and getargv
  • Simple implementation of sceGnmUnmapComputeQueue
  • kernel: Improvements to condvars.
  • kernel: More thread code clean-up.

Shader recompiler

  • Fix V_ADDC_U32 carry-out edge cases
  • Reorganize data share operations and implement GDS
  • ir_passes: Fold readlane with ff1 pattern
  • Implement ff1 with subgroup ops
  • Replace buffer pulling with attribute divisor for instance step rate
  • Implement guest barycentrics
  • Fix ff1_i32_b64 not accepting vcc as its argument
  • attribute: Correct bary coord function
  • Avoid clearing HTILE when shader contains address calculation
  • Implement MUBUF instructions for shorts/bytes
  • control_flow_graph: Treat empty conditional branch as noop
  • Fix incorrect bary coord loads when unsupported
  • Use VM bit for conditional discard
  • translate: Correct instance id fetch in local shader
  • V_ALIGNBYTE_B32 and V_ALIGNBIT_B32
  • Rework sharp tracking for robustness
  • Improve heuristic for attributes passed via ring buffers
  • ir: Perform degamma in shader when sampler sets force_degamma
  • Implement V_CMP_GT_U6
  • Improve shader exports accuracy (part 1)
  • Do not emit Layer when emulating primitive type with tessellation.
  • vector_interpolation: Address some assertions
  • Support multiple attributes using the same load in vertex fetch shaders
  • Handle S_LSHL_B32 in ParseCopyShader
  • Initialize all ClipDistance and CullDistance values
  • Handle ExecLo source in S_FF1_I32_B64
  • Apply float type for float buffer atomics
  • constant_propagation_pass: Handle a few more bitwise instructions.
  • Implement V_ADD_F64 and loading 64-bit float from SGPR.
  • Handle offsets and format overrides in fetch shaders
  • Relax dual source blending assert to allow up to two targets.
  • Allow vector and scalar offset in buffer address arg to LoadBuffer/StoreBuffer
  • Support PointSize and ViewportIndex attributes.
  • image: Do not set storage usage for block-encoded formats

GPU

  • texture_cache: Change depth resolve new image back to max of resources
  • texture_cache: Async download of GPU modified linear images
  • buffer_cache: Bring back upload batching and temporary buffer
  • vk_rasterizer: Set render area to window scissor when no framebuffers are bound
  • renderer_vulkan: Handle more miscellaneous GPU setting
  • vk_instance: Remove usage of depth clamp control
  • liverpool_to_vk: Don't use remapped format for clear value
  • vk_pipeline_cache: Add fallbacks for R8Srgb and B5G6R5
  • texture_cache: Clamp buffer image height to microtile height
  • vk_rasterizer: Improve stencil clears
  • texture_cache: Do not modify mip height for copy in volume texture.
  • video_core: garbage collector (part 1)
  • video_core: Rework tile manager
  • texture_cache: Only queue image downloads if the image address is greater than zero.
  • video_core: Fix some struct comparisons.
  • vk_pipeline_cache: Cleanup graphics key refresh
  • renderer_vulkan: Restore color write dynamic state
  • vk_graphics_pipeline: Prioritize depth clip when separate clip/clamp control is not supported.
  • vk_pipeline_cache: Add storage images to descriptor heaps
  • vk_scheduler: Properly initialize vulkan structures in RenderState.
  • renderer_vulkan: Ignore blend parameters when disabled.
  • vk_rasterizer: Set image flag bits in resolve
  • liverpool: Write valid queries on PixelPipeStatDump
  • amdgpu: Report GPU perf counter in GPU cycles.
  • vk_rasterizer: Only assert on primitive restart if performing indexed draw
  • video_core: Upload buffer memory around unmapped pages
  • video_core: Address various UE bugs
  • video_core: Check DB_SHADER_CONTROL register before performing depth exports
  • texture_cache: Make sure that readback images are downloaded in time

QT interface

  • Extend Qt detection to support multiple drives
  • Fix gui emulatorLanguage
  • Volume slider that adjusts how loud games are on a global level
  • Disable autoupdate on branches that aren't the official main
  • Add default trophy sound
  • Add toggle in the settings window for readbacks
  • Apply cheat/patch only if AppVer matches game version
  • Multiple controllers: Select active controller and set default controller
  • Added customizable controller hotkeys
  • Remapping Guis - more minor fixes
  • Fix Play Time - Wasn't saving every minute
  • Keybard/pad config common preset name is translated to target language
  • Qt: update to 6.9.2 and remove Mac workaround
  • Qt: enforce set order for kbm string mapping to prevent duplicate combo mappings
  • Move QT plugins to the qtplugins folder on Windows QT builds
  • Toggle to enable/disable logging
  • Qt: prevent saving/canceling for remapping/hotkeys dialogs while waiting for inputs
  • Add an option to change DLC path from the settings
  • Use icons, music and background images of updates if available
  • Qt: Add FSR options to settings GUI
  • Increase the size of the description text box
  • Log presets feature
  • QT: TrophyViewer size adjustment and 'Log' tab translated
  • QΤ: Add GUI for game-specific settings
  • QT: Add the Log tab to 'Default tab when opening settings'
  • Qt: Add descriptions for new experimental settings in GUI
  • QT: Fix Patches 'Incompatibility Notice'
  • Qt: Group game-specific and non-game-specific items in the same tabs
  • QT: Note Vulkan SDK requirement for validation tooltips
  • Fix loading fullscreen setting

Full Changelog: https://github.com/shadps4-emu/shadPS4/compare/v.0.10.0...v.0.11.0

shadps4 v0.10.0 - codename The Last LNDF

v.0.10.0 release
Release notes · 7 files

Surprise! Bet you didn't expect a release from me, did you? :) Well you all asked for a miracle, and here I am, providing one. Anyways, this release is dedicated to one of our not-so-new dev, LNDF, who is responsible for a significant amount of the new GPU code, such as implementing Direct Memory Access for video memory. This isn't a solo endeavour though, there were far more updates to the emulator from the rest of the team as well, improving compatibility across well-known titles such as P.T, Driveclub, inFAMOUS, Bloodborne, The Last Guardian, Shadow of the Colossus (although this one still can't boot without hacks) and more:

Core

  • devtools: Add Module Viewer
  • equeue: fix WaitEqueue assert on nullptr and move small timer check to WaitForEvents
  • Memory Cleanup & Fixes (like, a lot of them)
  • Pthread affinity fixups
  • Emulate libSceGnmDriver's init behavior
  • equeue: Fix passing user data in user-triggered equeue events
  • memory: Reduce clamp threshold to 2MB
  • Improved sceKernelMapNamedFlexibleMemory logging and add misc function exports
  • cpu_patches: Patch movntss and movntsd
  • equeue: HrTimer fixes
  • filesystem: Fixes for posix_rename and write
  • input: Silence unmapped keybind mappings and add XBox paddles
  • input: Replace Back Button Behaviour with a rebindable solution for touchpad left, right and center
  • input: Emulate motion controls with a mouse
  • input: Code and documentation cleanup
  • kernel: Check returned module in sceKernelGetModuleInfoFromAddr
  • bit_array: Remove non const operator~
  • settings: Update outdated config files on startup

Libs

  • Added libSceCompanionUtil, libSceVoice stubs
  • net: Implemented sceNetInetNtop
  • pad: Fix touchpad handling and change gyro calculation
  • np_manager: Add option to fake user being signed in to PSN
  • zlib: Fix request queues
  • video_out: fix sceVideoOutGetResolutionStatus error behavior
  • videodec2: Update structs to match newer firmwares
  • np_trophy: Change initial context and handle values
  • np_trophy: Fix potential out of bound crash
  • kernel: Stub out SetGPO and GetGPI
  • ngs2: Initialize system handle in HLE Ngs2 library
  • video_out: Add alternate code paths for handling legacy struct behavior in sceVideodec2GetPictureInfo

Shader recompiler

  • Fix incorrect float type on FPRecip64
  • Implemented opcodes: V_CVT_F64_U32, V_RCP_LEGACY_F32, S_FLBIT_I32_B64, BUFFER_ATOMIC_CMPSWAP, DS_READ_U16, DS_WRITE_B16, DS_ADD_U64, BUFFER_ATOMIC_SMAX_X2, BUFFER_ATOMIC_<U|S><MAX|MIN>_X2 and V_CMP_EQ_U64
  • Misc opcode fixes
  • Handle R128 bit in MIMG instructions
  • Provide custom border color to samplers
  • Implement dual source blending
  • Implement linear interpolation support
  • Better handling of geometry shader scenario G
  • Patch SRT walker on segfault
  • Cleanup fragment attribute handling
  • Various fixes to shared memory and atomics
  • Reduce cases where shared memory to buffer pass is needed
  • Fix shared memory definition when only one type is used
  • Handle immediate inline samplers
  • Fix some shared memory accesses when workgroup struct is omitted
  • Implement buffer atomic fmin/fmax instructions
  • Fix handling unbound depth image
  • Optimize general case of buffer addressing
  • Mark image as written when its used with atomics

GPU

  • video_core: Implement Direct Memory Access
  • Fix image extent in buffer copy to image
  • texture_cache: Handle overlap with equal address and different tiling mode
  • liverpool: Stub PM4 opcodes 0x8E (GetLodStats) and 0x20 (SetPredication)
  • liverpool: Implement PM4 opcode 0x22 (CondExec)
  • texture_cache: Fix ExpandImage behaviour
  • buffer_cache: Better image search for buffer validation
  • texture_cache: Handle compressed views of uncompressed images
  • buffer_cache: Inline data to cpu unless gpu modified
  • tile_manager: Downgrade assert to error
  • texture_cache: Basic handling of partially resident images
  • liverpool: Handle PM4 type 2 in acb
  • vulkan: Fix two validation errors introduced by shared memory changes
  • texture_cache: Implement color<->depth copies
  • buffer_cache: Bump device local staging buffer size
  • texture_cache: Implement color to multisampled depth blit pass
  • vulkan: Enable sampleRateShading
  • vulkan: Log improper image format uses
  • video_core: Page manager/region manager optimization
  • video_core: Page manager and memory tracker improvements
  • vk_rasterizer: Use shared_first_mutex
  • vector_alu: Improve handling of mbcnt append/consume patterns
  • buffer_cache: Fix various thread races on data upload and invalidation

GUI

  • translations: A yes amount of Crowdin updates
  • auto_update: Fix Changelog Error
  • game_list: Set Minimum Icon Size List to 48
  • qt: Update to 6.9.1
  • qt: save gui settings to separate file
  • remapping_gui: If duplicate unique inputs found, show which buttons have duplicates
  • remapping_gui: Update gui with new touchpad inputs
  • game_list: Favorites in the game list
  • remapping_gui: Rewrite the Controller menu and add minor fixes to the Keyboard & Mouse one

Misc:

  • fork_detection: Fix SSH remote links
  • building: Add missing dependency for Fedora
  • launch: Launch games by providing their folder instead of the eboot path
  • launch: Add option to ignore game patch
  • building: Changed package name to openal-soft-devel reflecting the fedora name package change
  • ci: Work around Qt issue on new Xcode
  • building: add CMakePresets.json and expand the number of configurations
  • building: Update note on recursive cloning
  • building: Autodetect Qt install path on Windows

As always, you can check out the full changelog here.


The big new feature this release brings with it is readbacks, which emulates shared memory on the PS4 by reading back memory that was modified on the GPU back to the CPU side, enabling a lot more games to function properly, fixing vertex explosions in Bloodborne and similar games, almost fully fixing climbing on Trico in The Last Guardian, and much, much more. It isn't enabled by default though, you'll have to turn it on manually in the config file yourself, as this is still a very experimental feature, and will break some games, plus it comes with a not insignificant hit to performance as well.