A minimalist handheld console powered by an STM32 microcontroller and a Charlieplexed LED matrix, capable of running retro-style games like Flappy Bird, Snake, Pong and Tetris.
- Features
- Hardware Overview
- Software & Build Instructions
- Games Included
- Project Roadmap & TODOs
- License
- Ultra-compact and portable
- Powered by STM32 MCU
- Efficient LED control via Charlieplexing: drives many LEDs using few pins.
- Plays classic games like Flappy Bird, Snake, Pong and Tetris and possibly more
- Open-source under the GPL-3.0 license.
DIAGRAM HERE
-
MSYS2 for Windows
-
-
STM32CubeCLT contains
arm-none-eabi-gccandarm-none-eabi-gdband is strongly recommended for further development. -
For Windows MSYS2 (MinGW64):
pacman -S --needed --noconfirm mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-arm-none-eabi-gdb
-
For Linux:
sudo apt install gcc-arm-none-eabi gdb-arm-none-eabi -y
-
-
-
For Windows MSYS2 (MinGW64):
pacman -S --needed --noconfirm mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
-
For Linux:
sudo apt install cmake ninja-build -y
-
-
-
For Windows MSYS2 (MinGW64):
pacman -S --needed --noconfirm mingw-w64-x86_64-stlink
-
For Linux:
sudo apt install stlink-tools -y
-
-
Optional for further development: STM32CubeMX
-
Clone the repo and navigate into it
git clone https://github.com/chieftain0/CharlieDeck32.git cd CharlieDeck32 -
Build the Debug version of the project
# Configure build files cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug -B build/Debug # Build the project ninja -C build/Debug
-
Build the Release version of the project
# Configure the project cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release -B build/Release # Build the project ninja -C build/Release
The build commands will produce a CharlieDeck32.elf file in the CharlieDeck32/bin/Debug and CharlieDeck32/bin/Release directories.
arm-none-eabi-objdump -f bin/Debug/CharlieDeck32.elfarm-none-eabi-objdump -f bin/Release/CharlieDeck32.elf-
Connect your SWD programmer (ST-Link, etc.)
-
Flash the firmware using your preferred method:
st-flash write CharlieDeck32.elf 0x8000000
or use STM32CubeProgrammer for a GUI approach.
- Flappy Bird — tap to flap, dodge obstacles.
- Snake — collect dots, do not bite yourself.
- PvP Pong — two players, two paddles, one ball.
- Tetris — classic tetris.
- Program the Tetris game.
This project is licensed under the GPL-3.0 license.