Skip to content

ZachSoles/Chip8-Emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ•ΉοΈ CHIP-8 Emulator

A simple CHIP-8 emulator written in C++ using SDL2. This emulator loads and runs CHIP-8 ROMs, such as the classic IBM Logo, with support for basic opcode interpretation, input handling, and graphics rendering.


πŸ“Έ Features

  • βœ… 64x32 monochrome display
  • βœ… SDL2-based rendering
  • βœ… Keyboard input support (mapped to CHIP-8 keys)
  • βœ… Basic instruction set implemented
  • βœ… IBM Logo ROM runs and displays correctly
  • πŸ› οΈ Easy to extend with sound or debugger support

πŸ“‚ Project Structure

chip8-emulator/
β”œβ”€β”€ src/ # All source files
β”‚ β”œβ”€β”€ main.cpp
β”‚ β”œβ”€β”€ cpu.cpp/h # Core CPU emulation
β”‚ β”œβ”€β”€ display.cpp/h # Graphics output
β”‚ β”œβ”€β”€ input.cpp/h # Input handling
β”œβ”€β”€ README.md # This file
└── .gitignore

πŸš€ Getting Started

πŸ”§ Prerequisites

  • C++17 or newer
  • SDL2

⌨️ Controls

CHIP-8 uses a 16-key hexadecimal keypad:

mathematica Copy Edit Original: Mapped to Keyboard:

1 2 3 C 1 2 3 4
4 5 6 D Q W E R
7 8 9 E A S D F
A 0 B F Z X C V You can adjust key mappings in input.cpp if needed.

πŸ“Œ TODO

  • Add sound (FX18, FX07)
  • Add full instruction set
  • Add debugging options (step mode, disassembler)
  • Add unit tests

πŸ“œ License

This project is open-source and licensed under the MIT License.

πŸ™Œ Acknowledgments

  • Cowgod's CHIP-8 Technical Reference
  • SDL2 for graphics/input
  • Community contributions to CHIP-8 documentation and ROMs

About

Emulator for Chip-8

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages