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>
4.4 KiB
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