Prev: DE51 Up: Map Next: DE7F
DE52: Update "aerosol immunity" if it is still active
Used by the routine at C800.
DE52 LD HL,$C87E Get the flags. (C87E)
DE55 BIT 5,(HL) Is bit 5 (got the aerosol) still active?
DE57 RET Z Return if not.
DE58 BIT 7,(HL) Is bit 7 (game not won) active?
DE5A RET NZ Return if it is - if Dan's completed the game there's no need for aerosol.
DE5B EX DE,HL Put the flags in DE.
DE5C LD HL,$DE51 Point HL at the time left for the aerosol.
DE5F DEC (HL) Decrement it by one.
DE60 LD A,(HL) Is there any left?
DE61 AND A
DE62 JR NZ,$DE67 Yes, so move forward.
The aerosol has run out.
DE64 EX DE,HL Swap DE and HL.
DE65 RES 5,(HL) Reset flag 5 (got the aerosol)
DE67 AND $07 Put bits 0-2 of the time left in C to use as a border colour.
DE69 LD C,A
DE6A LD A,($E800) Get the last read state of port FE.
DE6D AND $F8 Keep the top 5 bits.
DE6F OR C Add in the new border.
DE70 OUT ($FE),A Set the border and remember this state.
DE72 LD ($E800),A
DE75 LD A,C Get bit 4 of the time left to use as a tune.
DE76 AND $04
DE78 RRA
DE79 ADD A,$05
DE7B CALL $DB01 Play the sound running while the aerosol is active.
DE7E RET Reset
Prev: DE51 Up: Map Next: DE7F