DuckStation: The Complete PS1 Arcade Cabinet Guide
DuckStation is a high-performance PlayStation 1 emulator built on Low-Level Emulation (LLE) architecture that accurately reproduces the PS1's R3000A CPU, GTE geometry engine, SPU audio processor, and MDEC video decoder at the hardware level. For arcade cabinet builders, DuckStation delivers sub-frame input latency, PGXP geometry correction that eliminates PS1's infamous polygon wobble, and per-game configuration profiles essential for multi-title cabinet deployments.
Overview — Why DuckStation for Arcade Cabinets
DuckStation's LLE architecture means every hardware component is emulated at the register level rather than through high-level function calls. This produces accuracy that rivals original hardware while enabling enhancement features impossible on real PS1: internal resolution upscaling to 4K, PGXP geometry correction, texture filtering, and Runahead latency elimination. The emulator supports 2,500+ PS1 titles with 95%+ compatibility.
LLE Architecture Deep Dive
Five core subsystems: R3000A CPU (MIPS I instruction set, 33.8688 MHz), GTE (Geometry Transformation Engine for 3D math), GPU (2D rasterizer with 1MB VRAM), SPU (24-channel ADPCM audio), MDEC (FMV decompression). Each runs as an independent emulated component with cycle-accurate timing. BIOS files required: SCPH-1001 (NA), SCPH-5501 (NA revised), SCPH-5502 (EU). Fast boot skips Sony logo but still requires valid BIOS for hardware initialization.
PGXP Geometry Correction
PS1 used fixed-point integer math for vertex positions, causing polygon jitter and seam wobble. PGXP (Parallel/Precision Geometry Transform Pipeline) intercepts GTE calculations and replaces them with floating-point precision. Three modes: Memory Only (safest, fixes most wobble), CPU (aggressive, can break some games), Vertex Cache (experimental). For cabinets: start with Memory Only, enable CPU per-game where tested.
Beginning — First-Time Setup
BIOS Configuration
Place BIOS files in DuckStation/bios/ directory. Required: at least one valid BIOS (SCPH-5501 recommended for NA region). Enable Fast Boot to skip Sony logo (saves 5 seconds per launch). Hardware rendering requires valid BIOS even with Fast Boot enabled. Verify BIOS hash matches known-good dumps.
Controller & Input Mapping
DuckStation supports DInput and XInput natively. For arcade encoder boards: map to Digital Controller type (no analog sticks needed). For fighting games: use 6-button layout mapping L1/R1 to extra buttons. Hotkey bindings: Fast Forward (skip intros), Save State, Load State, Toggle Pause. Per-game input profiles allow different mappings per title.
Display & Resolution
Internal resolution multiplier: 1x (native 240p) through 16x (4K). For cabinets: 3x-5x provides clean upscaling without GPU strain. Renderer options: Vulkan (recommended), D3D12, D3D11, OpenGL. True Color rendering removes PS1's 15-bit color banding. Widescreen hacks available per-game but may break 2D elements.
Intermediate — Performance & Enhancement
Runahead Latency Elimination
Runahead runs the emulator N frames ahead internally, then displays the result — effectively removing N frames of input latency. For fighting games: 1-2 frames of Runahead makes DuckStation feel tighter than original hardware. CPU cost doubles per frame of Runahead. Test per-game: some titles break with Runahead > 1. Essential for competitive fighting game cabinets.
Per-Game Configuration Profiles
DuckStation's game settings system allows unique configurations per title. Critical for multi-game cabinets: Tekken 3 needs PGXP CPU mode, Crash Bandicoot needs conservative settings, Ridge Racer needs specific GPU hacks. Profiles stored as INI files in gamesettings/ directory. Frontend integration: profiles activate automatically by game serial number.
Shader & Post-Processing
Built-in shader chain: CRT simulation, scanlines, LCD grid, NTSC composite artifacts. For arcade CRT monitors: enable scanline shader at appropriate weight. For modern displays: CRT-Royale or CRT-Geom provide authentic look. Shader overhead minimal on modern GPUs. Per-game shader profiles possible through configuration system.
Cabinet Killer Traps
Trap 1: Memory Card Corruption on Hard Power-Off
PS1 memory cards write during save operations. Hard power-off during write corrupts the virtual memory card. Solution: Use save states for cabinet deployment, disable in-game saving, or implement graceful shutdown scripts that wait for write completion.
Trap 2: PGXP Breaking Specific Games
PGXP CPU mode causes visual glitches in ~15% of titles. Symptoms: stretched polygons, missing geometry, camera glitches. Solution: Per-game profiles with PGXP Memory Only as fallback. Test every title in your cabinet library before deployment.
Trap 3: Analog Stick Games on Digital-Only Cabinets
Games requiring analog input (Ape Escape, certain racing titles) won't work with arcade encoder boards. Solution: Identify analog-required titles during library planning. Use DualShock controller type only for titles that need it, Digital Controller for everything else.
Trap 4: Runahead Desync in RPGs
Runahead can cause audio desync or visual glitches in menu-heavy RPGs and FMV sequences. Solution: Disable Runahead for non-action titles. Fighting games and action games benefit most; RPGs and adventure games should use standard latency.
Trap 5: Resolution Scaling Breaking 2D Elements
Internal resolution upscaling can misalign 2D sprite overlays on 3D backgrounds. Symptoms: HUD elements offset, text rendering issues. Solution: Force 1x resolution for problematic titles, or use PGXP texture correction to compensate.
Trap 6: Multi-Disc Games Requiring Swap
Games spanning multiple discs (Final Fantasy VII-IX, Metal Gear Solid) need disc swap functionality. Solution: Create M3U playlists listing all discs. Frontend must support M3U launching. Test disc transitions before cabinet deployment.
Trap 7: Fast Boot Incompatibility
Some games require full BIOS boot sequence for proper initialization. Symptoms: black screen on launch, missing audio, corrupted graphics. Solution: Per-game profile with Fast Boot disabled for affected titles. ~5% of library affected.
Trap 8: Texture Filtering Artifacts
Bilinear texture filtering smooths PS1's pixelated textures but creates visible seams at polygon edges. Particularly noticeable in games with large flat surfaces. Solution: Use nearest-neighbor filtering for 2D-heavy games, bilinear only for 3D titles where seams are less visible.
Advanced — Automation & Deployment
Frontend Automation Protocol
Command-line launch: duckstation-qt.exe -fullscreen -portable -- "path/to/game.cue". Portable mode keeps all config in application directory. Graceful shutdown: send WM_CLOSE message (Stop-Process -Name duckstation-qt). Never force-kill — risks memory card corruption and config loss.
Batch Configuration Management
Deploy consistent settings across game libraries: master settings.ini as template, per-game overrides in gamesettings/ directory. Automation script pattern: copy master config, apply per-game patches, verify launch, log results. Pre-build shader caches by launching each game once before cabinet deployment.
Latency Pipeline Optimization
Total latency stack: Display lag (monitor) + Render lag (GPU queue) + Emulation lag (frame timing) + Input lag (USB polling). DuckStation contributions: Frame pacing (reduce to 0 with Runahead), GPU thread sync (Vulkan preferred), Input polling (per-frame). Target: sub-16ms total pipeline for fighting games. Measure with 240Hz camera or specialized hardware.
Frequently Asked Questions
What BIOS do I need for DuckStation?
At minimum one valid PS1 BIOS file. SCPH-5501 (NA) recommended for broadest compatibility. Place in bios/ directory and select in Settings > BIOS. Fast Boot still requires valid BIOS for hardware initialization.
How does DuckStation compare to Beetle PSX (RetroArch)?
DuckStation offers easier per-game configuration, native Runahead, and simpler PGXP setup. Beetle PSX integrates with RetroArch's ecosystem (shaders, achievements, netplay). For dedicated PS1 cabinets: DuckStation. For multi-system cabinets already using RetroArch: Beetle PSX.
Can I use arcade encoder boards?
Yes. Set controller type to Digital Controller. Maps perfectly to 6-8 button arcade layouts. No analog stick support — exclude analog-required titles from cabinet library.
Does DuckStation support netplay?
Not natively. For competitive fighting game setups requiring netplay, consider RetroArch with Beetle PSX core which supports rollback netplay via RetroArch's built-in system.
How much Runahead is safe?
1 frame is safe for 95%+ of titles. 2 frames works for most action games. 3+ frames causes desync in many titles. Always test per-game. Disable for RPGs, enable for fighting/action games.