Address Length Description
29347 2
Copy Length: Entity State Data
Byte count used when copying entity state data during initialisation / room changes.
29349 2
Copy Length: Game State
Byte count used when copying game-state data during initialisation / room changes.
29351 2
Pointer: Entity State Backup End
End pointer for the entity-state backup region used by copy routines.
29353 1
Flag: Learner Berk Mode
Set by the main menu (MainMenu_ChooseLearnerOrSuper): 0 = Super Berk, 1 = Learner Berk. Print_StatusMessages uses this to choose the rating message at Messaging_TooLateIveChangedMyMind.
29354 2
Pointer: Last Collided Entity
Address of the complex state data for the entity involved in the last collision / interaction check. Written by the collision helpers at 62130, 62239, 62337 and 62435; read as IX / IY / BC throughout Berk's movement and pick-up / put-down logic.
29356 2
Pointer: Current Entity
Address of the complex state data for the entity currently being processed (usually Berk). Often the entity Berk is holding when bit 4 of Berk's flags byte 3 (IX+3) is set.
29358 1
Current Task Index
Index of the current Bad Tempered Thing task (meal request).
29359 1
Current Task Phase
Phase / sub-step within the current task.
29360 1
Dialogue Line Index
Index of the current dialogue / message line.
29361 2
Pointer: Berk Script Position
Pointer into Berk's current script data stream.
29363 1
Game Event Flags
Cross-cutting event bits for trap door and task state.
Bit Meaning
0 Room / script event raised (set by helpers such as Script_Shared_SetEventBit)
1 Trap door is open / trap door event armed
2 Falling-entity latch (cleared/set by Process_Falling_Entities)
3 Object has been offered to the trap (Bad Tempered Thing path)
4 Task-two / upstairs event latch
5 Reserved / unused in the observed call sites
6 Special put-down / room-transition event
7 Task entity script is active
29364 1
Task Status Flags
Per-task status bits (Drutt / collectible progress and dialogue gates).
Bit Meaning
0 Task progress / dialogue gate
1 Timed Berk event pending
4 Drutt collected a type-24 object
5 Drutt collected a type-28 object
6 Berk action / eat latch
7 Berk script / dialogue busy
29365 1
Task Two Flags
Flags for the "Thing Upstairs" (task two) state machine.
Bit Meaning
1 Task-two script should advance
2 Spawn / random-walk latch for the upstairs helper
3 Helper entity needs its layout restoring
4 Task-two helper busy
5 Task-two helper secondary latch
6 Task-two room-transition latch
7 Task-two entity script active
29366 1
Task Three Flags
Flags for the task-three (boiled slimies / feeding) state machine. Bit names below are taken from the Bad Tempered Thing dialogue gates and the stove / put-down writers that set or clear them.
Bit Name Set / clear
0 MobileHeater no SET/RES site found
1 Slimies set by 61712; tested by 55553
2 SlimyLoose set by 46081 / 50940; cleared by Update_Stove
4 BoilEmUp set by ScriptRoutine_TaskThreeBerkRightWindow_SetFlagsAndLayout; cleared by Update_Stove; tested by 55591
5 BoilEmUpLatch set by ScriptRoutine_TaskThreeBerkRightWindow_SetFlagsAndLayout; cleared by Update_Stove / 50071
6 StoveReady set by Update_Stove when StoveTick reaches 4
7 StoveUpdated set by Update_Stove; tested by ScriptRoutine_TaskThreeBerkRightWindow_SetFlagsAndLayout
29368 1
Task One / Collision Flags
Flag byte for task-one progress messages (Table_TaskProgressMessagePointers) and the type-8 / type-11 collision latch at Check_Entity_Collision.
Bit Meaning
6 Third consecutive Check_Entity_Collision collision (cleared by 60856)
7 Collision seen this check (Check_Entity_Collision)
29369 1
Entity Interaction Flag
Cross-cutting interaction bits for crushers, ghosts and hazards. Meanings below are from observed writers/readers only.
Bit Meaning
1 Set by 45899; tested by 55614
2 Set/cleared by ScriptRoutine_TaskFourTickOfferItem; tested by 55644 to gate dialogue
3 Set by Update_Ghosts_RetriggerBit3; tested and cleared by Update_Ghosts
4 Set by Update_Crusher; tested by 55620 to gate dialogue
6 Set by Update_Crusher when SharedTick reaches 3; no BIT reader found
7 Set by Update_Crusher on every crusher update; no BIT reader found
29370 1
Trap Door Flags
Animation and interaction bits for the trap door itself.
Bit Meaning
1 Weight-chain layout swap pending
2 Drutt is mid trap door animation
3 Trap door is open for Berk's put-down check
29371 1
Drutt Animation Counter
Frame counter driving Drutt's animation.
29372 1
Collectible Counter
Count of collectible eyeballs gathered so far.
29373 1
Collision Scratch Byte
Byte used by collision / collectible helpers (Check_Entity_Collision, Update_Bad_Tempered_Thing_Dialogue) to remember a room index or entity field across a call.
29374 1
Stove Tick
How many times Update_Stove Update Stove has run this boil cycle. On the fourth call that routine sets StoveReady (bit 6 of TaskThreeFlags).
29375 1
Room Transition Flag
Non-zero while a room transition is in progress.
29376 1
Entity Spawn Timer
Countdown / tick used when spawning transient entities.
29377 1
Animation Frame Counter
Shared animation frame counter for scripted entities.
29378 1
Shared Tick
One-byte counter shared by Update_Crusher (increments on each crusher update) and script routine ScriptRoutine_TaskFourTickOfferItem (decrements toward zero). Not a pure frame counter: Update_Crusher advances it once per crusher call, and when the value reaches 3 that routine also sets bits 6 and 7 of EntityInteractionFlag.
29379 1
Task Three Timer
Countdown timer for task-three creature behaviour.
29380 1
Stove / Heater State
State of the stove / heater prop.
29381 1
Message Trigger
Latch that triggers the next on-screen message.
29382 1
Frame Counter
Global frame counter advanced by the main loop.
29383 1
Bad Tempered Thing State
State flags for the Bad Tempered Thing.
29384 1
Berk Action Lock
Lock that prevents Berk starting a new action until cleared.
29385 5
Task Selection Table
Bit 7 marks a task slot as used. Task 5 is chosen separately at 44048.
29390 1
Timed Event Latch
Non-zero while a timed Drutt / trap door script is armed. Set to 1 by ScriptRoutine_StartDruttScript, written from an entity type at 44525, cleared by Update_Timed_Events, and tested by Update_Berk_State_ActiveTaskFrameTick / 47475 before those paths run.
29391 2
Pointer: Active Script Cursor
Live script-data cursor while a task / entity script runs. Task updaters copy their dedicated script position (Pointer_TaskThreeScriptPosition / Pointer_DruttScriptPosition / Pointer_TaskTwoScriptPosition / Pointer_TaskFourScriptPosition / Pointer_ThingUpstairsScriptPosition / Pointer_BerkScriptPosition) here, call the shared runner, then write the (possibly advanced) cursor back.
29393 2
Pointer: Task Three Script Position
Pointer into task-three script data.
29395 2
Pointer: Drutt Script Position
Pointer into Drutt script data.
29397 2
Pointer: Task Two Script Position
Pointer into task-two script data.
29399 2
Pointer: Task Four Script Position
Pointer into task-four script data.
29401 2
Pointer: Thing Upstairs Script Position
Script cursor for complex entity slot 32 when its type is 34. Written by 48570 / 48171; read by 48159.
29403 2
Pointer: Berk Held Entity
Pointer to the entity Berk is currently holding.
29405 2
Score
Current score.
29407 9
Collectible Slot State
Three 3-byte records used by Update_Collectibles Update Collectibles. Each record is a script-position word plus a per-slot counter; Update_Collectibles walks the table, copies a record through Pointer_ActiveScriptCursor / CollectibleCounter, calls Collect_Entity, then writes the updated values back.
29416 1
Saved Room Index
Room index remembered by 60726 while Berk opens a door behind him. Also used by 44997 as the exclusive end address when measuring the CurrentTaskIndex…29415 game-state backup length into CopyLength_GameState.
29417 1
Held Entity Y-Extent
Y-extent to restore onto a held entity. Written by 46808 as the collision partner's y−1 during Berk's put-down / pick-up probe; read and cleared by ScriptRoutine_PickUpHeld when applying the held entity's new y / y-extent.
29418 1
Display Buffer Select Flag
Selects which display buffer is active when swapping primary / secondary.
29419 1
Message Colour
Attribute used when printing messages.
29420 1
Door Interaction Delay
Short countdown used by ScriptRoutine_BerkDoorBehind. Set to 1–2 at 60827 after a room change; while non-zero 60697 decrements it and skips the rest of that interaction pass.
29421 1
Camera Y Coordinate
Camera Y coordinate.
29422 1
Camera X Coordinate
Camera X coordinate.
29424 1
Task Timer
Task timer. Incremented at 44133. 44137 compares it with 160 for the timeout path. Update_Berk_State_AttrStripFromSeed also reads it for the status attribute strip. Reset to 0 at 44360. Not the pseudo-random seed at RandomSeedScratch.
29425 1
Task Progress Repeat Count
Cleared at 58020 and loaded at 58054 from the byte at the address the message stream names. 44650 returns if it is zero. Otherwise each pass of the loop at Update_Timed_Events_HeldCountdownStep sets the bonus at Pointer_BerkHeldEntity, reprints it and calls Handle_Berk_Action.
29426 1
Game Tick Counter
Game tick counter.
29427 2
High Score
High score.
29429 2
Pointer: Current Display Buffer
Pointer to the current display-buffer base used while drawing layouts.
29431 2
Stored Drawing Coordinates
Base x/y character coordinates used while processing graphic layout data (H = x, L = y).
29433 2
Pointer: Current Character Set
Pointer to the character set currently used for text output.
29435 2
Pointer: Camera Room Origin
Pointer to the camera room origin used while drawing.
29437 2
Pointer: Script Loop Restart
Script-data address saved by ScriptRoutine_StartScriptLoop so ScriptRoutine_EndScriptLoop (End Script Loop) can reload HL and repeat the body while ScriptLoopCounter remains non-zero.
29439 2
Pointer: Graphic Layout Loop Start
Saved position in graphic layout data at the start of a loop (opcodes 238 / 239).
29441 1
Script Loop Counter
Remaining iterations for a script-level loop. Loaded from the operand of ScriptRoutine_StartScriptLoop; decremented by ScriptRoutine_EndScriptLoop until it hits zero.
29442 1
Graphic Layout Loop Counter
Remaining iterations for the current graphic layout loop (opcodes 238 / 239).
29443 1
Berk X Coordinate Copy
Copy of Berk's X coordinate used by camera-follow logic.
29444 1
Berk X-Extent Copy
Copy of the camera-follow entity's x-extent (IX+8), written by Update_Berk_Controller alongside BerkXCoordinateCopy. Not a Y coordinate.
29445 1
Berk Room Index Copy
Copy of Berk's room index used by camera-follow logic.
29446 1
Current Graphic Set Index
Index of the graphic set currently selected by graphic layout opcode 244. Written into the display buffer with each tile; Blit_DisplayBufferRow looks up the set base in Table_GraphicSetAddresses.
29447 1
Current Text Attribute
Attribute applied when printing menu / HUD text.
29448 1
Current Attribute
Attribute byte currently selected by graphic layout opcode 242. Written into the display buffer with each tile; 0 means "use the attribute from the graphic data".
29449 1
Pending Sound Index
Sound index queued by Queue_Sound for Play_QueuedSound (0 = idle). Bit 7 marks a force-queue from Queue_Sound.
29450 1
Camera Follow Delay
Camera-follow delay countdown.
44258 2
Pointer: Berk Script Table Base
Saved base address of the Berk script table while Start_Berk_Script walks a random entry. Written on entry to Start_Berk_Script and reloaded when a candidate row is rejected.
45017 2
Temporary Entity Pointer
Pointer used by Drutt / trap door animation routines.
45019 1
Drutt: Saved Entity Type
Entity type remembered while Drutt's trap door animation runs (Update_Drutt).
45085 1
Drutt: Saved Animation State
Secondary state byte for Drutt's trap door animation (Reset_Trap_Door_Animation_State / Update_Drutt).
53045 2
Temporary Entity Pointer
Pointer used while updating miscellaneous entities.
55653 12
Table: Bad Tempered Thing Dialogue
Per-task dialogue pointers indexed by Update_Bad_Tempered_Thing_Dialogue_IndexTable. Task 0 skips this table and uses 55245 instead.
60012 1
Border / Speaker State
Current border colour and EAR bit. Written by Set_BorderSpeakerState; read by Play_QueuedSound before each speaker toggle.
60130 3
Random Seed Scratch
Three-byte scratch written by game start and read by the pseudo-random routine.
62968 1
Control Input Bitmap
Player control bits, written by Read_PlayerControls.
Bit Meaning
0 Right
1 Left
2 Down (forward)
3 Up (back)
4 Fire (pick up / put down / interact)
5 Secondary fire / alternate action (keyboard T by default)
6 Pause (keyboard H by default; special-cased in Read_PlayerControls)
7 Unused
62969 2
Pointer: Control Key Definition Cursor
Pointer into Table_ControlKeyCodes used while redefine-keys walks the control table.
62978 1
Flag: Kempston Joystick Enabled
Non-zero to read Kempston (31) in Read_PlayerControls; zero to use the keyboard table at Table_ControlKeyCodes.