Files
Sylpheed/docs/reference/xbox360-architecture.md
sim 75b546cf2f
All checks were successful
CI / Native — linux (pull_request) Successful in 2h0m10s
CI / WASM — Web (pull_request) Successful in 28m47s
CI / Formatting (pull_request) Successful in 1m29s
docs(reference): adopt the last reference files from the project root
Three untracked files in the project root had no home in either repository:

- the Xbox 360 technical reference report (a research compilation) becomes
  docs/reference/xbox360-re-technical-reference.md, unchanged;
- XBOX360_ARCHITECTURE.md becomes docs/reference/xbox360-architecture.md,
  trimmed to its platform facts. Its format "status" sections (PAK unknown,
  mesh unknown, audio TODO) and the `just sniff` workflow predate every
  decoder in this repo and were wrong;
- generate_export_docs.py becomes tools/generate_export_docs.py, the path the
  committed xbox360-exports.* already name as their generator. It lived
  inside a Canary checkout, so it now takes --canary and --out and fails
  loudly on a tree that is not Canary.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 22:19:54 +02:00

4.4 KiB
Raw Blame History

Xbox 360 Architecture — RE Quick Reference

A condensed reference for reverse engineering Xbox 360 games. The longer technical reference report has the binary-level detail. Project Sylpheed's own formats are decoded, and each has a page under docs/re/.


CPU: IBM Xenon

Property Value
Architecture PowerPC 2.02 (64-bit ISA, 32-bit addressing in games)
Cores 3 symmetric cores × 2 SMT threads = 6 logical processors
Clock 3.2 GHz
Execution In-order, dual-issue superscalar (no speculation)
L1 I/D cache 32 KB each, per core
L2 cache 1 MB unified, shared across all 3 cores
Vector registers VMX-128 — 128 × 128-bit VRs per thread (vs. standard AltiVec's 32)
Endianness Big-endian

Key for RE: All multi-byte integer and float values in game binaries are big-endian.

The VMX-128 extension adds dot-product instructions (vmsum3fp128/vmsum4fp128) and D3D pack/unpack instructions absent from standard PowerPC. Their semantics are in the PowerPC instruction manual.


GPU: Xenos (ATI R400/R500 derived)

Property Value
Clock 500 MHz
Shader processors 48 unified (3 SIMD × 16, each with 5-wide VLIW ALU)
Peak throughput ~240 GFLOPS
On-chip memory 10 MB eDRAM (framebuffer, depth, MSAA — no separate VRAM)
System RAM 512 MB GDDR3 shared with CPU
Northbridge GPU also acts as northbridge / memory controller

Command Packets (PM4)

The GPU is driven by a PM4 command ring buffer written by the CPU. Key packet types:

Type Description
DRAW_INDX Indexed draw call
SET_CONSTANT Write shader constant registers
SET_TEXTURE_CONTROL Texture fetch constant (address, format, tiling mode)
LOAD_ALU_CONSTANT Load vertex shader constants

Xenia Canary's src/xenia/gpu/ implements a full PM4 parser — invaluable for understanding draw calls and state management.

Texture Tiling

Xbox 360 textures are stored tiled in memory, not linear; the Xenos hardware de-tiles on fetch. Texture data read from game files must be de-tiled before it is displayed. Tile size depends on the texture format (DXT1 = 4×4 blocks, etc.).


Executable Format: XEX2

default.xex is the main game executable in Microsoft's Xbox EXE (XEX2) format.

Offset Field Notes
0x00 Magic 58455832 = XEX2
0x04 Module flags Security, format flags
0x08 Header data offset Points to optional header list
0x10 Security info offset RSA signature, image hash

The executable contains encrypted, compressed PowerPC code. The full layout is in xex2-format.md. This project loads and disassembles it with crates/sylpheed-xex and crates/sylpheed-xexdb.


Platform File Formats

XPR2 — Texture Container

Offset Field Value
0x00 Magic 58505232 = XPR2
0x04 Total size u32 BE
0x08 Header size u32 BE — data starts at this offset
0x0C Object count u32 BE

Each texture object contains a D3DFORMAT, width/height/depth/mip levels, and tiled pixel data.

XWB / XSB — XACT Audio Banks

Wave banks (.xwb) and sound banks (.xsb) are part of Microsoft's XACT audio system. Audio data is encoded as XMA (Xbox Media Audio), a proprietary Microsoft codec based on WMA Pro.


Useful External References

  • xboxdevwiki.net — Community Xbox 360 hardware documentation
  • Xenia Canary source — GPU/kernel RE reference
  • xdvdfs — Pure Rust XISO reader (a dependency of sylpheed-formats)
  • binrw — Derive-macro binary format parsing (a dependency of sylpheed-formats)
  • Free60 Project — Original Xbox 360 open-source hardware documentation