介绍
官方网站:https://github.com/stenzek/duckstation
DuckStation 是一款免费的跨平台 PS1 模拟器,由澳大利亚模拟器作者 stenzek 开发,支持 Windows、macOS、Linux 以及安卓等多种系统,其前端是 Qt 开发的,在安卓系统中要求安卓 4.4 及以上版本 。它采用了先进的技术,如原生 libretro 核心等,能够为玩家提供高质量的游戏模拟体验,并且自带中文支持,降低了玩家的使用门槛,使其更易于上手。
软件截图
软件特点
CPU 重编译器/JIT:支持 x86-64, armv7/AArch32, AArch64, RISC-V/RV64 等架构。
硬件和软件渲染:支持 D3D11, D3D12, OpenGL, Vulkan, Metal 等硬件渲染器,以及软件渲染。
图像增强:支持图像缩放、纹理过滤和真彩色(24位)在硬件渲染器中。
精确混合:通过 Rasterizer Order Views/Fragment Shader Interlock 实现精确混合。
PGXP:用于几何精度、纹理校正和深度缓冲区仿真。
纹理替换系统:在硬件渲染器中支持纹理替换。
运动自适应去隔行:改善视频质量。
自适应降采样滤波器:提高图像质量。
屏幕旋转:支持垂直或“TATE”射击游戏。
后期处理着色器链:支持 GLSL 和 Reshade FX。
快速启动:跳过 BIOS 启动画面/介绍。
存档支持:支持存档状态,包括预读取和回滚。
光盘映像预加载:避免磁盘休眠引起的卡顿。
自动加载/应用 PPF 补丁。
直接启动自制执行文件。
直接加载便携式声音格式(psf)文件。
时间拉伸音频:在非 100% 速度运行时保持音频同步。
数字和模拟控制器输入(支持震动反馈)。
光枪支持:通过鼠标模拟 GunCon 和 Justifier。
NeGcon 支持。
Qt 和“大画面”UI。
自动更新:提供预览和最新版本通道。
自动内容扫描:游戏标题/哈希值由 redump.org 提供。
可选的每个游戏自动切换记忆卡。
支持加载现有作弊列表。
记忆卡编辑器和存档导入器。
模拟 CPU 超频。
集成和远程调试。
多插槽控制器:支持多达 8 个设备。
RetroAchievements。
Discord Rich Presence。
视频捕捉:支持 Media Foundation(Windows)和 FFmpeg(所有平台)。
更新日志
54ab073 SDLInputSource: Add options for XBox HIDAPI/rawinput
5bdcde7 Qt: Expose advanced SDL options
33b3a6e InputSource: Support querying current values
c0c0225 System: Synchronize input binding state on startup
327e9b5 XInputSource: Set initial state on connection
8597873 SDLInputSource: Fix DirectInput
d9d3b6a GameDB: disable auto analog mode for Pepsiman (#3511)
f340bdb CI: Bump actions/checkout to v5 (#3508)
13ce646 GameDB: Disable widescreen on Alone in the Dark - The New Nightmare (#3509)
962198f GameDB: Adjust crop area for Final Fantasy IV (#3510)
006de3a Qt: Don't manually populate combos for enums
7a359e5 GPU: Add separate scaling and FMV scaling options
95ccd7c FullscreenUI: Update translation strings
414ddf7 Achievements: Display warning for unsupported achievements
edf9b53 GameDB: Disable PGXP and widescreen for Chrono Trigger
f7c334b GameDB: Disable PGXP and widescreen on Lunar games
276211b GameDB: Disable auto analog mode on Echo Night (#3514)
1bc9f1e update the Simple-Chinese translation to latest. (#3515)
1743bfa Qt: Fix double translation in GameListWidget
a8fdeb8 GameDB: Tighten DMA for Hot Wheels Turbo Racing
921190a Atualização Português do Brasil (#3517)
d526818 GameDB: Disable auto analog mode on Shadow Tower (#3516)
bcb6f98 Common: Eliminate more static functions in headers
4e39c30 GameDB: Rollcage Stage II
0fe6928 GameDB: disable auto analog for some shoot'em up games (#3518)
f5d668f GameDB: Disable auto analog mode on Armored Core games (#3519)
4c349ff GameDB: Disable widescreen and speedup on MDEC for Legend of Mana (#3520)
c7a4505 Qt: Check screen bounds when restoring window positions
e00d696 GameDB: Disable auto analog mode on Backstreet Billiards (#3521)
d302401 GameDB: Increase max speedup cycles for Brave Fencer Musashi
40383f5 GameDB: Increase max speedup cycles for Breath of Fire III
ae99e8d GameDB: Disable widescreen on Suikoden
0ff6a5c GameDB: Add compatibility rating to a few games
28db2be GameDB: Disable auto analog on more games (#3523)
c1e7182 Qt: Disable UI for fast boot & disc speedup if marked incompatible in the DB (#3525)
826eff3 GameDB: Set max speedup cycles to 70k for Resident Evil 3 too (#3524)
86006e3 System: Apply setting restrictions before gamedb
6e864a3 GameDatabase: Allow CPU overclock override
c1d0cf3 GameDB: Titan Wars overrides
6e92604 GPUDevice: Move options to create flags
34e0eab CPU/Recompiler: Check downcount in interpret block
7de367f CPU/Recompiler: Remove unused function pointer
80fcd14 CPU/Recompiler/RISCV64: Replace lwu with lw in a couple of places
19f1700 GameDB: Max speedup cycles for Driver/Driver 2
645344b Animated icon in memcard editor (#3526)
e907bbf Qt: Use a delegate to lazily resize/render icon pixmaps
686c4b8 Qt: Add custom code view for debugger
da18a95 Qt: Sync debugger breakpoint list with main
e551a96 Qt: Don't disable debugger code view while running
6bef5a4 OpenGLDevice: Disable PBOs on Panfrost driver
fda28ea DMA: Decrease slice size when MDEC is active/decoding
b67bf20 Mini: Fix missing format in FormatNumber()
a1f81d9 InputManager: Pack state in struct
7d8e11d InputManager: Make macro button storage dynamic
d4b85ef InputManager: Increase macros per pad
3b1dcde Qt: Force memory card editor icons to 32x32
8533ab7 Qt: Fix editing second memory card
b3d6b37 GameDB: PGXP CPU mode for Azure Dreams
4e96fde GameDB: Disable disc speedup on MDEC for Diablo
24e4961 GameDB: Fix metadata for Darkstone
fb56c99 GameDB: Disable widescreen in Fear Effect 2
2f39820 GameDB: PGXP CPU mode for Nightmare Creatures II
bbd1508 CompressHelpers: Tidy up and add Deflate
1ef1a2d System: Add XZ save state compression
dcb6730 Spanish (Spain) translation update 2025/08/25 (#3530)
7c398c4 GameDB: Turn PGXPPreserveProjFP off for Persona
f0c0ca3 GameDB: Fix metadata for Nightmare Creatures I & II
2bd7fe8 Qt: Disable column sorting indicator and adjust labels in memcard editor (#3528)
de39ff5 GPUDevice: Fix ROV support being disabled
63350c3 GPU/HW: Fix uninitialized pipeline fields
eedf417 CMake: Add possible missing include directory
e5fd12a Qt: Disable game widget while system is starting
87f2c54 FullscreenUI: Unify Prefer GLES option name
a46e43f GameDB: Enable PGXPPreserveProjFP for Ghost in the Shell (#3531)
c76a891 Update the Simple-Chinese Translation to latest. (#3533)
f303d57 GameDB: Disable auto analog mode on several SMT games (#3532)
b0a63f9 Qt: Sharp Bilinear scaling for memcard icons (#3536)
7f36401 Update duckstation-qt_it.ts (#3534)
2c28e45 Updater Application Icon Update (#3535)
835390f Cheats: Make message OSD key consistent
f6fd1e9 Atualização Português do Brasil (#3538)
2182a0d Update the Simple-Chinese Translation to latest.
4738fce Updater: Fix pause until mouse move on Mac
d13d3d8 Resources: Relocate PromptFont key glyphs to high range
1aa92c7 GameDB: Normalize multi-line strings
a8b4bb3 GameDatabase: Add sort title, localized title, and save title fields
6e421b9 GameDB: Add unsuffixed display names
d00b897 GameDB: Add sortName for games starting with 'The'
8bfc31a GameDatabase: Refactor disc sets
29327b3 GameDB: Add localized names
2ed8c02 Qt: Show English and localized names in tooltip
39fcbf7 GameDB: Add sort name to Crash/Final Fantasy games
970f2ed GameDB: Fix lint errors
17872fe Qt: Fix compile warning
e35b49d GameDB: More instances of sort titles
2b519b1 GameDatabase: Check timestamp of discsets.yaml
dec06fa GameDatabase: Use once_flag for thread-safe initialization
86333e9 System: Fix crash on starting non-database game
d77c92d FullscreenUI: Fix incorrect disc set window title
92c0561 Update the Simple-Chinese translation to latest. (#3540)
c1bb183 FullscreenUI: Fix selecting disc set entries in list/grid
7cd0d41 Settings: Fix portable mode for AppImages
0a271cd StringUtil: Fix CompareNoCase for prefixes
56e1713 GameList: Support scanning and caching relative paths
b0dd909 Qt: Resizable game list icons (#3539)
6765b2f Qt: Delete some redundant code in GameListModel
d499d8e Qt: Avoid a full reset when toggling show cover titles / localized titles
abde6e4 Qt: Move scaling helper to cpp file
48ac353 Qt: Disable game list toolbar when no games found
5f8716a Qt: Simplify icon scaling
f2f06a7 FullscreenUI: Fix game properties title
e1c0753 Qt: Use path as tie breaker when sort titles equal
3cb275d Qt: Use grid layout in cheat code editor (#3543)
b8952da Qt: Don't use memcard icon cache for window icon when scaled
db2f563 dep/googletest: Update to v1.17.0
faa7599 Tests: Add more unit tests for common classes
e32e644 StringUtil: Fix logical errors
d69935e Qt: Fix warning
e89590b Qt: Avoid QPixmap -> QIcon conversion in getIconForGame()
44908fe Qt: Respond to DPR change in memory card editor
e933716 GameDB: Add sort name to several more game series (#3544)
6a0249b Qt: Hide game list vertical header (#3545)
91f25b6 Controller: Add Start/Select bindings for the Pop'n Controller (#3546)
6dd78b1 MediaCapture: Fix default video codec on MacOS
126171f Qt: Fix memory card icons drawing on themselves
019636b Qt: Use DevicePixelRatioChange for DisplayWidget
0867dec Qt: Use widget-local device pixel ratio for game list
ddaac7e GameList: Use save title for cover image lookup
4b472dd GameList: Improve grid size calculations
fc29fba Qt: Don't try to load directory as background image
2215f41 GameDB: Restore "(Soviet)" suffix on disc 2 of some C&C games
2514814 GameDB: A few more sort names
6d2f3dc Qt: Fix zooming with mouse wheel in game list (#3549)
fd9c3cd Update duckstation-qt_pt-BR.ts (#3548)
d2a2a78 Update the Simple-Chinese Translation to latest. (#3547)
2d3ebc8 System: Fix safe mode details not showing
59542b0 Deps: Update Qt, SDL and zlib-ng
a390797 Data: Add new PromptFont glyphs
25b44f4 Qt: Wire up new key glyphs
7c2585d Deps: Make Qt build options more consistent
e02c991 Deps: Patch Qt fusion style
e573f18 GameDB: Disable auto analog for Hellnight (#3551)
3d73c5c Qt: Fix possible cover loss during load
8327282 GameList: Fix covers for disc sets sometimes missing
76e386c CrashHandler: Debug break on abort() if debugger attached
fb1bd1e FullscreenUI: Fix crash when toggling localized titles
08901c0 Qt: Fix scroll bar desyncing on icon size change
c33131d InputManager: Use scancodes for key mapping
d9dc507 InputManager: Map 'old' key names to new on load
78fa543 SmallString: Make constructors explicit
979e850 Qt: Include full binding text in tooltip
21bede8 ImGuiManager: Initialize to default text font order
f7edbde Qt: Remove unused signal
b5d5cfd GameList: Pack state in struct
393724a Qt: Save one lookup when loading covers
7e04671 GameList: Use fixed size for icon column
3ff6287 GameList: Use size_t for indexing
587e73d Sharper icon scaling (#3553)
5cd8444 Qt: Consider title when sizing icon column
14b2302 Qt: Fix compile warning
0aa8374 MSBuild: Don't merge qt_LANG.qm when qtbase_LANG.qm exists
26c4eec Qt: Fix another compiler warning
da64db6 System: Don't print DATE/TIME
843234f MSBuild: Set /d1trimfile and /PDBALTPATH
ca504bd CMake: Set -fmacro-prefix-map and -ffile-prefix-map
4c6375a Qt: Fix inconsistent cover caption size at startup
78d22b8 Qt: Swap point size for pixel size ...
Your blog has quickly become my go-to source for reliable information and thought-provoking commentary. I'm constantly recommending it to friends and colleagues. Keep up the excellent work!