https://github.com/omrawaley/chip-8-emulator
A Chip-8 emulator, debugger, and disassembler made in C++ with SDL.
https://github.com/omrawaley/chip-8-emulator
Last synced: 7 days ago
JSON representation
A Chip-8 emulator, debugger, and disassembler made in C++ with SDL.
- Host: GitHub
- URL: https://github.com/omrawaley/chip-8-emulator
- Owner: omrawaley
- License: gpl-3.0
- Created: 2024-08-29T17:27:04.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-08T18:17:33.000Z (about 1 year ago)
- Last Synced: 2025-06-08T19:25:55.093Z (about 1 year ago)
- Language: C++
- Size: 2.34 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chip-8 Emulator
This project was my first foray into interpreters, emulators, and virtual machines. It's a fairly basic Chip-8 emulator with debugging tools that focuses on customizability.
Check out my newer [Chip-8 emulator](https://github.com/omrawaley/chip8-emulator-rust) written in Rust.
## Authors
- [@omrawaley](https://www.github.com/omrawaley)
## Demo

## Features
- Load ROMs from CLI or GUI
- Reset ROMs
- Adjust ROM speed
- Pause ROMs
- Customize display colors
- Take screenshots
- Edit and view memory
- View registers, stack, and timers at runtime
- Adjust program counter while paused
A Chip-8 assembler that I've written can be found at https://github.com/omrawaley/chip-8-assembler.
## Installation
Use the provided `CMakeLists.txt` and compile with `make`.
```bash
cmake CMakeLists.txt
make
```
## Usage
```bash
./bin/chip8
```
### Keys
P - Pause ROM.
M - Open settings menu.
N - Open debug panes.
## Todo
- ~~Migrate from C-style arrays to `std::array`~~
- ~~Allow the user to modify IPS rather than frame time~~
- Add more CLI arguments
- Allow the user to step through the program
- ~~Migrate away from using `tellg()` and instead use `file_size()`~~
## License
Chip-8 emulator - [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)
[Dear ImGui](https://github.com/ocornut/imgui) - [MIT](https://choosealicense.com/licenses/mit/)
[stb_image_write.h](https://github.com/nothings/stb/blob/master/stb_image_write.h) - Public Domain