![]() |
Routines |
| Prev: 774F | Up: Map | Next: 77B3 |
|
||||||||
| 775B | LD A,($D512) | Pick up byte 0x12 of buffer 0xD5 (BOY WANDER's pellet) | ||||||
| 775E | AND A | Is there a uninterruptible subcommand routine address in bytes 0x11 and 0x12 of the buffer? | ||||||
| 775F | RET NZ | Return if so (this buffer is in use) | ||||||
| 7760 | LD L,A | L=0x00 | ||||||
| 7761 | BIT 0,(HL) | Is BOY WANDER midstride? | ||||||
| 7763 | RET NZ | Return if so | ||||||
| 7764 | INC L | L=0x01 | ||||||
| 7765 | LD A,(HL) | A=BOY WANDER's x-coordinate | ||||||
| 7766 | AND $03 | Return unless BOY WANDER's x-coordinate is divisible by 4 | ||||||
| 7768 | RET NZ | |||||||
| 7769 | CALL $774F | Is BOY WANDER exactly on the top, middle, or bottom floor? | ||||||
| 776C | RET NZ | Return if not | ||||||
| 776D | CALL $6291 | A=random number | ||||||
| 7770 | RRCA | Return half the time | ||||||
| 7771 | RET NC | |||||||
| 7772 | CALL $6D64 | Can any adults see BOY WANDER? | ||||||
| 7775 | RET C | Return if so | ||||||
| 7776 | POP BC | Drop the return address (6357) | ||||||
| 7777 | POP BC | Pop the value of HL that was pushed on to the stack by the routine at 62D0 before coming here; RET will now take us back either to 62D0 to move the next character, or to the main loop | ||||||
| 7778 | CALL $61B4 | Update the SRB for BOY WANDER's current animatory state and location | ||||||
| 777B | LD L,$14 | Store BOY WANDER's current animatory state in byte 0x14 of his buffer for the time being | ||||||
| 777D | LD (HL),A | |||||||
| 777E | AND $F0 | |||||||
| 7780 | ADD A,$0A | A=0x1A or 0x9A: BOY WANDER raising his arm to fire | ||||||
| 7782 | CALL $7746 | Update BOY WANDER's animatory state and hand over to 7785 (below) | ||||||
| 7785 | CALL $61B4 | Update the SRB for BOY WANDER's current animatory state | ||||||
| 7788 | INC A | A=0x1B or 0x9B: BOY WANDER firing the catapult | ||||||
| 7789 | CALL $7746 | Update BOY WANDER's animatory state and hand over to 778C (below) | ||||||
| 778C | LD L,$11 | Place the address of the uninterruptible subcommand routine at 77B3 into bytes 0x11 and 0x12 of BOY WANDER's buffer | ||||||
| 778E | LD (HL),$B3 | |||||||
| 7790 | LD A,($D512) | Pick up byte 0x12 of buffer 0xD5 (BOY WANDER's pellet) | ||||||
| 7793 | AND A | Is this buffer already being used? | ||||||
| 7794 | RET NZ | Return if so | ||||||
| 7795 | LD B,$D5 | Use buffer 0xD5 for BOY WANDER's catapult pellet | ||||||
|
This entry point is used by the routine at F975 with H=0xD2 (ERIC) and B=0xD6 (ERIC's pellet).
|
||||||||
| 7797 | LD L,$00 | Point HL at byte 0x00 of the shooter's character buffer | ||||||
| 7799 | LD A,(HL) | A=shooter's animatory state | ||||||
| 779A | AND $80 | A=0x80 if the pellet will travel right, 0x00 if left | ||||||
| 779C | ADD A,$4F | A=0x4F/0xCF: catapult pellet travelling left/right | ||||||
| 779E | INC L | Collect the initial coordinates of the pellet from the shooter's buffer into DE | ||||||
| 779F | LD E,(HL) | |||||||
| 77A0 | INC L | |||||||
| 77A1 | LD D,(HL) | |||||||
| 77A2 | LD H,B | H=buffer to be used for the pellet (0xD5 if it's BOY WANDER's, 0xD6 if it's ERIC's) | ||||||
| 77A3 | LD (HL),D | Fill in the initial coordinates and animatory state of the pellet | ||||||
| 77A4 | DEC L | |||||||
| 77A5 | LD (HL),E | |||||||
| 77A6 | DEC L | |||||||
| 77A7 | LD (HL),A | |||||||
| 77A8 | LD L,$11 | Place the address of the pellet-controlling uninterruptible subcommand routine at 76AC into bytes 0x11 and 0x12 of the pellet's buffer | ||||||
| 77AA | LD (HL),$AC | |||||||
| 77AC | INC L | |||||||
| 77AD | LD (HL),$76 | |||||||
| 77AF | INC L | L=0x13 | ||||||
| 77B0 | LD (HL),$0D | The pellet will travel 13 spaces | ||||||
| 77B2 | RET | |||||||
| Prev: 774F | Up: Map | Next: 77B3 |