1986 · Hewson Consultants

About this page

This minisite was contributed by air, chunkypixel. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/uridium with me to Gold.

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

Tiersilver
Coverage100 % of the bytes the game uses have a description
Comments checkedNot measured since its audit. The last sample of 60 comments had 8 wrong, so between 7 and 24 % of the listing’s comments are likely wrong; every comment was then audited, and no sample has measured the listing since. How listings are checked
Build analysedHewson's disk release, a GCR image of the protected original (disk name gma240286); booted through a copy with track 39's sync marks restored (orientation.md)
Copyagent-draft
Toolsemulator: release v3.13.2, v3.13.2-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20 (cargo install from crates.io), host: Linux x86_64, Ubuntu 24.04, no display (cloud container), node: 22, browser: Chromium from Playwright 1.56.1 (headless), for the page check
Modelclaude-opus-5-5
Kit version0.0.122

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.
Sample 1claude-opus-5-58 of 60 comments wrong, so between 7 and 24 % of the listing is likely wrong. All 8 were then corrected.
Audit 1claude-opus-5-5Checked all 661 comments and corrected 13.
every comment read against its neighbours and the bytes by the lead
Annotationclaude-opus-5-5Wrote the listing’s comments.
a second pass over the routines behind the take-off, the waves, the homing mines, the stars and the shots, each ported and its port checked against the game's code in a 6502 simulator: eight comments corrected (the vaporising's row offsets and direction, the fighters' entry and edge handling, the shot codes fighters test, when mines are launched and what $6C counts) and four completed
Annotationclaude-opus-5-5[1m]Wrote the listing’s comments. 100 % of the program is described, in 663 comments.
the status font's last 544 bytes, which no label reached, described in one new comment; the comment on the unused bytes at $16B4 corrected (what $88 counts) and completed (they run on into the landing check's flashing)

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
Joystick only, in either port (manual); fire starts the gameliveread_stick $B019 ANDs both ports; fire on port 2 started every game in this run
Title-sequence options: F1 one player one joystick, F2 two players sharing one joystick, F3 two players two joysticks, F5/F6 music volume up/down, F7 colour, F8 monochrome (manual, C64-Wiki)liveoption_keys $2342, volume_keys $B31B, colour_keys $23B5; every key tried in the recorded session (icons, "Volume 15", "Colour", "Blck-Whte"); F3 makes next_turn give each player a port
Run/stop pauses; fire or run/stop restarts; run/stop then clr/home abandons the game (manual)confirmedpause_check $2B6D; the pause shown live in a two-player game (reference/paused-two-players.png); CLR/HOME jumps to title
Up/down sets the Manta's position above the Super-Dreadnought; left/right accelerate and decelerate (manual)livemanta_vertical $2576, manta_speed $2635; vertical speed -3 to +3, speed -8 to +8 (manta_limits_table)
Below a minimum speed the Manta half-loops and half-rolls to face the other way; the manoeuvre lifts it above the surface for a while, over missiles and mines (manual, C64-Wiki)livemanta_limits $268C asks for it below speed 2; height $3D rose from $10 to $1E and back, frames $60-$66 and $51-$59, out facing left; bullets and mines hit only below height $14 (bullet_move, mine_move)
Fire held with up or down rolls the Manta 90 degrees to pass narrow gaps (manual)liveafter seven frames of fire (fire_control), up rolled it from frame $41 to edge-on $4D; edge-on frames test only the Manta's own row of characters, level frames the rows above and below its middle too (collide_shapes)
The Manta reverses out of its transporter at the start of each Dreadnought (manual)livelaunch_sequence $2839; reference/play-level1-launch.png
Fifteen Dreadnoughts, one per planet, each after a different metal (manual)confirmedfifteen map lists, wave lists and names: Zinc, Lead, Copper, Silver, Iron, Gold, Platinum, Tungsten, Iridon, Kallisto, Tri-alloy, Quadmium, Ergonite, Galactium, Uridium (level_names_a $E070, level_names_b $EF55); after the fifteenth the game goes back to the first, harder (life_over)
Meteor shields and communications aerials must be avoided (manual)tracedflying into a wall character $80-$8F destroys the Manta (manta_collide $27D5); which drawn obstacles are the shields and aerials was not matched character by character
Fighters attack in waves; a bonus when every ship of a wave is destroyed, 100 per wave (manual)livenew_wave $1A98, wave_control $1A75 counts a formation only if every fighter was shot; paid at 100 each at the end (live: three formations, 300)
Homing mines materialise over flashing generator ports (manual)livespawn_mine $1F7F, mine_appear $1F62, mine_move $2021; watched launching only during waves, homing for 132 frames on Zinc and swinging through the Manta's height; ports $59-$5B flash through port_colours (draw_ports)
Score table: small explodable surface feature 10, large 25, enemy ship on runway 100, enemy fighter 100-1000 (manual)confirmedfeature_score $3486: single characters 10, 2 x 2 targets 25, 3 x 3 targets 100; fighters 100-1000 by wave type (type_score)
A bonus Manta every 10,000 points (manual)liveadd_score $19F5: 9,900 + 1,300 took the lives from 3 to 4
"Land now" appears when the defences are cleared; land by flying flat left to right over the master runway at the right-hand end (manual)live"Land now!" when the level's wave list is used up (landing_check $166D); landed over the runway's end $6F facing right and level, not facing left
Fuel rod chamber after landing: fire at the right moment selects a bonus or "Quit"; it must be quit before the countdown at the top reaches zero (manual); first step worth 900 + 100 x level, each later step 100 x the time left (C64-Wiki)livefuel_rod_chamber $114E: the first offer was 1000 at level 1; each offer is the countdown plus the bonus so far, in hundreds; a countdown run out costs a life (out_of_time)
After take-off, the Dreadnought vapourises and its remaining surface can still be strafed (manual, C64-Wiki)livevaporise_column $16D2 (reference/dreadnought-vaporising.png); recorded frame by frame: the vaporising moves 8 pixels a frame to the Manta's 7 and overtakes it near column 360 (reference/takeoff-edge-ahead.png); fire works during the flight (frame_autopilot calls fire_control)
Two players take turns (C64-Wiki)livenext_turn $0BA1; a two-player game in the recorded session, each with its own score, lives and level
A hall of fame of eight scores with initials (C64-Wiki screenshot)confirmedhall_of_fame $35F0, enter_hiscore $17F8, enter_letter $191A; the table shown live (reference/hall-of-fame.png); entering initials not reached live
Three-voice music by Steve Turner and sound effects (manual)confirmedsound_frame $0E23: one song (song), 46 effects (effects); the music plays on the title page
Fifty frames a second scrolling to single-pixel resolution (manual, "Technical Data")livethe raster chain runs every frame; scroll_step and irq_playfield scroll by pixel; the play loop drops about one frame in twenty (382 passes in 400 frames)
Hardware and software sprites (manual, "Technical Data")confirmedhardware: the Manta, its shadow and six enemy slots; software: the shots, drawn into the character set (draw_bullets)
Attract mode: title page, a giant scrolling message, a demo flight with "Demo" in the status linelivetitle $0A20: title_page, message_page (level 0, a map built of letters), the hall of fame, demo

Beyond the documentation

Found in the code, not in the manual.

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.