![]() |
Routines |
| Prev: EA9C | Up: Map | Next: EC8A |
|
|
||||||||||||||||||||
| EAF6 | CALL Controls | Call Controls. | ||||||||||||||||||
| EAF9 | CP $08 | Jump to EB2F if A is not equal to 08. | ||||||||||||||||||
| EAFB | JP NZ,$EB2F | |||||||||||||||||||
| EAFE | LD A,($D244) | Jump to EB2F if *JumpTable_Pointer is equal to 1C. | ||||||||||||||||||
| EB01 | CP $1C | |||||||||||||||||||
| EB03 | JP Z,$EB2F | |||||||||||||||||||
| EB06 | LD A,($D24E) | Jump to EB2F if *Active_MonsterYPosition is higher than 11. | ||||||||||||||||||
| EB09 | CP $11 | |||||||||||||||||||
| EB0B | JR NC,$EB2F | |||||||||||||||||||
| EB0D | LD A,($D24D) | Jump to EB18 if *Active_MonsterXPosition is equal to FF. | ||||||||||||||||||
| EB10 | CP $FF | |||||||||||||||||||
| EB12 | JR Z,$EB18 | |||||||||||||||||||
| EB14 | CP $1D | Jump to EB2F if *Active_MonsterXPosition is higher than 1D. | ||||||||||||||||||
| EB16 | JR NC,$EB2F | |||||||||||||||||||
| EB18 | LD HL,$D247 | HL=Flag_Orientation. | ||||||||||||||||||
| EB1B | LD A,(HL) | A=*HL. | ||||||||||||||||||
| EB1C | XOR %00000001 | Flip bit 0. | ||||||||||||||||||
| EB1E | INC HL | Increment HL by one. | ||||||||||||||||||
| EB1F | AND (HL) | Merge the bits from *HL. | ||||||||||||||||||
| EB20 | CALL NZ,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition not zero. | ||||||||||||||||||
| EB23 | LD A,($D246) | A=*Flag_MonsterClimbing. | ||||||||||||||||||
| EB26 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EB27 | CALL C,Handler_IncrementMonsterYPosition | Call Handler_IncrementMonsterYPosition if the carry flag is set. | ||||||||||||||||||
| EB2A | LD A,$08 | A=08. | ||||||||||||||||||
| EB2C | JP Controls_Up | Jump to Controls_Up. | ||||||||||||||||||
|
This entry point is used by the routine at Handler_Controls.
|
||||||||||||||||||||
| EB2F | LD A,($D246) | A=*Flag_MonsterClimbing. | ||||||||||||||||||
| EB32 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EB33 | JR NC,$EB43 | Jump to EB43 if the carry flag is not set. | ||||||||||||||||||
| EB35 | LD HL,$C896 | HL=C896. | ||||||||||||||||||
| EB38 | LD A,($D247) | A=*Flag_Orientation. | ||||||||||||||||||
|
Moves the orientation flag into the carry flag.
|
||||||||||||||||||||
| EB3B | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EB3C | JR NC,$EB4F | Jump to EB4F if the carry flag is not set. | ||||||||||||||||||
| EB3E | LD HL,$C8A9 | HL=C8A9. | ||||||||||||||||||
| EB41 | JR $EB4F | Jump to EB4F. | ||||||||||||||||||
| EB43 | LD HL,$C86E | HL=C86E. | ||||||||||||||||||
| EB46 | LD A,($D247) | A=*Flag_Orientation. | ||||||||||||||||||
|
Moves the orientation flag into the carry flag.
|
||||||||||||||||||||
| EB49 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EB4A | JR NC,$EB4F | Jump to EB4F if the carry flag is not set. | ||||||||||||||||||
| EB4C | LD HL,$C882 | HL=C882. | ||||||||||||||||||
| EB4F | LD BC,($D24D) | BC=*Active_MonsterXPosition/Active_MonsterYPosition. | ||||||||||||||||||
| EB53 | LD A,($D24C) | Increment *D24C by one. | ||||||||||||||||||
| EB56 | INC A | |||||||||||||||||||
| EB57 | LD ($D24C),A | |||||||||||||||||||
|
This entry point is used by the routine at Handler_Projectiles.
|
||||||||||||||||||||
| EB5A | LD D,$00 | D=00. | ||||||||||||||||||
| EB5C | LD E,A | E=A. | ||||||||||||||||||
| EB5D | ADD HL,DE | HL+=DE. | ||||||||||||||||||
| EB5E | LD ($D21E),HL | Write HL to *D21E. | ||||||||||||||||||
| EB61 | LD D,(HL) | D=*HL. | ||||||||||||||||||
| EB62 | BIT 5,D | Jump to EB67 if bit 5 of D is not set. | ||||||||||||||||||
| EB64 | JR Z,$EB67 | |||||||||||||||||||
| EB66 | INC C | Increment C by one. | ||||||||||||||||||
| EB67 | BIT 0,D | Jump to EB6C if bit 0 of D is not set. | ||||||||||||||||||
| EB69 | JR Z,$EB6C | |||||||||||||||||||
| EB6B | INC C | Increment C by one. | ||||||||||||||||||
| EB6C | BIT 1,D | Jump to EB71 if bit 1 of D is not set. | ||||||||||||||||||
| EB6E | JR Z,$EB71 | |||||||||||||||||||
| EB70 | DEC C | Decrease C by one. | ||||||||||||||||||
| EB71 | LD A,($D3FF) | Jump to EB88 if *D3FF is not zero. | ||||||||||||||||||
| EB74 | AND A | |||||||||||||||||||
| EB75 | JR NZ,$EB88 | |||||||||||||||||||
| EB77 | LD A,($D247) | A=*Flag_Orientation. | ||||||||||||||||||
| EB7A | XOR %00011111 | Flip bits 0-4. | ||||||||||||||||||
| EB7C | CP C | Jump to EC6E if A is equal to C. | ||||||||||||||||||
| EB7D | JP Z,$EC6E | |||||||||||||||||||
| EB80 | XOR %00011110 | Flip bits 1-4. | ||||||||||||||||||
| EB82 | ADD A,$FC | A+=FC. | ||||||||||||||||||
| EB84 | CP C | Jump to EC6E if A is equal to C. | ||||||||||||||||||
| EB85 | JP Z,$EC6E | |||||||||||||||||||
| EB88 | BIT 2,D | Jump to EB8D if bit 2 of D is not set. | ||||||||||||||||||
| EB8A | JR Z,$EB8D | |||||||||||||||||||
| EB8C | DEC B | Decrease B by one. | ||||||||||||||||||
| EB8D | LD A,D | A=D. | ||||||||||||||||||
| EB8E | EX AF,AF' | Exchange the AF register with the shadow AF register. | ||||||||||||||||||
| EB8F | BIT 3,D | Jump to EBDD if bit 3 of D is not set. | ||||||||||||||||||
| EB91 | JR Z,$EBDD | |||||||||||||||||||
| EB93 | INC B | Increment B by one. | ||||||||||||||||||
| EB94 | LD A,($D3FF) | Jump to EBDD if *D3FF is not zero. | ||||||||||||||||||
| EB97 | AND A | |||||||||||||||||||
| EB98 | JR NZ,$EBDD | |||||||||||||||||||
| EB9A | LD A,$12 | Jump to EC52 if B is equal to 12. | ||||||||||||||||||
| EB9C | CP B | |||||||||||||||||||
| EB9D | JP Z,$EC52 | |||||||||||||||||||
| EBA0 | LD A,B | Write B to *Active_MonsterYPosition. | ||||||||||||||||||
| EBA1 | LD ($D24E),A | |||||||||||||||||||
| EBA4 | LD ($D21C),BC | Write BC to *D21C. | ||||||||||||||||||
| EBA8 | LD BC,$0502 | BC=0502. | ||||||||||||||||||
| EBAB | LD DE,$090F | DE=090F. | ||||||||||||||||||
| EBAE | CALL $E0AD | Call E0AD. | ||||||||||||||||||
| EBB1 | LD BC,($D21C) | BC=*D21C. | ||||||||||||||||||
| EBB5 | JR Z,$EBDD | Jump to EBDD if {} is zero. | ||||||||||||||||||
| EBB7 | LD A,($D244) | Jump to EBDD if *JumpTable_Pointer is equal to 1C. | ||||||||||||||||||
| EBBA | CP $1C | |||||||||||||||||||
| EBBC | JR Z,$EBDD | |||||||||||||||||||
| EBBE | LD A,($D246) | A=*Flag_MonsterClimbing. | ||||||||||||||||||
| EBC1 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EBC2 | JP NC,$EC52 | Jump to EC52 if the carry flag is not set. | ||||||||||||||||||
| EBC5 | LD ($D21C),BC | Write BC to *D21C. | ||||||||||||||||||
| EBC9 | LD B,$05 | B=05. | ||||||||||||||||||
| EBCB | LD A,($D247) | C=*Flag_Orientation*04. | ||||||||||||||||||
| EBCE | ADD A,A | |||||||||||||||||||
| EBCF | ADD A,A | |||||||||||||||||||
| EBD0 | LD C,A | |||||||||||||||||||
| EBD1 | LD DE,$090F | DE=090F. | ||||||||||||||||||
| EBD4 | CALL $E0AD | Call E0AD. | ||||||||||||||||||
| EBD7 | LD BC,($D21C) | BC=*D21C. | ||||||||||||||||||
| EBDB | JR NZ,$EC52 | Jump to EC52 if {} is not zero. | ||||||||||||||||||
| EBDD | LD A,($D3FF) | Return if *D3FF is not zero. | ||||||||||||||||||
| EBE0 | AND A | |||||||||||||||||||
| EBE1 | RET NZ | |||||||||||||||||||
| EBE2 | EX AF,AF' | Exchange the AF register with the shadow AF register. | ||||||||||||||||||
| EBE3 | BIT 4,A | Jump to EC30 if bit 4 of A is not set. | ||||||||||||||||||
| EBE5 | JR Z,$EC30 | |||||||||||||||||||
| EBE7 | INC B | Increment B by one. | ||||||||||||||||||
| EBE8 | LD A,($D3FF) | Return if *D3FF is not zero. | ||||||||||||||||||
| EBEB | AND A | |||||||||||||||||||
| EBEC | RET NZ | |||||||||||||||||||
| EBED | LD A,$12 | Jump to EC52 if B is not equal to 12. | ||||||||||||||||||
| EBEF | CP B | |||||||||||||||||||
| EBF0 | JR Z,$EC52 | |||||||||||||||||||
| EBF2 | LD A,B | A=B. | ||||||||||||||||||
| EBF3 | LD ($D24E),A | Write A to *Active_MonsterYPosition. | ||||||||||||||||||
| EBF6 | LD ($D21C),BC | Write BC to *D21C. | ||||||||||||||||||
| EBFA | LD BC,$0502 | BC=0502. | ||||||||||||||||||
| EBFD | LD DE,$090F | DE=090F. | ||||||||||||||||||
| EC00 | CALL $E0AD | Call E0AD. | ||||||||||||||||||
| EC03 | LD BC,($D21C) | BC=*D21C. | ||||||||||||||||||
| EC07 | JP Z,$EC30 | Jump to EC30 if {} is zero. | ||||||||||||||||||
| EC0A | LD A,($D244) | Jump to EC30 if *JumpTable_Pointer is equal to 1C. | ||||||||||||||||||
| EC0D | CP $1C | |||||||||||||||||||
| EC0F | JP Z,$EC30 | |||||||||||||||||||
| EC12 | LD A,($D246) | A=*Flag_MonsterClimbing. | ||||||||||||||||||
| EC15 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EC16 | JR NC,$EC52 | Jump to EC52 if the carry flag is not set. | ||||||||||||||||||
| EC18 | LD ($D21C),BC | Write BC to *D21C. | ||||||||||||||||||
| EC1C | LD B,$05 | B=05. | ||||||||||||||||||
| EC1E | LD A,($D247) | C=*Flag_Orientation*04. | ||||||||||||||||||
| EC21 | ADD A,A | |||||||||||||||||||
| EC22 | ADD A,A | |||||||||||||||||||
| EC23 | LD C,A | |||||||||||||||||||
| EC24 | LD DE,$090F | DE=090F. | ||||||||||||||||||
| EC27 | CALL $E0AD | Call E0AD. | ||||||||||||||||||
| EC2A | LD BC,($D21C) | BC=*D21C. | ||||||||||||||||||
| EC2E | JR NZ,$EC52 | Jump to EC52 if {} is not zero. | ||||||||||||||||||
| EC30 | LD ($D24D),BC | Write BC to *Active_MonsterXPosition. | ||||||||||||||||||
| EC34 | LD A,($D217) | Jump to Handler_JumpPunch if *Active_MonsterControl is higher than 11. | ||||||||||||||||||
| EC37 | CP $11 | |||||||||||||||||||
| EC39 | JP NC,Handler_JumpPunch | |||||||||||||||||||
|
The routine at DrawMonsterSprite handles which monster to display.
|
||||||||||||||||||||
| EC3C | LD A,$09 | A=sprite ID 09.
|
||||||||||||||||||
| EC3E | PUSH BC | Stash the co-ordinates on the stack. | ||||||||||||||||||
| EC3F | CALL DrawMonsterSprite | Call DrawMonsterSprite. | ||||||||||||||||||
| EC42 | POP BC | Restore the co-ordinates from the stack. | ||||||||||||||||||
| EC43 | INC B | Increment both the X and Y positions by one to target drawing the mouth section. | ||||||||||||||||||
| EC44 | INC C | |||||||||||||||||||
| EC45 | LD A,($D247) | A=*Flag_Orientation. | ||||||||||||||||||
| EC48 | XOR %00000001 | Flip bit 0. | ||||||||||||||||||
| EC4A | ADD A,C | A+=C. | ||||||||||||||||||
| EC4B | LD C,A | C=A. | ||||||||||||||||||
|
The routine at DrawMonsterSprite handles which monster to display.
|
||||||||||||||||||||
| EC4C | LD A,$17 | A=sprite ID 17.
|
||||||||||||||||||
| EC4E | CALL DrawMonsterSprite | Call DrawMonsterSprite. | ||||||||||||||||||
| EC51 | RET | Return. | ||||||||||||||||||
| EC52 | LD ($D24D),BC | Write BC to *Active_MonsterXPosition. | ||||||||||||||||||
| EC56 | LD A,($D247) | A=*Flag_Orientation. | ||||||||||||||||||
|
Moves the orientation flag into the carry flag.
|
||||||||||||||||||||
| EC59 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||||||||||||||||||
| EC5A | CALL NC,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition if the carry flag is not set. | ||||||||||||||||||
| EC5D | XOR A | Write 00 to: | ||||||||||||||||||
| EC5E | LD ($D24C),A | |||||||||||||||||||
| EC61 | LD ($D246),A | |||||||||||||||||||
| EC64 | LD ($D248),A | |||||||||||||||||||
| EC67 | INC A | Increment A by one. | ||||||||||||||||||
| EC68 | LD ($D24F),A | Write A to *D24F. | ||||||||||||||||||
| EC6B | JP $EF86 | Jump to EF86. | ||||||||||||||||||
| EC6E | XOR A | Write 00 to *D24C. | ||||||||||||||||||
| EC6F | LD ($D24C),A | |||||||||||||||||||
| EC72 | INC A | Increment A by one. | ||||||||||||||||||
| EC73 | LD ($D244),A | Write A to *JumpTable_Pointer. | ||||||||||||||||||
| EC76 | LD A,($D24E) | Jump to EF86 if *Active_MonsterYPosition is equal to 12. | ||||||||||||||||||
| EC79 | CP $12 | |||||||||||||||||||
| EC7B | JP Z,$EF86 | |||||||||||||||||||
| EC7E | LD A,$0B | Write 0B to *JumpTable_Pointer. | ||||||||||||||||||
| EC80 | LD ($D244),A | |||||||||||||||||||
| EC83 | LD A,B | Write B to *Active_MonsterYPosition. | ||||||||||||||||||
| EC84 | LD ($D24E),A | |||||||||||||||||||
| EC87 | JP Action_JumpTable | Jump to Action_JumpTable. | ||||||||||||||||||
| Prev: EA9C | Up: Map | Next: EC8A |