ShadPS4 est un émulateur préliminaire de PS4 pour Windows et Linux écrit en C++ créé par Shadow (d’ou il tire son nom), auteur et contributeur de projets prestigieux comme PCSX, PCSX2, PCSP, JPCSP, Arcadeflex, RPCS3…
Les changements principaux en résumé:
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_
– 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
Site source. Liste de compatibilité ici.