Merlin's Apprentice, Philips Interactive Media of America, 1995. A puzzle game designed and directed by Cliff Johnson — the author of The Fool's Errand — and the only CD-i title he made.
This documentation describes the European pressing, dumped as
Merlin's Apprentice (Europe).bin / .cue: one CDI/2352 track of
131,610 sectors, 29:14, 39.5 % of a CD.
Eighteen entries in a flat root. No directories.
| Volume identifier | MERLINS APPRENTICE |
| Publisher | PHILIPS INTERACTIVE MEDIA OF AMERICA, 1994 |
| Data preparer | _ISG_CDI_TOOLS_1.6 |
| Application identifier | cdi_merlin |
| Volume created | 1995-01-31 13:57:20 |
| Executable | cdi_merlin, 139,264 B, one OS-9/68000 module, edition 7 |
Where the 309 MB goes:
| sectors | MB | share | |
|---|---|---|---|
| real-time video and audio | 66,245 | 154.0 | 50.3 % |
| real-time bit-rate padding | 50,416 | 117.2 | 38.3 % |
| BOLT libraries (three identical copies) | 10,338 | 24.0 | 7.9 % |
| tail padding | 2,258 | 5.2 | 1.7 % |
| pre-file-system region | 2,251 | 5.2 | 1.7 % |
| program, symbols and animation table | 79 | 0.2 | 0.1 % |
| file system | 2 | 0.0 | 0.0 % |
| the three text files | 3 | 0.0 | 0.0 % |
Nothing on the disc is unaccounted for. Between the path table and the tail there is not one free sector.
The linker's symbol file shipped. cdi_merlin.stb is 19,752 bytes in the
root that nothing on the disc names and the program never opens. It is an OS-9
Data module holding the complete global symbol table of the link: 887
symbols with their source-level names, covering the game, the C runtime and
the OS-9 system library. It was written at 13:57:18 on 31 January 1995; the
executable beside it is stamped 13:57:19 and the volume descriptor 13:57:20.
Three seconds, one build, and the debug output went onto the glass master with
everything else. See 04-symbol-table.md.
The whole game falls out of those symbols. Eight puzzle engines, 27 named
puzzles and three potions, recovered by intersecting symbol addresses with
string offsets — including a BOSS_GetCheatMode / BOSS_SetCheatMode pair.
See 08-game-architecture.md.
The engine has a name and a credit. BOLT, in ASCII, at the head of
boltlib0.blt; InitBOLT, OpenBOLTLib, GetBOLTGroup, BOLTAllocType in
the symbol table; and, in the disc's own bibliography.txt, BOLT Engineering
Support: David Todd, Ken Jordon. The container is fully mapped here: 129
groups, 7,703 members, chained end to end with zero breaks. See
05-bolt-library.md.
The pre-file-system region is the same recording as on two 1993 discs.
Descramble sectors 19–2,268 and the 5,229,000 bytes hash to
a0ed87f2e98b43f91281d16390fb178b — byte-identical to Origami (Netherlands,
1993) and Link: The Faces of Evil (USA, 1993). Merlin was mastered in
1995, which pushes that authoring-chain artefact two years further than the
CD-i platform notes had it. See 01-disc-image.md.
help.rtf is a jukebox and says so. Eight audio channels whose first
sectors are 24, 23, 22, 21, 20, 19, 18, 17 — a perfect round-robin — carrying
25.2 minutes of narration, of which the game plays one channel. The symbol
table calls the API TC_Open_Jukebox, TC_Play_Jukebox_Selection,
TC_Is_Jukebox_Playing. See 07-audio.md.
| Doc | Contents |
|---|---|
| 01-disc-image.md | The track, and 5.2 MB of speech in front of the file system that three unrelated discs now share |
| 02-filesystem.md | Green Book descriptor, eighteen entries, and three text files carrying SCCS keywords and the full credits |
| 03-executable.md | cdi_merlin: one module, CRC-clean, and what sits in front of the code |
| 04-symbol-table.md | cdi_merlin.stb, 887 symbols, and the address model that proves it |
| 05-bolt-library.md | The BOLT container, mapped to the byte, and a compressor that barely compresses |
| 06-realtime-files.md | Eight real-time files, 89 animations, and the four-byte table that indexes them |
| 07-audio.md | Level B ADPCM, the eight-channel help jukebox, and the one stereo animation |
| 08-game-architecture.md | Eight engines, 27 puzzles, three potions, the save format, and the cheat flag |
| 09-leftovers.md | The archaeology: a shipped symbol file, a Traffic Cop, a Kludge, and a diagnostic that shouts |
| 10-open-questions.md | What is measured, what is inferred, and what did not resolve |
| notes/ | Full inventories: files, symbols, BOLT groups, strings |
| cdi-platformnotes-doc | Platform checklist — what to look for on any CD-i disc. Shared by every CD-i pipeline; this repo links it rather than forking it |