1987 · Ocean Software
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 | bronze |
|---|---|
| Coverage | 0 % of the bytes the game uses have a description |
| Comments checked | Not audited. No audit has checked every comment, and the last sample of 28 comments had 5 wrong, so between 8 and 36 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | G64 disk image of a cracked original: a loader program, a second program of 1,026 bytes that sets up a fast loader, and one 64,508-byte program that holds both parts of the game |
| Copy | agent-draft |
| Tools | host: macOS arm64 (Apple silicon), emulator: release v3.14.0, v3.14.0-macos-arm64-gui.dmg, disassembler: regenerator2000 0.9.20, publication: Python 3; symbols_export.py and listing.py, subagents: none: one agent throughout |
| Model | claude-sonnet-5-5 |
| Kit version | 0.0.256 |
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-sonnet-5-5 | Looked the game up online (its manual, reviews or wiki pages) before reading its code. | |
| Annotation | claude-sonnet-5-5 | Wrote the listing’s comments. 0 % of the program is described, in 1,146 comments. one agent, no helpers | |
| Sample 1 | claude-sonnet-5-5 | 12 of 60 comments wrong, so between 12 and 32 % of the listing is likely wrong. All 12 were then corrected. checked by the model that wrote the comments, not by another: 2 comments carried a wrong number (rows, an entry's place in a table), 10 variable comments named the wrong routine as writer or reader because their owner labels were missing; all 12 corrected and every other comment of the same two kinds regenerated | |
| Sample 2 | claude-sonnet-5-5 | 5 of 28 comments wrong, so between 8 and 36 % of the listing is likely wrong. All 5 were then corrected. 28 comments of code routines drawn at random and read against their code by the model that wrote them, not by another: 5 were wrong in a detail (a label taken for a mid-instruction operand of a BIT skip, a missing step in a menu, a loose description of two routines, voice 3's command table one word off); all 5 fixed, and the false symbols of the same kind ($03A9, $05A9, $07A9) corrected |
likely wrong the sample’s range corrected right, or likely right not yet measured
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), confirmed (in the code, consistent with the emulator), live (observed directly), differs (the code does something else).
Sources:
facts.md, "Text").| Feature | Status | Where |
|---|---|---|
| Two parts on one disk: an adventure (part one) and a countryside run (part two) | live | part one at $0400, part two at $2624; F1 and F3 on the attract screen start them |
| Part one: about 36 screens of the Nova laboratory, a side-scrolling map explored with the stick | confirmed | map rows $4000/$4100/$4200, 256 columns each, scrolled by $087B |
| Space bar cycles the actions JUMP, LASER, SEARCH, UTILISE | live | action_select_poll ($067D), labels at $06E1 |
| Fire performs the selected action; menus are driven by stick and fire | live | main_loop_frame ($04E8), mode table $43E8 |
| SEARCH finds objects and lets Johnny TAKE them (hold at most four) | live | action_search ($0BF6), mode_search_finish ($0C2D), object table $1568 |
| UTILISE: HIDE an object in a container, INPUT an object into a terminal or lock, DESCRIBE an object | confirmed | action_utilise ($166A), modes 5 to 11 |
| Collect the JUMP ROM and LASER ROM to unlock JUMP and LASER | confirmed | action_jump ($192F) and action_laser ($18FF) test the inventory for objects 2 and 0 |
| Terminals: log on, link up, override the alarm, switch the sprinklers | confirmed | input_terminal_computer ($1DC3), puzzle flags at $0299 |
| Locked drawers and cabinets opened with keys | confirmed | input_lock_check ($1CFA), container table $15BC |
| A thirty-minute clock; running out of time ends the game | confirmed | check_time_up ($24D9); the clock starts at 3:00 and the limit is 3:30 |
| Build a decoy robot from four objects to finish part one | confirmed | check_decoy_parts ($2219), decoy_parts ($225A) |
| Energy and shield bars (E and S) that drain | live | energy_drain_step ($1EE4), shield_drain_step ($1F28) |
| Guards and an enemy robot who capture Johnny ("CAPTURED AND DEACTIVATED") | confirmed | guard_logic ($227C), capture_ending ($238E) |
| Part two: jump over animals, duck, shoot soldiers' belt buckles with the laser | traced | part-two actors $2DD4 to $35B3; the laser shot player_fire ($3AEC); no soldier was reached in play |
| Part two: terrain that slows Johnny (mud) | traced | terrain_type_table ($8AFF) and look_up_ground ($8A8E); not isolated in play |
| Music by Martin Galway | confirmed | three-voice script driver at $9EB1-$ACA0; its tune table at $ACA0 |
| High-score table of ten entries with three-letter initials | live | $83E8, game_over_scores ($97F0) |
| Pause with F7 | live | pause_check ($21CF): the clock stopped while it was held |
| F5 abandons a game | live | abort_key_check ($9B3A): the attract mode came back |
| Escape in a truck at the end of part one | open | message 46 says the truck has already left; the ending that uses it was not reached |
orientation.md).LAX (zp),y) in its colour-fill loops at $0BCF, $0BDD, $1EC8, $1ED6, $2AD6, $2AF4 and $2B02.$3DE0-$3FFF holds an older build of part two's ending sequence that is never run (facts.md).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.