Skip to content

gameboy-nova/nova-main

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NOVA

๐Ÿ“œ Overview

"NOVA Gameboy" is a custom-built, retro-inspired handheld console powered by the STM32F401 "Black Pill" and written entirely in 32-bit ARM Assembly.
Featuring a vibrant 2.8" TFT display, physical gamepad input, and a sleek in-system game launcher, it brings classic games like Snake, Pong, and Space Shooter to life with bare-metal performance and pixel-accurate graphics.

Engineered without an OS or high-level libraries, this project is a full demonstration of real-time embedded systems, showcasing manual hardware control, modular game architecture, and smooth 2D renderingโ€”all running directly on the ARM Cortex-M4.
Itโ€™s not just a consoleโ€”itโ€™s a hands-on journey into the world of low-level game development and embedded design.


๐ŸŽฎ Game Gallery

Click on any game below to go to their corresponding repo.

Ping game Painter Fruit Basket Double Snake Snake Shooter


๐Ÿงฐ Hardware Requirements

Component Specification
MCU STM32F401RCT6 (Black Pill โ€“ ARM Cortex-M4 @ 84 MHz)
Debugger ST-Link V2 (for programming and debugging)
Display ILI9341 (2.8" TFT LCD โ€“ parallel interface)
Breadboards 80-pin and 40-pin solderless breadboards
Input Push buttons and switches (physical GPIO input)
Wiring Jumper wires (male-to-male and male-to-female)
Resistors Assorted values (used for pull-up/pull-down configs)
Audio Passive buzzer (for simple sound output)

๐Ÿ”Œ Wiring & Breadboard Layout

Here's an overview of the wiring and breadboard layout for this project:

7a7ee16b-1ccd-4f07-a8cd-5b9e4395bf2c


๐Ÿ”ง Development Setup

  • Programming Language: 32-bit ARM Assembly
  • IDE: Keil ยตVision
  • Toolchain: Keil ARM Compiler
  • Display Interface: GPIO (FSMC or bit-banged parallel)
  • Input Interface: GPIO with polling or interrupt support

๐Ÿ“‹ Features

  • ๐ŸŽฎ Dual-player gamepad input system with independent controls
  • ๐Ÿš€ Menu-driven multi-game launcher with instant switching
  • ๐Ÿ–ผ๏ธ Custom 2D graphics engine with pixel-perfect rendering
  • ๐ŸŽจ Sprite and UI engine for smooth animation and effects
  • ๐Ÿงฉ Modular architecture with isolated game modules
  • ๐Ÿ”„ Seamless in-game switching without system reset
  • โฑ๏ธ Hand-tuned delay and timing routines for consistent gameplay
  • โš™๏ธ Direct register-level control for all hardware I/O
  • ๐Ÿ”ง Fully bare-metal with zero OS or high-level libraries
  • ๐Ÿงช Expandable design for future games and features

๐Ÿš€ Getting Started

Set up and play in just a few steps:


๐Ÿ“ 1. Clone the Repository

Download the project by cloning this repository:

git clone https://github.com/gameboy-nova/nova-main.git

๐Ÿ’ป 2. Open the Project

Launch Keil ยตVision, then open the (Gameboy.uvprojx) and you will be greeted with this window.

โš™๏ธ 3. Build the Firmware

Click the Build button to compile the project using the Keil ARM Compiler.

๐Ÿ› ๏ธ 4. Connect Your Board

Plug the STM32F401RCT6 (Black Pill) into your PC using the ST-Link V2 programmer.

๐Ÿ” 5. Flash the Board

Use the Flash button to upload the compiled binary to the STM32 via ST-Link.

๐ŸŽฎ 6. Play the Games!

After flashing, the console boots into the game launcher. Use the physical push buttons to navigate and play!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •