![]() |
Routines |
| H | 170 (BOY WANDER's pellet) or 171 (ERIC's pellet) |
| 28102 | CALL 25108 | Update SRB for the pellet's current location |
| 28105 | LD B,A | B=pellet's animatory state |
| 28106 | LD A,D | A=pellet's y-coordinate |
| 28107 | CP 152 | Has the pellet hit the ceiling of the top floor? |
| 28109 | JP Z,27940 | Terminate the pellet if so |
| 28112 | DEC D | Up a level |
| 28113 | LD L,113 | Byte 113 of the pellet's buffer holds the distance left to travel |
| 28115 | DEC (HL) | Has the pellet finished travelling? |
| 28116 | JP Z,27940 | Jump if so |
| 28119 | LD A,B | A=pellet's animatory state |
| 28120 | CALL 25008 | Update the pellet's location and update SRB |
| 28123 | LD L,97 | Byte 97 holds the pellet's y-coordinate |
| 28125 | LD D,(HL) | Pick this up in D |
| 28126 | INC D | D=y-coordinate of the pellet's potential target |
| 28127 | INC L | Byte 98 holds the pellet's x-coordinate |
| 28128 | LD E,(HL) | Pick this up in E |
| 28129 | INC E | E=x-coordinate of the pellet's potential target |
| 28130 | SET 7,E | E=128 + x-coordinate of the potential target |
| 28132 | PUSH HL | |
| 28133 | CALL 28143 | Has the pellet (or ERIC's hand) hit a shield? |
| 28136 | POP HL | |
| 28137 | RET NC | Return if not |
| 28138 | LD L,113 | If it was a pellet that hit the shield, this sets its remaining distance to travel to 1, so it will be terminated next time this routine is called |
| 28140 | LD (HL),1 | |
| 28142 | RET |