Prev: 8EFA Up: Map Next: 8F7A
8F00: React to what happened to the player and the rescued person
Used by the routine at GAME_FRAME.
Reads and clears the two event bytes (+F). A step is a click; a bad fall, "NASTY FALL !" or "HELP! I FELL!"; blown up, energy to 0 with "SILLY! YOU BLEW YOURSELF UP !" or "HOW COULD YOU ?"; bitten, an energy point off with "BITTEN!" or "THEY GOT ME", or when it reaches 0, "EATEN ALIVE" or "IVE BEEN EATEN ALIVE". All seen in play. A bad fall returns early from here, and PLAY_SCRIPT loads its script number into D, which held the other person's event, so whatever else happened to either of them that frame -- a bite, a blast -- is lost (tested in a simulator and in the emulator by writing both event bytes).
HANDLE_EVENTS 8F00 XOR A E = the player's event, D = the other's, both cleared.
8F01 LD HL,PLAYER_EVENT
8F04 LD E,(HL)
8F05 LD (HL),A
8F06 LD L,$9F
8F08 LD D,(HL)
8F09 LD (HL),A
8F0A LD A,D Nothing happened.
8F0B OR E
8F0C RET Z
8F0D DEC A Only a step: a click.
8F0E JR NZ,HANDLE_EVENTS_0
8F10 LD B,$05
8F12 CALL NOISE
8F15 RET
HANDLE_EVENTS_0 8F16 LD A,$02 The player's bad fall...
8F18 CP E
8F19 JR NZ,HANDLE_EVENTS_1
8F1B CALL PLAY_SCRIPT_ONE
8F1E LD A,$02
HANDLE_EVENTS_1 8F20 CP D ...or theirs.
8F21 JR NZ,HANDLE_EVENTS_2
8F23 CALL PLAY_SCRIPT
8F26 RET
HANDLE_EVENTS_2 8F27 PUSH DE The player blown up: energy 0.
8F28 LD HL,PLAYER_ENERGY_LOW
8F2B LD A,E
8F2C CP $08
8F2E JR NZ,HANDLE_EVENTS_3
8F30 LD (HL),$00
8F32 LD A,$06
8F34 CALL PLAY_SCRIPT
8F37 JR HANDLE_EVENTS_5
HANDLE_EVENTS_3 8F39 CP $04 Bitten: a point off, and which message.
8F3B JR NZ,HANDLE_EVENTS_6
8F3D LD A,(HL)
8F3E AND A
8F3F JR Z,HANDLE_EVENTS_5
8F41 DEC (HL)
8F42 LD A,$0E
8F44 JR Z,HANDLE_EVENTS_4
8F46 LD A,$07
HANDLE_EVENTS_4 8F48 CALL PLAY_SCRIPT
HANDLE_EVENTS_5 8F4B LD A,$08 Reprint the player's energy.
8F4D CALL PLAY_SCRIPT
HANDLE_EVENTS_6 8F50 POP DE The same for the rescued person.
8F51 LD HL,RESCUEE_ENERGY_LOW
8F54 LD A,D
8F55 CP $08
8F57 JR NZ,HANDLE_EVENTS_7
8F59 LD (HL),$00
8F5B LD A,$09
8F5D CALL PLAY_SCRIPT
8F60 JR HANDLE_EVENTS_9
HANDLE_EVENTS_7 8F62 CP $04
8F64 JR NZ,HANDLE_EVENTS_10
8F66 LD A,(HL)
8F67 AND A
8F68 JR Z,HANDLE_EVENTS_9
8F6A DEC (HL)
8F6B LD A,$0F
8F6D JR Z,HANDLE_EVENTS_8
8F6F LD A,$0A
HANDLE_EVENTS_8 8F71 CALL PLAY_SCRIPT
HANDLE_EVENTS_9 8F74 LD A,$0B
8F76 CALL PLAY_SCRIPT
HANDLE_EVENTS_10 8F79 RET
Prev: 8EFA Up: Map Next: 8F7A