![]() |
Routines |
| Prev: F28C | Up: Map |
|
Used by the routine at F7AD when bit 7 at 7FFB is set (by the routine at 74C8). Note that the routine at 663F also sets bit 7 at 7FFB when someone sits in the seat occupied by ERIC, but in that case this routine is not called because bit 2 at 7FFB is still set (indicating that ERIC is sitting) and takes precedence; this is a bug.
|
||||||||
| F28E | LD HL,$7FDD | 7FDD holds ERIC's knockout delay counter | ||||||
| F291 | LD A,(HL) | Is this the first time this routine's been called since ERIC was downed? | ||||||
| F292 | AND A | |||||||
| F293 | JR Z,$F2A0 | Jump if so | ||||||
| F295 | DEC (HL) | Otherwise wait a while before enabling ERIC to stand up again | ||||||
| F296 | RET NZ | |||||||
| F297 | LD L,$F3 | HL=7FF3 (ERIC's main action timer) | ||||||
| F299 | LD (HL),$01 | Set this to 1 so that the keyboard is checked on the next pass through the main loop | ||||||
| F29B | LD L,$FB | HL=7FFB (ERIC's status flags) | ||||||
| F29D | LD (HL),$04 | Set bit 2: ERIC is sitting or lying down; the routine at F2E2 handles ERIC from this point | ||||||
| F29F | RET | |||||||
|
ERIC has just been hit. Determine the manner of his descent to the floor.
|
||||||||
| F2A0 | LD (HL),$28 | Initialise ERIC's knockout delay counter at 7FDD to 40 | ||||||
| F2A2 | LD H,$D2 | 0xD2=ERIC | ||||||
| F2A4 | CALL $61B4 | Update the SRB for ERIC's current animatory state and location | ||||||
| F2A7 | PUSH DE | Save ERIC's coordinates briefly | ||||||
| F2A8 | PUSH AF | Save ERIC's current animatory state briefly | ||||||
| F2A9 | CP $04 | 0x04: Was ERIC sitting on a chair? | ||||||
| F2AB | JR NZ,$F2B6 | Jump if not | ||||||
| F2AD | CALL $7D00 | Get the identifier of ERIC's location | ||||||
| F2B0 | LD B,$05 | 0x05: ERIC sitting on the floor | ||||||
| F2B2 | CP $06 | Is ERIC in a classroom in the boys' skool (A=6, 7 or 8)? | ||||||
| F2B4 | JR NC,$F2B8 | Jump if so | ||||||
| F2B6 | LD B,$06 | 0x06: ERIC lying on his back | ||||||
| F2B8 | POP AF | Restore ERIC's current animatory state to A | ||||||
| F2B9 | POP DE | Restore ERIC's coordinates to DE | ||||||
| F2BA | AND $80 | Keep only the 'direction' bit (bit 7) of ERIC's current animatory state | ||||||
| F2BC | ADD A,B | A=ERIC's new animatory state (sitting on the floor or lying on his back) | ||||||
| F2BD | CALL $6130 | Update ERIC's animatory state and update the SRB | ||||||
| F2C0 | CALL $62A0 | Update the display | ||||||
|
Now to initialise the sound effect parameters.
|
||||||||
| F2C3 | LD HL,$0113 | H=0x01 (pitch adjustment), L=0x13 (border colour XOR mask) | ||||||
|
|
||||||||
| F2C6 | LD DE,$0000 | D=0x00 (duration), E=0x00 (initial pitch) | ||||||
| F2C9 | LD A,$02 | A=0x02 (initial border colour) | ||||||
| F2CB | XOR L | Make a sound effect | ||||||
| F2CC | OUT ($FE),A | |||||||
| F2CE | LD B,E | |||||||
| F2CF | DJNZ $F2CF | |||||||
| F2D1 | LD B,A | |||||||
| F2D2 | LD A,E | |||||||
| F2D3 | ADD A,H | |||||||
| F2D4 | LD E,A | |||||||
| F2D5 | LD A,B | |||||||
| F2D6 | DEC D | |||||||
| F2D7 | JR NZ,$F2CB | |||||||
|
This entry point is used by the routine at 5F9D.
|
||||||||
| F2D9 | EI | Re-enable interrupts | ||||||
| F2DA | LD A,$01 | Reset the border colour to blue | ||||||
| F2DC | OUT ($FE),A | |||||||
| F2DE | RET | |||||||
| Prev: F28C | Up: Map |