Prev: 74D8 Up: Map Next: 7541
7500: Process the event table
Used by the routine at F080. Scans the event table at 5FE0 and processes every active entry.
7500 LD HL,$7563 Set the operand of the JP instruction at 750B (below) to 7563 (RET)
7503 LD ($750C),HL
7506 LD HL,$5FE0 Point HL at the event table at 5FE0
7509 LD A,(HL) Collect the first byte of an entry
750A INC A Set the zero flag if it's 0xFF
The operand of the JP instruction that follows is changed (by this routine) using entries in the event table at 5FE0 during the game as follows:
Operand Entry Occasion
7A04 6032 Sam finds the dead body in the hotel
6152 600A Sam enters no. 15 using the key (in game mode 1)
6152 6077 Sam climbs the stairs up to the roof of the apartment building next to no. 74 (in game mode 2, after he has entered the hotel's right-hand green room while disguised as a woman)
750B JP Z,$7563 Jump if we've reached the end of the event table
750E AND $02 Is this event active?
7510 JR NZ,$7525 Jump if not
7512 PUSH HL Save the event table entry pointer
7513 INC HL Point HL at the third byte of the entry
7514 INC HL
7515 LD B,(HL) B=number of conditions to check
7516 INC HL DE=address to check
7517 LD E,(HL)
7518 INC HL
7519 LD D,(HL)
751A INC HL A=opcode of the 'JR' instruction to place at 7522 (below)
751B LD A,(HL)
751C INC HL Point HL at the value to compare with (DE)
751D LD ($7522),A Set the instruction at 7522 (below) to 'JR Z', 'JR NZ', 'JR C' or 'JR NC' as appropriate
7520 LD A,(DE) Check the condition
7521 CP (HL)
7522 JR $752C This instruction is set to 'JR Z', 'JR NZ', 'JR C' or 'JR NC' above
7524 POP HL Restore the event table entry pointer to HL
7525 INC HL Point HL at the second byte of the entry
7526 LD E,(HL) Move HL along to the first byte of the next entry
7527 LD D,$00
7529 ADD HL,DE
752A JR $7509 Jump back to examine the next entry
752C DJNZ $7516 Jump back to check the next condition in the entry
If we get here, then every condition in the entry was satisfied.
752E INC HL B=number of POKEs in the entry
752F LD B,(HL)
7530 INC HL DE=address to POKE
7531 LD E,(HL)
7532 INC HL
7533 LD D,(HL)
7534 INC HL A=byte to POKE
7535 LD A,(HL)
7536 LD (DE),A Do the POKE
7537 DJNZ $7530 Jump back until every POKE has been done
The entry has been processed.
7539 POP HL Restore the event table entry pointer to HL
753A BIT 6,(HL) Should this entry be deactivated now?
753C JR NZ,$7525 Move along to the next entry if not
753E INC (HL) Otherwise deactivate the entry by setting bit 0 of the first byte
753F JR $7525 Move along to the next entry
Prev: 74D8 Up: Map Next: 7541