![]() |
Routines |
| Prev: 7842 | Up: Map | Next: 78BA |
|
The address of this uninterruptible subcommand routine is placed into bytes 0x11 and 0x12 the frog's buffer by the routine at 7615 when a catapult pellet has knocked the frog out of a cup. It controls the frog up to the point where it hits the floor, and deals with any collision with MISS TAKE's head on the way.
|
||||
| 7854 | LD A,($7FEB) | 7FEB holds the inventory flags | ||
| 7857 | RRCA | Has ERIC got the safe key already? | ||
| 7858 | JR C,$78A9 | Jump if so | ||
| 785A | LD HL,$CC00 | Point HL at byte 0x00 of MISS TAKE's buffer | ||
| 785D | LD A,(HL) | A=MISS TAKE's animatory state | ||
| 785E | INC L | L=0x01 | ||
| 785F | LD E,(HL) | E=MISS TAKE's x-coordinate | ||
| 7860 | INC L | L=0x02 | ||
| 7861 | CP $76 | 0x76: Is MISS TAKE sitting on the floor facing left? | ||
| 7863 | JR Z,$786D | Jump if so | ||
| 7865 | CP $F6 | 0xF6: Is she sitting on the floor facing right? | ||
| 7867 | LD A,$FC | A=-4 | ||
| 7869 | JR NZ,$7870 | Jump if not | ||
| 786B | DEC E | |||
| 786C | DEC E | |||
| 786D | INC E | Now E=x-coordinate the frog would have to be at to be in line with MISS TAKE's head as she sits on the floor | ||
| 786E | LD A,$FD | A=-3 | ||
| 7870 | ADD A,(HL) | A=y-coordinate the frog would have to be at to be level with MISS TAKE's head | ||
| 7871 | LD H,$D4 | 0xD4=frog | ||
| 7873 | CP (HL) | Compare with the frog's current y-coordinate | ||
| 7874 | JR NZ,$78A9 | Jump if the frog has not reached the level of MISS TAKE's head | ||
| 7876 | DEC L | L=0x01 | ||
| 7877 | LD A,(HL) | A=frog's x-coordinate | ||
| 7878 | CP E | Compare with the x-coordinate of MISS TAKE's head | ||
| 7879 | JR NZ,$78A9 | Jump if they don't match | ||
|
ERIC's pellet has knocked the frog out of the cup and onto MISS TAKE's head. Celebrate!
|
||||
| 787B | LD HL,$7FEB | 7FEB holds the inventory flags | ||
| 787E | SET 0,(HL) | Give ERIC the safe key | ||
| 7880 | LD A,$C8 | Add 2000 to the score and print it | ||
| 7882 | CALL $73B5 | |||
| 7885 | LD HL,$0300 | Make the safe-key-getting celebratory sound effect | ||
| 7888 | LD D,$01 | |||
| 788A | LD A,L | |||
| 788B | AND $3F | |||
| 788D | INC A | |||
| 788E | LD B,A | |||
| 788F | LD C,(HL) | |||
| 7890 | SET 4,C | |||
| 7892 | CALL $748C | |||
| 7895 | DEC L | |||
| 7896 | JR NZ,$7888 | |||
| 7898 | NOP | |||
| 7899 | NOP | |||
| 789A | NOP | |||
| 789B | CALL $7C02 | Print the inventory (which now includes the safe key) | ||
| 789E | LD H,$D4 | 0xD4=frog | ||
| 78A0 | CALL $61B4 | Update the SRB for the frog's current animatory state and location | ||
| 78A3 | DEC E | Move the frog one space to the left | ||
| 78A4 | INC A | A=0x1D: frog facing left, airborne (phase 1) | ||
| 78A5 | INC D | Make the frog fall one level | ||
| 78A6 | JP $6130 | Update the frog's animatory state and location and update the SRB | ||
|
The frog is still above the floor, but not in contact with MISS TAKE's head.
|
||||
| 78A9 | CALL $61B4 | Update the SRB for the frog's current animatory state and location | ||
| 78AC | BIT 4,D | Is the frog about to hit the floor (D=16)? | ||
| 78AE | JR Z,$78A5 | Jump if not (to make it fall another level) | ||
| 78B0 | CP $1C | The frog's animatory state will be 0x1D if it bounced off MISS TAKE's head | ||
| 78B2 | LD A,$1C | 0x1C=frog sitting still, facing left | ||
| 78B4 | JR NZ,$78A6 | Jump if the frog bounced off MISS TAKE's head | ||
| 78B6 | INC D | D=17 (bottom floor) | ||
|
This entry point is used by the routine at 78BA.
|
||||
| 78B7 | CALL $7746 | Update the frog's animatory state and location and then resume control at 78BA | ||
| Prev: 7842 | Up: Map | Next: 78BA |