Prev: 36211 Up: Map Next: 36344
36266: Draw the horizontal guardians in the current cavern
Used by the routine at 34574.
36266 LD IY,32958 Point IY at the first byte of the first horizontal guardian definition at 32958
The guardian-drawing loop begins here.
36270 LD A,(IY+0) Pick up the first byte of the guardian definition
36273 CP 255 Have we dealt with all the guardians yet?
36275 RET Z Return if so
36276 OR A Is this guardian definition blank?
36277 JR Z,36337 If so, skip it and consider the next one
36279 LD DE,31 Prepare DE for addition
36282 LD L,(IY+1) Point HL at the address of the guardian's location in the attribute buffer at 23552
36285 LD H,(IY+2)
36288 AND 127 Reset bit 7 (which specifies the animation speed) of the attribute byte, ensuring no FLASH
36290 LD (HL),A Set the attribute bytes for the guardian in the buffer at 23552
36291 INC HL
36292 LD (HL),A
36293 ADD HL,DE
36294 LD (HL),A
36295 INC HL
36296 LD (HL),A
36297 LD C,1 Prepare C for the call to the drawing routine at 36852 later on
36299 LD A,(IY+4) Pick up the animation frame (0-7)
36302 RRCA Multiply it by 32
36303 RRCA
36304 RRCA
36305 LD E,A Copy the result to E
36306 LD A,(33799) Pick up the number of the current cavern from 33799
36309 CP 7 Are we in one of the first seven caverns?
36311 JR C,36323 Jump if so
36313 CP 9 Are we in The Endorian Forest?
36315 JR Z,36323 Jump if so
36317 CP 15 Are we in The Sixteenth Cavern?
36319 JR Z,36323 Jump if so
36321 SET 7,E Add 128 to E (the horizontal guardians in this cavern use frames 4-7 only)
36323 LD D,129 Point DE at the graphic data for the appropriate guardian sprite (at 33024+E)
36325 LD L,(IY+1) Point HL at the address of the guardian's location in the screen buffer at 24576
36328 LD H,(IY+3)
36331 CALL 36852 Draw the guardian to the screen buffer at 24576
36334 JP NZ,36102 Kill Willy if the guardian collided with him
The current guardian definition has been dealt with. Time for the next one.
36337 LD DE,7 Point IY at the first byte of the next horizontal guardian definition
36340 ADD IY,DE
36342 JR 36270 Jump back to deal with the next horizontal guardian
Prev: 36211 Up: Map Next: 36344