Menu navigation: Press H to show code history Press I to import a rom. Press L to load a program from the program list. Press M to show memory. Press O to show options. Press P to show/hide the program list. Press Space to pause/unpause the interpreter. Press 0 to reset the interpreter. Press 9 to change pixel colors (Render mode 1 only) Options navigation: Render mode: 1 = Pen (Faster, looks worse.), 2 = Stamp (Slower, looks better.) Compatibility mode: 1 = COSMAC VIP, 2 = Modern Input: keyboard CHIP-8 1234 123C QWER 456D ASDF 789E ZXCV A0BF Use these colors to make it look like my pfp: 0: 0x3F48CC 1: 0x00A2E8 This project contains 1,896 blocks, 39 less than the previous version. Log: 6/15/2024 (V0.1.0): Finally, the draw instruction works (so I thought). 6/16/2024 (V0.1.1): Removed a single unnecessary if block. 6/16/2024 (V0.1.2): Added overflow prevention. 6/17/2024 (V0.1.3): Fixed instruction 7xkk, added screen wrapping to draw instruction. 6/19/2024 (V0.2.0): Added program list. 6/21/2024 (V0.2.1): Fixed some instructions, added compatibility settings. 6/21/2024 (V0.2.2): Fixed screen wrapping. 6/22/2024 (V1.0.0): Draw instruction finally works (for real this time). 6/22/2024 (V1.0.1): Renderer is no longer triggered by broadcasts (@oxiti8 said that can cause problems). 6/23/2024 (V1.0.2): Changing the cycles per frame now works, added pause and restart features. 11/4/2024 (V1.0.3): Added option to add custom pixel colors (Render mode 1 only). 11/27/2024 (V1.0.4): Fixed changing pixel colors being mapped to the same key as B on the keypad. 3/11/2025 (V1.1.0): Switched to broadcast based interpreter instead of using if statements, added Fx33 instruction. 3/13/2025 (V1.1.1): Fixed Cycles per frame implementation, fixed clear screen instruction (it would take multiple frames to finish erasing (no "run without screen refresh"), causing future frames to partially disappear), programs list now appears by default. 8/22/2025 (V1.1.2) Fixed some instructions. (I've got my eyes on you, 7xnn.) 8/23/2025 (V1.1.3) Fixed a few more instructions (I'm not stopping until it fully passes corax+), changed font loading method. 8/24/2025 (V1.1.4) Revised bitwise operations, fixed Fx55 and Fx65, removed old dec/hex/bin converter. 9/26/2025 (V1.1.5) Revised overflow detection. 3/25/2026 (V1.1.6) Fixed 8xy1, 8xy2, and 8xy3.
Notes: All instructions except Fx65 seem to be working. Credits: http://devernay.free.fr/hacks/chip8/C8TECH10.HTM https://tobiasvl.github.io/blog/write-a-chip-8-emulator/