1985 · Mastertronic
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 audited. No audit has checked every comment, and the last sample of 60 comments had 14 wrong, so between 14 and 35 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | Mastertronic cassette, 1985 (Ultimate Tape Archive Kane.tap, SHA-256 d6c066a6cdc3380026ace9cd5ecd7c4af98cf90851fb48b3b23777b328c48093) |
| Copy | agent-draft |
| Tools | emulator: release v3.13.2, v3.13.2-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20, host: Linux x86_64 (Ubuntu 24.04.5, cloud container) |
| Model | claude-opus-5-5[1m] |
| Kit version | 0.0.236 |
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[1m] | Looked the game up online (its manual, reviews or wiki pages) before reading its code. | |
| Annotation | claude-opus-5-5[1m] | Wrote the listing’s comments. 100 % of the program is described, in 645 comments. | |
| Sample 1 | claude-opus-5-5[1m] | 14 of 60 comments wrong, so between 14 and 35 % of the listing is likely wrong. All 14 were then corrected. 60 comments drawn from 643, checked by a fresh agent against the code; one more doubtful and left as it was; about 60 others that shared the wrong ones' beliefs were corrected with them | |
| Port check | claude-opus-5-5[1m] | Checked a page’s port or widget against the game and corrected 4 comments it showed wrong. the pictures, courses, samples, tune, effects, score counting and bonuses, by test_pictures.js, test_samples.js, test_music.js and test_score.js |
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:
uta_Kane_1985_Mastertronic_7916 (archive.org), read 25 October 2026. The game's own manual.| Feature | Status | Where |
|---|---|---|
| Title screen: "Press Fire To Start", "F1 For Practice", "F7 For Score Table", "Previous Score", and a credits line that changes (design and programming John Darnell; graphics J. Darnell, N. Baikaloff, J. Porch; a Mastertronic presentation) | live | title_screen $3250, credit_line $3E6B |
| Practice: F1 asks "LEVEL 1 2 OR 3 ?", then offers F1 bow and arrow, F3 horse ride 1, F5 shoot out, F7 horse ride 2 | live | practice_menu $336C |
| Score table on F7 ("Hall of Fame and Worth", initials and score) | live | show_hall_of_fame $3C9D, fame_entries $8C74 |
| Joystick in port 2 only (inlay) | confirmed: every stage reads CIA 1 port A, $DC00 | $35FD, irq_ride_control $2A25 |
| Stage 1, the canyon: shoot migrating ducks with a bow and arrow; the stick moves an aiming cross, fire shoots (wiki) | live | duck_loop $1950 |
| Ten arrows at the start (wiki); the status line shows ten arrow marks between "Birdies Killed" and "Birdies Home" | live | start_ducks $11D1, draw_arrows $1E31 |
| A hit duck gives the arrow back; one arrow through two ducks gives two (wiki, review) | confirmed for the arrow given back, up to ten; traced for two ducks: each duck that touches the arrow is hit and gives an arrow back, and the arrow stays where it is while a hit duck falls; two ducks on one arrow not tried live | move_duck $1BC3, move_arrow $1B5C |
| A peace token (a life) for every few ducks: three on level 1, four on level 2, five on level 3 (wiki) | confirmed | start_ducks $11D1, move_duck $1BC3 |
| The arrow flies faster the steeper it is shot (wiki hint) | confirmed: the step is the distance to the sight over 8 when the sight is less than 112 pixels to the archer's left, over 16 when it is further | duck_loop $1950 |
| The stage ends when the arrows run out (review) | confirmed, and also when 39 ducks have got home | $1AEF |
| Stage 2, ride to Kane: ride against a time limit ("Time Remaining 1.58 Minutes", "Distance To Go 4.00 Miles" shown), fire jumps bushes and stones; a mistimed jump costs a token (inlay, wiki, review) | live for the ride and its status lines; confirmed for the token lost at a fall | ride1_step $2333, $23C2 |
| Stage 3, the shootout in Kane: gunmen hide at windows, doors, roofs and wagons; shoot them all (wiki: twelve; the status line shows "Bad Guys Killed" and "Bad Guys Left"); the stick moves the Marshall and his sight | live: twelve from sixteen hiding places, four at a time at most | $35FA, gunmen_appear $3E77, places $9169 |
| Reload by running off the screen to the right (inlay) | confirmed: past x 383 the bullets go back to six | walk_right $38B4 |
| Standing still makes the gunmen's shots more accurate (inlay) | differs: the aim closes in while he stands, and while he walks a gunman's shot does nothing at all (live) | gunmen_aim $8A61, gunman_fires $8AF2 |
| Stage 4, the train: ride after the train and overtake its coaches to stop it; two coaches on level 1, seven on level 2, eleven on level 3 (wiki); a collision costs a token; no time limit (review) | differs on level 1: three coaches, then seven and eleven; confirmed for the rest: the track loops and there is no clock | start_ride $1F3B, train_step $228B |
| After the train, the game goes back to the ducks one level higher (wiki) | confirmed | ride_loop $209E |
| Losing every token ends the game (review) | confirmed: game over and the title, with the hall of fame check | $22FC, marshall_dies $8BC5 |
| An ending text after the last level ("So war with the Wagari Indians was finally ended ...") | live | ending_text $8CAC |
| Music: the William Tell Overture at the start and in both riding stages; a drum beat in the canyon (review) | differs: the tune plays on the title, ride 1 and the ending; the train has hoofbeats instead. The drum is confirmed, its writes held against the game's code by test_music.js | start_ride $1F3B, drum_sound $92C9 |
| Sampled sounds: a screech when a duck is hit, and a cry when the Marshall dies (review; Zzap!64 praised them, per Wikipedia) | confirmed: five sounds, one recording of a cry used for a duck, a gunman and the Marshall, the whinny, and a man's voice saying "Well done" at the ending (heard by the contributor) | play_hit $9337, $935B, $9349 |
RESTORE or a reset restarts the game (the CBM80 signature at $8004) | differs: a reset restarts it (live), RESTORE does nothing (the NMI vector points at an RTI) | start_stage $3163, nmi_ignore $3162 |
Found in the code, not in the manual. The Discoveries tab shows each one.
ride1_step, $2333; live).count_score steps by $0B in decimal mode and puts more on the score than it was given ($3B9A; live, 594 gave 706).gunman_fires, $8AF2; live).ride_loop, $209E; live).$3ED4; live).clear_obstacles, $313F; live).shot_sound, $920E; live).train_step, $228B; live).$31DC, tune_slowdowns $8E5D; on the game's code, test_music.js).Y of 5 that nothing counts ($37E3; on the game's code, test_score.js).$8010-$8727 and $3F3A-$3FFF, and routines nothing calls at $1D96, $300E, $CF73 and $FF90.$8010 does differently from the code that runs: it was matched to $37F3-$3EE6 by its shape, not compared instruction by instruction.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.