Routines |
Prev: 62092 | Up: Map | Next: 62175 |
Used by the routine at 63405 when bit 7 at 32763 is set (by the routine at 29896). Note that the routine at 26175 also sets bit 7 at 32763 when someone sits in the seat occupied by ERIC, but in that case this routine is not called because bit 2 at 32763 is still set (indicating that ERIC is sitting) and takes precedence; this is a bug.
|
||||
62094 | LD HL,32733 | 32733 holds ERIC's knockout delay counter | ||
62097 | LD A,(HL) | Is this the first time this routine's been called since ERIC was downed? | ||
62098 | AND A | |||
62099 | JR Z,62112 | Jump if so | ||
62101 | DEC (HL) | Otherwise wait a while before enabling ERIC to stand up again | ||
62102 | RET NZ | |||
62103 | LD L,243 | HL=32755 (ERIC's main action timer) | ||
62105 | LD (HL),1 | Set this to 1 so that the keyboard is checked on the next pass through the main loop | ||
62107 | LD L,251 | HL=32763 (ERIC's status flags) | ||
62109 | LD (HL),4 | Set bit 2: ERIC is sitting or lying down; the routine at 62178 handles ERIC from this point | ||
62111 | RET | |||
ERIC has just been hit. Determine the manner of his descent to the floor.
|
||||
62112 | LD (HL),40 | Initialise ERIC's knockout delay counter at 32733 to 40 | ||
62114 | LD H,210 | 210=ERIC | ||
62116 | CALL 25012 | Update the SRB for ERIC's current animatory state and location | ||
62119 | PUSH DE | Save ERIC's coordinates briefly | ||
62120 | PUSH AF | Save ERIC's current animatory state briefly | ||
62121 | CP 4 | 4: Was ERIC sitting on a chair? | ||
62123 | JR NZ,62134 | Jump if not | ||
62125 | CALL 32000 | Get the identifier of ERIC's location | ||
62128 | LD B,5 | 5: ERIC sitting on the floor | ||
62130 | CP 6 | Is ERIC in a classroom in the boys' skool (A=6, 7 or 8)? | ||
62132 | JR NC,62136 | Jump if so | ||
62134 | LD B,6 | 6: ERIC lying on his back | ||
62136 | POP AF | Restore ERIC's current animatory state to A | ||
62137 | POP DE | Restore ERIC's coordinates to DE | ||
62138 | AND 128 | Keep only the 'direction' bit (bit 7) of ERIC's current animatory state | ||
62140 | ADD A,B | A=ERIC's new animatory state (sitting on the floor or lying on his back) | ||
62141 | CALL 24880 | Update ERIC's animatory state and update the SRB | ||
62144 | CALL 25248 | Update the display | ||
Now to initialise the sound effect parameters.
|
||||
62147 | LD HL,275 | H=1 (pitch adjustment), L=19 (border colour XOR mask) | ||
|
||||
62150 | LD DE,0 | D=0 (duration), E=0 (initial pitch) | ||
62153 | LD A,2 | A=2 (initial border colour) | ||
62155 | XOR L | Make a sound effect | ||
62156 | OUT (254),A | |||
62158 | LD B,E | |||
62159 | DJNZ 62159 | |||
62161 | LD B,A | |||
62162 | LD A,E | |||
62163 | ADD A,H | |||
62164 | LD E,A | |||
62165 | LD A,B | |||
62166 | DEC D | |||
62167 | JR NZ,62155 | |||
This entry point is used by the routine at 24477.
|
||||
62169 | EI | Re-enable interrupts | ||
62170 | LD A,1 | Reset the border colour to blue | ||
62172 | OUT (254),A | |||
62174 | RET |
Prev: 62092 | Up: Map | Next: 62175 |