Skip to content

A Chip-8 interpreter with heavy emphasis on being as cross-platform as humanly possible

License

Notifications You must be signed in to change notification settings

Eggbertx/OmniChip-8

Repository files navigation

OmniChip-8

9 tests passed

OmniChip-8 is a Chip-8 emulator with the goal of making it as cross-platform as possible, with as little platform-specific assembly code as possible.

Building instructions

Desktop (SDL)

Run python make.py. In Windows, it is able to use Visual Studio (via the msbuild command) or mingw.

Screenshot

SDL screenshot

Using Visual Studio

Visual Studio should automatically download the SDL2 nuget packages when you build the project.

Using msbuild (Developer Command Prompt for VS 20XX)

If you have NuGet installed, you can run nuget restore to install the SDL2 nuget dependency packages. Otherwise, you will either need to install NuGet or open OmniChip-8.sln in Visual Studio and build it once to have it download the packages.

After you have them installed, you can run python make.py build

Using mingw

Run pacman -S base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2 before using make.py.

Desktop (curses, UNIX-like OSs)

Run python make.py curses

Screenshot

ncurses screenshot

Commodore 64 (requires cc65)

Run python make.py c64

Screenshot

Commodore 64 screenshot

GameBoy (requires z88dk)

Run python make.py gb

Screenshot

GameBoy screenshot

sim65 (requires cc65)

Run python make.py sim6502

Testing

To test OmniChip-8, run ./make.py test. This will build and run the test suites, and generate a test coverage report which you can view in a browser. This requires cmake, ctest, and lcov.

If you want to just run the tests without generating a coverage report (removing the need for lcov), run ./make test --no-coverage.

Supported platforms

Mostly done

  • Desktop SDL
  • WebAssembly
  • (n)curses
  • Commodore 64
  • GameBoy
  • sim65

Planned

  • TI-8x
  • Apple II
  • DOS

Maybe/hopefully

  • NES
  • Sphere, via WebAssembly/Emscripten
  • Magic-1
  • Bare metal x86

Credit

All of the games in games/ are public domain, and came from here except for omnichip8, oc8, and their respective .c8 sources. Some of the opcode comments in src/chip8.c come from Cowgod's Chip-8 Technical Reference