Developer Docs
Build from source, architecture, and contributing.
Building from Source
The active XeniOS source repository is public at https://github.com/xenios-jp/XeniOS. The website, compatibility tracker, and release metadata live in related repositories.
git clone https://github.com/xenios-jp/XeniOS cd XeniOS # iOS debug build ./xb build --target_os=ios --config=debug # Format code ./xb format
Use the public repository for checkout, issues, and contributions. The build docs here stay focused on platform-specific notes for iOS.
Architecture Overview
- CPU — PowerPC to ARM64 JIT via Oaknut. Three-phase pipeline: PPC → HIR (Hardware-Independent IR) → native ARM64. On iOS, uses dual-mapped JIT memory with W^X enforcement. Requires a JIT helper (StikDebug); depending on iOS / iPadOS version and device, LocalDevVPN may also be required (see Getting Started).
- GPU — Xenos command processor with Metal backend. Two shader paths: SPIR-V → SPIRV-Cross → MSL (iOS default, controlled by
metal_use_spirvcross), or DXBC → Metal Shader Converter (macOS only). Includes EDRAM render target emulation, texture cache with heap-backed allocation, and MetalFX upscaling. - Audio — XMA decoded via FFmpeg with multiple decoder implementations (
old,new,master). Output through SDL2 (CoreAudio on iOS). NEON runtime paths disabled on ARM64 for decode parity. - Kernel — HLE of the Xbox 360 kernel (xboxkrnl) and XAM modules. Covers threading, memory management, I/O, content management, and user profiles.
- VFS — Virtual filesystem supporting ISO, XEX, ZAR, and XContent containers (STFS + SVOD/GOD). XContent detected via CON/LIVE/PIRS magic bytes, dispatched to StfsContainerDevice or SvodContainerDevice based on volume type.
iOS Target
The iOS app target is xenia_edge (bundle ID com.xenia.xenia-edge-ios). It links against: Metal, MetalKit, UIKit, GameController, CoreAudio, AudioToolbox, AVFoundation, CoreMotion, CoreHaptics, CoreBluetooth, and SDL2. The app requests the com.apple.developer.kernel.increased-memory-limit entitlement for large games.
Contributing
We welcome pull requests. Before starting a large change, open a discussion issue to align with the maintainers. All contributions should follow the existing code style — run ./xb format before submitting.
# Create a feature branch git checkout -b feat/my-feature # Build for iOS ./xb build --target_os=ios --config=debug # Format code ./xb format # Submit a pull request