Oxid-8 is a Chip-8 interpreter written in rust and drawn to the terminal using ratatui as well as windowed natively and in the web with wgpu.
▄▄▄▄ ▄▄▄▄
█ █ ▜▄▛ █ █▀▄ ▄▄ █▄▄█
█▄▄█ █ █ █ █▄▀ █▄▄█
Oxid8renders to the terminal using ratatui.Inside
src/binisoxid-cli—a lighter version without a menu and useful for testing. You can load a ROM by passing its path as the first command-line argument (all others will be discarded). If no arguments are given, it will fallback to anOXID_ROMenvironment variable if set; it's recommended to userealpathwith environment variables. This will be moved into the mainOxid8eventually.Oxid8-wgpurenders to a window both natively and in the web.Native requires a positional argument as the rom path.
Oxid8-wasmwill likely be removed soon.Replaced by Oxid8-wgpu.
Oxid8-coreis the library crate that is used byOxid8andOxid8-wgpu.Not currently stable, but it is intended for people to use in their own projects. Feel free to use
Oxid8andOxid8-wgpuas examples.
Most terminals do not differentiate key press, release, and repeat. read more
- The alacritty terminal
- The ghostty terminal
- The foot terminal
- The iTerm2 terminal
- The rio terminal
- The WezTerm terminal
Non-kitty terminals are supported by clearing the virtual keyboard after each cycle. The result is playable, but noticeably worse.
Sound in the tui is played by printing the bell character \x07. If you don't hear anything when you are expecting to, it's possible that you may have muted the bell.
wasm-pack build --target web- merge tui renderer into main app
- chromatic abberation effect
- debug mode
- super chip-8 extension
- wgpu sound
This project is licensed under the MIT License.
