This is an old revision of the document!
This project is a portable video game console featuring a minimalist hardware architecture. It allows users to play 8-bit style games loaded directly from a MicroSD card, which acts as a game cartridge.
The primary goal is to build a fully functional gaming system from scratch. I wanted to do something that I would enjoy using and that I could really use from time to time. I'm also hoping other people might be interested in this console and try it out.
The project is heavily inspired by classic 8-bit retro systems like the original Game Boy. I always enjoyed Nintendo games, especially the ones from the old retro consoles, and I always enjoyed emulating them on my phone to play. So, the idea was to recreate that nostalgic experience using accessible, modern microcontroller components.
For others, this project serves as an example of simple embedded programming that could be replicated with cheap components. For me, it is an opportunity to deeply understand hardware-software interfacing, memory management, and timing optimization on AVR microcontrollers. The practical utility of the console is simply enjoying gaming and having fun.
The user interacts with the console via an analog XY joystick and 2 standard buttons. The microcontroller reads these inputs (using ADC for the joystick and GPIO for the buttons) and applies software debouncing.
The core of the system relies on a shared SPI bus. Because the microcontroller has limited RAM, the game logic and graphical assets are stored on the MicroSD card. The system uses a strict Chip Select multiplexing routine to read game data sectors from the SD card, process them, and immediately push the resulting pixel framebuffer to the Nokia 5110 LCD over the same SPI lines. Audio is handled concurrently via a hardware timer generating variable PWM signals sent to a passive piezo buzzer.
| Component Name | Qty | Role |
|---|---|---|
| AVR Development Board (ATmega328P) | 1 | Main microcontroller, handles game logic and shared SPI bus |
| Nokia 5110 LCD Display | 1 | Renders game graphics via SPI (3.3V logic) |
| MicroSD Card Adapter Module | 1 | Acts as the cartridge reader for raw game binaries |
| Logic Level Converter (3.3V to 5V) | 1 | Protects the 3.3V display from 5V logic signals |
| XY Analog Joystick Module | 1 | Provides directional movement input (D-pad) via ADC |
| 16mm Tactile Push Buttons | 2 | Action inputs (A and B) read via GPIO |
| Passive Piezo Buzzer Module | 1 | Synthesizes 8-bit sound effects using PWM |
| Breadboard & Jumper Wires | 1 set | Used for prototyping and physical hardware connections |