Xenia: The Complete Xbox 360 Arcade Cabinet Engineering Guide

A comprehensive technical analysis and engineering manual for the Xenia emulator. Run Xbox 360 titles on custom arcade cabinets with D3D12 ROV rendering, TOML-driven configuration, the patch augmentation system, cache lifecycle management, and strict orchestration protocols.

Architectural Foundations and Ecosystem Scope

Xenia is a highly volatile, experimental research project dedicated to the high-level emulation (HLE) of the Xbox 360 console hardware. It relies on real-time translation layers bridging proprietary PowerPC architecture and specialized embedded DRAM with modern x86-64 PC hardware. Stability varies drastically from one title to the next.

Beginning: Core Architecture

CPU: Xenon to x86-64 Pipeline

The Xenon processor's VMX128 vector unit maps 1:1 to host AVX/AVX2 registers via JIT compilation. AVX instruction support is a HARD requirement—no software fallback exists. CPUs lacking AVX (legacy Pentium/Celeron) cause immediate fatal error before the window renders.

GPU: Xenos, eDRAM, and ROV

The Xenos GPU features a 10MB embedded DRAM scratchpad. Modern PCs lack this hardware equivalent. Xenia uses Rasterizer Ordered Views (ROV) via D3D12 to simulate atomic read-modify-write behaviors. D3D12 is mandatory; Vulkan is a legacy fallback for Linux only.

Kernel (XboxKrnl)

Xenia is BIOS-less—no firmware dumps required. It intercepts kernel calls and translates them to Windows API requests. Failures at the kernel layer cannot be resolved through user configuration.

Multi-Fork Ecosystem

Master: Research baseline, unsuitable for arcade. Canary: MANDATORY for arcade deployment, nightly updates, resolution scaling, game patches. Netplay: P2P multiplayer revival (Chromehounds online resurrection).

Intermediate: Configuration and Patches

TOML Configuration Core

All behavior governed by xenia-canary.config.toml. Key parameters: license_mask (0→1 unlocks XBLA), user_language (locale codes), avpack (8=HDMI), mount_cache (MANDATORY for Forza Horizon), gpu (d3d12 mandatory), d3d12_edram_rov (true for modern hardware).

Graphics Backend and eDRAM Interventions

d3d12_readback_resolve forces expensive CPU/GPU synchronization—required for Fable II character rendering and Alan Wake dynamic textures. draw_resolution_scale is EXTREME risk—breaks deferred renderers causing vertex explosions.

Render Hacks

gpu_allow_invalid_fetch_constants: fixes invisible models in UFC 3 and CAVE arcade titles. clear_memory_page_state: fixes vertex explosions in Blue Dragon and Sonic Unleashed with performance penalty.

Patch Augmentation System

Patches are .patch.toml files in the \patches directory that directly alter game code at runtime. Module Hash sensitive—Title Updates invalidate patches. Fixes physics speedup (30fps logic decoupled from framerate). Never mass-toggle patches.

Cabinet Killer Traps

1. No AVX = Fatal Error: Immediate crash, no software fallback.

2. Vulkan on AMD = TDR Crashes: Device Lost driver crashes.

3. Resolution Scaling Vertex Explosions: Breaks fixed-size deferred rendering buffers.

4. Stale Shader Cache: Driver update invalidates pipeline cache, crash on init.

5. mount_cache=false + Forza Horizon: Silent crash at race start.

6. Hard Termination (taskkill /F): Corrupts pipeline cache and memory pages.

7. Window Focus Loss: D3D12 desync, permanent black screen in fullscreen.

8. Dual Controller Index Collision: Total unresponsiveness from conflicting inputs.

9. Outdated Patches: Wrong Module Hash causes silent patch failure.

10. Blind Cache Clearing: Destroys performance-critical runtime artifacts.

11. Physics Speedup: Disabling vsync without patch causes 2x game speed.

12. XInput Only: Arcade encoders need ViGEmBus/DS4Windows wrapper.

Advanced: Cache, Input, and Orchestration

Cache Artifacts and Transient States

Shader/Pipeline caches are JIT compiled and strictly tied to GPU architecture and driver version. Initial stutter is normal JIT compilation. Stale caches after driver updates cause crashes.

The F5 Protocol

Press F5 for real-time GPU cache flush to clear vertex explosions. Map F5 to a dedicated arcade cabinet button for seamless operation.

Linux/Proton Prefix Management

Xenia via Proton/EmuDeck requires deep ROM nesting. Prefix Reset (delete PFX folder in compatdata) fixes silent launch failures after version updates.

Input Protocols

XInput only—DirectInput devices need wrapper software. Only one input method active at a time. Controller must initialize BEFORE emulator launch. Multi-controller index collisions cause total unresponsiveness.

Orchestration Rules

1. Never normalize crashes. 2. Never blind cache clear. 3. Preview→Apply→Backup→Log. 4. Assume per-title volatility. Clean Termination Directive: Always use WM_CLOSE/SIGTERM, never taskkill /F.

FAQ

Why does Xenia crash immediately? Host CPU lacks AVX. Hard requirement, no fallback.

D3D12 or Vulkan? D3D12 mandatory for ROV (eDRAM emulation). Vulkan is Linux-only fallback.

Why vertex explosions? Press F5 for GPU cache flush. If chronic, set clear_memory_page_state=true.

XBLA stuck in trial mode? Set license_mask=1 in xenia-canary.config.toml.

Forza Horizon crashes at race start? Set mount_cache=true for simulated HDD cache partition.

Heavy stuttering on first play? Normal JIT shader compilation. Performance stabilizes over time.

Can I play online? Netplay fork revives P2P multiplayer (Chromehounds). Not official Xbox Live.

Steam Deck/Linux setup? Canary via Proton/EmuDeck. Prefix Reset if updates fail.