Il s’agit du meilleur émulateur de PlayStation One, devant ePSXe et pSX.
 

 
Caractéristiques:
– Recompilateur/JIT CPU (x86-64, armv7/AArch32, AArch64, RISC-V/RV64).
– Rendu matériel compatible avec les API D3D11, D3D12, OpenGL, Vulkan et Metal.
– Mise à l’échelle, filtrage des textures et couleurs vraies (24 bits) dans les moteurs de rendu matériels.
– PGXP pour la précision géométrique, la correction des textures et l’émulation du tampon de profondeur.
– Mélange précis via Rasterizer Order Views / Fragment Shader Interlock.
– Système de remplacement de textures dans les moteurs de rendu matériels.
– Rendu logiciel vectorisé et multi-threadé.
– Désentrelacement adaptatif au mouvement.
– Filtre de sous-échantillonnage adaptatif.
– Rotation d’écran pour les jeux de tir verticaux ou en mode « TATE ».
– Chaînes de shaders de post-traitement (GLSL, Reshade FX et préréglages Slang).
– Bordures décoratives affichées autour du contenu du jeu.
– « Démarrage rapide » pour ignorer l’intro du BIOS.
– Prise en charge des sauvegardes d’état, avec exécution anticipée et rembobinage.
– Compatible avec Windows, Linux et macOS.
– Lecture directe depuis CD, images bin/cue, fichiers bin/img bruts, MAME CHD, ECM à piste unique, MDS/MDF, CCD et formats PBP non chiffrés.
– Préchargement des images disque en RAM pour éviter les interruptions dues à la mise en veille du disque.
– Fusion des jeux multi-disques dans la liste/grille avec cartes mémoire partagées.
– Chargement/application automatique des patchs PPF.
– Démarrage direct des exécutables homebrew.
– Chargement direct des fichiers Portable Sound Format (psf).
– Audio étiré dans le temps lors de l’exécution hors de la vitesse 100 %.
– Prise en charge des manettes numériques et analogiques (le retour de force est transmis à l’hôte).
– Support des pistolets GunCon et Justifier (simulés à la souris).
– Support de la manette NeGcon.
– Préréglages de manette et configuration par jeu.
– Interface utilisateur Qt et mode « Big Picture ».
– Mises à jour automatiques avec canaux preview et stable.
– Analyse automatique du contenu — titres/hachages fournis par redump.org.
– Commutation automatique optionnelle des cartes mémoire par jeu.
– Prise en charge des cheats à partir de listes existantes.
– Éditeur de carte mémoire et importateur de sauvegardes.
– Overclocking CPU émulé.
– Base de données de codes de triche (cheats) avec prise en charge de plus de 4 000 jeux.
– Base de données de correctifs (patchs) avec améliorations visuelles, du taux de rafraîchissement et du format d’image.
– Analyse et modification de la mémoire en direct.
– Exploration d’images ISO et extraction de fichiers.
– Débogage intégré et à distance.
– Support des manettes multitap (jusqu’à 8 appareils).
– Intégration RetroAchievements.
– Présence enrichie Discord.
– Capture vidéo via Media Foundation (Windows) et FFmpeg (toutes plateformes).
– Fonction de caméra libre.
– Émulation de cartouches via port parallèle.

 
Configuration requise:
– Windows 10/11 (7/8/8.1 ici), Linux (AppImage/Flatpak), macOS.
– Un CPU plus rapide qu’une patate. Mais il doit être x86_64, AArch32/armv7, AArch64/ARMv8 ou RISC-V/RV64.
– Un GPU capable de OpenGL 3.1 / OpenGL ES 3.1 / Direct3D 11 niveau de fonctionnalité 10.0 / Vulkan 1.0. Donc, en gros, n’importe quoi fabriqué au cours des 10 dernières années.
– Une manette compatible SDL, XInput ou DInput (par exemple XB360/XBOne/XBSeries). Les utilisateurs de DualShock 3 sous Windows devront installer les pilotes officiels DualShock 3 inclus dans PlayStation Now.

 

 

Les améliorations sont:
 
Preview Build:
– Use generated subchannel Q for virtual pregaps (Stenzek)
– Fix LBA count including pregaps twice (Stenzek)
– Fix single-file pregap and LBA count (Stenzek)

 

Stable Build (or rolling release):
– Achievements: Extract bucket names out of FullscreenUI
– Achievements: Separate login and credential saving steps
– SettingsInterface: Guard against copying to self
– Threading: Add WaitFor() to ConditionVariable
– GameDatabase: Sort disc sets by save title
– GameList: Don’t persist cache map between refreshes
– GameList: Allow use of external SettingsInterface
– GameList: Synchronize settings between FullscreenUI and Qt
– System: Provide content details to OnSystemStarted()
– StringUtil: Fix possible integer overflow in EncodeAndAppendUTF8()
– Settings: Add a dedicated key for overlays
– Settings: Don’t copy controller type to game
– Core: Don’t reset folders when resetting settings
– FileSystem: Backport additional helper functions
– FileSystem: Make OpenSharedCFile() wrap OpenCFile() on non-Windows
– FileSystem: Add error parameter to FTell64()
– FileSystem: Extract find result sorting to function
– FileSystem: Use shared file open for ReadBinaryFile/ReadFileToString
– FileSystem: More RVO optimizations
– FileSystem: Add more ReadFileToString() overloads
– CPU/Recompiler: Respect load delays when swapping NOP slots
– CPU/Recompiler: Cancel pending loads on self moves
– CPU/Recompiler: Keep link-register delay slots in order
– CPU/Recompiler: Dispatch interpreter fallback exceptions
– CPU/Recompiler: Trap constant signed arithmetic overflow
– CPU/Recompiler: Preserve pending loads on memory exceptions
– CPU/Recompiler: Correct misaligned indirect jump exceptions
– CPU/Recompiler: Fix ARM32 VIXL debug builds
– CPU/Recompiler: Mask constant variable shift counts on ARM
– CPU/Recompiler: Truncate ARM64 multiplication results in LO
– CPU/Recompiler: Decode ARM32 load exceptions from r0
– CPU/Recompiler: Align ARM32 backpatch thunk calls
– CPU/Recompiler: Use 32-bit ARM64 fastmem LUT indices
– CPU/Recompiler: Handle large ARM64 backpatch cycle counts
– SPU: Fast-path ADPCM blocks without predictors
– SPU: Skip reverb output filtering at zero volume
– SPU: Pack reverb FIR coefficients into 16-bit lanes
– SPU: Extract reverb-master-enable out of loop
– GTE: Add regression tests
– GTE: Only sign extend MAC results on overflow
– GTE: Force inline matrix/lighting/projection helpers
– GTE: Specialize instruction handlers on sf/lm
– GTE: Factorize NCLIP to use three multiplies
– GTE: Use shift for IRGB/ORGB conversion
– GTE: Simplify FLAG error bit update
– GTE: Mark saturation branches as unlikely
– GTE: Use branchless saturation for light matrix multiply
– CDROM: Vectorize XA resampling
– MSBuild: Improve reproducibility
– CMake: Improve reproducibility
– CPU: Don’t stall for GTE with a single cycle remaining
– System: Add optional callback to screenshot save
– System: Avoid unnecessary mutex unlock->relock
– ZipHelpers: Fix incorrect error message
– InputManager: Return proper error from GetGenericBindingMapping()
– Settings: Shorten fastmem mode description
– System: Don’t use exact sleep on core thread
– Settings: Fix inconsistent default values
– Settings: Use constants for section names
– Update Swedish Qt translation
– TimingEvent: Relax Assert to DebugAssert
– FullscreenUI: Fix deadlock opening game properties
– Qt: Fix window icon/title desynchronizing
– MDEC: Fix word alignment of DMA writes
– MDEC: Fix signed monochrome output
– MDEC: Use 32-bit add for red/blue chroma rounding
– Tests: Add MDEC decode tests
– MDEC: Vectorize IDCT across matrix rows
– MDEC: Convert whole macroblock in YUVToRGB_New()
– MDEC: Simplify 15-bit output conversion
– MDEC: Add IDCT fast path for low frequency blocks
– DMA: Preserve source address for staged GPU transfers
– DMA: Optimize contiguous ordering table clears
– DMA: Avoid staging transfers ending at the RAM boundary
– DMA: Copy forward wrapping transfers in contiguous spans
– DMA: Skip transfer eligibility checks when clearing requests
– MDEC: Turn state dispatcher into a jump table
– OpenGLDevice: Fix active texture tracking when unbinding
– D3D11Device: Fix compute/image binding state tracking
– D3D11Device: Fix texture copy/map/upload edge cases
– D3D11Device: Fix swap chain error handling and fullscreen output selection
– D3D11Device: Fix timestamp query state and WaitForGPUIdle()
– D3D11Device: Fix input layout cache keys and feature level 10 limits
– GPUDevice: Respect DisableMemoryImport in OpenGL/Metal
– VulkanDevice: Fix crash when device creation fails
– VulkanDevice: Fix ROV clear not ending render pass
– VulkanDevice: Fix compute image descriptor set binding
– VulkanDevice: Only update multi-texture descriptors when dirty
– VulkanDevice: Always allocate storage image descriptors
– VulkanSwapChain: Fix abort when recreate fails after cached acquire
– VulkanDevice: Increase uniform buffer range to 16K
– VulkanDevice: Unbind texture buffer on destroy
– VulkanDevice: Don’t restart render pass if one wasn’t active
– VulkanSwapChain: Fix old swap chain leak on creation failure
– VulkanDevice: Don’t flag extensions that aren’t enabled on Vulkan 1.0
– VulkanDevice: Respect DisableMemoryImport flag
– VulkanDevice: Fix resolve with unused or invalidated textures
– VulkanDevice: Fix download transitioning wrong texture layer
– VulkanDevice: Fix render pass flags being truncated in cache key
– VulkanDevice: Fix blend attachment count with no colour targets
– VulkanDevice: Don’t set blend constants unless used
– VulkanDevice: Fix image layout in null texture descriptor
– VulkanDevice: Fix buffer image height for compressed uploads
– VulkanDevice: Add self-dependency when framebuffer fetch is disabled
– VulkanDevice: Fix render pass state after flushing mid-present
– VulkanDevice: Check swapchain maintenance feature and push descriptor limit
– VulkanSwapChain: Don’t request unsupported composite alpha
– VulkanDevice: Remove unused GetRenderPassForRestarting()
– VulkanDevice: Fix double free when texture buffer creation fails
– VulkanDevice: Wait for image acquire when submitting mid-present
– GPUDevice: Support mirrored surface pre-transforms
– GPUDevice: Remove unused DispatchWithPushConstants()
– OpenGLDevice: Fix uniform range padding and buffer mapping issues
– OpenGLDevice: glBlitFramebuffer() to self is not allowed in GLES
– OpenGLDevice: Reset last program when unbinding pipeline
– OpenGLDevice: Fix texture copy/resolve/download targets and ordering
– OpenGLDevice: Fix clear value handling for non-RGBA8 targets
– OpenGLTexture: Fix format table, MSAA creation and upload sizing
– OpenGLDevice: Don’t disable async downloads when only PBO uploads are slow
– OpenGLDevice: Use stable VAO cache pointers and a default VAO
– OpenGLDevice: Fix vsync mode and surface leak when creating swap chains
– OpenGLDevice: Fix depth-only framebuffers and sRGB render targets
– OpenGLDevice: Fix MRT output locations without binding layouts, detach shaders
– OpenGLDevice: Delete samplers, check for optional sampler state
– OpenGLDevice: Add FlushPipelineCache(), fix pipeline cache error paths
– OpenGLDevice: Fix timer query feature check and debug labels
– ShaderGen: Use explicit output locations for MRT on GLES 3.0
– MSBuild: Work around broken MSVC release builds
– GPU: Fix automatic resolution scale when loading state
– System: Avoid redundant resolution change with auto upscale
– GPU: Guess automatic resolution scale while initializing
– MemoryCard: Save card to file asynchronously
– Translation: Add Android string list
– FullscreenUI: Update translation strings
– Qt: Update machine translations
– Qt: Add new strings to non-machine translations
– FullscreenUI: Add Waves background shader
– FullscreenUI: Subtle visual improvements
– FullscreenUI: Fix sort column being disabled
– GPU/SW: Fix source desync in masked VRAM writes
– GPU/SW: Fix signed overflow in attribute steppers
– GPU/SW: Add drawing and copy tests
– GPU/SW: Read 8-bit palette indices as bytes
– GPU/SW: Use shuffle for 4-bit palette lookups
– GPU/SW: Load sequential texels for sprites
– GPU/SW: Remove redundant clip test for triangle spans
– GPU/SW: Simplify colour unpacking and packing
– GPU/SW: Only copy VRAM in reverse when necessary
– GPU/SW: Remove some redundant vector operations
– GPU/SW: Force inline vector constructors
– Common: Fix AVX2 vector helpers
– GPU/SW: Enable AVX2 rasterizer on x64
– Timers: Fix sysclk IRQs being delayed by gate changes
– Timers: Fix target being reached when counter overflows
– Timers: Fix off-by-one when scheduling sysclk event
– Timers: Account for sysclk/8 prescaler when scheduling IRQ
– Timers: Account for overclock remainder when scheduling IRQ
– Timers: Only reach zero target when counter is zero
– Timers: Fix IRQ time for GPU-clocked timers past the target
– Timers: Reschedule CRTC after writing to GPU-clocked timers
– Timers: Clear use_external_clock on reset
– TimingEvents: Add InvokeEarlyNoReschedule()
– Timers: Avoid updating counters when reading registers
– Fix regression
– Timers: Skip IRQ check when not reaching target or overflowing
– GPU: Use InvokeEarlyNoReschedule() for CRTC event
– GPU: Use InvokeEarlyNoReschedule() for command event
– SPU: Use InvokeEarlyNoReschedule() for transfer event
– Pad: Use InvokeEarlyNoReschedule() for transfer event
– Timers: Only toggle IRQ request once in one-shot mode
– Timers: Toggle IRQ request for both target and overflow in one update
– Timers: Hold sysclk counters after writes and target resets
– Timers: Synchronize GPU before reading gated sysclk timers
– GPU: Always activate CRTC event
– GPU: Rename UpdateCRTCTickEvent() to RescheduleCRTC()
– GPU: Reset IRQ and CLUT state correctly
– GPU: Correct polyline parsing and bound draw commands
– GPU: Correct fine cropping coordinates and bounds
– GPU: Refresh display dimensions when changing deinterlacing
– GPU: Keep lightgun coordinates in the correct clock domain
– GPU: Handle wrapped readback dumps and trace save failures
– GPU: Implement v2 register queries and status bits
– GPU: Implement v2 textured rectangle flips
– CPU/Recompiler: Use native divide semantics on ARM
– CPU/Recompiler: Allow 12-bit compare immediates on ARM64
– CPU/Recompiler: Use tbz/tbnz for bltz/bgez on ARM64
– CPU/Recompiler: Use sub for negative add immediates on ARM
– CPU/Recompiler: Avoid constant load for const – reg on ARM
– CPU/Recompiler: Swap operands for slt with constant rs on ARM
– CPU/Recompiler: Shorten lwl/lwr/swl/swr shift setup on ARM
– CPU/Recompiler: Load downcount and pending ticks as a pair on ARM64
– CPU/Recompiler: Use rotated/inverted immediates for ARM32 constants
– CPU/Recompiler: Use ubfx for low-bit andi masks on ARM32
– FullscreenUI: Make background shader accent dynamic
– FullscreenUI: Improve footer styling
– FullscreenUI: Display achievements points in landing window
– FullscreenUI: Ensure background load time is initialised
– Add @ANK-dev to UI Contributions (#3811)
– Tests: Fix util-tests building
– Tests: Fix timers test failures and assertion on shutdown
– SettingsInterface: Fix CopySection() breaking string lists
– FullscreenUI: Fix trails shader starting late
– ImGuiOverlays: Allow displaying resolution while paused
– Settings: Shuffle some bitfields
– ImGuiOverlays: Add frame number to OSD
– Qt: Work around Qt 6.12.0 spinbox text alignment bug
– SPU: Fix IRQ-enabled event scheduling with overclock active
– ImGuiManager: Don’t try to upload an empty vertex/index buffer
– SPU: Flush pending samples on off-voice register access with IRQs enabled
– SPU: Sync pending samples on ENDX reads and manual RAM writes
– SPU: Don’t run every sample while the IRQ flag is set
– SPU: Predict the next sample that can trigger a RAM IRQ
– D3D11/D3D12: Block until vblank on FIFO present
– VideoPresenter: Drop frames that missed vblank with blocking vsync
– System: Lock throttler phase to vblank with blocking vsync
– VideoThread: Start idle frames half a refresh before vblank
– FullscreenUI: Fix heading font size not adjusting
– GameList: Reduce padding in entry struct
– dep/imgui: Update to 4be0b47ec
– dep/imgui: Add minimal bidirectional text support
– Host: Remove resource file functions
– PostProcessing: Load built-in shaders by absolute path
– FullscreenUI: Simplify LoadTextureImage() path handling
– Android: Update translation strings
– SPU: Write per-voice dumps from the caller
– SPU: Fix interpolation product precision
– SPU: Prime the interpolation window on key on
– SPU: Decay below the sustain threshold
– SPU: Eliminate padding in Voice structure
– SPU: Model key-on timing and startup delay
– SPU: Time the repeat address latch from key on
– SPU: Clear ENDX on the first sample of the key on delay
– SPU: Remove per-voice last_volume
– Qt: Allow value editing in memory editor inspector
– Qt: Colour memory editor search box instead of dialog
– D3D12Device: End render pass when submitting command list
– D3D12Device: Begin render pass before applying dirty state
– D3D12Device: Only restart render pass after submit if one was active
– D3D12Device: Unbind all render targets when one is destroyed
– D3D12Device: Don’t end a closed render pass in EndPresent()
– D3D12Device: Allow UAV writes in render passes with image RTs
– D3D12Device: Fix image RT bindings lost after command list submit
– D3D12Device: Prepare textures on every SetTextureSampler() call
– D3D12Device: Batch image RT UAV barriers before dispatch
– D3D12Device: Unbind texture buffers on destruction
– D3D12Device: Fix sampler group cache going stale and never resetting
– D3D12Device: Fix topology tracking and RTV handling in mipmap generation
– D3D12Device: Fix download texture destination row offset applied twice
– D3D12Device: Free RTV/DSV to the right heap on texture creation failure
– D3D12Device: Fix texture Map() bounds check and upload space reservation
– D3D12Device: Fix swap chain ResizeBuffers() error handling and flags
– D3D12Device: Don’t key pipeline cache on adapter LUID
– D3D12Device: Increase persistent descriptor heap sizes
– D3D12Device: Require typed UAV loads for ROV support
– D3D11Device: Unbind UAVs when switching back from ROV binding
– GPU/HW: Deactivate ROV before blitting VRAM replacements
– DMA: Mirror channel control at offset 0xC
– DMA: Make DICR bit 6 read-only
– Bus: Honour byte enables for 8/16-bit DMA block control writes
– Timers: Mode register bits 13-15 always read as zero
– Bus: Fix memory control register write masks
– Pad/SIO: Mask unused mode bits and write-only control bits on read
– Bus: Return both halves for 32-bit pad/SIO mode and baud reads
– SPU: Store the unused registers at 1F801DBCh and 1F801E60h
– CPU: Check coprocessor enable for lwcN/swcN, store the next opcode
– CPU: Implement coprocessor branches
– Tests: Add register write and coprocessor tests
– GPUDevice: Add DrawWithBarrier()
– GPU/HW: Fix VRAM writes/copies with check_mask and fbfetch/ROV
– FullscreenUI: Fix transitions with prerotation
– FullscreenUI: Fix shader backgrounds with prerotation
– FullscreenUI: Fix loading screen blur with prerotation
– ImGuiManager: Invalidate blur background on resize
– CPU/Recompiler: Check events when linking truncated blocks
– CPU/Recompiler: Cancel incoming load delay on a load to the same register
– CMake: Add DISABLE_SIMD option
– Common: Fix gsvector_nosimd.h issues
– GPU/HW: Defer cover lookup until needed
– Achievements: Save avatar URL in settings
– Swedish translation corrections (#3812)
– Android: Update translation strings
– Qt: Split common log window code into LogWindowBase
– Qt: Add separate TTY window
– Qt: Add icons to Debug and Toolbar menus
– Qt: Add icons to log and TTY window menus
– Settings: Turn PGXP CPU Mode / Vertex Cache into an override
– Regtest: Add save state option
– Regtest: Add -setting option
– Image: Fix 16-bit to RGBA8 colour expansion
– VulkanDevice: Enable GPU-assisted and sync validation with GPU validation option
– GPU/SW: Fix out-of-bounds read in interlaced 15-bit scanout
– CI: Include version number in installer
– GPU: Add mid-frame scanout option
– GameDatabase: Add ForceMidFrameScanout
– GameDB: Enable ForceMidFrameScanout for Dreams
– GameDB: Golden Goal 98 apparently doesn’t support analog
– Qt: Move modulation crop to debugging settings
– GameList: Fix incorrect ps-exe hashes
– Android: Update translation strings
– Data: Add simple-color-adjustments postfx shader
– Qt: Add manual patch editing/deletion to patches tab
– Qt: Update gamesettings ini when cheats are renamed
– Qt: Support options in patches tab
– Qt: Share code editor save/rename/remove logic between cheats and patches
– Qt: Add setting overrides to patch code editor
– Qt: Update machine translations
– CI: Add file filter checks to translation lint
– Qt: Fix a couple of style issues
– FullscreenUI: Add missing space in controller settings
– CPU/CodeCache: Fix crash when cache is exhausted during compilation
– GameDatabase: Fix false positive PGXP warning
– Update duckstation-qt_es.ts (#3813)
– CPU/PGXP: Add logging of RTPS
– Tests: Update cheat metadata type
– dep/cubeb: Reopen closed WASAPI stream on start instead of aborting
– dep/cubeb: Apply deferred WASAPI device reconfigure on stream start
– dep/cubeb: Keep WASAPI render loop alive when reconfigure fails
– dep/cubeb: Fix WASAPI thread ready event leak on init failure
– CPU/PGXP: Fix sign of precise values crossing the 16-bit boundary in shifts
– CPU/PGXP: Track precision through GTE GPF/GPL
– CPU/PGXP: Fix ADD/SUB losing depth when the destination is a source
– CPU/PGXP: Carry and wrap fractional values at the real halfword boundary
– CPU/PGXP: Use floor when splitting off the upper halfword
– CPU/PGXP: Use the native result for division by zero
– CPU/PGXP: Use the native result for SLT/SLTU/SLTI/SLTIU
– CPU: Pass SLTIU source to PGXP before it is overwritten
– CPU/PGXP: Mirror GTE halfword register extension in MTC2/LWC2
– CPU/PGXP: Don’t leave shifted-out bits in the upper half in right shifts
– CPU/PGXP: Take the upper half sign from the precise value in right shifts
– CPU/PGXP: Don’t use invalid components in shifts
– CPU/PGXP: Extract the upper half directly in right shifts of 16 or more
– CPU/PGXP: Keep precision through OR/XOR with zero, prefer precise sources
– CPU/PGXP: Keep precision through ANDI/ORI that don’t change the lower half
– CPU/PGXP: Use double precision and only valid components in ADDI
– Tests: Add PGXP CPU shift, bitwise and ADDI tests
– Cheats: Add override for ForcePGXPPreserveProjectionPrecision
– Controller: Restore 127 as the analog axis center
– Controller: Initialize analog axes to AXIS_CENTER
– Controller: Produce center for equal opposing half-axis inputs
– Misc: Fix gitattributes typo for vcxproj filters
– Qt: Add icon next to device indicator in bindings
– Qt: Tweak bold group box headings
– db0b553 Qt: Fix stale mouse grab after recreating display widget
– GPU/HW: Store reciprocal Z in PGXP depth buffer
– CPU/PGXP: Add option to normalize depth by GTE matrix scale
– GPU/HW: Bias PGXP depth towards the camera by draw order
– Common: Add PackedOptional class
– GameDatabase: Use PackedOptional for overrides
– PostProcessing: Fix crash loading ReShade shaders without a swap chain
– Regtest: Split -setting key at the last slash
– GPU/HW: Accumulate PGXP depth across depth buffer clears
– Data: Add MC_SSAO.fx
– Android: Update translation strings
– VulkanDevice: Wait for presents with VK_KHR_present_wait
– VideoPresenter: Split late present check out of ShouldPresentFrame()
– VideoPresenter: Probe for presentation backlog when gap baseline rises
– Data: Update SDL game controller database
– GPU/HW: Track dirty depth rect to shrink depth merges/clears

 

Télécharger DuckStation v0.1 build 12XXX (70.6 Mo)

Site Officiel

En savoir plus…