1990 · Ocean
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.
This game is in 7 parts. The map is of Loader and resident code, which stays in memory; the band marked as varying holds whichever of the 6 parts loaded over it is there. The Source tab has the listing of each part that has one.
| Tier | bronze |
|---|---|
| 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 8 wrong, so between 7 and 24 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | PAL original, two-sided G64; level 1 load in play |
| Copy | agent-draft |
| Tools | host: Linux x86_64 (cloud container), emulator: release v3.13.2, v3.13.2-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20, publication: Python 3; symbols_export.py and listing.py, subagents: Sonnet 5.5 agents for annotation, one Opus checking agent for the 60-verify sample and one for the fact check, widget tests: node 22: the music player, the levels page and the rebuilt frame run against the game's code on the kit's 6502 simulator (test_music.js, test_levels.js, test_frame.js) |
| Model | claude-opus-5-5[1m] |
| Kit version | 0.0.158 |
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], claude-sonnet-5-5 | Wrote the listing’s comments. 100 % of the program is described, in 3,695 comments. levels 1 and 2 and the resident part on Opus; levels 3 to 6 and the rest of levels 1 and 2 mostly on Sonnet | |
| Sample 1 | claude-opus-5-5[1m] | 8 of 60 comments wrong, so between 7 and 24 % of the listing is likely wrong. All 8 were then corrected. 8 wrong in a detail (a reader or writer missing from a list, a call said to happen every other time, a flag said to be set at the wrong moment); none wrong in its main claim; the 8 and the 10 comments of levels 2, 4 and 6 that repeated the walk-frame belief were corrected |
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:
facts.md, "Text").| Feature | Status | Where |
|---|---|---|
| Side-scrolling beat-'em-up | live | level 1 |
| Left and right walk | live | sprites 0-2 move 4 pixels every 4 frames held; position in $2657, $2658 and $2659 |
| Up jumps | live | Darkman rises 26 lines in 32 frames |
| Down crouches | live | screenshot; no change of position |
| Fire alone, and fire with down, strike | live | fire with down shows an arm-out pose and moves Darkman 16 pixels forward in 32 frames; whether the game calls either a punch or a kick is open |
| Fire with right, and fire with up | live | fire with right shows no strike pose in the frame looked at; fire with up jumps as up does |
| Pause key | traced | $1777 waits while the key code in $0E2F is $50, which the key table at $0EAA gives to the P key |
| Six levels, from city streets to a skyscraper finale against Strack | traced | six level loads by load_level_files ($0436); levels 2, 4 and 6 are one scrolling engine, 1, 3 and 5 have their own; level 6's ending text has Strack fall; what each level looks like: levels.html |
| Photo sessions between levels: move a cursor and fire to photograph henchmen, to make masks | traced | the mask game at the end of levels 1, 3 and 5 (mask_setup $58C8, $4F9C and $37C9): twelve captures with the cursor, rated into $0A10 |
| Swinging on a rope under a helicopter in one level | traced | level 5, player_swing $126D and chopper_step $1417 |
| One life | differs | one energy bar, but levels 2 to 6 offer a continue screen while the credits $0A12 (3, set by the title) last; level 1 has none |
| Joystick control | live | fire on port 2 starts the load and the game |
| Level briefing text | live (level 2's, after skipping level 1) | $0FE6 "LEVEL ONE ... END OF LINE" |
| Title page alternating credits and high scores | live | $0A20, $11BC, $13C9 |
| High-score table with name entry | traced | $122E "YOU HAVE ACHIEVED A HIGH SCORE", $1357 "PLEASE ENTER YOUR NAME" |
| Status panel under the play area with a portrait | live | split by the raster interrupts at $1D43 and $1DBF |
| Game over screen | live | text at $1A02 |
cheat_check $1385) flips $0A11: the space bar then ends a level, and running out of energy no longer ends the game.Each part of the game has its own symbol map and listing: Loader and resident code, symbols.json and listing.json; Level 1 and the title screen, symbols.json and listing.json; Level 2, symbols.json and listing.json; Level 3, symbols.json and listing.json; Level 4, symbols.json and listing.json; Level 5, symbols.json and listing.json; Level 6, symbols.json and listing.json. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.