Awesome
Flappy Bird for Nintendo 64
Tap A to flap your wings and fly! The hit iOS game from 2013 is now available on N64!
Navigate a bird through a series of gaps and try not to hit the walls! This simple, one-button game is so easy to play that everyone will want a turn to see how far they can go!
Overview
This project is intended to be a complete example of a simple yet non-trivial game built for Nintendo 64 using the open source LibDragon SDK.
This project is considered "done", and is no longer being actively developed. It may receive occasional maintenance updates to ensure the code remains compatible with upstream changes in LibDragon.
Features
- Faithful recreation of the original iOS game
- N64 RDP-accelerated graphics rendering
- N64 RSP-accelerated audio mixing
- 60FPS gameplay at 320x240 resolution
- Parallax background scrolling
- Rumble Pak support
Known issues
- High score is not saved across resets
- Hardware reset briefly shows an exception handler screen
Intentional omissions
- Bird sprite does not rotate
- Night sky is missing stars
- Medals do not sparkle
- Screen does not shake upon death
Play the game
Download or compile the ROM file and load it as you would any other N64 ROM.
This ROM file has been tested to work on real Nintendo 64 hardware using the EverDrive-64 by krikzz and 64drive by retroactive.
This ROM file should also be compatible with low-level, accuracy-focused Nintendo 64 emulators such as Ares, CEN64 and MAME.
Due to the usage of LibDragon, it is an explicit non-goal of this project to suppport emulators. The goal was to make a game for Nintendo 64, so tautologically:
If it works on the real console but not on the emulator, then the emulator is insufficiently accurate.
Build the ROM
Run make
to produce a ROM file from this source tree.
Dependencies
A known-good version of LibDragon will be checked-out as a Git submodule and built as part of the Makefile process.
If you already have a toolchain, the Makefile will respect your existing N64_INST
environment variable. Otherwise, the toolchain will be built as part of the project.
See the LibDragon toolchain script for information on prerequisites and dependencies.
Configuration
The Makefile can be configured using the following environment variables:
N64_INST
— Specify where your MIPS toolchain is installed. If unspecified, the toolchain will be built in-project, which may take a while.V=1
— Enable "verbose" Make output; useful for troubleshooting.GITMODULES=0
— Disable updating Git submodules when building; useful for experimenting with modifications to and alternate versions of LibDragon.
Versioning
The filename of the ROM will be derived from the current "ROM version". If the project repository is "clean", it will reference the current Git tag or commit hash. If the project has uncommitted changes, the version will be marked -dirty
(indicating that it is unsuitable for release).
Proper releases will be tagged as vX.Y
where X is a major version number and Y is a minor version number.
License
This project's source code is BSD licensed (c) 2017-2022 Christopher Bonhage.
The graphic and sound assets are subject to the original work's copyright: Flappy Bird (c) 2013 .Gears<br /> These assets are used for non-commercial purposes with love, care, and respect, but without permission.
LibDragon is Unlicensed public domain software.
"Nintendo 64" is a registered trademark of Nintendo used for informational purposes without permission.