# Multi-Platform XO-CHIP Emulator
Table of Contents
Highlights
- Built a Rust-based emulator supporting multiple CHIP-8 variants including modern XO-CHIP and SuperChip extensions
- Engineered flexible compilation pipeline targeting both native platforms and WebAssembly for browser compatibility
- Integrated Macroquad rendering engine and TinyAudio for seamless cross-platform multimedia functionality
📸 Screenshots

Super Neat Boy

Nyancat

Alien Inv8sion

T8nks
🎮 Live Demo
Try it in your browser: https://dustinbowers.com/demos/rust-chip8
🤔 What is CHIP-8?
CHIP-8 is a simple, interpreted programming language used in DIY computers of the late 1970s and early 1980s like the COSMAC VIP and DREAM 6800. These machines had between 1–4 KB of RAM, used a 16-key hexadecimal keypad, and output to a TV display. CHIP-8 interpreters typically used only 512 bytes of memory.
✅ Features
- Written in Rust 🦀
- Cross-platform (native + WASM)
- Accurate timing and instruction set support
- Easy to build and run
- Supports color planes and extended graphics for XO-CHIP
🧩 Supported CHIP-8 Variants
- XO-CHIP → Includes support for 4-bit planes and 16-color graphics
- CHIP-8
- Super-Chip 1.1 (Modern)
- Super-Chip 1.1 (Legacy) → With some known caveats
🛠 Build Instructions
The included Makefile
supports the following targets:
Command | Description |
---|---|
make build | Build native debug binary |
make release | Build native release binary |
make wasm | Build debug WebAssembly binary |
make wasm-release | Build release WebAssembly binary |
make web-server | Serve ./dist with basic-http-server at localhost:4000
|
make build-test-web | Build debug WASM and serve |
make build-test-web-release | Build release WASM and serve |
🚀 Usage
Native Binary
Usage: chip8 <Filename> <CHIP Mode> <Ticks-per-frame>
<Filename> Path to ROM file<CHIP Mode> 1 - CHIP-8 2 - SuperChip Modern 3 - SuperChip Legacy 4 - XO-Chip<Ticks-per-frame> Number of instructions to emulate per frame
Local WebAssembly
make build-test-web-release
Then open http://localhost:4000 in your browser.
🔗 Useful Links
- CHIP-8 on Wikipedia — Background on the architecture and history
- Opcode Reference — Complete CHIP-8 instruction set reference
- CHIP-8 ROM Archive by John Earnest — Community ROM collection
Source Code & Demo
Source available on GitHub: https://github.com/dustinbowers/rust-chip8
Try it in your browser: https://dustinbowers.com/demos/rust-chip8