Yet another CHIP-8 emulator.
A binary for CHIP-8 emulation. Has:
- Graphics and sound(beep).
- Friendly UI
- Debugging capabilities
- inspect program counter, stack, RAM, etc.
- Pause and step instruction by instruction
- Reset to initial state.
- Two modes of operation -
Play only
orDebug
. - Configurations:
- Choose between
CHIP-8
orSuper-CHIP
instruction behaviour. - Set the CPU clock from 1 to 2000 Hz.
- Square or circular pixels
- Grid over square pixels
- Two ways to reduce flickering - either remove it or fade erased pixels.
- Choose between
Written in rust using the bevy
game engine which is a massive overkill for such project.
To get my hands dirty with rust
and bevy
.
If you don't have rust get the latest version from here https://www.rust-lang.org/
In order to use the emulator just for playing simply:
cargo run --release
If you also want to use it for debuggin you can call it like this:
cargo run debug --release
NOTE for MacOS users:
Bevy uses the wgpu
crate as a rendering backend and the current default backend API is Vulkan. This would most probably not work for you so you can change the WGPU_BACKEND
environment variable to "metal"
located inside .cargo/config.toml
.
Possible improvements would be:
- Better visuals
- Reduced flickering - non at all or fading effect
- Configurable pixel size, color
and shape
- Editable register, PC, RAM, etc. values
- Integrated text editor for editing and testing chip-8 programs
- bevy 0.9 - The overkill game engine.
- bevy_egui - Bevy egui integration. Immidiate mode GUI in the likes of ImGui.
- bevy_pixel_buffer - Pixel framebuffer with egui and rayon integration.
- rfd - File dialogs library.
- The guide that started me on this emulator. Thanks, Tobias.
- Chip-8 test suite whitout which I wouldn't have caught a couple of nasty bugs.
- A great collection of roms for testing and playing around.