Prev: 35068 Up: Map Next: 35211
35090: Initialise the current room
Used by the routines at 35591 (to teleport into a room), 35841 (to reinitialise the room after Willy has lost a life), 38026 (when Willy has entered the room from the right), 38046 (when Willy has entered the room from the left), 38064 (when Willy has entered the room from below) and 38098 (when Willy has entered the room from above). The routine at 35068 also continues here.
Input
Output
35090 LD A,(33824) Pick up the current room number from 33824
35093 OR 192 Point HL at the first byte of the room definition
35095 LD H,A
35096 LD L,0
35098 LD DE,32768 Copy the room definition into the game status buffer at 32768
35101 LD BC,256
35104 LDIR
35106 LD IX,33008 Point IX at the first byte of the first entity specification for the current room at 33008
35110 LD DE,33024 Point DE at the first byte of the first entity buffer at 33024; this instruction is redundant, since DE already holds 33024
35113 LD A,8 There are at most eight entities in a room
35115 LD L,(IX+0) Pick up the first byte of the entity specification
35118 RES 7,L Point HL at the corresponding entry in the table of entity definitions at 40960
35120 LD H,20
35122 ADD HL,HL
35123 ADD HL,HL
35124 ADD HL,HL
35125 LD BC,2 Copy the first two bytes of the entity definition into the entity buffer
35128 LDIR
35130 LD C,(IX+1) Copy the second byte of the entity specification into the third byte of the entity definition
35133 LD (HL),C
35134 LD BC,6 Copy the remaining six bytes of the entity definition into the entity buffer
35137 LDIR
35139 INC IX Point IX at the first byte of the next entity specification
35141 INC IX
35143 DEC A Have we copied all eight entity definitions into the entity buffers yet?
35144 JR NZ,35115 If not, jump back to copy the next one
35146 LD HL,34255 Copy the seven bytes that define Willy's state (position, animation frame etc.) on entry to this room from 34255-34261 to 34263
35149 LD DE,34263
35152 LD BC,7
35155 LDIR
35157 CALL 36147 Draw the current room to the screen buffer at 28672 and the attribute buffer at 24064
35160 LD HL,20480 Clear the bottom third of the display file
35163 LD DE,20481
35166 LD BC,2047
35169 LD (HL),0
35171 LDIR
35173 LD IX,32896 Print the room name (see 32896) at (16,0)
35177 LD C,32
35179 LD DE,20480
35182 CALL 38528
35185 LD IX,34132 Print "Items collected 000 Time 00:00 m" (see 34132) at (19,0)
35189 LD DE,20576
35192 LD C,32
35194 CALL 38528
35197 LD A,(32990) Pick up the border colour for the current room from 32990
35200 LD C,254 Set the border colour
35202 OUT (C),A
35204 XOR A Initialise the rope status indicator at 34262 to 0
35205 LD (34262),A
35208 JP 35245 Enter the main loop
Prev: 35068 Up: Map Next: 35211