Routines |
Prev: 37125 | Up: Map | Next: 37403 |
Used by the routine at 34574.
|
||||
37173 | LD HL,23558 | Flip the left-hand switch at (0,6) if Willy is touching it | ||
37176 | CALL 37403 | |||
37179 | LD A,(32987) | Pick up the Kong Beast's status from 32987 | ||
37182 | CP 2 | Is the Kong Beast already dead? | ||
37184 | RET Z | Return if so | ||
37185 | LD A,(29958) | Pick up the sixth pixel row of the left-hand switch from the screen buffer at 28672 | ||
37188 | CP 16 | Has the switch been flipped? | ||
37190 | JP Z,37369 | Jump if not | ||
The left-hand switch has been flipped. Deal with opening up the wall if that is still in progress.
|
||||
37193 | LD A,(24433) | Pick up the attribute byte of the tile at (11,17) in the buffer at 24064 | ||
37196 | OR A | Has the wall there been removed yet? | ||
37197 | JR Z,37238 | Jump if so | ||
37199 | LD HL,32625 | Point HL at the bottom row of pixels of the wall tile at (11,17) in the screen buffer at 28672 | ||
37202 | LD A,(HL) | Pick up a pixel row | ||
37203 | OR A | Is it blank yet? | ||
37204 | JR NZ,37228 | Jump if not | ||
37206 | DEC H | Point HL at the next pixel row up | ||
37207 | LD A,H | Have we checked all 8 pixel rows yet? | ||
37208 | CP 119 | |||
37210 | JR NZ,37202 | If not, jump back to check the next one | ||
37212 | LD A,(32800) | Pick up the attribute byte of the background tile for the current cavern from 32800 | ||
37215 | LD (24433),A | Change the attributes at (11,17) and (12,17) in the buffer at 24064 to match the background tile (the wall there is now gone) | ||
37218 | LD (24465),A | |||
37221 | LD A,114 | Update the seventh byte of the guardian definition at 32965 so that the guardian moves through the opening in the wall | ||
37223 | LD (32971),A | |||
37226 | JR 37238 | |||
37228 | LD (HL),0 | Clear a pixel row of the wall tile at (11,17) in the screen buffer at 28672 | ||
37230 | LD L,145 | Point HL at the opposite pixel row of the wall tile one cell down at (12,17) | ||
37232 | LD A,H | |||
37233 | XOR 7 | |||
37235 | LD H,A | |||
37236 | LD (HL),0 | Clear that pixel row as well | ||
Now check the right-hand switch.
|
||||
37238 | LD HL,23570 | Flip the right-hand switch at (0,18) if Willy is touching it (and it hasn't already been flipped) | ||
37241 | CALL 37403 | |||
37244 | JR NZ,37277 | Jump if the switch was not flipped | ||
37246 | XOR A | Initialise the Kong Beast's pixel y-coordinate at 32988 to 0 | ||
37247 | LD (32988),A | |||
37250 | INC A | Update the Kong Beast's status at 32987 to 1: he is falling | ||
37251 | LD (32987),A | |||
37254 | LD A,(32800) | Pick up the attribute byte of the background tile for the current cavern from 32800 | ||
37257 | LD (24143),A | Change the attributes of the floor beneath the Kong Beast in the buffer at 24064 to match that of the background tile | ||
37260 | LD (24144),A | |||
37263 | LD HL,28751 | Point HL at (2,15) in the screen buffer at 28672 | ||
37266 | LD B,8 | Clear the cells at (2,15) and (2,16), removing the floor beneath the Kong Beast | ||
37268 | LD (HL),0 | |||
37270 | INC L | |||
37271 | LD (HL),0 | |||
37273 | DEC L | |||
37274 | INC H | |||
37275 | DJNZ 37268 | |||
37277 | LD A,(32987) | Pick up the Kong Beast's status from 32987 | ||
37280 | OR A | Is the Kong Beast still on the ledge? | ||
37281 | JR Z,37369 | Jump if so | ||
The Kong Beast is falling.
|
||||
37283 | LD A,(32988) | Pick up the Kong Beast's pixel y-coordinate from 32988 | ||
37286 | CP 100 | Has he fallen into the portal yet? | ||
37288 | JR Z,37363 | Jump if so | ||
37290 | ADD A,4 | Add 4 to the Kong Beast's pixel y-coordinate at 32988 (moving him downwards) | ||
37292 | LD (32988),A | |||
37295 | LD C,A | Copy the pixel y-coordinate to C; this value determines the pitch of the sound effect | ||
37296 | LD D,16 | This value determines the duration of the sound effect | ||
37298 | LD A,(32883) | Pick up the border colour for the current cavern from 32883 | ||
37301 | OUT (254),A | Make a falling sound effect | ||
37303 | XOR 24 | |||
37305 | LD B,C | |||
37306 | DJNZ 37306 | |||
37308 | DEC D | |||
37309 | JR NZ,37301 | |||
37311 | LD A,C | Copy the Kong Beast's pixel y-coordinate back into A | ||
37312 | RLCA | Point DE at the entry in the screen buffer address lookup table at 33536 that corresponds to the Kong Beast's pixel y-coordinate | ||
37313 | LD E,A | |||
37314 | LD D,131 | |||
37316 | LD A,(DE) | Point HL at the address of the Kong Beast's location in the screen buffer at 24576 | ||
37317 | OR 15 | |||
37319 | LD L,A | |||
37320 | INC DE | |||
37321 | LD A,(DE) | |||
37322 | LD H,A | |||
37323 | LD D,129 | Use bit 5 of the value of the game clock at 32957 (which is toggled once every eight passes through the main loop) to point DE at the graphic data for the appropriate Kong Beast sprite | ||
37325 | LD A,(32957) | |||
37328 | AND 32 | |||
37330 | OR 64 | |||
37332 | LD E,A | |||
37333 | LD C,0 | Draw the Kong Beast to the screen buffer at 24576 | ||
37335 | CALL 36852 | |||
37338 | LD HL,33836 | Add 100 to the score | ||
37341 | CALL 37118 | |||
37344 | LD A,(32988) | Pick up the Kong Beast's pixel y-coordinate from 32988 | ||
37347 | AND 120 | Point HL at the address of the Kong Beast's location in the attribute buffer at 23552 | ||
37349 | LD L,A | |||
37350 | LD H,23 | |||
37352 | ADD HL,HL | |||
37353 | ADD HL,HL | |||
37354 | LD A,L | |||
37355 | OR 15 | |||
37357 | LD L,A | |||
37358 | LD A,6 | The Kong Beast is drawn with yellow INK | ||
37360 | JP 36447 | Set the attribute bytes for the Kong Beast | ||
The Kong Beast has fallen into the portal.
|
||||
37363 | LD A,2 | Set the Kong Beast's status at 32987 to 2: he is dead | ||
37365 | LD (32987),A | |||
37368 | RET | |||
The Kong Beast is still on the ledge.
|
||||
37369 | LD A,(32957) | Pick up the value of the game clock at 32957 | ||
37372 | AND 32 | Use bit 5 of this value (which is toggled once every eight passes through the main loop) to point DE at the graphic data for the appropriate Kong Beast sprite | ||
37374 | LD E,A | |||
37375 | LD D,129 | |||
37377 | LD HL,24591 | Draw the Kong Beast at (0,15) in the screen buffer at 24576 | ||
37380 | LD C,1 | |||
37382 | CALL 36852 | |||
37385 | JP NZ,36102 | Kill Willy if he collided with the Kong Beast | ||
37388 | LD A,68 | A=68 (INK 4: PAPER 0: BRIGHT 1) | ||
37390 | LD (23599),A | Set the attribute bytes for the Kong Beast in the buffer at 23552 | ||
37393 | LD (23600),A | |||
37396 | LD (23567),A | |||
37399 | LD (23568),A | |||
37402 | RET |
Prev: 37125 | Up: Map | Next: 37403 |