1984 · 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 | platinum |
|---|---|
| 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 6 wrong, so between 5 and 20 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | Mastertronic's original cassette of 1984 (1C 0003), a TAP of version 1 from the Ultimate Tape Archive on the Internet Archive, uta_Squirm_1984_Mastertronic_9165, MD5 3c85ddc4f4c605755f15d552e3e53457; loaded with the KERNAL's own tape routines (orientation.md) |
| Copy | agent-draft |
| Tools | emulator: VICE 3.10, the vice-mcp release v3.14.0, v3.14.0-linux-x86_64-gui.zip, disassembler: regenerator2000 0.9.20 (cargo install --locked from crates.io), host: Linux x86_64, Ubuntu 24.04, no display (cloud container), node: 22 |
| Model | claude-opus-5-5[1m] |
| Kit version | 0.0.268 |
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 338 comments. | |
| Sample 1 | claude-opus-5-5[1m] | 6 of 60 comments wrong, so between 5 and 20 % of the listing is likely wrong. All 6 were then corrected. 60 of the listing's 337 comments, checked by a fresh agent that wrote none of them; all six wrong in a detail, none in the main claim | |
| Port check | claude-opus-5-5[1m] | Checked a page’s port or widget against the game; how many comments it corrected was not recorded. the page's sound players, run against the game's own sound code in the kit's 6502 for every button, each write to the sound chip compared jiffy by jiffy (test_sound.js) | |
| Port check | claude-opus-5-5[1m] | Checked a page’s port or widget against the game; how many comments it corrected was not recorded. the page's machine, which runs the game's own code for every widget: the first frame of play it draws compared pixel by pixel with VICE's (test_frame.js) | |
| Play tab | claude-opus-5-5[1m] | Ported the whole game to JavaScript for the Play tab and corrected 0 comments it showed wrong. the whole game ported routine by routine and held in lockstep with the game's own code from the hand-over; the port showed no comment wrong |
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:
d64_Squirm_1984_Mastertronic (archive.org), read 30 October 2026. MobyGames' own page answered with a browser check. It mentions a glow worm and lights going out, which the Collectors Archive's review of the Commodore 16 conversion describes as that version's additions.| Feature | Status | Where |
|---|---|---|
| A maze on one screen, seen from above; a new maze each level | live | three maze screens at $16D2, $1A1A, $1D62, chosen in turn by $2682 ($390E) |
| The player moves like Pac-Man: keeps going until the stick turns it or a wall stops it | live | $306E with $3014/$2FF9 |
| Joystick in port 1 | live | every read is $DC01 |
| Keyboard control | live | no routine of its own: $DC01 reads keyboard row 7 as well as port 1, so 1, ←, CTRL, 2 and SPACE act as up, down, left, right and fire ($306E); each moved the player, and SPACE started a game |
| The Queen Squirm lays eggs; collect them for 10 points each | live | the worm at $2648 and the one at $2676 leave an egg ($46) where their tail was; an egg under the player adds 1 to the tens digit ($3C04) |
| 255 eggs complete a level (the review); 250 or 200 (MobyGames) | live (255) | $3C09: the count $2690 reaching $FF; with the count poked to 254, one egg ended the level |
| A rising tone with each egg | confirmed | $3C0F writes the egg count to voice 1's pitch |
| Guard squirms; touching a squirm or the queen costs one of three lives | confirmed | $3C2C: the head $43 or a body $44 under the player |
| Guards eat the eggs | confirmed | a worm may step onto an egg ($3C93), and the guards' tails leave a space |
| Guards respawn at random if eaten by the queen | differs | a worm whose four tries in one step are all blocked has its head put back on its own start cell ($3377); nothing is random, and no worm eats another |
| Exits at each end of the maze lead to the other side | live | no code of its own: positions are screen addresses, so a step left from column 0 lands on column 39 of the row above ($304E), and the mazes leave those cells open; left from the start cell (12, 0) arrived at (11, 39) |
| Bonus run after the eggs: limited time, eat the squirms for points, no going back over your own path | live | $3780: the timer counts 900 down once an interrupt, 901 interrupts in all; bodies 100, heads 200, eggs 10; the player leaves character $00, a wall, behind it |
| From level 2, bonus treasures worth a random 10 or 100 | confirmed | $39DF; the value depends on $2684 at the moment of collection, which steps 1, 2, 3 every pass: nothing, 10 or 100 |
| A title theme that "almost feels like it plays at random" | confirmed | $3BB2: 100 steps of two tables on voices 1 and 2, high byte of the pitch only |
| Glow worm; lights go out (MobyGames) | differs | not in this version: nothing darkens the maze. Its colour RAM is written in play only by colour_maze ($35E8) as a level starts, the walls' colours $D022/$D023 only by new_game ($3B5C) and the death flash ($3AD0-$3AF2), and the five worms are the only creatures ($2648-$267F). The C16 review names both as additions of that version |
| Two players taking turns (MobyGames) | differs | one player only: the score is one row of digits on the top line ($0414), the lives one byte ($2685, written only at $3B9D and $3C34), and the title starts one game on fire |
| Fire for a second speed (the C16 review) | differs | fire alone stops the player ($3060); the game's speed is step_delay, which only the level cycle changes ($3A72) |
| U and B keys to pick the level (the C16 review) | differs | not in this version: the only key read through the KERNAL is F1 ($C5, read once at $3C67), and $DC01 sees only keyboard row 7, which holds neither U nor B; every game starts on level 1 ($3BEB) |
| A life for each level completed (the C16 review) | differs | not in this version: lives are set to 3 at $3B9D and only lowered ($3C34); the references search finds no other write |
$3C67, $3C73).$3060).$1042).$2689 shortens by a jiffy ($3A72), from six jiffies a step on level 1 to none at all from level 25. Live for the first step.$3887), so the number runs 10 to 19 over and over. Live.$35E8).$3C93); an older version of the test, still in memory and never run, did not ($32D5).DEC $D401, which reads the chip's fading data bus instead of the pitch: on an 8580 the pitch steps down a row at a time, on a 6581 it jumps to the top after the first step ($3A8F). Live on both in VICE.$3258). Live.None that the code leaves open. The rows marked differs come from descriptions of the Commodore 16 conversion or from MobyGames' description, which mixes the two versions.
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.