Prev: EED3 Up: Map Next: EFCB
EF9A: Event: Roll call
This checks that the hero is within the roll call bounds. hero_map_position_x must be in ($72..$7C) and hero_map_position_y must be in ($6A..$72). If not, then the bell is sounded and the "MISSED ROLL CALL" message is queued. Otherwise all visible characters are made to face bottom left.
Is the hero within the roll call area bounds?
event_roll_call EF9A LD DE,$727C Load DE with the X coordinates of the roll call area ($72..$7C)
EF9D LD HL,$81B8 Point HL at global map position (hero)
EFA0 LD B,$02 Set B for two iterations
Start loop
event_roll_call_0 EFA2 LD A,(HL) Fetch the next coord
EFA3 CP D Jump if the hero's out of bounds
EFA4 JR C,not_at_roll_call
EFA6 CP E
EFA7 JR NC,not_at_roll_call
EFA9 INC HL On the second iteration advance to hero_map_position_y ($6A..$72)
EFAA LD DE,$6A72 On the second iteration load DE with the Y coordinates of the main gate ($6A..$72)
EFAD DJNZ event_roll_call_0 ...loop
Make all visible characters turn forward.
EFAF LD HL,$800D Point HL at the visible character's input field (always $800D)
EFB2 LD B,$08 Set B for 8 iterations
Start loop
event_roll_call_1 EFB4 LD (HL),$80 Set input to input_KICK
EFB6 INC L Point HL at the visible character's direction field (always $800E)
EFB7 LD (HL),$03 Set the direction field to 3 => face bottom left
EFB9 LD A,L Advance HL to the next vischar
EFBA ADD A,$1F
EFBC LD L,A
EFBD DJNZ event_roll_call_1 ...loop
EFBF RET Return
not_at_roll_call EFC0 XOR A Make the bell ring perpetually
EFC1 LD ($A130),A
EFC4 LD B,A Queue the message "MISSED ROLL CALL"
EFC5 CALL queue_message
EFC8 JP hostiles_pursue Exit via hostiles_pursue
Prev: EED3 Up: Map Next: EFCB