• Stars
    star
    108
  • Rank 321,259 (Top 7 %)
  • Language
    C
  • License
    MIT License
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A custom-built CHIP-8 hand-held gaming console powered by a STM32 microcontroller.

CHIPnGo

Current Status

Recently I've taken a serious interest in embedded development, so I decided for my first project I would attempt to port my CHIP-8 emulator to a STM32 microcontroller in order to eventually build a CHIP-8 hand-held gaming console. Since this is being done as a learning experience, I also decided I would do this bare-metal with no libraries and write all drivers from scratch. While this is proving to be slow and extremely frustrating at times, it has also been very insightful and I've already learned a ton in such a short time.

See it in action!

Build Guide

If you are interested in building your own CHIPnGo, check out this guide.

Development Blog

If you are interested in reading about my development of the project, some challenges I faced, and the bone-headed design decisions I made along the way due to my inexperience, check out my dev blog.

Features

ToDo

  • Improve startup menu for user to select ROM via SD card (make a bit more pretty)
  • Improve startup splash screen (want something cool and animated)
  • Iron out minor firmware bugs

Limitations

Although my original emulator also has full support for XO-CHIP roms, I decided to focus on just CHIP-8 and S-CHIP for now for several reasons:

  • XO-CHIP ROMs expect up to 64kb of memory, as opposed to 4kb expected by original CHIP-8 ROMs.
  • XO-CHIP supports up to three colors, which would mean needing to move beyond a simple monochrome display.
  • XO-CHIP supports variable frequencies/tones whereas CHIP-8 ROMs can only produce a single frequency, which makes handling sound simple.

CHIP-8 supports 16 keys for input, however for design purposes, the console only has 6 buttons. However, most games only use a few buttons so this isn't too much of an issue.