1987 · Electric Dreams 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 | 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 75 comments had 8 wrong, so between 6 and 20 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | a freezer backup of Electric Dreams' 1987 disk release, the TOSEC image Explorer (1987)(Electric Dreams) from the Internet Archive (MD5 858dc180…672db); its code agrees byte for byte with Triad's crack of the same release |
| Copy | agent-draft |
| Tools | emulator: release v3.14.0, v3.14.0-linux-x86_64-gui.zip (VICE x64sc, PAL), disassembler: regenerator2000 0.9.20, host: Linux x86_64, Ubuntu 24.04.5 cloud container, four cores, no display, python: 3.13.17, node: 22.22.0 |
| Model | claude-opus-5-5 |
| Kit version | 0.0.277 |
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. 100 % of the program is described, in 538 comments. | |
| Sample 1 | claude-opus-5-5 | 8 of 75 comments wrong, so between 6 and 20 % of the listing is likely wrong. All 8 were then corrected. 60 of 494 hand-written comments and 15 of 43 generated; two of the eight were corrected between the draw and the check | |
| Port check | claude-opus-5-5 | Checked a page’s port or widget against the game and corrected 3 comments it showed wrong. the ground view, drawn on the page by the game's own drawing code from the listing's bytes and compared with the game in the emulator at the same place, which corrected divide_8 at $10E8 and the random seed's comments at $002B and $10FF |
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/ is from the emulator.| Feature | Status | Where |
|---|---|---|
| A jet pack: U goes up about a thousand feet, again for another thousand; D comes down | confirmed | U on the ground takes off to height 8 (take_off $1728); in the air U goes from 8 to 9, the map cells twice as far apart (go_up $2879), D from 9 to 8 and at 8 lands (go_down $28A4). Live: the game's own landing after the opening pass |
| Above the planet the stick moves north, south, east and west, whatever the compass says | confirmed | fly_loop $2847: 8 east, 7 north, 6 south, 5 west, each scrolling the map one cell; joy_codes $0BE5 turns the stick into those keys |
| "Watch landing on the trees: they're pointed" | live | land $28DE: open ground (kinds 4, 6 and 8) is safe, jungle (0, 2) and water a crash (crash $2C03). Live: the opening landing came down on water, the screen went black on white and shook, 500 came off the energy and the destination prompt followed (reference/crash.png, reference/crash-prompt.png) |
| On the ground the stick forward walks along the compass bearing; fire or any key stops | confirmed | ground_loop $14F9 and walk_loop $152B; 7 (stick up) walks, any other key stops |
| Left and right alter the bearing; back turns about | live | 8 turns right and 5 left two steps of 64 (turn_right $1578, turn_left $1584), 6 turns 32 (turn_about $1590). Live: 8 took the heading from 16 to 14 and the compass from 0 to 10 |
| A compass | live | draw_compass $0FF8: three digits at the top right of the ground view. It reads about 1 % short of the true angle: west reads 267 |
| Object sonar: a sounding gives a bearing and a distance by the echo's delay, and "out of range" past a civilised walk | live | echo_nearest $19A8: a ping, then the nearest fragment; within 1,279 units the echo comes back after a quarter of the distance in interrupts. Live: "178 degrees / Out of range" for a fragment 1,344 units away a little east of south (reference/sonar-echo.png) |
| Nine radio beacons, popped down anywhere | live | drop_beacon $1B9C, pick_up_beacon $1BD8, the records at beacons $21DD; "Carried:012345678" loses a digit for each beacon down. Live: D dropped beacon 0 and drew it (reference/beacon-dropped.png) |
| A radio direction finder: bearing and range to the beacons, for triangulation | live | fix_beacons $1BFD, "Fix 3 nearest": the three nearest beacons down, each with its distance (east plus north) and bearing. Live, with beacons poked 1,000 north, 200 west and 640 south, and 480 east and 320 north: "1000m. 1 degrees", "840m. 252 degrees", "800m. 56 degrees". The second should read 197: see bearing_of in Beyond the documentation |
| Nine anti-grav drones send bits of the craft to beacons | live | send_to_beacon $1A53: the fragment in the explorer's cell takes the chosen beacon's position, for 1,000 energy, if the beacon is down and less than 16,384 units away. Live: fragment 2, poked onto the explorer's cell, moved to beacon 0's position and the energy fell by 1,000 |
| A laser pulse gun, fired in weapons mode | live | weapons $2350, fire_laser $2437: the sight moves with 5, 8, 7 and 6, F (or fire) shoots, 500 energy a shot. Live: a bug was hit with one shot and weapons mode ended (reference/laser.png) |
| One or two robotic bugs; kill them | live | maybe_new_bug $1436: never more than one at a time; it appears more often as the score rises and traps the explorer in weapons mode until it is hit. Live, with the score poked to 250 (reference/bug.png) |
| Swirling patches of colour in the jungle invite you to enter, and take you to any place you name | live | scenery_doorway $1183, doorway_prompt $0D32, name_destination $0E23. Live: a doorway one cell away, "Enter doorway", E, the name HOME, arrival at 48,356 east and 48,609 north (reference/doorway.png, reference/destination-prompt.png) |
| Watch your energy: if it gets too low things go wrong | differs | Nothing tests the energy until it would go below zero (energy_spend $22F7): then "Energy gone", the energy is set to 2,000 and the destination prompt comes up (energy_gone $231A). Four instructions read the energy, and none compares it with a threshold |
| "There's a way of restoring it" | differs | The doorway works out an energy change, (letters in the name − 8) × 512 less a quarter of the distance travelled, so a long name to a near place would add energy; both branches after the sum jump past the store at $0F42, and the trip leaves the energy as it was. Live: HOME cost nothing beyond the 15 every view costs. The crash and running out are the only other writes, and both take energy away or reset it |
| Break or space brings up the menu; the first letter of a word chooses it | live | menu $1899: any key on the ground but the moves; O, B, W and X, then E, S, D, P and F in the menus below (reference/menu.png, reference/menu-objects.png, reference/menu-beacons.png) |
| Forty billion mappable locations, nine of them holding fragments | differs | Positions are two 16-bit numbers, 65,536 × 65,536, about 4.3 billion places, which wrap round at the edges; the explorer steps 16 units at a time. Nine fragments (fragments $2213), eight at the same places in every game and one 160 east and 144 north of the start |
Found in the code, not in the manual.
check_win $0DBA): after every step, if all nine fragments lie exactly on the explorer's grid cell, a window says "WOW, YOU DID IT!" and the program stops in a jump to itself (game_won_halt $0E0E). The way to get nine fragments onto one cell is to send them to one beacon and stand on its cell. Live, with the fragments poked onto the explorer's cell (reference/win.png).maybe_new_bug).terrain_at $32D6), Graham Relf's method from The Forest.bearing_of $383F): the game reads 270 less the angle where it should read 180 plus it, so a beacon at 197° reads 252.show_credits $1D4D, reference/credits.png).$986A and $9AFE belong to no record.$0F42 were the converter's choice or a slip.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.