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



