1984 · 4Mation Educational Resources
Every byte of the BBC Micro's 32 KB of RAM and the 16 KB bank paged in above it, one pixel each, 384 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 8 parts, and the map is of one of them: The 4Mation logo.
| 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 60 comments had 6 wrong, so between 5 and 20 % of the listing’s comments are likely wrong. How listings are checked |
| Build analysed | TOSEC disc, Flowers of Crystal (1984)(4Mat).ssd (SHA-256 0f591a69...57d0), a 40-track DFS disc of eight BBC BASIC II programs and four files of machine code; each program analysed as CHAIN loads it at &1900, the two adventures' machine code where their sound programs load it |
| Copy | agent-draft |
| Tools | emulator: jsbeeb 2.4.0 (npm), in the kit's server (kit/bbc/jsbeeb_server.mjs), BBC B with 8271 and DFS 1.20; check-emulator 33 passed, 0 failed, on 24 October 2026, disassembler: regenerator2000 0.9.20, one session for each part, the programs typed as BBC BASIC (kit/bbc/basic.py), host: Linux 6.18 x86_64, a hosted cloud session with no display, python: 3.13.17, node: 22.22.0 |
| Model | claude-opus-5-5[1m] |
| Kit version | 0.0.226 |
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 350 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 350 comments, from every part in proportion; five wrong in a detail and one doubtful, which was wrong too; all six corrected, with the comments that said the same |
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/bbcmicro-co-uk-screenshot.jpg.work/files/*.lst) and most of it seen live in jsbeeb.| Feature | Status | Where |
|---|---|---|
| A menu of four: the story, the adventure part 1, the adventure part 2, a printer utility | live | UNEM lines 100-210 |
| The story of Crystal, told on screen | live (after a fix: the file is one byte short, orientation.md) | STORY |
| A sound level, 0 to 5, chosen before each part, 0 silencing the MOS's sound | live | N1, N2 lines 80-215; S% (part 1), K% (part 2) |
| Part 1: eight places on Crystal, travelled between with a travel permit issued by Jim | live | AD1 PROCds, lines 470-546 |
| Paths between some places; elsewhere "There is no path", and two hazards on the way instead of one | live | AD1 PROCp, PROChaz, lines 600-1050 |
| The river: some journeys fall in and Super Jim rescues the player back to the Centre | live (Forest to Desert, with P% set) | AD1 PROCp line 600, PROCriv |
| A weather report at the Centre, which decides which of sun, snow and rain can happen | live | AD1 PROCw, lines 2720-2790 |
| Equipment: one of warm coat, raincoat, drink; one tester of four; two of fright stick, radio, bubble-gum, disguise kit | live | AD1 PROCe, PROCT, lines 400-438 |
| Nine hazards on a journey: green fog, rain, snow, sun, Fright Freak, Blids, Pouncer, Grubble's Grabbers, and a scary scene that does nothing | live (fog, sun, rain, Freak, Blids, Pouncer, Grabbers, scenes); traced (snow) | AD1 lines 2000-3100, 15000-16700 |
| The map, "a Super Jim special", scrolled with the arrow keys | live | AD1 PROCmap, lines 5060-5200 |
| "Carry": the equipment and treasures held | live | AD1 PROCg, lines 900-920 |
| The City of Ruins: a pass needed, four buildings, two of them traps | live | AD1 FNCity, lines 10500-10730 |
| Grubble's bubble gum factory: the disguise kit gets the player in, and the city pass is inside | live | AD1 FNFactory, lines 11000-11191 |
| Grubble's gum forest, an 8 by 7 grid walked N, S, E, W, with Zap Gates, captures and the gold pot | live | AD1 FNForest, lines 11500-11940 |
| Fibber of the Lake, whose instructions must be answered with the opposite where he lies | live | AD1 FNLake, lines 12000-12300 |
| The lie detector, which shows whether each of Fibber's instructions is true | live | AD1 line 12240 |
| The Hilltop Swapshop: radio for sand goggles, and back | live | AD1 FNHills, lines 12500-12550 |
| The Desert's sandstorm, survived only with goggles; the soil found with the soil tester | live | AD1 FNDesert, lines 13000-13070 |
| The Mountains and the Bird of Doom | live | AD1 FNMountains, line 13500 |
| Seven treasures: lie detector, goggles, city pass, gold pot, special water, fertiliser, bag of soil (the book names four) | live | AD1 DATA line 20200 |
| All seven, back at the Centre: CONGRATULATIONS, and the hint for part 2, "When you are asked your age you must say 197" | live | AD1 PROCend, lines 19000-19037 |
| Part 2, the Danger Area: The Face, who asks the player's age | live | AD2 FNL1, lines 3500-3770 |
| Five spells to start, of four kinds (moving, vanishing, flower, lucky dip), found and lost along the way | live | AD2 lines 3745-3770, 10000-11240 |
| The six parts of the flower dream, to be found before the last Flower of Crystal | live (with a poke: the five found before the castle were set by hand) | AD2 PROCfl, lines 26000-26190 |
| Ten places of the Danger Area: The Face, Rumala's Row and its Wisdom Stones, the Exiles, the Horror, the Globs, a walk into a Blid trap, the storm and the sky spitter, three paths, the river, the castle | live (The Face, the Globs, the river, the bubble's flight, the castle); traced (the rest) | AD2 FNL1-FNL10 |
| The Utility: three worksheets for a printer, Crystal Log, Crystal Notes and Grubble's Gum Forest Grid | live (to the printer question); traced (the printing) | K |
Found in the code, not in the manual.
orientation.md, "The loader").STORY is saved one byte short, and stops with Bad program on a Model B with the 8271 DFS (orientation.md).of, is set FALSE and never TRUE.River or Danger Area at "Where do you wish to go next?" gets "Permission is not granted" and "It is FORBIDDEN" (AD1 lines 515-520).END and asks again: only S leaves the screen (AD1 line 19037).F%, L%, O%, W%, E% and R%, which spell FLOWER; each draws one piece of the last Flower's picture through the machine code (AD2 lines 26050-26095).RUN as two 20-bit numbers, S% (held) and T% (used) (AD2 PROCspst and PROCspre).RUN too, in DIM e% 11, which BASIC places at the same address after every RUN; nothing else holds it.B%, which a fresh start does not clear, so the next game's first surviving flight ends at the castle (live, facts.md).Map or Carry at one place of part 1 is one REPEAT too many: error 44, and a fresh start (live).RND(5) times, so the sixth word of each, the hippopotamus among them, never appears (traced).LIST rings the bell, shows the copyright in green and turns the screen off with VDU 21 (live).You are safe., through the ELSE of the next IF on its line (live).Z% to 1, and a vanishing spell later in the flight then moves the bubble instead (traced).!, and a file with no name that is probably the machine code it fails to find (orientation.md).STORY one byte short: no original disc has been compared.The annotations for this game are not published. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.