I wanted to get into emulator development, online it’s recommended to start with Chip-8 to understand the basics. Since I hadn’t used C# in a while I decided to use it for practice, to get OpenGL bindings I used OpenTK. Avalonia was added later to improve usability.
Resources
- Tobiasvl’s blog - most info about the emulator and how to implement it comes from here
- Cowgod’s technical reference - used as reference for all the instructions (some descriptions don’t satisfy the emulation quirks)
- Timendus test suite - very useful to check if the emulator is running as intended
- Avalonia OpenTK example - how to integrate Avalonia UI with OpenTK
- Chip8 roms - various roms for the emulator
Keypad
1-1
2-2
3-3
4-C
Q-4
W-5
E-6
R-D
A-7
S-8
D-9
F-E
Z-A
X-0
C-B
V-F
left - keyboard, right - original keypad
O
restarts the emulator
P
pauses the emulator
The source code can be found here.