1990 · Ocean

About this page

This minisite awaits a maintainer’s check. A model this site has not proven yet worked on it (claude-sonnet-5-5), so a maintainer will measure its listing on one it has (how the check works).

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.

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.

Status

Tierbronze
Coverage100 % of the bytes the game uses have a description
Comments checkedNot 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 analysedPAL original, two-sided G64; level 1 load in play
Copyagent-draft
Toolshost: 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)
Modelclaude-opus-5-5[1m]
Kit version0.0.158

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-5[1m]Looked the game up online (its manual, reviews or wiki pages) before reading its code.
Annotationclaude-opus-5-5[1m], claude-sonnet-5-5Wrote 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 1claude-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

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
Side-scrolling beat-'em-uplivelevel 1
Left and right walklivesprites 0-2 move 4 pixels every 4 frames held; position in $2657, $2658 and $2659
Up jumpsliveDarkman rises 26 lines in 32 frames
Down croucheslivescreenshot; no change of position
Fire alone, and fire with down, strikelivefire 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 uplivefire with right shows no strike pose in the frame looked at; fire with up jumps as up does
Pause keytraced$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 Stracktracedsix 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 maskstracedthe 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 leveltracedlevel 5, player_swing $126D and chopper_step $1417
One lifediffersone 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 controllivefire on port 2 starts the load and the game
Level briefing textlive (level 2's, after skipping level 1)$0FE6 "LEVEL ONE ... END OF LINE"
Title page alternating credits and high scoreslive$0A20, $11BC, $13C9
High-score table with name entrytraced$122E "YOU HAVE ACHIEVED A HIGH SCORE", $1357 "PLEASE ENTER YOUR NAME"
Status panel under the play area with a portraitlivesplit by the raster interrupts at $1D43 and $1DBF
Game over screenlivetext at $1A02

Beyond the documentation

Open questions

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.