CHIP-Ahoyto
🍪
CHIP-8 emulator written in Rust
The goal of this project is purely experimental and a learning tool for rust.
The work of this emulator was inspired/started by jc-chip8.
You can check a working version of the emulator at chip-ahoyto.joao.me
Goals
- Performance
🏎 - Separation of concerns
🖖 - Simplicity
😀 - Compatibility
🪛
Features
- Drag and drop support for ROMs
- Pallet switching
- Visual diagnostics
- Variable CPU frequency
- Multiple engine implementations (classic and neo)
- Full compliant with test CHIP-8 ROMs
- RAM snapshot saving and loading
- WebAssembly support
🌐
Deployments
Provider | Stable | URL |
---|---|---|
Cloudfare | True |
chip-ahoyto.joao.me |
Netlify | True |
chip-ahoyto.netlify.app |
Cloudfare | True |
chip-ahoyto.joao.me |
Cloudfare | True |
chip-ahoyto.pages.dev |
Cloudfare | True |
prod.chip-ahoyto.pages.dev |
Cloudfare | True |
stable.chip-ahoyto.pages.dev |
Cloudfare | False |
master.chip-ahoyto.pages.dev |
Crate Features
Name | Description |
---|---|
quirks |
Allows CHIP-8 quirks runtime evaluation, comes at a performance penalty. |
Build
Library
cargo build
WASM for Node.js
cargo install wasm-pack
wasm-pack build --release --target=nodejs -- --features wasm
WASM for Web
cargo install wasm-pack
wasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm
cd frontends/web
npm install && npm run build
cd dist && python3 -m http.server
Reason
And... yes this is the real inspiration behind the emulator's name:
Inspiration
Many articles and websites helped me in this quest to build the emulator these are some of them.
Documentation
- Guide to making a CHIP-8 emulator
- Writing a CHIP-8 emulator with Rust and WebAssembly
- Wikipedia - CHIP-8
- itch.io - OctoJam 6
- CHIP-8 Archive
Articles
License
CHIP-Ahoyto is currently licensed under the Apache License, Version 2.0.