![]() |
Routines |
| Prev: 36111 | Up: Map | Next: 36266 |
|
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 | Next: 36266 |