36 lines
2.4 KiB
Markdown
36 lines
2.4 KiB
Markdown
# chip8
|
|
[](https://git.sr.ht/~redstrate/chip8)
|
|
[](https://github.com/redstrate/chip8)
|
|
[](https://git.ryne.moe/redstrate/chip8)
|
|
|
|
This is a CHIP-8 emulator that I implemented in C++!
|
|
|
|
Right now it only emulates the SCHIP instruction set, but it can already play many modern roms found online. There's a basic memory viewer and debugger available as well.
|
|
|
|
My goal is not to create an extremely fast or optimized emulator, but be easy to read and understand for those who wish to
|
|
create their own CHIP-8 emulator.
|
|
|
|

|
|
|
|
# Usage
|
|
|
|
It should compile out of the box on Windows, macOS and Linux and it includes a basic [dear imgui interface](https://github.com/ocornut/imgui). There's also
|
|
some ROMs included in the repository for convenience. Once you click on a ROM, it will start immediately.
|
|
|
|
## Debugger
|
|
|
|
Using the debugger you can step instruction by instruction, stop or restart the program and see the instruction being
|
|
executed and the surrounding program. Unfortunately it's not very advanced at the moment.
|
|
|
|
## Compiler
|
|
|
|
This emulator also comes with a basic compiler that takes a C-style language as input and can spit out valid CHIP-8 code:
|
|
```
|
|
var count = 3;
|
|
label(main);
|
|
count += 3;
|
|
draw_char(0, 5, count)
|
|
jump(main);
|
|
```
|