My first attempt at emulation. This Go project aims to emulate a fully working CHIP8 system complete with graphics, a working CPU, memory, sound, and keyboard input.
Everything works as far as I have tested, except for audio.
Usage: chip8 [--scaling SCALING] [--fps FPS] [--cpuspeed CPUSPEED] ROMPATH
Positional arguments:
ROMPATH Path to CHIP8 ROM file.
Options:
--scaling SCALING, -s SCALING
Pixel scaling. Adjusts size of display. [default: 15]
--fps FPS, -f FPS FPS to run display at. [default: 60]
--cpuspeed CPUSPEED, -c CPUSPEED
Speed of CPU relative to FPS. [default: 10]
--help, -h display this help and exit
--version display version and exit
Keys
1 | 2 | 3 | 4 |
Q | W | E | R |
A | S | D | F |
Z | X | C | V |
map to
1 | 2 | 3 | C |
4 | 5 | 6 | D |
7 | 8 | 9 | E |
A | 0 | B | F |
respectively
Brick | Connect 4 | Pong |
---|---|---|
Rock Paper Scissors | Space Invaders | Tetris |
---|---|---|
- Add more invasive features (e.g. Soft reset, Hard reset, memory manipulation, etc.)
- Implement VIP/Super chip8
- Implement audio (needs a better understanding of goroutines and channels)
-
Thanks to CowGod a.k.a. Thomas P. Greene for their extremely helpful chip8 documentation!
-
Thanks to @Skosulor for their chip8 testing ROM that helped me identify a mistake in the chip8 docs.
-
Thanks to @corax for their chip8 testing ROM that helped me identify an error in my stack and instruction pointer.
-
Thanks to @kripod for his collection of chip8 ROMs. Most of the non-testing ROMs are from here.