![]() |
Routines |
| Prev: 8D7F | Up: Map | Next: 8E7A |
|
Used by the routine at 8F9F.
|
||||||||
| 8DCD | LD IY,$C527 | Point IY at the crusher data (C527). | ||||||
| 8DD1 | LD A,(IY+$00) | Are the X and Y co-ordinates both zero? | ||||||
| 8DD4 | OR (IY+$01) | |||||||
| 8DD7 | RET Z | If so, there are no crushers here, so return. | ||||||
| 8DD8 | LD A,(IY+$03) | Is it time to fire a crusher? | ||||||
| 8DDB | OR A | |||||||
| 8DDC | JR Z,$8DE2 | Jump if it is. | ||||||
| 8DDE | DEC (IY+$03) | Otherwise decrement the time to fire and return. | ||||||
| 8DE1 | RET | |||||||
|
The crusher should now be activated.
|
||||||||
| 8DE2 | BIT 0,(IY+$04) | Is the crusher descending? | ||||||
| 8DE6 | CALL NZ,$9148 | See if Monty is underneath one and if so, kill him. | ||||||
| 8DE9 | BIT 0,(IY+$04) | Is the crusher descending? | ||||||
| 8DED | JR NZ,$8E10 | Jump forward if not. | ||||||
|
The crusher is ascending.
|
||||||||
| 8DEF | INC (IY+$01) | Move down two rows. | ||||||
| 8DF2 | INC (IY+$01) | |||||||
| 8DF5 | LD A,(IY+$05) | Has the Y co-ordinate reached the top? | ||||||
| 8DF8 | CP (IY+$01) | |||||||
| 8DFB | JR NC,$8E0C | Jump forward if it hasn't. | ||||||
|
The crusher has reached the top.
|
||||||||
| 8DFD | LD (IY+$04),$01 | Signal that the crusher is descending. | ||||||
| 8E01 | CALL $FD9B | Get a pseudo-random number. | ||||||
| 8E04 | RES 7,C | Ensure it is a number between 1 and 80. | ||||||
| 8E06 | INC C | |||||||
| 8E07 | LD A,C | Store it as the next time to fire and return. | ||||||
| 8E08 | LD (IY+$03),A | |||||||
| 8E0B | RET | |||||||
| 8E0C | CALL $8E2C | Redraw the crusher and return. | ||||||
| 8E0F | RET | |||||||
|
The crusher is descending.
|
||||||||
| 8E10 | DEC (IY+$01) | Move down two rows. | ||||||
| 8E13 | DEC (IY+$01) | |||||||
| 8E16 | LD A,(IY+$02) | Has the Y co-ordinate reached the bottom? | ||||||
| 8E19 | CP (IY+$01) | |||||||
| 8E1C | JR C,$8E0C | Jump back if it hasn't. | ||||||
|
The crusher has reached the bottom.
|
||||||||
| 8E1E | LD (IY+$04),$00 | Signal that the crusher is ascending. | ||||||
| 8E22 | LD DE,$0002 | Set the length. | ||||||
| 8E25 | LD HL,$066A | Set the frequency. | ||||||
| 8E28 | CALL $03B6 | Call the ROM beep routine without enabling interrupts. | ||||||
| 8E2B | RET | |||||||
| Prev: 8D7F | Up: Map | Next: 8E7A |