360μ is in early development. It cannot run commercial games yet. The emulator boots and executes game code, but games currently get stuck during initialization due to incomplete GPU command processing.
| Component | Status | Notes |
|---|---|---|
| Memory System | ✅ Working | 512MB main RAM, fastmem optimization |
| XEX Loader | ✅ Working | Loads encrypted/compressed Xbox 360 executables |
| CPU Interpreter | ✅ Working | Full PowerPC instruction set |
| CPU JIT | ✅ Working | PowerPC to ARM64 translation, ~80% coverage |
| VMX128 (SIMD) | 🟡 Partial | Basic vector instructions |
| Kernel HLE | ✅ Working | ~60 syscalls implemented |
| Thread Scheduler | ✅ Working | 1:1 threading model (each guest thread = host thread) |
| GPU (Vulkan) | 🟡 Partial | Initialized, waiting for ring buffer commands |
| Audio (XMA) | 🟡 Partial | Decoder present, not receiving data |
| File System | ✅ Working | ISO mounting, VFS layer |
Major Threading Fixes Completed:
- ✅ JIT syscall PC advancement - Fixed infinite syscall loop
- ✅ Context synchronization - JIT and HLE now share context properly
- ✅ Address translation - Consistent 0x1FFFFFFF masking across JIT and HLE
- ✅ Thread-local storage - Proper thread identification in multi-threaded mode
- ✅ 1:1 threading model - Each guest thread has its own host thread
Current Blocker: Games progress past initial boot but get stuck in secondary polling loops. The GPU ring buffer is not yet receiving commands from the game.
See NEXT_STEPS.md for the detailed roadmap.
- Create a performant Xbox 360 emulator for modern Android devices
- Leverage Vulkan for GPU emulation on mobile
- Use JIT recompilation for CPU emulation (PowerPC to ARM64)
- Support flagship devices (Snapdragon 8 Gen 2+, Dimensity 9000+)
- Android 10 (API 29)
- ARM64 processor
- Vulkan 1.1 support
- 6GB RAM
- Android 12+
- Snapdragon 8 Gen 2 or newer
- 8GB+ RAM
- 30GB+ free storage
- Android Studio Hedgehog (2023.1.1) or newer
- Android NDK r26 or newer
- CMake 3.22+
- JDK 17
# Clone the repository
git clone https://github.com/yourname/360mu.git
cd 360mu
# Open in Android Studio or build from command line
cd android
./gradlew assembleDebug
# Install on device
adb install -r app/build/outputs/apk/debug/app-debug.apk360mu/
├── android/ # Android app (Kotlin + Jetpack Compose)
│ └── app/src/main/
│ ├── java/ # Kotlin UI code
│ └── cpp/ # JNI bridge
├── native/ # Emulator core (C++)
│ └── src/
│ ├── cpu/ # PowerPC Xenon emulation
│ │ ├── xenon/ # Interpreter, CPU state, threading
│ │ ├── jit/ # ARM64 JIT compiler
│ │ └── vmx128/ # Vector unit (SIMD)
│ ├── gpu/ # ATI Xenos emulation
│ │ └── xenos/ # Vulkan backend, command processor
│ ├── apu/ # Audio processing (XMA)
│ ├── kernel/ # Xbox kernel HLE
│ │ └── hle/ # High-level syscall emulation
│ ├── memory/ # Memory management, fastmem
│ ├── loader/ # XEX/ISO loading
│ └── vfs/ # Virtual file system
├── shaders/ # Vulkan shaders (GLSL)
└── docs/ # Documentation
├── architecture/ # Architecture documentation
├── issues/ # Known issues (historical)
└── tasks/ # Development task tracking
See DEVELOPMENT_PLAN.md for the detailed technical plan.
- Project setup
- Memory system (512MB + fastmem)
- XEX loader (encryption, compression, imports)
- CPU interpreter (full PPC instruction set)
- JIT framework (ARM64 emitter)
- Block cache with invalidation
- ~80% PPC instruction coverage
- VMX128 JIT (currently interpreted)
- Syscall dispatch
- Thread creation/scheduling
- 1:1 threading model
- Context synchronization
- Thread-local storage
- Additional synchronization primitives
- Vulkan backend initialization
- Ring buffer command processing ← Current blocker
- Shader translator
- eDRAM emulation
- XMA decoder framework
- Audio output integration
- Controller input
- Save states
# View emulator logs
adb logcat -s 360mu:* 360mu-cpu:* 360mu-jit:* 360mu-kernel:*
# Check GPU status
adb logcat -d | grep "GPU\|ring buffer"
# Check thread creation
adb logcat -d | grep "Created thread"
# Check syscall dispatch
adb logcat -d | grep "First call to syscall"
# Check for unimplemented syscalls
adb logcat -d | grep "UNIMPLEMENTED"Contributions are welcome! Please read our contributing guidelines before submitting PRs.
- GPU command processing - Ring buffer parsing, PM4 packets
- Shader translation - Xenos shaders to SPIR-V
- PowerPC JIT optimization - VMX128, missing instructions
- Additional syscall implementations
- Game compatibility testing
- Xbox 360 Architecture
- Xenia Emulator (Reference implementation)
- Free60 Wiki
- Xbox Dev Wiki
This emulator does not include any Xbox 360 system software or games. Users must legally own any games they wish to emulate.
360μ is not affiliated with Microsoft Corporation.
360μ is licensed under the GNU General Public License v3.0. See LICENSE for details.
Made with ❤️ for the emulation community