| Routines

F955: Make a stricken teacher give lines or reveal his safe combination letter

Used by the routine at 6A46. If the character who has been knocked over is a teacher, this routine makes him reveal his safe combination letter (if all the shields are flashing but the safe has not been opened yet) and give lines to the nearest main kid (if any are close enough).
Input
A | Knockout delay counter (0x01-0x12)
H | Character number (0x98-0xA9)
F955 | CP $12 | Is it time to reveal a safe combination letter?
F957 | JR Z,$F960 | Jump if so
F959 | CP $09 | Is it time to give lines to the nearest main kid?
F95B | RET NZ | Return if not
F95C | POP BC |
F95D | JP $6A3C | Give lines to the nearest main kid if we're dealing with a teacher
It's time to reveal a safe combination letter (if all shields are flashing).
F960 | LD A,($7FEA) | Collect the game mode indicator from 7FEA
F963 | CP $02 | Set the zero flag if all the shields are flashing but the safe has not been opened
F965 | LD A,$12 | Restore the knockout delay counter to A
F967 | RET NZ | Return unless all the shields are flashing
F968 | LD A,H | Return unless we are dealing with a teacher
F969 | CP $A3
F96B | RET C
F96C | CP $A6
F96E | RET NC
F96F | POP BC |
This entry point is used by the routine at F6D7 to make MR CREAK reveal his safe combination letter after seeing his year of birth written on a blackboard.
F970 | LD L,$61 | Pick up the character's coordinates in DE
F972 | LD D,(HL)
F973 | INC L
F974 | LD E,(HL)
F975 | LD L,H | Pick up the teacher's safe combination letter in A
F976 | LD H,$7F
F978 | LD A,(HL)
F979 | LD L,$96 | Place this in 7F96
F97B | LD (HL),A
F97C | CALL $74AF | Save the area of the screen that will be overwritten by the bubble
F97F | RET C | Return if the character is off-screen
F980 | PUSH DE |
F981 | LD DE,$EC30 | Point DE at the graphic data portion of the safe combination letter bubble graphic buffer at EC00
F984 | LD HL,$DA89 | DA89: ' ' (single space)
F987 | CALL $7625 | Write this into the first line of the graphic buffer
F98A | LD DE,$EC70 | Write the teacher's safe combination letter into the second line of the graphic buffer
F98D | LD HL,$7F96
F990 | CALL $7625
F993 | LD HL,$EC18 | Set the attribute bytes in the graphic buffer - INK 7: PAPER 0
F996 | DEC L
F997 | LD (HL),$07
F999 | JR NZ,$F996
F99B | POP DE | Restore the attribute file address of the top left corner of the bubble to DE and save it again
F99C | PUSH DE
F99D | CALL $7519 | Display the combination letter in a bubble
F9A0 | XOR A | A=0 (black border for the sound effect)
F9A1 | JP $776F | Make a sound effect and remove the bubble