CHIP-8 emulator with threading
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Jake Wakeling cd643ef6f7 Rewrite more code 10 months ago
examples Add example ROMs 10 months ago
res Add icon resource 4 years ago
src Rewrite more code 10 months ago
.gitignore Fix build file dependencies 10 months ago
BuildUNIX.sh Fix build file dependencies 10 months ago
BuildWin64.bat Add BuildWin64.bat script 10 months ago
CHANGELOG Fix build file dependencies 10 months ago
CMakeLists.txt Significantly refactor CHIP-8 CPU emulation code 10 months ago
LICENCE Minor restructure project 3 years ago
README.md Add example ROMs 10 months ago

README.md

C8E

C8E is a threaded emulator for the Chip-8 platform written in C++. C8E is designed to be lightweight, efficient and threaded, while being cross-platform and supporting all possible CHIP-8 features.

CHIP-8 ROMs in the examples directory are not mine.

Usage

C8E is mostly being developed on x86-64 Linux with Clang.

Dependencies

  • CMake >= 3.12, to build
  • SDL2, to build and run

Building

UNIX

To build C8E on UNIX, run BuildUNIX.sh or

cmake -S . -B build && cmake --build build

Windows

To build C8E on Windows, run BuildWin64.bat or BuildWin32.bat

Include and Lib folders must be placed either in the project root directory, in C:/Programs/SDL2 (on Windows), or CMakeLists.txt must be edited to include the correct paths. These directories must be added under the link_directories and target_include_directories options.

To run the compiled binary, SDL runtime libraries must also be installed.

Running

Note that C8E was initially written on Windows, and as a result, does not currently properly 100% of the time on Linux.

Run ./bin/c8e *file*, where file is a CHIP-8 ROM.

A C8E window will open, and CHIP-8 controls are mapped where 1 maps to the top left CHIP-8 key (1), 4 to the top left CHIP-8 key (C), Z to the bottom left CHIP-8 key (A), and so on.

  QWERTY  ->  CHIP-8
┌─┬─┬─┬─┐    ┌─┬─┬─┬─┐
│1│2│3│4│    │1│2│3│C│
├─┼─┼─┼─┤    ├─┼─┼─┼─┤
│Q│W│E│R│    │4│5│6│D│
├─┼─┼─┼─┤ -> ├─┼─┼─┼─┤
│A│S│D│F│    │7│8│9│E│
├─┼─┼─┼─┤    ├─┼─┼─┼─┤
│Z│X│C│V│    │A│0│B│F│
└─┴─┴─┴─┘    └─┴─┴─┴─┘

Meta

Copyright (C) 2019, Jakob Wakeling
All rights reserved.
OMKOV Permissive Licence