01 · The playfield
A room built from characters
The wizard and monsters are hardware sprites. The platforms, ropes and treasure are characters drawn from a custom alphabet. Changing one character can open a passage; changing its eight drawing bytes can alter every matching tile on the screen.

The reconstruction reads the actual screen, glyph and sprite bytes. All 104,448 visible pixels match the captured emulator frame. The palette shown here uses the site's C64 colors.
Screen cells begin at $C400, character shapes at $C800. Sprite 7 draws the wizard, sprite 6 handles spells and score effects, and six other slots hold the room's actors. Walking changes X by two pixels per movement call at $792E. Fire with left, right or up starts a jump; down and fire casts a spell.
02 · Movement
A jump can end on a rope
Walking off a platform can be fatal even when the gap is only one character wide. A jump follows a fixed sequence: it rises thirteen pixels in clear space, pauses at the top, then falls. A platform, rope or ladder can end that sequence early.
What the replay includes
Recorded outputs of the original player routine at $707B, using small prepared terrain examples and the original graphics. The launch position is fixed; these examples do not give a universal maximum gap width. Movement and collision state were compared with the emulator. The elevator example supplies a contact signal to isolate the ride rule; it does not simulate sprite collision geometry. Playback is slowed, and update counts are not video frames.
The ordinary fall check has only a short allowance to find support or reach a character-row boundary. It does not simulate a long accelerating fall. On a rope, holding up climbs one pixel per update. Elevator contact uses a separate rule: the wizard follows the platform from thirteen pixels above it.
03 · Forty levels
Treasure can change the rules
Collecting treasure applies a small terrain patch, then calls a program supplied by that level. Twenty of the forty supplied levels use that callback. A thief collecting the treasure calls it too.
Extracted terrain, with colors computed by the game's own drawing routines. W marks the wizard; numbers mark actor slots. The view uses the base alphabet and excludes later treasure changes. Level numbers here match the game's one-based display.
In Friend or Foe?, a regenerating gold bar moves the key along a row. Repeated pearl pickups in Ladder Land erase three strips of terrain, row by row. The treasure explorer shows before-and-after changes for all forty rooms. Madhouse rotates directional arrows, but its scan skips one: the arrow at row 20, column 9 keeps its direction when the callback rotates the others. Simon Says can set the death flag when the treasure's symbol fails its color-selected rule. The shared entry points are $8497 for the player and $7FA1 for the thief; the level callback excerpts show their separate programs.
04 · Puzzle machinery
A hidden thief keeps the room changing
In Friend or Foe? and Ladder Land, a black thief sits over a treasure that reappears after collection. It keeps collecting while the wizard stands still. The thief calls the same treasure-patch and room rules as a player pickup.
Friend or Foe? · a moving key
The thief collects a gold bar; the room moves the key one cell right. Forty pickups bring it back around. The gold regenerates, so the cycle continues without joystick input.
Follow the key across the room → · Read the key-moving routine
Ladder Land · disappearing routes
Here the thief repeatedly collects a pearl. Every other pickup removes three short strips and moves the removal points down a row, for up to twenty passes. Waiting gives it time to erase the ladders.
Scrub through the ladder removal → · Read the removal loop
Both mechanisms were observed with neutral input. Breakpoints at each room’s callback returned to the thief’s collection routine at $7FA4. Their black sprite frames use only transparency and the actor’s own color, concealing them against the background. Atlas “Starting positions” markers reveal their locations.
Burning Bridges · a route through the key and exit
Every treasure swaps the two cells that begin as the key and upper exit. The swap keeps working after the key has been taken. This route uses five treasures to create a rope and bring the enabled exit back to the left.
The white ring marks the wizard. These room states were captured at checkpoints across live attempts, using the original character and sprite graphics.
Replay conditions and completion evidence
The room was selected directly from disk file L17T. The replay uses Intermediate behavior, speed setting 5 and joystick input, with arrows, the elevator, collision interrupts and room timers active. It continues from saved checkpoints; it is not a claim of an uninterrupted full-game run or a timing script that works with every arrow pattern. The final exit reached $7ADA/$8C8F with the key held, then the normal completion script requested L18T from the loader.
05 · Simon Says
When the instruction disappears
In Simon Says, the words “Simon says…” determine which treasure is safe. When they are visible, take the requested kind. When they disappear into the black background, take a different kind. The instruction's color reverses the rule.
Choose a treasure to test the instruction.
Original character graphics and the level's pickup rule. The test agrees with the original callback in 4,096 cases; matching and mismatching pickups were also checked in the emulator. This example isolates the rule; movement and hazards are omitted. Level 08 map · Callback evidence
The wizard begins on a pearl. Collecting it turns on the instruction and initializes the puzzle before the first movement. Each later pickup also selects the next requested treasure from a table indexed by its position. It chooses the words' next color from black, white, cyan and light green. In the code, the level changes a single branch instruction: equal is safe with visible words, and not equal is safe with hidden words.
06 · Rewards
Four treasures, seven rewards
A treasure's class and the difficulty together select its reward. The same diamond is worth more in a harder band. Crossing 10,000 points awards another life.
Calculation checked against the original routine at $8464 for all sixteen treasure/difficulty combinations and five boundary scores, including score wrap. $84D8 and $84DF hold the reward digits.
The bonus starts at 24 units. Finishing a room converts each remaining unit into 50 points, for a maximum of 1,200. Its countdown period comes from the level header, so “24” is a counter rather than a universal number of seconds. Completion accounting is in $3D96; the timer is at $9270.
Clear the high scores at startup
Hold the Commodore key as loading finishes. The loader clears the score table in memory before entering the title screen. The check reads the key directly; it does not immediately rewrite the disk. See the loader’s score-clear branch.
Six players and their scores
This build accepts one through six players. Each has a separate life slot and three score bytes. All six accounts start with six lives. Dying with lives left lets the same player retry the room. Completing it or losing the last life passes the turn to the next surviving player; when none remain, the session ends. The ten persistent high scores store points in units of 50, with three initials for each entry and a sixteen-character name for the champion. See $349A, $36AE and $419A.
A tie can take an existing name. After sorting the scores, the program matches each player to the first available equal entry. Tying the champion can replace their name; tying tenth place can replace its initials even when none of the scores move. The second pass is at $42A5.
The save check has a separate weakness: it reads the computer’s transfer status without checking the drive’s error message. In the empty-drive test, that status was zero—the value the game accepts as success—even though no disk was attached. Successful save tests also checked the file’s contents. See $8B1E.
A full disk can still save the rankings if it already holds the old score file: the saver deletes that file first, freeing space for its replacement. A full disk without that file fails. Write protection prevents replacement and preserves the old scores. With FIRE held, a failed score save gets three attempts in total. A missing level gets four load attempts before the session ends.

07 · Monster behavior
Appearance and behavior are separate
The construction editor chooses a monster's behavior independently of its sprite image. Select a behavior, then compare its default appearance with examples from the original rooms.
Original C64 sprite
Original sprite frames, enlarged for inspection. Defaults come from the construction editor; room examples retain their saved shape and color. The behavior controller begins at $860E.
Watch the movement rules
The wizard marker stays still while the actor moves. At updates 80 and 160, the marker switches position: watch when the actor changes course.
What the actor replay includes
Recorded from the original controller at $860E, movement at $7D82 and sprite animation at $78AD. These are isolated actor updates with a fixed sequence of random inputs, a controlled animation phase and a repositioned wizard marker. Other actors, collision interrupts and room timers are paused. Playback is slowed for inspection; update numbers are not video frames. The appearance comes from the named room.
The cat follows the wizard using the shared ground controller. It is safe to touch and removes rats on contact; it does not steer toward a rat. A thief can take treasure and trigger its terrain changes. Cyan also has a mechanical role: frozen actors stop while a shared counter runs, and the collision handler compares actor color with the room's exempt color. See $7CE7, $7F7A and $862E.
08 · Magic
A key replenishes the spell counter
Each room supplies a spell and a charge count. Picking up its key copies that count into the HUD and enables the exit. SPACE or down and fire spends a charge; projectile direction follows the wizard's facing.
Key and exit logic: $7ACE. Casting: $765B. Projectile movement and queued hits: $8BDD. Longer effects return to the compiled game script.
Fireball, Magic Missile, Disintegrate and Enchantment share the same hit rule: a queued projectile hit removes its target. Freeze is the exception. It turns the target cyan and pauses it until a shared countdown expires. Freezing another monster resets that countdown for every frozen monster. See $7D3A, $8C0F and $8C1C.
Invisibility spends protection on danger
Invisibility hides the wizard and gives it thirty-two units of protection. A safe movement update spends nothing. When the game reports a fatal event covered by the spell, it suppresses the event and spends one unit. Continuous contact can consume protection on successive updates.
The spell starts with 32 units of protection.
One “Fatal report” here is one protected event, not necessarily one enemy. Hazards that turn the wizard red bypass this protection.
Display changes and evidence
At sixteen units remaining, multicolor display returns. Below nine, the wizard changes color; at zero it returns to purple. These values come from the compiled script at $3091 and $30B3. The death gate at $2B6E checks red first, then protection. Safe updates, all thirty-two protected reports and the following death were checked in the emulator.
Spells that move the wizard
Feather Fall and Levitate keep moving the wizard two pixels per update until terrain ends the effect. Feather Fall also bypasses the ordinary fall check. Compare its safe landing with the full death animation after the same drop without a spell. Teleport exchanges the current position with a remembered point; the first cast uses the room's starting position. Each arrival gets a small horizontal nudge.
What the spell replay includes
These prepared examples run the original routines with neutral input, fixed terrain and other actors and room timers paused. The spell traces play one movement update at a time; Teleport uses a fixed random value. The fatal drop continues through the game's death script, recorded in the emulator one video frame at a time, including both animated sprites and the final effect. It ends before the room restarts. Sources: spell script $30EE–$3117, travel routines $79B3/$7A46/$7A4E, death script $2B90–$2D96 and animation $9526–$96A3.
09 · The SID
Sound: short effects, shared voices
Actions rewrite the SID's frequency, waveform and envelope registers. The treasure effect uses two triangle-based voices with ring modulation; falling-hazard impact combines triangle and pulse voices.
Sound controls require the built site and its shared SID player.
Five effect ports match the original routines' ordered register writes in sixty tests. These previews start from silent registers, use a fixed random value for the key effect and stop after 125 PAL frames. During play, effects can inherit oscillator settings and interrupt one another. The shared SID model approximates combined waveforms and analog output. Evidence: $852B, $987D, $97FB, $985A, $98B6.
10 · Construction
The editor shares the game engine
Construction loads a different program over the game's low-memory script. Both programs keep the same resident machine routines for drawing, loading levels and handling input.
Construction with Playground loaded

Limits and commands are traced in the separate construction source companion. The level file contains a header, treasure patches and 22 rows of screen cells; the final row holds the saved title before play replaces it with a border.
Saving resets elevator settings
The elevator controls let you enter motion parameters, but saving the room replaces them. Every packed velocity becomes $1F, the shared travel duration becomes 144 updates, and elevators start at Y=197. The save preparation performs the reset after title entry. A save and reload on a private test disk preserved those reset values.
The editor also protects the supplied game disk: finding its PPSS marker makes a save return “WRONG DISK”. A formatted custom disk without that marker is accepted. The disk check is at $8B98.
Portal placement can replace terrain
The editor checks for room before drawing a portal, but skips two cells along its top. Existing terrain in the upper-left or upper-middle cell can be overwritten. An occupied upper-right cell, either lower side, or the center blocks placement. Seven prepared placements in the emulator confirmed the blank-space case and each occupied cell. The incomplete check is in the construction script.
The game and editor run compiled instructions through the same interpreter. The main Source tab covers the resident game; the construction companion records its separate script. The About tab explains the disk edition, boot procedure and remaining research questions.