1986 · Hewson Consultants
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.
| Tier | silver |
|---|---|
| Coverage | 100 % of the bytes the game uses have a description |
| Comments checked | Not 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 analysed | Hewson'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) |
| Copy | agent-draft |
| Tools | emulator: 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 |
| Model | claude-opus-5-5 |
| Kit version | 0.0.122 |
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.
| Step | By | What it found | Of the listing |
|---|---|---|---|
| Research | claude-opus-5-5 | Looked the game up online (its manual, reviews or wiki pages) before reading its code. | |
| Annotation | claude-opus-5-5 | Wrote the listing’s comments. | |
| Sample 1 | claude-opus-5-5 | 8 of 60 comments wrong, so between 7 and 24 % of the listing is likely wrong. All 8 were then corrected. | |
| Audit 1 | claude-opus-5-5 | Checked all 661 comments and corrected 13. every comment read against its neighbours and the bytes by the lead | |
| Annotation | claude-opus-5-5 | Wrote 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 | |
| Annotation | claude-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
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:
reference/wiki-loading-picture-other-release.png; it is not this release's.reference/).| Feature | Status | Where |
|---|---|---|
| Joystick only, in either port (manual); fire starts the game | live | read_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) | live | option_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) | confirmed | pause_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) | live | manta_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) | live | manta_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) | live | after 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) | live | launch_sequence $2839; reference/play-level1-launch.png |
| Fifteen Dreadnoughts, one per planet, each after a different metal (manual) | confirmed | fifteen 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) | traced | flying 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) | live | new_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) | live | spawn_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) | confirmed | feature_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) | live | add_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) | live | fuel_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) | live | vaporise_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) | live | next_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) | confirmed | hall_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) | confirmed | sound_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") | live | the 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") | confirmed | hardware: 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 line | live | title $0A20: title_page, message_page (level 0, a map built of letters), the hall of fame, demo |
Found in the code, not in the manual.
build_message), and the same scroll and map code shows it.thicken_shapes), placed lower and further right the higher the Manta flies.filler_wave).$0800 starts as a copy of the sound driver's code.$80-$8F are fatal, and the drawings were not matched to the names.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.