Oxide is a modular CHIP-8 emulator written in Rust with an egui/eframe interface, multilingual support, debugging tools, configurable input/video/audio settings, and a polished desktop experience.
This project aims to learn and practice the Rust programming language through a concrete use case: building a CHIP-8 emulator.
It helps to understand key Rust concepts (memory management, structs, ownership, etc.) while also introducing the fundamentals of emulator development, such as the instruction cycle, input/output handling, and graphics rendering.
Beyond simply recreating a basic emulator, the objective is also to design a modern CHIP-8 emulator that includes features and interfaces inspired by contemporary emulators. This includes a user-friendly interface, debugging tools, configurable controls, save states, multilingual support, theme customization, and a polished startup flow.
The goal is to provide a solid foundation for both mastering Rust and understanding how emulators work, making it easier to build similar projects for other systems in the future.
To view the project roadmap : ROADMAP.md
Windows 11, Linux and macOS
| Space Invaders | Snake |
|---|---|
![]() |
![]() |
| Tetris | Pong |
|---|---|
![]() |
![]() |
- 🎮 Full CHIP-8 CPU (35 opcodes) with configurable quirks (CHIP-8, CHIP-48, SUPER-CHIP)
- 🖥️ 64×32 pixel display with 1x–5x scaling, fullscreen, and VSync support
- 🔊 Audio buzzer with volume control
- 🕹️ Keyboard, mouse and gamepad support (
gilrs) - 💾 Save/Load states (3 slots per ROM)
- 🌍 12 languages (EN, FR, ES, IT, DE, PT, RU, ZH, JA, KO, AR, HI)
- 🎨 Three themes: Kiwano, Dark, and Light
- ✨ Animated splash screen with logo and version display
- 🔧 Configurable controls and keyboard shortcuts
- 🖥️ Debug terminal with search, export and live diagnostics
- 🪟 Detached Settings and Debug Terminal windows
- 🔒 Windows single-instance protection
- 📚 Technical documentation and GitHub wiki
- Download the latest release for your OS
- Extract the zip
- Run
Oxide.exe(or build from source) - Click Game → Load game and select a
.ch8,.rom, or.binfile
cargo runcargo build --releaseThe CHIP-8 uses a 16-key hexadecimal keypad mapped to your keyboard by default :
| 1 | 2 | 3 | C |
|---|---|---|---|
| 4 | 5 | 6 | D |
| 7 | 8 | 9 | E |
| A | 0 | B | F |
All bindings are fully configurable in Settings → Controls.
Common defaults:
O: Load gameP: Pause / ResumeR: Reset ROMEsc: Stop emulationF11: FullscreenF1-F3: Save state slots 1-3F5-F7: Load state slots 1-3



