Prev: E576 Up: Map Next: E68C
E62D: Routine at E62D
Used by the routine at Handler_Monsters.
Just instantly return if the monster is already "game over".
E62D LD A,($D244) Return if *JumpTable_Pointer is equal to FF.
E630 CP $FF
E632 RET Z
Any states higher than 20 mean the monster is in the process of turning back into a human (pre-"game over").
E633 CP $20 Jump to Action_JumpTable if *JumpTable_Pointer is higher than 20.
E635 JR NC,Action_JumpTable
Handle if the monster is currently jumping.
E637 LD A,($D248) A=*Flag_MonsterJumping.
Moves the monster-is-jumping flag into the carry flag.
E63A RRCA Rotate A right one position, setting the carry flag if bit 0 was set.
E63B JR C,Action_JumpTable Jump to Action_JumpTable if the carry flag is set (if bit 0 was set).
Handle if the monster is currently climbing.
E63D LD A,($D246) A=*Flag_MonsterClimbing.
Moves the monster-is-climbing flag into the carry flag.
E640 RRCA Rotate A right one position, setting the carry flag if bit 0 was set.
E641 JR NC,$E658 Jump to E658 if the carry flag is not set (if bit 0 was unset).
E643 LD DE,$80FE DE=80FE.
E646 LD B,$03 B=03.
E648 LD A,($D247) C=*Flag_Orientation.
E64B LD C,A
E64C LD A,B A=B.
E64D SUB C A-=C.
E64E SUB C A-=C.
E64F SUB C A-=C.
E650 LD C,A C=A.
E651 CALL $E0AD Call E0AD.
E654 JR Z,Action_JumpTable Jump to Action_JumpTable if {} is zero.
E656 JR $E66F Jump to E66F.
E658 LD A,($D24E) Jump to Action_JumpTable if *Active_MonsterYPosition is equal to 12.
E65B CP $12
E65D JR Z,Action_JumpTable
E65F LD B,$05 B=05.
E661 LD A,($D247) A=*Flag_Orientation.
E664 ADD A,$02 A+=02.
E666 LD C,A C=A.
E667 LD DE,$090F DE=090F.
E66A CALL $E0AD Call E0AD.
E66D JR NZ,Action_JumpTable Jump to Action_JumpTable if {} is not zero.
E66F LD A,$06 Write 06 to:
E671 LD ($D244),A
E674 LD ($D24A),A
E677 LD A,$01 Write 01 to *Flag_MonsterJumping.
E679 LD ($D248),A
Using the value held in *JumpTable_Pointer jump to the correlated address from JumpTable.
Action_JumpTable E67C LD A,($D244) A=*JumpTable_Pointer*02.
E67F ADD A,A
Create an offset using HL.
E680 LD H,$00 H=00.
E682 LD L,A L=A.
E683 LD DE,$EF98 HL+=JumpTable.
E686 ADD HL,DE
Fetch the address to jump and store it in HL.
E687 LD A,(HL) A=*HL.
E688 INC HL Increment HL by one.
E689 LD H,(HL) H=*HL.
E68A LD L,A L=A.
E68B JP (HL) Jump to the address held by *HL.
Prev: E576 Up: Map Next: E68C