Skip to content

About

Flappy Byte: An original, educational puzzle-arcade hybrid reimagining the classic Flappy Bird experience

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

21 Commits

Folders and files

Repository files navigation

🍗 Flappy Byte — Byte-Sized GBA Adventure

A Game Boy Advance homebrew that brings Flappy Bird from mobile phones to retro handhelds, with a tasty logic twist.

flappy-byte preview

🎮 About

Flappy Bird was a simple mobile hit that made everyone tap furiously to weave a tiny bird through a maze of pipes. It became super popular because the controls were easy, the challenge was real, and every second felt exciting.

Flappy Byte takes that same pulse and drops it into a GBA-style world. Instead of a bird, you control a bouncing byte ball. Instead of only dodging pipes, you also track binary values and logic gates.

This project is a playful shoutout to the famous phone game, showing how a mobile favorite can live on a handheld console with a clever new twist.


🚀 What is Flappy Byte?

In this game, your goal is simple:

  • Press A to jump
  • Keep the byte ball inside the screen
  • Dodge the pipe walls
  • Pass through the pipe threshold to score
  • Watch the current logic gate change the byte value

Each successful pass applies a random logic gate to your byte. That means the game is part timing challenge, part byte puzzle.

🌟 What makes it fun

  • Feels like pure Flappy Bird nostalgia wrapped in a GBA-style retro package
  • Byte values are shown as sprite art, so the game looks like a real handheld homebrew
  • Random logic gates keep the gameplay surprising and replayable
  • Pipes show correct and decoy byte values, so each pass feels like a mini decision

🎯 Gameplay

flappy_byte_gameplay
Low framerate due to file size limit

How to play

  1. Hold the GBA and get ready
  2. Press A to start the game
  3. Press A again to jump
  4. Stay between the pipe openings
  5. Every pipe pass updates your byte score
  6. Avoid hitting pipes or flying off the screen

What you’ll see

  • A homescreen animation before the game begins
  • A byte value on the left side of the screen
  • A random gate (AND, OR, XOR, NOT) on the right
  • Pipes moving left across the screen
  • Score updates when you pass a pipe successfully

🧠 Mechanics and magic

The game is powered by these ideas:

  • source/main.c manages the game loop, screens, input, and scoring
  • source/ball.c handles ball physics and jump movement
  • source/pipes.c drives pipe movement, layout, and collision logic
  • source/bytes.c picks random bytes and gates, applies logic, and draws the on-screen values

Logic gates explained

  • AND: combines your byte with a random byte using bitwise AND
  • OR: combines the bits using bitwise OR
  • XOR: toggles bits with bitwise XOR
  • NOT: flips all bits in your current byte

That means every successful pipe pass can change your byte in a different way.


🛠️ Features

Feature Why it matters
🕹️ GBA-style controls Classic A button jump gameplay
💾 Byte logic Random gates keep each run fresh
🧱 Retro graphics Pixel art built from Piskel source
🎮 Home/restart screens Animated states for start and game over
📊 Score tracking Your score resets on each run, just like an arcade game

📁 Project structure

flappy-byte/
├── Makefile                 # build rules for devkitARM, grit, and ROM output
├── README.md                # this file
├── flappy-byte.gba          # compiled GBA ROM
├── flappy-byte.elf          # linked ELF output
├── flappy-byte.sav          # save/test file from emulator runs
├── hello_world.c            # extra sample source file
├── build/                   # intermediate compiled objects and deps
│   ├── *.o
│   ├── *.d
│   └── flappy-byte.map      # linker memory layout
├── graphics/                # art assets and generated GBA tile data
│   ├── *.piskel             # source art files
│   ├── *.png                # preview/export images
│   ├── *.c, *.h             # generated tile/map/palette data
│   └── *.s                  # optional assembly data files
└── source/                  # game logic and core C code
    ├── main.c               # main loop, screens, input, scoring
    ├── ball.c / ball.h      # ball sprite, jump physics, reset
    ├── pipes.c / pipes.h    # pipe sprites, movement, collisions
    ├── bytes.c / bytes.h    # byte logic, gate handling, drawing
    └── font_8x8.h           # font tile definitions used for score/gate text

Folder details

  • source/ contains the full game logic and programs that run on the GBA.
  • graphics/ contains art sources and the files produced by the asset pipeline.
  • build/ stores compiled objects and dependency files created by make.
  • Root files include the Makefile, ROM output, and supporting source/test files.

⚙️ Build & Run

Prerequisites

  • devkitPro with devkitARM
  • libtonc
  • make and grit
  • A GBA emulator like mGBA or VisualBoyAdvance-M
  • DEVKITARM and DEVKITPRO environment variables configured

Build

cd path\to\flappy-byte
make

Clean

make clean

Run

mGBA.exe flappy-byte.gba

Or open flappy-byte.gba in VisualBoyAdvance-M.


💡 Notes for players

  • The game uses OBJ sprites for the ball, pipes, and byte digits.
  • There is no save system yet — every run starts fresh.
  • The goal is to survive as long as possible and beat your high score.
  • The gameplay is simple, but the byte logic adds a little brainy twist.

🎮 Want more?

If you want, I can help make it even more arcade-like with:

  • sound effects and music
  • a high score screen
  • extra pipe patterns or difficulty modes
  • a better title screen and animated logo

Flappy Byte is a student-made GBA homebrew inspired by the mobile hit Flappy Bird. It’s all about retro fun, fast reflexes, and a little bit of binary magic.

About

Flappy Byte: An original, educational puzzle-arcade hybrid reimagining the classic Flappy Bird experience

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages