Skip to content

Documentation

Choose iPhone/iPad or Mac to get the right steps.

One codebase, two builds: iPhone/iPad and Mac.

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