Skip to content

Nedriia/Chip8

Repository files navigation

Chip-8

An emulator for the CHIP-8, SUPER-CHIP, and XO-CHIP platforms, developed in C++.
This project is cross-platform and supports both Windows and Linux.

Screen 1 Screen 2 Screen 3
Screen 4 Screen 5 Screen 6

Key Features

Passes the complete Timendus test suite

  • Full Instruction Set Support: Exhaustive implementation of all opcodes for CHIP-8, SUPER-CHIP (S-CHIP), and XO-CHIP.
  • Configurable Quirks: Highly adaptable CPU behavior to ensure maximum compatibility with the wide variety of legacy ROMs.
  • Database Integration: ( https://github.com/chip-8/chip-8-database )
    Connects to the CHIP-8 Database to automatically adjust:
    • Tickrate: Optimized timing for each specific game.
    • Display: Accurate resolution and color palettes.
    • Input Mapping: Custom control schemes per ROM.
  • Flexible Display Modes: DEBUG_INFO flag: Switch between built-in debugger view and full screen.
  • Faithful Audio: Accurate audio emulation integrated via the miniaudio library.
  • Built-in Debugger: Advanced debug interface for real-time analysis of the emulator state:
    • Disassembler: Real-time visualization of the executing machine code.
    • RAM Monitor: Live inspection of the system memory.
    • Registers: Monitoring of CPU register states at every cycle.
    • Breakpoint Edition.
  • Rendering: OpenGL (via GLAD ) and window/input management via GLFW.

Technical Stack

Prerequisites

  • A C++ compiler supporting C++20 or higher.
  • CMake.
  • VLD ( If you wish to use Visual Leak Detector ( VLD ) to track memory leaks, you can enable it by passing the -LEAK_DETECTOR_ENABLE=ON flag during the CMake configuration step. The CMakeLists.txt is configured to handle the integration automatically )

Building

  1. Clone the repository:
    git clone https://github.com/Nedriia/Chip8.git
    cd Chip8
    git submodule update --init --recursive
  2. Build:
    cd build
    make

About

Chip8 emulator

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages