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 2 years ago
examples Add example ROMs 2 years ago
res Add icon resource 4 years ago
src Rewrite more code 2 years ago
.gitignore Fix build file dependencies 2 years ago
BuildUNIX.sh Fix build file dependencies 2 years ago
BuildWin64.bat Add BuildWin64.bat script 2 years ago
CHANGELOG Fix build file dependencies 2 years ago
CMakeLists.txt Significantly refactor CHIP-8 CPU emulation code 2 years ago
LICENCE Minor restructure project 4 years ago
README.md Add example ROMs 2 years 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