1986 · Firebird

About this page

This minisite is not complete: 15.7 % of the program is explained. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to continue games/c64/thrust to Silver.

Footprint

Every byte of the C64's 64 KB, one pixel each, 512 to a row. Lit pixels are what this game is: its code, graphics, level data, sound, text, tables and variables, exactly where they sit in memory. Dim areas are screen and working memory; dark is unused.

Status

Tierbronze
Coverage15.7 % of the bytes the game uses have a description
Comments checkedNot measured. No sample of the listing’s comments has been checked. How listings are checked
Build analysedTCI crack of the Firebird release, one packed file on a D64; level 1 in play
Copyagent-draft
Toolshost: macOS arm64 (macOS 26.5.1), emulator: release v3.13.2, v3.13.2-macos-arm64-gui.dmg, disassembler: regenerator2000 0.9.20, publication: Python 3; symbols_export.py and listing.py
Modelclaude-opus-5-5
Kit version0.0.197

How the listing was checked

Every step that measured the Source tab’s comments or made them more accurate, in the order it happened, with the models that did it. Accuracy of the Source explains each step and what the row above makes of them.

StepByWhat it foundOf the listing
Researchclaude-opus-5-5Looked the game up online (its manual, reviews or wiki pages) before reading its code.
Annotationclaude-opus-5-5Wrote the listing’s comments. 15.7 % of the program is described, in 28 comments.
Bronze run: 25 routines and tables named after the sweeps

likely wrong the sample’s range corrected right, or likely right not yet measured

Contributors

Other places to love this game

What the game does, and where we found it

Read this before annotating code. What the game is documented to do, with verification status against the binary. Statuses: open (documented, not found yet), traced (in the code, could not be exercised; say what was tried), confirmed (in the code, consistent with the emulator), live (observed directly), differs (the code does something else). "Absent" is not a status.

Sources:

Features

FeatureStatusWhere
Title picture: the ship towing the pod past a planet, signed "Bob"livethe loading picture, with "TCI" added by the crack (reference/title-loading-picture.png; the original is reference/c64wiki-title.gif); shown by the first depacker, before the game runs
Attract mode: a demo pilot flies level 1 and tows the podlivereference/attract-towing-pod.png, reference/attract-level1.png
Space starts a game from attract modelivelives read 3, then 2 once the ship appears
The ship materialises out of a yellow crosslivereference/ship-materialising.png
A rotates anticlockwise, S clockwiselivethe ship is sprite 7. From pointer $00 (nose up), 25 frames of S gave $0B and 25 of A gave $15, which is 11 steps each way if the set is 32 frames (not counted yet)
Shift thrustsliveleft Shift, 25 frames: sprite 7 rose from line 134 to 120, fuel 1035 to 1030 (reference/thrust.png). The code takes either Shift (thrust_keys, $95CB)
Return firesliveone red dot leaves the nose and travels up (reference/bullet.png); held for 10 frames, only one bullet was seen
Space raises the shield, which costs fuellive25 frames: the ship becomes a green circle, fuel 1035 to 1027 (reference/shield.png)
The shield stops the ship from firingopen
Space also works the tractor beam: hover over fuel or the pod with the shield upopen
Collecting fuel from fuel tanksopena tank marked FUEL stands on level 1
The pod (Klystron pod) on a stiff rod; ship and pod swing under gravity and inertiaopentowed in attract mode (reference/attract-towing-pod.png); the rod is drawn red
Leaving the planet's atmosphere with the pod completes the levelopen
Gravity and inertia act on the shiplivewith no input from play.vsf, sprite 7 was still on line 134 after 25 frames and on line 148 after 50: the ship hangs for a moment after it appears, then falls
Touching the cave walls with the ship or the pod destroys itopen
Gun turrets (limpet guns) fire at the ship and die to one shotopenone stands on level 1
Shooting the reactor (power plant) disables the guns for a whileopenthe domed building on the right of level 1
Too many shots set the reactor critical: the planet blows up 10 seconds lateropen
Escaping a critical reactor with the pod scores a 2,000-point bonusopen
Doors opened by shooting a switch, on later levelsopen
Six levels, then repeated with reversed gravity, then with invisible walls (seen with the shield up), then bothopen
A message after levels 24, 48 and 72openthe C64 wording is not known
Fuel runs out: the game endsopen
Three lives (two in reserve), an extra life every 10,000 pointsopenthree seen at the start
Status bar: fuel, lives and scoreliveat the top, in its own screen split (orientation.md)
F1 sound off, F3 sound ontracedsound_keys ($977D): F1 stores $FF in $A2, F3 stores 0. Not heard: the emulator's sound was not listened to
F5 pause, F7 continuelivepause_keys ($975F) runs on about two passes in three, so F5 must be held: 5 frames were missed, 10 paused the game (thrust then moved nothing) until F7. Needs $27 = 0
Music by Rob Hubbardopennot heard yet

Beyond the documentation

Found in the code, not in the manual.

FeatureStatusWhere
The BBC Micro version's key page, with its MODE 7 and teletext codes, kept in the C64 programtracedbbc_keys_text ($B9DD), printed by show_bbc_keys_page ($B74B), which nothing traced so far calls; the crackers added their credit to it
Level messages "Mission Complete", "No Bonus", "Planet Destroyed", "Reverse Gravity", "Invisible Landscape"traced$9516
A high score table, "Top Eight Thrusters", with name entry ("Congratulations", "Please enter your name")livethe table shows between games (reference/high-score-table.png); name entry not reached
"Out of fuel" messagetraced$B9D0
RUN/STOP is testedtraced$B269, $B3E0; what it does is not read yet (the BBC page lists ESCAPE to quit)

Open questions

The symbol map for this game is symbols.json; the listing behind the Source tab is listing.json. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.