CHIP-8 and Super-CHIP emulator core.
- Emulator core compatible with CHIP-8 and Super-CHIP games.
- Written as a library in standard C99 with no other dependencies.
- Easy to port, contained in just two files:
chip8.h
andchip8.c
- Minimal requirements, can run on anything with a 128x64 display and ~5KB of RAM available.
This repository only contains the emulator core. Additional frontend code is required to run on a specific platform.
chip8swemu has been ported to a wide variety of platforms, from small microcontrollers to desktop computers. Here is a list of some of these ports, you can use them as an example of how to port it to your own device:
Repository | Author | Platform |
---|---|---|
chip8swemu-sdl2 | AlfonsoJLuna | Desktop (Windows, Linux) |
chip8swemu-gaw | AlfonsoJLuna | Game & Watch: Super Mario Bros. |
chip8stm32 | AlfonsoJLuna | STM32F103CB (Custom PCB) |
Have you ported chip8swemu to another device? Feel free to send a PR to add it here.
The core provides two configurable options: Compatibility Mode
and Vertical Wrap
, both disabled by default. When these options are disabled, the core emulates the Super-CHIP 1.1 behavior, which is the most extended and supports most modern CHIP-8 and Super-CHIP games. For old games that depend on the different behavior of the original COSMAC VIP interpreter, these two options should be enabled.
Known games that require the Compatibility Mode
and Vertical Wrap
enabled:
- Animal Race [Brian Astle].ch8
- Lunar Lander (Udo Pernisz, 1979).ch8
There are some other quirks not implemented because they also differ between original interpreters and no known game depends on them. These are well documented here.
Useful resources and documentation for developing a CHIP-8 emulator: