zmeadows / chip8

A cross-platform CHIP-8 emulator written in C++.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BUILDING

Follow the typical cmake build procedure:

mkdir build
cd build
cmake ..
cmake --build . --config Release --parallel N

where N is the number of build threads you wish to use.

The following cross-platform libraries are used (and included):

INPUT

This emulator uses a square block of 16 keyboard keys for input:

1234
QWER
ASDF
ZXCV

CODE OVERVIEW

Emulators tend to de-couple nicely into various modules with their own local state. In this implementation, modules are relegated to separate namespaces/files and the local state is kept within an anonymous namespaces inside each module. This is akin to static variables in C. If it helps you can imagine each module as akin to a 'singleton' class in more traditional OOP nomenclature.

VERSION HISTORY

0.1

Emulator passes all tests in BC_test and corax89. OpenGL/glew/glfw screen display working correctly. No sound or memory/register/disassembly visualization yet.

0.2

Beep sound effect now included (thanks to miniaudio!).

0.3

Multi-threaded support added for handling rendering, audio, timers and instruction cycles in four separate threads.

0.4

Multi-threaded support removed (it wasn't necessary). Simplified main loop and user input handling.

About

A cross-platform CHIP-8 emulator written in C++.

License:MIT License


Languages

Language:C++ 86.4%Language:Roff 8.5%Language:CMake 5.1%