Routines |
Prev: 9105 | Up: Map | Next: 921B |
Used by the routine at 870E.
|
||||
9135 | LD HL,$5C06 | Flip the left-hand switch at (0,6) if Willy is touching it | ||
9138 | CALL $921B | |||
913B | LD A,($80DB) | Pick up the Kong Beast's status from 80DB | ||
913E | CP $02 | Is the Kong Beast already dead? | ||
9140 | RET Z | Return if so | ||
9141 | LD A,($7506) | Pick up the sixth pixel row of the left-hand switch from the screen buffer at 7000 | ||
9144 | CP $10 | Has the switch been flipped? | ||
9146 | JP Z,$91F9 | Jump if not | ||
The left-hand switch has been flipped. Deal with opening up the wall if that is still in progress.
|
||||
9149 | LD A,($5F71) | Pick up the attribute byte of the tile at (11,17) in the buffer at 5E00 | ||
914C | OR A | Has the wall there been removed yet? | ||
914D | JR Z,$9176 | Jump if so | ||
914F | LD HL,$7F71 | Point HL at the bottom row of pixels of the wall tile at (11,17) in the screen buffer at 7000 | ||
9152 | LD A,(HL) | Pick up a pixel row | ||
9153 | OR A | Is it blank yet? | ||
9154 | JR NZ,$916C | Jump if not | ||
9156 | DEC H | Point HL at the next pixel row up | ||
9157 | LD A,H | Have we checked all 8 pixel rows yet? | ||
9158 | CP $77 | |||
915A | JR NZ,$9152 | If not, jump back to check the next one | ||
915C | LD A,($8020) | Pick up the attribute byte of the background tile for the current cavern from 8020 | ||
915F | LD ($5F71),A | Change the attributes at (11,17) and (12,17) in the buffer at 5E00 to match the background tile (the wall there is now gone) | ||
9162 | LD ($5F91),A | |||
9165 | LD A,$72 | Update the seventh byte of the guardian definition at 80C5 so that the guardian moves through the opening in the wall | ||
9167 | LD ($80CB),A | |||
916A | JR $9176 | |||
916C | LD (HL),$00 | Clear a pixel row of the wall tile at (11,17) in the screen buffer at 7000 | ||
916E | LD L,$91 | Point HL at the opposite pixel row of the wall tile one cell down at (12,17) | ||
9170 | LD A,H | |||
9171 | XOR $07 | |||
9173 | LD H,A | |||
9174 | LD (HL),$00 | Clear that pixel row as well | ||
Now check the right-hand switch.
|
||||
9176 | LD HL,$5C12 | Flip the right-hand switch at (0,18) if Willy is touching it (and it hasn't already been flipped) | ||
9179 | CALL $921B | |||
917C | JR NZ,$919D | Jump if the switch was not flipped | ||
917E | XOR A | Initialise the Kong Beast's pixel y-coordinate at 80DC to 0 | ||
917F | LD ($80DC),A | |||
9182 | INC A | Update the Kong Beast's status at 80DB to 1: he is falling | ||
9183 | LD ($80DB),A | |||
9186 | LD A,($8020) | Pick up the attribute byte of the background tile for the current cavern from 8020 | ||
9189 | LD ($5E4F),A | Change the attributes of the floor beneath the Kong Beast in the buffer at 5E00 to match that of the background tile | ||
918C | LD ($5E50),A | |||
918F | LD HL,$704F | Point HL at (2,15) in the screen buffer at 7000 | ||
9192 | LD B,$08 | Clear the cells at (2,15) and (2,16), removing the floor beneath the Kong Beast | ||
9194 | LD (HL),$00 | |||
9196 | INC L | |||
9197 | LD (HL),$00 | |||
9199 | DEC L | |||
919A | INC H | |||
919B | DJNZ $9194 | |||
919D | LD A,($80DB) | Pick up the Kong Beast's status from 80DB | ||
91A0 | OR A | Is the Kong Beast still on the ledge? | ||
91A1 | JR Z,$91F9 | Jump if so | ||
The Kong Beast is falling.
|
||||
91A3 | LD A,($80DC) | Pick up the Kong Beast's pixel y-coordinate from 80DC | ||
91A6 | CP $64 | Has he fallen into the portal yet? | ||
91A8 | JR Z,$91F3 | Jump if so | ||
91AA | ADD A,$04 | Add 4 to the Kong Beast's pixel y-coordinate at 80DC (moving him downwards) | ||
91AC | LD ($80DC),A | |||
91AF | LD C,A | Copy the pixel y-coordinate to C; this value determines the pitch of the sound effect | ||
91B0 | LD D,$10 | This value determines the duration of the sound effect | ||
91B2 | LD A,($8073) | Pick up the border colour for the current cavern from 8073 | ||
91B5 | OUT ($FE),A | Make a falling sound effect | ||
91B7 | XOR $18 | |||
91B9 | LD B,C | |||
91BA | DJNZ $91BA | |||
91BC | DEC D | |||
91BD | JR NZ,$91B5 | |||
91BF | LD A,C | Copy the Kong Beast's pixel y-coordinate back into A | ||
91C0 | RLCA | Point DE at the entry in the screen buffer address lookup table at 8300 that corresponds to the Kong Beast's pixel y-coordinate | ||
91C1 | LD E,A | |||
91C2 | LD D,$83 | |||
91C4 | LD A,(DE) | Point HL at the address of the Kong Beast's location in the screen buffer at 6000 | ||
91C5 | OR $0F | |||
91C7 | LD L,A | |||
91C8 | INC DE | |||
91C9 | LD A,(DE) | |||
91CA | LD H,A | |||
91CB | LD D,$81 | Use bit 5 of the value of the game clock at 80BD (which is toggled once every eight passes through the main loop) to point DE at the graphic data for the appropriate Kong Beast sprite | ||
91CD | LD A,($80BD) | |||
91D0 | AND $20 | |||
91D2 | OR $40 | |||
91D4 | LD E,A | |||
91D5 | LD C,$00 | Draw the Kong Beast to the screen buffer at 6000 | ||
91D7 | CALL $8FF4 | |||
91DA | LD HL,$842C | Add 100 to the score | ||
91DD | CALL $90FE | |||
91E0 | LD A,($80DC) | Pick up the Kong Beast's pixel y-coordinate from 80DC | ||
91E3 | AND $78 | Point HL at the address of the Kong Beast's location in the attribute buffer at 5C00 | ||
91E5 | LD L,A | |||
91E6 | LD H,$17 | |||
91E8 | ADD HL,HL | |||
91E9 | ADD HL,HL | |||
91EA | LD A,L | |||
91EB | OR $0F | |||
91ED | LD L,A | |||
91EE | LD A,$06 | The Kong Beast is drawn with yellow INK | ||
91F0 | JP $8E5F | Set the attribute bytes for the Kong Beast | ||
The Kong Beast has fallen into the portal.
|
||||
91F3 | LD A,$02 | Set the Kong Beast's status at 80DB to 2: he is dead | ||
91F5 | LD ($80DB),A | |||
91F8 | RET | |||
The Kong Beast is still on the ledge.
|
||||
91F9 | LD A,($80BD) | Pick up the value of the game clock at 80BD | ||
91FC | AND $20 | 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 | ||
91FE | LD E,A | |||
91FF | LD D,$81 | |||
9201 | LD HL,$600F | Draw the Kong Beast at (0,15) in the screen buffer at 6000 | ||
9204 | LD C,$01 | |||
9206 | CALL $8FF4 | |||
9209 | JP NZ,$8D06 | Kill Willy if he collided with the Kong Beast | ||
920C | LD A,$44 | A=0x44 (INK 4: PAPER 0: BRIGHT 1) | ||
920E | LD ($5C2F),A | Set the attribute bytes for the Kong Beast in the buffer at 5C00 | ||
9211 | LD ($5C30),A | |||
9214 | LD ($5C0F),A | |||
9217 | LD ($5C10),A | |||
921A | RET |
Prev: 9105 | Up: Map | Next: 921B |