![]() |
Routines |
| Prev: E62D | Up: Map | Next: E967 |
|
|
||||
| Handler_Controls | E68C | CALL Controls | Call Controls. | |
| E68F | AND A | Jump to Monster_Idle if no keys are currently being pressed. | ||
| E690 | JP Z,Monster_Idle | |||
|
Controls: Jump/ Punch.
|
||||
| Controls_JumpPunch | E693 | BIT 4,A | Jump to Controls_Up if the key for jump/ punch is not being pressed. | |
| E695 | JP Z,Controls_Up | |||
| E698 | XOR %00010000 | Flip bit 4. | ||
| E69A | JR NZ,Handler_Controls_1 | Jump to Handler_Controls_1 if the result is not zero. | ||
| Handler_Controls_0 | E69C | LD A,$0A | Write 0A to *JumpTable_Pointer. | |
| E69E | LD ($D244),A | |||
| E6A1 | LD A,$01 | Write 01 to *Flag_MonsterJumping. | ||
| E6A3 | LD ($D248),A | |||
| E6A6 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_1 | E6A9 | LD A,($D246) | Jump to Handler_Controls_2 if *Flag_MonsterClimbing is zero. | |
| E6AC | AND A | |||
| E6AD | JR Z,Handler_Controls_2 | |||
| E6AF | LD A,$0D | Write 0D to *JumpTable_Pointer. | ||
| E6B1 | LD ($D244),A | |||
| E6B4 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_2 | E6B7 | LD A,($D252) | Jump to Handler_Controls_0 if *Active_MonsterControlType is set to "computer controlled". | |
| E6BA | AND A | |||
| E6BB | JR Z,Handler_Controls_0 | |||
| E6BD | LD A,$0E | Write 0E to *JumpTable_Pointer. | ||
| E6BF | LD ($D244),A | |||
| E6C2 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Up.
|
||||
| Controls_Up | E6C5 | BIT 3,A | Jump to Controls_Down if the key for up is not being pressed. | |
| E6C7 | JP Z,Controls_Down | |||
| E6CA | LD A,($D247) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| E6CD | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E6CE | JR C,Handler_Controls_3 | Jump to Handler_Controls_3 if the carry flag is set. | ||
| E6D0 | LD BC,$0102 | BC=0102. | ||
| E6D3 | LD DE,$090F | DE=090F. | ||
| E6D6 | CALL $E0AD | Call E0AD. | ||
| E6D9 | JR Z,Handler_Controls_5 | Jump to Handler_Controls_5 if {} is zero. | ||
| E6DB | LD A,($D248) | A=*Flag_MonsterJumping. | ||
| E6DE | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E6DF | JP C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| E6E2 | JR Handler_Controls_4 | Jump to Handler_Controls_4. | ||
| Handler_Controls_3 | E6E4 | LD BC,$0101 | BC=0101. | |
| E6E7 | LD DE,$090F | DE=090F. | ||
| E6EA | CALL $E0AD | Call E0AD. | ||
| E6ED | JR Z,Handler_Controls_9 | Jump to Handler_Controls_9 if {} is zero. | ||
| E6EF | LD A,($D248) | A=*Flag_MonsterJumping. | ||
| E6F2 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E6F3 | JP C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| E6F6 | CALL Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition. | ||
| Handler_Controls_4 | E6F9 | LD A,($D24E) | A=*Active_MonsterYPosition. | |
| E6FC | SUB $04 | A-=04. | ||
| E6FE | LD ($D24E),A | Write A to *Active_MonsterYPosition. | ||
| E701 | XOR A | Write 00 to: | ||
| E702 | LD ($D248),A | |||
| E705 | LD ($D246),A | |||
| E708 | LD ($D24C),A | |||
| E70B | INC A | Write 01 to *JumpTable_Pointer. | ||
| E70C | LD ($D244),A | |||
| E70F | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_5 | E712 | LD BC,$0202 | BC=0202. | |
| E715 | LD DE,$1113 | DE=1113. | ||
| E718 | LD A,($D246) | A=*Flag_MonsterClimbing. | ||
| E71B | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E71C | JR C,Handler_Controls_7 | Jump to Handler_Controls_7 if the carry flag is set. | ||
| Handler_Controls_6 | E71E | INC C | Increment C by one. | |
| E71F | CALL $E0AD | Call E0AD. | ||
| E722 | JR Z,Handler_Controls_8 | Jump to Handler_Controls_8 if {} is zero. | ||
| E724 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| E727 | JR Handler_Controls_10 | Jump to Handler_Controls_10. | ||
| Handler_Controls_7 | E729 | LD A,($D248) | A=*Flag_MonsterJumping. | |
| E72C | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E72D | JR C,Handler_Controls_6 | Jump to Handler_Controls_6 if the carry flag is set. | ||
| E72F | CALL $E0AD | Call E0AD. | ||
| E732 | JR NZ,Handler_Controls_10 | Jump to Handler_Controls_10 if {} is not zero. | ||
| Handler_Controls_8 | E734 | LD BC,$0202 | BC=0202. | |
| E737 | LD DE,$1416 | DE=1416. | ||
| E73A | CALL $E0AD | Call E0AD. | ||
| E73D | JR Z,Handler_Controls_12 | Jump to Handler_Controls_12 if {} is zero. | ||
| E73F | LD A,$01 | Write 01 to *Flag_Orientation. | ||
| E741 | LD ($D247),A | |||
| E744 | JR Handler_Controls_10 | Jump to Handler_Controls_10. | ||
| Handler_Controls_9 | E746 | LD BC,$0202 | BC=0202. | |
| E749 | LD DE,$1416 | DE=1416. | ||
| E74C | CALL $E0AD | Call E0AD. | ||
| E74F | JR NZ,Handler_Controls_10 | Jump to Handler_Controls_10 if {} is not zero. | ||
| E751 | LD BC,$0203 | BC=0203. | ||
| E754 | LD DE,$1113 | DE=1113. | ||
| E757 | CALL $E0AD | Call E0AD. | ||
| E75A | JR Z,Handler_Controls_12 | Jump to Handler_Controls_12 if {} is zero. | ||
| E75C | XOR A | Write 00 to *Flag_Orientation. | ||
| E75D | LD ($D247),A | |||
| E760 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| Handler_Controls_10 | E763 | LD A,($D246) | A=*Flag_MonsterClimbing. | |
| E766 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E767 | JR C,Handler_Controls_14 | Jump to Handler_Controls_14 if the carry flag is set. | ||
| E769 | LD A,($D24E) | A=*Active_MonsterYPosition. | ||
| E76C | CP $12 | Jump to Handler_Controls_11 if A is no equal to 12. | ||
| E76E | JR NZ,Handler_Controls_11 | |||
| E770 | SUB $02 | A-=02. | ||
| E772 | LD ($D24E),A | Write A to *Active_MonsterYPosition. | ||
| Handler_Controls_11 | E775 | XOR A | Write 00 to: | |
| E776 | LD ($D248),A | |||
| E779 | LD ($D24C),A | |||
| E77C | INC A | Set *Flag_MonsterClimbing to "climbing" (01). | ||
| E77D | LD ($D246),A | |||
| E780 | LD A,$03 | Write 03 to *D24F. | ||
| E782 | LD ($D24F),A | |||
| Handler_Controls_12 | E785 | LD A,($D248) | A=*Flag_MonsterJumping. | |
| E788 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E789 | JR C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| E78B | XOR A | Write 00 to: | ||
| E78C | LD ($D248),A | |||
| E78F | LD ($D24C),A | |||
| E792 | JP $EF86 | Jump to EF86. | ||
| Handler_Controls_13 | E795 | LD HL,$D247 | HL=Flag_Orientation. | |
| E798 | LD A,(HL) | A=*HL. | ||
| E799 | XOR %00000001 | Flip bit 0. | ||
| E79B | INC HL | Increment HL by one. | ||
| E79C | AND (HL) | Merge the bits from *HL. | ||
| E79D | CALL NZ,Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition not zero. | ||
| E7A0 | LD A,($D246) | A=*Flag_MonsterClimbing. | ||
| E7A3 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E7A4 | CALL C,Handler_DecreaseMonsterYPosition | Call Handler_DecreaseMonsterYPosition if the carry flag is set. | ||
| E7A7 | JP $EB2F | Jump to EB2F. | ||
| Handler_Controls_14 | E7AA | LD A,$03 | Write 03 to *D24F. | |
| E7AC | LD ($D24F),A | |||
| E7AF | LD DE,($D253) | DE=*D253. | ||
| E7B3 | CALL $DA0F | Call DA0F. | ||
| E7B6 | LD A,($D245) | A=*D245. | ||
| E7B9 | AND %00000001 | Keep only bit 0. | ||
| E7BB | XOR %00000001 | Flip bit 0. | ||
| E7BD | LD (IX+$05),A | Write A to *IX+05. | ||
| E7C0 | CALL Z,Handler_DecreaseMonsterYPosition | Call Handler_DecreaseMonsterYPosition zero. | ||
| E7C3 | LD A,$08 | Write 08 to *IX+00. | ||
| E7C5 | LD (IX+$00),A | |||
| E7C8 | XOR A | Write 00 to: | ||
| E7C9 | LD ($D248),A | |||
| E7CC | LD ($D24C),A | |||
| E7CF | INC A | Set *Flag_MonsterClimbing to "climbing" (01). | ||
| E7D0 | LD ($D246),A | |||
| E7D3 | LD A,$03 | Write 03 to: | ||
| E7D5 | LD ($D244),A | |||
| E7D8 | LD ($D245),A | |||
| E7DB | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Down.
|
||||
| Controls_Down | E7DE | BIT 2,A | Jump to Controls_Left if the key for down is not being pressed. | |
| E7E0 | JP Z,Controls_Left | |||
| E7E3 | LD A,($D24E) | Jump to Handler_Controls_22 if *Active_MonsterYPosition is equal to 10. | ||
| E7E6 | CP $10 | |||
| E7E8 | JP Z,Handler_Controls_22 | |||
| E7EB | LD A,($D247) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| E7EE | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E7EF | JR C,Handler_Controls_16 | Jump to Handler_Controls_16 if the carry flag is set. | ||
| E7F1 | LD BC,$0502 | BC=0502. | ||
| E7F4 | LD DE,$090F | DE=090F. | ||
| E7F7 | CALL $E0AD | Call E0AD. | ||
| E7FA | LD C,$02 | C=02. | ||
| E7FC | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| E7FE | LD BC,$0602 | BC=0602. | ||
| E801 | LD DE,$1416 | DE=1416. | ||
| E804 | CALL $E0AD | Call E0AD. | ||
| E807 | JR Z,Handler_Controls_15 | Jump to Handler_Controls_15 if {} is zero. | ||
| E809 | LD A,$01 | A=01. | ||
| E80B | JP Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_15 | E80E | LD BC,$0602 | BC=0602. | |
| E811 | LD DE,$1113 | DE=1113. | ||
| E814 | CALL $E0AD | Call E0AD. | ||
| E817 | LD C,$02 | C=02. | ||
| E819 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| E81B | XOR A | A=00. | ||
| E81C | JP Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_16 | E81F | LD BC,$0503 | BC=0503. | |
| E822 | LD DE,$090F | DE=090F. | ||
| E825 | CALL $E0AD | Call E0AD. | ||
| E828 | LD C,$03 | C=03. | ||
| E82A | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| E82C | LD BC,$0603 | BC=0603. | ||
| E82F | LD DE,$1113 | DE=1113. | ||
| E832 | CALL $E0AD | Call E0AD. | ||
| E835 | JR Z,Handler_Controls_17 | Jump to Handler_Controls_17 if {} is zero. | ||
| E837 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| E83A | XOR A | A=00. | ||
| E83B | JR Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_17 | E83D | LD BC,$0603 | BC=0603. | |
| E840 | LD DE,$1416 | DE=1416. | ||
| E843 | CALL $E0AD | Call E0AD. | ||
| E846 | LD C,$03 | C=03. | ||
| E848 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| E84A | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| E84D | LD A,$01 | A=01. | ||
| E84F | JR Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_18 | E851 | LD A,($D246) | A=*Flag_MonsterClimbing. | |
| E854 | XOR %00000001 | Flip bit 0. | ||
| E856 | ADD A,$05 | A+=05. | ||
| E858 | LD B,A | B=A. | ||
| E859 | LD DE,$090F | DE=090F. | ||
| E85C | CALL $E0AD | Call E0AD. | ||
| E85F | JR Z,Handler_Controls_19 | Jump to Handler_Controls_19 if {} is zero. | ||
| E861 | XOR A | Set *Flag_MonsterClimbing to "not climbing" (00). | ||
| E862 | LD ($D246),A | |||
| E865 | INC A | Write 01 to: | ||
| E866 | LD ($D244),A | |||
| E869 | LD ($D24F),A | |||
| E86C | LD A,($D247) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| E86F | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E870 | CALL NC,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition if the carry flag is not set. | ||
| E873 | JP $EF86 | Jump to EF86. | ||
| Handler_Controls_19 | E876 | LD A,($D246) | A=*Flag_MonsterClimbing. | |
| E879 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E87A | JP NC,$EF86 | Jump to EF86 if the carry flag is not set. | ||
| E87D | LD BC,$0402 | BC=0402. | ||
| E880 | LD DE,$1113 | DE=1113. | ||
| E883 | LD A,($D247) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| E886 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E887 | JR NC,Handler_Controls_20 | Jump to Handler_Controls_20 if the carry flag is not set. | ||
| E889 | LD DE,$1416 | DE=1416. | ||
| Handler_Controls_20 | E88C | CALL $E0AD | Call E0AD. | |
| E88F | JP Z,$EF86 | Jump to EF86 if {} is zero. | ||
| E892 | LD A,$02 | Write 02 to *D24F. | ||
| E894 | LD ($D24F),A | |||
| E897 | LD DE,($D253) | DE=*D253. | ||
| E89B | CALL $DA0F | Call DA0F. | ||
| E89E | LD A,($D245) | A=*D245. | ||
| E8A1 | AND %00000001 | Keep only bit 0. | ||
| E8A3 | LD (IX+$05),A | Write A to *IX+05. | ||
| E8A6 | LD A,$04 | Write 04 to:
|
||
| E8A8 | LD (IX+$00),A | |||
| E8AB | LD ($D244),A | |||
| E8AE | LD ($D245),A | |||
| E8B1 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_21 | E8B4 | LD ($D247),A | Write A to *Flag_Orientation. | |
| E8B7 | LD A,($D24E) | A=*Active_MonsterYPosition. | ||
| E8BA | ADD A,$04 | A+=04. | ||
| E8BC | LD ($D24E),A | Write A to *Active_MonsterYPosition. | ||
| E8BF | LD A,$03 | Write 03 to: | ||
| E8C1 | LD ($D244),A | |||
| E8C4 | LD ($D24F),A | |||
| E8C7 | LD A,$01 | Set *Flag_MonsterClimbing to "climbing" (01). | ||
| E8C9 | LD ($D246),A | |||
| E8CC | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_22 | E8CF | LD A,$12 | Write 12 to *Active_MonsterYPosition. | |
| E8D1 | LD ($D24E),A | |||
| E8D4 | LD A,$01 | Write 01 to *JumpTable_Pointer. | ||
| E8D6 | LD ($D244),A | |||
| E8D9 | LD A,($D247) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| E8DC | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E8DD | CALL NC,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition if the carry flag is not set. | ||
| E8E0 | XOR A | Set *Flag_MonsterClimbing to "not climbing" (00). | ||
| E8E1 | LD ($D246),A | |||
| E8E4 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Left.
|
||||
| Controls_Left | E8E7 | BIT 0,A | Jump to Controls_Right if the key for left is not being pressed. | |
| E8E9 | JR Z,Controls_Right | |||
| E8EB | LD A,($D246) | A=*Flag_MonsterClimbing. | ||
| E8EE | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E8EF | JP C,$EF86 | Jump to EF86 if the carry flag is set. | ||
| E8F2 | LD A,$01 | Write 01 to *D24F. | ||
| E8F4 | LD ($D24F),A | |||
| E8F7 | LD DE,($D253) | DE=*D253. | ||
| E8FB | CALL $DA0F | Call DA0F. | ||
| E8FE | LD A,($D24D) | A=*Active_MonsterXPosition. | ||
| E901 | DEC A | Decrease A by one. | ||
| E902 | CP $FC | Jump to EF86 if A is equal to FC. | ||
| E904 | JP Z,$EF86 | |||
| E907 | LD ($D24D),A | Write A to *Active_MonsterXPosition. | ||
| E90A | XOR A | Write 00 to *IX+05. | ||
| E90B | LD (IX+$05),A | |||
| E90E | INC A | Write 01 to *Flag_Orientation. | ||
| E90F | LD ($D247),A | |||
| E912 | INC A | Write 02 to:
|
||
| E913 | LD (IX+$00),A | |||
| E916 | LD ($D244),A | |||
| E919 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Right.
|
||||
| Controls_Right | E91C | BIT 1,A | Jump to Monster_Idle if the key for right is not being pressed. | |
| E91E | JR Z,Monster_Idle | |||
| E920 | LD A,($D246) | A=*Flag_MonsterClimbing. | ||
| E923 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| E924 | JP C,$EF86 | Jump to EF86 if the carry flag is set. | ||
| E927 | LD A,$01 | Write 01 to *D24F. | ||
| E929 | LD ($D24F),A | |||
| E92C | LD DE,($D253) | DE=*D253. | ||
| E930 | CALL $DA0F | Call DA0F. | ||
| E933 | LD A,($D24D) | A=*Active_MonsterXPosition. | ||
| E936 | INC A | Increment A by one. | ||
| E937 | CP $1E | Jump to EF86 if A is equal to 1E. | ||
| E939 | JP Z,$EF86 | |||
| E93C | LD ($D24D),A | Write A to *Active_MonsterXPosition. | ||
| E93F | XOR A | Write 00 to:
|
||
| E940 | LD (IX+$05),A | |||
| E943 | LD ($D247),A | |||
| E946 | INC A | Write 01 to:
|
||
| E947 | LD (IX+$00),A | |||
| E94A | LD ($D244),A | |||
| E94D | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
No keys are being pressed so decrease the waiting countdown.
|
||||
| Monster_Idle | E950 | LD A,($D249) | Decrease *Active_MonsterIdleCountdown by one. | |
| E953 | DEC A | |||
| E954 | LD ($D249),A | |||
| E957 | JP NZ,$EF86 | Jump to EF86 if *Active_MonsterIdleCountdown is not yet zero. | ||
|
The idle countdown is finished, so reset the countdown and mark the action event.
|
||||
| E95A | LD A,$19 | Write 19 to *Active_MonsterIdleCountdown. | ||
| E95C | LD ($D249),A | |||
| E95F | LD A,$05 | Write "waiting" (05) to *JumpTable_Pointer. | ||
| E961 | LD ($D244),A | |||
| E964 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Prev: E62D | Up: Map | Next: E967 |