| Ant Attack | Routines |
| Prev: 8EFA | Up: Map | Next: 8F7A |
|
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 |