Skip to content

Angry Birds by Bobydeluxe, on its own - #211

Merged
Mason363 merged 10 commits into
mainfrom
angrybirds
Oct 25, 2026
Merged

Mason363 merged 10 commits into
mainfrom
angrybirds

Conversation

@Mason363

Copy link
Copy Markdown
Owner

Bobydeluxe's Angry Birds (his PR #184, now gone with his account), with his commit kept. The Chrome edition's 429 levels on real Box2D, its seven birds and the Mighty Eagle, no more freezes. 1,728,260 bytes installed, 30 fps on the N0110. Built on #210 (Turbo Rush), so merge that first.

Bobydeluxe and others added 8 commits October 23, 2026 13:01
The game is rebuilt on Box2D 2.2.1 by Erin Catto (zlib), the version the
original's JBox2D comes from, set up as the Chrome edition sets it up: gravity
20, 33 ms steps of 10 and 10 iterations, its slop, translation and sleep
settings, its materials, damage from the bodies' momentum, explosions, the
weld, revolute and distance joints and the destroy timers. The birds' powers,
the Mighty Eagle, points, stars, the end of a level, golden and Easter eggs
and the unlocking rules follow the game's own code. The levels, pictures and
backgrounds come from its web build, packed by tools/pack.py and
tools/art.py into src/data.bin.

Box2D is cut down to the calculator's memory, its results unchanged: one
arena for bodies, fixtures, contacts and joints (104, 32, 96 and 120 bytes),
a broad phase sized for each level, and the step's islands and constraints
in a work buffer on the stack that the screen's strip shares. Every level
plays in the 133652 bytes custom builds give apps without running out; on
Upsilon seven of the most crowded say they are too big.

The freezes: the build relinked the app with its own linker script and
packer, and the old physics walked unclipped lines off screen. It now links
like the other big games, and plays every level in tools/emu.py on N0110 and
N0120 at 133652 and 107674 bytes without a hang; on the N0110 the most
crowded levels step and draw each frame within 33 ms.

Keys: the arrows aim, OK fires and uses the power, 1 calls the Mighty
Eagle, shift looks at the pigs, Back pauses (Resume, Restart, Levels, How to
play, Quit game, which asks first), Home saves and quits. A guide the first
time. One save format, "ABS1" with its size and a checksum, copied into
angrybirds_saves.py; a damaged one starts afresh.

tests/play.c plays every level to its end, a bot through a sample, random
keys, saves and determinism (make test). The PR's build.py, packer, linker
script, ARM scripts and workflow are gone.
Angry Birds builds like UNO (BUILD_DIR, GAMES_REDIRECT, the apps and clean
rules, BIG_APPS, APP_SPACE_APPS: it installs in 1.73 MB), with a big-game
entry in games.json after Friday Night Funkin', its release line, its
emulator test and the CI's host test.

The game's README, its screenshots, the thumbnail and the GIF are new, made
in tools/emu.py.
# Conflicts:
#	.github/workflows/build.yml
#	Makefile
#	games/games.json
#	tests/test_games.py
#	tools/release.py
Its card, GIF, credit and How to play section.
On Linux g++ took them for C++ even after -x c, so CI's test build failed.
The C files are compiled with cc now, Box2D with c++, and c++ links them.
@Mason363
Mason363 merged commit 9f36633 into main Oct 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant