https://github.com/celsobonutti/xipe-oito
Chip8 engine emulator written in Rust, with both desktop (multiplatform) and WASM front-ends.
https://github.com/celsobonutti/xipe-oito
chip8 emulation rust wasm
Last synced: 3 months ago
JSON representation
Chip8 engine emulator written in Rust, with both desktop (multiplatform) and WASM front-ends.
- Host: GitHub
- URL: https://github.com/celsobonutti/xipe-oito
- Owner: celsobonutti
- Created: 2020-08-17T22:23:55.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2021-02-24T00:37:08.000Z (over 5 years ago)
- Last Synced: 2025-10-09T12:19:10.443Z (8 months ago)
- Topics: chip8, emulation, rust, wasm
- Language: Rust
- Homepage: https://chip8.cel.so
- Size: 1.3 MB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Xipe Oito
## a.k.a. Emerson, Lake & Palmer
This was my first experiment with both Rust and emulation, I hope you like it.
It's divided in 3 projects: a native front-end, a WASM web front-end and a library implementing Chip 8's engine.
## Emerson, the pretentious native front-end
It's made with the [iced](https://github.com/hecrj/iced/) library and runs pretty smoothly on anything but Windows native (you can run it on WSL with X11
and it will run perfectly).
To play with it, run `make emerson-dev`. A file picker will open an you just have to select your rom and start playing.
To build a release binary, run `make emerson-build`.
## Lake, the delightful web front-end
This one was made with the [yew](https://github.com/yewstack/yew) framework. I chose it since it looks a lot like React, which is my favorite JS library.
To run it on dev mode, simply run `make lake-dev`. It will be listening on `localhost:8080`.
To build the production bundle, run `make lake-build` and it will be on the `lake/dist/`.
A [live version](https://chip8.cel.so) is available.
## Palmer, the core of it all
This is the library responsible for the Chip 8 engine. This is the only library that has tests because I couldn't find documentation on testing both `yew` or `iced`. If you have it,
I would love to add more tests.
There is no program here, but you can run the tests with `make test`.

This is a simple image showing how your computer's keyboard is mapped to the Chip8's.
If you read it all through here, thank you a lot! This is one of the projects I'm the proudest about. If you have any doubt or tip, feel free to reach me - you can find my information
on my GitHub profile.