- Notifications
You must be signed in to change notification settings - Fork0
IlanVinograd/CHIP-8
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A CHIP-8 emulator developed in modern C++ using WinAPI and GDI+. This project is designed for Windows systems and features a responsive graphical interface, interactive controls, and built-in debugging tools. Built from the ground up to serve both as a learning platform and a technical showcase of low-level programming.
The following GIFs demonstrate a few classic games running on this emulator:
The emulator maps your keyboard to the original CHIP-8 hexadecimal keypad as follows:
CHIP-8 Keypad Layout:
1 | 2 | 3 | C |
---|---|---|---|
4 | 5 | 6 | D |
7 | 8 | 9 | E |
A | 0 | B | F |
Keyboard Mapping:
1 | 2 | 3 | 4 |
---|---|---|---|
Q | W | E | R |
A | S | D | F |
Z | X | C | V |
- Windows OS only – This emulator uses native WinAPI and GDI+ for rendering and user interface.
- No additional dependencies – A C++17-compatible compiler and
make
utility are required (e.g., MinGW or MSYS2).
This emulator is not compatible with macOS or Linux due to its use of Windows-specific APIs.
To run a CHIP-8 ROM, click theLoad button to select a.ch8
file. Once loaded, clickStart to begin execution:
Open a terminal and navigate to the
src
directory:cd src
Build and launch the emulator:
make
To clean up generated files:
make clean
- Modular Design:
Chip8
: System coordinatorCPU
,Memory
,Display
: Core functional modules
- User Interface:
- Real-time visualization of memory, stack, and registers
- Custom GDI+ rendering
- ROM loader and UI buttons for control (Start, Pause, Reset, Load)
- Input Handling:
- Fully supports the CHIP-8 hexadecimal keypad layout
- Audio Feedback:
- Sound playback via WinMM
- Cowgod's CHIP-8 Technical Reference
- CHIP-8 on Wikipedia
- CHIP-8 Instruction Set
- Guide to making a CHIP-8 emulator
- Games For CHIP-8
This emulator was created as a practical exploration of low-level development, real-time graphics rendering, and system emulation using Windows-native technologies. It serves both as a hands-on learning tool and a demonstration of competency in systems programming and emulator architecture.
This project is licensed under the MIT License. Contributions and feedback are welcome.