Address Description
9C56
Draw game screen
9D40
Calculate address in the mini-map (MiniMap table)
9D56
Calculate address in the mini-map (MiniMap table) and Get
9D5F
Check value in the mini-map (MiniMap table), if row and column in range 0..31
9D79
Calculate address in the mini-map (MiniMap table) and Set
9D84
Generate next pseudo-random 16-bit value
9DA5
Fill block at HL with A
9DAA
Prepare the mini-map (MiniMap table)
9F81
Carve tunnel in world map: random-walk cave generator
A03B
Carve tunnel in world map: random-walk cave generator (rightward)
A0F5
Calculate address in relief block
A129
Calculate address in relief block and Get tile nummber
A14C
Get screen attribute address
A164
Convert char coords HL to ZX screen address
A176
Draw tile 16x8 at the screen
A187
Draw tile 8x8 at the screen
A193
Generate static object placements (chests, pearls/shells) across the map
B0A9
Draw static objects on the screen; prepare LB07D table
B1D4
Select 8 random objects from the object pool
B213
Animate and draw rising air bubbles, plus Octopus
B2C0
Octopus delay and process
B2CE
Draw tile 8x8 with XOR
B2DB
Draw tile 16x8 with XOR
B317
Process Octopus, draw if needed
B35D
Draw Octopus sprite
B3A0
Insert or remove object from packed record list
B470
Draw object sprite, clipped to viewport
B572
Copy records forward
B57E
Remove first record: shift list backward by one slot
B598
Copy records backward
B5A4
Shift record block forward/backward by direction (Y axis)
B5E0
Clip object position to viewport, allocate/free screen slot
B686
Screen attribute change for object edges (vertical and horizontal)
B70F
Screen attribute change for horizontally oriented object
B737
Update fish object: advance shift, draw, run moving procedure
B7BB
Update object: advance shift, draw, run moving procedure
B836
No-op moving procedure (empty stub)
B837
Screen attribute change for vertically oriented object
B885
Moving procedure for fish object moving horizontal
B972
Moving procedure for fish object moving vertical
BA64
Moving procedure for fish object moving diagonal
BD83
Set random speed and initial direction for spawned object
BDBA
Draw records for current mini-map row band
BDEA
Update records for current mini-map row band, with delay
BE40
Process 26-byte records in group II
BE58
Process 26-byte records in group II
BE6D
Process 26-byte records in group III
BE85
Process 26-byte records in group III
BE9A
Process 21-byte records in group I: Boat, meduzas, round fishes
BEB2
Process 21-byte records in group I: Boat, meduzas, round fishes
BEC7
Reset slot allocation bitmap and buffer pointer
BEDB
Initialize level: place random objects (groups I-V), boat objects
BFB0
Spawn N objects of one type at random positions from template table
C009
Place N objects at random screen positions, avoiding the boat
C431
Update group IV and V object records (movement)
C45C
Draw group IV and V object records
C481
Object idle animation state machine (frame cycle + random wait)
C4D5
Delay loop (busy-wait via LDIR)
D990
Game
DA39
Clear screen, fill attributes with A
DA59
Print char and shift current position right
DA98
Print string
DAAD
Prepare game screen and some variables
DBC2
Initialize variables depending of Game level
DE2E
Update gauge indicator on the screen
DE3E
Update Depth indicator
DE5D
Update Oxygen indicator, maximum is $FFFF
DE85
Print decimal number
DED9
Print high score number
DEE5
Print score number
DEF1
Print HELD number
DFD5
Update diver position, angle and sprite from movement state
E2A8
Diver frame update: speed timer moves diver, input timer reads keys
E2DB
Read and process keyboard input
E364
Diver per-frame logic: oxygen drain, drowning, object interaction
E41B
Drowned diver: periodic 180-degree turn
E43A
Diver explosion
E476
Interact with object, like take Oxygen or pick up pearls
E5D2
DE = (L5B33) - HELD
E5EC
Play melody
E615
Play melody $E60B
E645
Play melody $E629
E682
Draw Divers on the Boat
E6AB
Reset oxygen, draw divers on boat, position diver at dive start
E767
Diver on boat: idle, embark and disembark state machine
E915
Diver reaches boat: check collision, start climb sequence
E9B0
Plus one live
EA7A
Insert new high-score table entry if Score qualifies
EADE
Show Game Over screen and high-score table, prompt for name
EB82
Read player name for high-score entry (up to 6 chars)
EBDB
Print 16-bit number at TAB position (score table)
EC7C
Redefine keys
ECEB
Wait for keypress (with click sound), return key-row mask
EDDF
Starting point
EE1C
Main menu: wait for K/L/S/skill key, dispatch action
EEAD
Attract-mode demo: idle timeout starts animated level preview