![]() |
Routines |
Prev: 36111 | Up: Map |
Used by the routine at 34574.
|
||||||||
36211 | LD HL,23575 | Point HL at the cell at (0,23) in the attribute buffer at 23552 (the source of the light beam) | ||||||
36214 | LD DE,32 | Prepare DE for addition (the beam travels vertically downwards to start with) | ||||||
The beam-drawing loop begins here.
|
||||||||
36217 | LD A,(32809) | Pick up the attribute byte of the floor tile for the cavern from 32809 | ||||||
36220 | CP (HL) | Does HL point at a floor tile? | ||||||
36221 | RET Z | Return if so (the light beam stops here) | ||||||
36222 | LD A,(32827) | Pick up the attribute byte of the wall tile for the cavern from 32827 | ||||||
36225 | CP (HL) | Does HL point at a wall tile? | ||||||
36226 | RET Z | Return if so (the light beam stops here) | ||||||
36227 | LD A,39 | A=39 (INK 7: PAPER 4) | ||||||
36229 | CP (HL) | Does HL point at a tile with this attribute value? | ||||||
36230 | JR NZ,36248 | Jump if not (the light beam is not touching Willy) | ||||||
36232 | EXX | Switch to the shadow registers briefly (to preserve DE and HL) | ||||||
36233 | CALL 35388 | Decrease the air supply by four units | ||||||
36236 | CALL 35388 | |||||||
36239 | CALL 35388 | |||||||
36242 | CALL 35388 | |||||||
36245 | EXX | Switch back to the normal registers (restoring DE and HL) | ||||||
36246 | JR 36261 | Jump forward to draw the light beam over Willy | ||||||
36248 | LD A,(32800) | Pick up the attribute byte of the background tile for the cavern from 32800 | ||||||
36251 | CP (HL) | Does HL point at a background tile? | ||||||
36252 | JR Z,36261 | Jump if so (the light beam will not be reflected at this point) | ||||||
36254 | LD A,E | Toggle the value in DE between 32 and -1 (and therefore the direction of the light beam between vertically downwards and horizontally to the left): the light beam has hit a guardian | ||||||
36255 | XOR 223 | |||||||
36257 | LD E,A | |||||||
36258 | LD A,D | |||||||
36259 | CPL | |||||||
36260 | LD D,A | |||||||
36261 | LD (HL),119 | Draw a portion of the light beam with attribute value 119 (INK 7: PAPER 6: BRIGHT 1) | ||||||
36263 | ADD HL,DE | Point HL at the cell where the next portion of the light beam will be drawn | ||||||
36264 | JR 36217 | Jump back to draw the next portion of the light beam |
Prev: 36111 | Up: Map |