![]() |
Routines |
| Prev: 58925 | Up: Map | Next: 59751 |
|
|
||||
| Handler_Controls | 59020 | CALL Controls | Call Controls. | |
| 59023 | AND A | Jump to Monster_Idle if no keys are currently being pressed. | ||
| 59024 | JP Z,Monster_Idle | |||
|
Controls: Jump/ Punch.
|
||||
| Controls_JumpPunch | 59027 | BIT 4,A | Jump to Controls_Up if the key for jump/ punch is not being pressed. | |
| 59029 | JP Z,Controls_Up | |||
| 59032 | XOR %00010000 | Flip bit 4. | ||
| 59034 | JR NZ,Handler_Controls_1 | Jump to Handler_Controls_1 if the result is not zero. | ||
| Handler_Controls_0 | 59036 | LD A,10 | Write 10 to *JumpTable_Pointer. | |
| 59038 | LD (53828),A | |||
| 59041 | LD A,1 | Write 1 to *Flag_MonsterJumping. | ||
| 59043 | LD (53832),A | |||
| 59046 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_1 | 59049 | LD A,(53830) | Jump to Handler_Controls_2 if *Flag_MonsterClimbing is zero. | |
| 59052 | AND A | |||
| 59053 | JR Z,Handler_Controls_2 | |||
| 59055 | LD A,13 | Write 13 to *JumpTable_Pointer. | ||
| 59057 | LD (53828),A | |||
| 59060 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_2 | 59063 | LD A,(53842) | Jump to Handler_Controls_0 if *Active_MonsterControlType is set to "computer controlled". | |
| 59066 | AND A | |||
| 59067 | JR Z,Handler_Controls_0 | |||
| 59069 | LD A,14 | Write 14 to *JumpTable_Pointer. | ||
| 59071 | LD (53828),A | |||
| 59074 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Up.
|
||||
| Controls_Up | 59077 | BIT 3,A | Jump to Controls_Down if the key for up is not being pressed. | |
| 59079 | JP Z,Controls_Down | |||
| 59082 | LD A,(53831) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| 59085 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59086 | JR C,Handler_Controls_3 | Jump to Handler_Controls_3 if the carry flag is set. | ||
| 59088 | LD BC,258 | BC=258. | ||
| 59091 | LD DE,2319 | DE=2319. | ||
| 59094 | CALL 57517 | Call 57517. | ||
| 59097 | JR Z,Handler_Controls_5 | Jump to Handler_Controls_5 if {} is zero. | ||
| 59099 | LD A,(53832) | A=*Flag_MonsterJumping. | ||
| 59102 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59103 | JP C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| 59106 | JR Handler_Controls_4 | Jump to Handler_Controls_4. | ||
| Handler_Controls_3 | 59108 | LD BC,257 | BC=257. | |
| 59111 | LD DE,2319 | DE=2319. | ||
| 59114 | CALL 57517 | Call 57517. | ||
| 59117 | JR Z,Handler_Controls_9 | Jump to Handler_Controls_9 if {} is zero. | ||
| 59119 | LD A,(53832) | A=*Flag_MonsterJumping. | ||
| 59122 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59123 | JP C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| 59126 | CALL Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition. | ||
| Handler_Controls_4 | 59129 | LD A,(53838) | A=*Active_MonsterYPosition. | |
| 59132 | SUB 4 | A-=4. | ||
| 59134 | LD (53838),A | Write A to *Active_MonsterYPosition. | ||
| 59137 | XOR A | Write 0 to: | ||
| 59138 | LD (53832),A | |||
| 59141 | LD (53830),A | |||
| 59144 | LD (53836),A | |||
| 59147 | INC A | Write 1 to *JumpTable_Pointer. | ||
| 59148 | LD (53828),A | |||
| 59151 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_5 | 59154 | LD BC,514 | BC=514. | |
| 59157 | LD DE,4371 | DE=4371. | ||
| 59160 | LD A,(53830) | A=*Flag_MonsterClimbing. | ||
| 59163 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59164 | JR C,Handler_Controls_7 | Jump to Handler_Controls_7 if the carry flag is set. | ||
| Handler_Controls_6 | 59166 | INC C | Increment C by one. | |
| 59167 | CALL 57517 | Call 57517. | ||
| 59170 | JR Z,Handler_Controls_8 | Jump to Handler_Controls_8 if {} is zero. | ||
| 59172 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| 59175 | JR Handler_Controls_10 | Jump to Handler_Controls_10. | ||
| Handler_Controls_7 | 59177 | LD A,(53832) | A=*Flag_MonsterJumping. | |
| 59180 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59181 | JR C,Handler_Controls_6 | Jump to Handler_Controls_6 if the carry flag is set. | ||
| 59183 | CALL 57517 | Call 57517. | ||
| 59186 | JR NZ,Handler_Controls_10 | Jump to Handler_Controls_10 if {} is not zero. | ||
| Handler_Controls_8 | 59188 | LD BC,514 | BC=514. | |
| 59191 | LD DE,5142 | DE=5142. | ||
| 59194 | CALL 57517 | Call 57517. | ||
| 59197 | JR Z,Handler_Controls_12 | Jump to Handler_Controls_12 if {} is zero. | ||
| 59199 | LD A,1 | Write 1 to *Flag_Orientation. | ||
| 59201 | LD (53831),A | |||
| 59204 | JR Handler_Controls_10 | Jump to Handler_Controls_10. | ||
| Handler_Controls_9 | 59206 | LD BC,514 | BC=514. | |
| 59209 | LD DE,5142 | DE=5142. | ||
| 59212 | CALL 57517 | Call 57517. | ||
| 59215 | JR NZ,Handler_Controls_10 | Jump to Handler_Controls_10 if {} is not zero. | ||
| 59217 | LD BC,515 | BC=515. | ||
| 59220 | LD DE,4371 | DE=4371. | ||
| 59223 | CALL 57517 | Call 57517. | ||
| 59226 | JR Z,Handler_Controls_12 | Jump to Handler_Controls_12 if {} is zero. | ||
| 59228 | XOR A | Write 0 to *Flag_Orientation. | ||
| 59229 | LD (53831),A | |||
| 59232 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| Handler_Controls_10 | 59235 | LD A,(53830) | A=*Flag_MonsterClimbing. | |
| 59238 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59239 | JR C,Handler_Controls_14 | Jump to Handler_Controls_14 if the carry flag is set. | ||
| 59241 | LD A,(53838) | A=*Active_MonsterYPosition. | ||
| 59244 | CP 18 | Jump to Handler_Controls_11 if A is no equal to 18. | ||
| 59246 | JR NZ,Handler_Controls_11 | |||
| 59248 | SUB 2 | A-=2. | ||
| 59250 | LD (53838),A | Write A to *Active_MonsterYPosition. | ||
| Handler_Controls_11 | 59253 | XOR A | Write 0 to: | |
| 59254 | LD (53832),A | |||
| 59257 | LD (53836),A | |||
| 59260 | INC A | Set *Flag_MonsterClimbing to "climbing" (1). | ||
| 59261 | LD (53830),A | |||
| 59264 | LD A,3 | Write 3 to *53839. | ||
| 59266 | LD (53839),A | |||
| Handler_Controls_12 | 59269 | LD A,(53832) | A=*Flag_MonsterJumping. | |
| 59272 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59273 | JR C,Handler_Controls_13 | Jump to Handler_Controls_13 if the carry flag is set. | ||
| 59275 | XOR A | Write 0 to: | ||
| 59276 | LD (53832),A | |||
| 59279 | LD (53836),A | |||
| 59282 | JP 61318 | Jump to 61318. | ||
| Handler_Controls_13 | 59285 | LD HL,53831 | HL=Flag_Orientation. | |
| 59288 | LD A,(HL) | A=*HL. | ||
| 59289 | XOR %00000001 | Flip bit 0. | ||
| 59291 | INC HL | Increment HL by one. | ||
| 59292 | AND (HL) | Merge the bits from *HL. | ||
| 59293 | CALL NZ,Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition not zero. | ||
| 59296 | LD A,(53830) | A=*Flag_MonsterClimbing. | ||
| 59299 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59300 | CALL C,Handler_DecreaseMonsterYPosition | Call Handler_DecreaseMonsterYPosition if the carry flag is set. | ||
| 59303 | JP 60207 | Jump to 60207. | ||
| Handler_Controls_14 | 59306 | LD A,3 | Write 3 to *53839. | |
| 59308 | LD (53839),A | |||
| 59311 | LD DE,(53843) | DE=*53843. | ||
| 59315 | CALL 55823 | Call 55823. | ||
| 59318 | LD A,(53829) | A=*53829. | ||
| 59321 | AND %00000001 | Keep only bit 0. | ||
| 59323 | XOR %00000001 | Flip bit 0. | ||
| 59325 | LD (IX+5),A | Write A to *IX+5. | ||
| 59328 | CALL Z,Handler_DecreaseMonsterYPosition | Call Handler_DecreaseMonsterYPosition zero. | ||
| 59331 | LD A,8 | Write 8 to *IX+0. | ||
| 59333 | LD (IX+0),A | |||
| 59336 | XOR A | Write 0 to: | ||
| 59337 | LD (53832),A | |||
| 59340 | LD (53836),A | |||
| 59343 | INC A | Set *Flag_MonsterClimbing to "climbing" (1). | ||
| 59344 | LD (53830),A | |||
| 59347 | LD A,3 | Write 3 to: | ||
| 59349 | LD (53828),A | |||
| 59352 | LD (53829),A | |||
| 59355 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Down.
|
||||
| Controls_Down | 59358 | BIT 2,A | Jump to Controls_Left if the key for down is not being pressed. | |
| 59360 | JP Z,Controls_Left | |||
| 59363 | LD A,(53838) | Jump to Handler_Controls_22 if *Active_MonsterYPosition is equal to 16. | ||
| 59366 | CP 16 | |||
| 59368 | JP Z,Handler_Controls_22 | |||
| 59371 | LD A,(53831) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| 59374 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59375 | JR C,Handler_Controls_16 | Jump to Handler_Controls_16 if the carry flag is set. | ||
| 59377 | LD BC,1282 | BC=1282. | ||
| 59380 | LD DE,2319 | DE=2319. | ||
| 59383 | CALL 57517 | Call 57517. | ||
| 59386 | LD C,2 | C=2. | ||
| 59388 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| 59390 | LD BC,1538 | BC=1538. | ||
| 59393 | LD DE,5142 | DE=5142. | ||
| 59396 | CALL 57517 | Call 57517. | ||
| 59399 | JR Z,Handler_Controls_15 | Jump to Handler_Controls_15 if {} is zero. | ||
| 59401 | LD A,1 | A=1. | ||
| 59403 | JP Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_15 | 59406 | LD BC,1538 | BC=1538. | |
| 59409 | LD DE,4371 | DE=4371. | ||
| 59412 | CALL 57517 | Call 57517. | ||
| 59415 | LD C,2 | C=2. | ||
| 59417 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| 59419 | XOR A | A=0. | ||
| 59420 | JP Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_16 | 59423 | LD BC,1283 | BC=1283. | |
| 59426 | LD DE,2319 | DE=2319. | ||
| 59429 | CALL 57517 | Call 57517. | ||
| 59432 | LD C,3 | C=3. | ||
| 59434 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| 59436 | LD BC,1539 | BC=1539. | ||
| 59439 | LD DE,4371 | DE=4371. | ||
| 59442 | CALL 57517 | Call 57517. | ||
| 59445 | JR Z,Handler_Controls_17 | Jump to Handler_Controls_17 if {} is zero. | ||
| 59447 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| 59450 | XOR A | A=0. | ||
| 59451 | JR Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_17 | 59453 | LD BC,1539 | BC=1539. | |
| 59456 | LD DE,5142 | DE=5142. | ||
| 59459 | CALL 57517 | Call 57517. | ||
| 59462 | LD C,3 | C=3. | ||
| 59464 | JR Z,Handler_Controls_18 | Jump to Handler_Controls_18 if {} is zero. | ||
| 59466 | CALL Handler_IncrementMonsterXPosition | Call Handler_IncrementMonsterXPosition. | ||
| 59469 | LD A,1 | A=1. | ||
| 59471 | JR Handler_Controls_21 | Jump to Handler_Controls_21. | ||
| Handler_Controls_18 | 59473 | LD A,(53830) | A=*Flag_MonsterClimbing. | |
| 59476 | XOR %00000001 | Flip bit 0. | ||
| 59478 | ADD A,5 | A+=5. | ||
| 59480 | LD B,A | B=A. | ||
| 59481 | LD DE,2319 | DE=2319. | ||
| 59484 | CALL 57517 | Call 57517. | ||
| 59487 | JR Z,Handler_Controls_19 | Jump to Handler_Controls_19 if {} is zero. | ||
| 59489 | XOR A | Set *Flag_MonsterClimbing to "not climbing" (0). | ||
| 59490 | LD (53830),A | |||
| 59493 | INC A | Write 1 to: | ||
| 59494 | LD (53828),A | |||
| 59497 | LD (53839),A | |||
| 59500 | LD A,(53831) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| 59503 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59504 | CALL NC,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition if the carry flag is not set. | ||
| 59507 | JP 61318 | Jump to 61318. | ||
| Handler_Controls_19 | 59510 | LD A,(53830) | A=*Flag_MonsterClimbing. | |
| 59513 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59514 | JP NC,61318 | Jump to 61318 if the carry flag is not set. | ||
| 59517 | LD BC,1026 | BC=1026. | ||
| 59520 | LD DE,4371 | DE=4371. | ||
| 59523 | LD A,(53831) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| 59526 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59527 | JR NC,Handler_Controls_20 | Jump to Handler_Controls_20 if the carry flag is not set. | ||
| 59529 | LD DE,5142 | DE=5142. | ||
| Handler_Controls_20 | 59532 | CALL 57517 | Call 57517. | |
| 59535 | JP Z,61318 | Jump to 61318 if {} is zero. | ||
| 59538 | LD A,2 | Write 2 to *53839. | ||
| 59540 | LD (53839),A | |||
| 59543 | LD DE,(53843) | DE=*53843. | ||
| 59547 | CALL 55823 | Call 55823. | ||
| 59550 | LD A,(53829) | A=*53829. | ||
| 59553 | AND %00000001 | Keep only bit 0. | ||
| 59555 | LD (IX+5),A | Write A to *IX+5. | ||
| 59558 | LD A,4 | Write 4 to:
|
||
| 59560 | LD (IX+0),A | |||
| 59563 | LD (53828),A | |||
| 59566 | LD (53829),A | |||
| 59569 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_21 | 59572 | LD (53831),A | Write A to *Flag_Orientation. | |
| 59575 | LD A,(53838) | A=*Active_MonsterYPosition. | ||
| 59578 | ADD A,4 | A+=4. | ||
| 59580 | LD (53838),A | Write A to *Active_MonsterYPosition. | ||
| 59583 | LD A,3 | Write 3 to: | ||
| 59585 | LD (53828),A | |||
| 59588 | LD (53839),A | |||
| 59591 | LD A,1 | Set *Flag_MonsterClimbing to "climbing" (1). | ||
| 59593 | LD (53830),A | |||
| 59596 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Handler_Controls_22 | 59599 | LD A,18 | Write 18 to *Active_MonsterYPosition. | |
| 59601 | LD (53838),A | |||
| 59604 | LD A,1 | Write 1 to *JumpTable_Pointer. | ||
| 59606 | LD (53828),A | |||
| 59609 | LD A,(53831) | A=*Flag_Orientation. | ||
|
Moves the orientation flag into the carry flag.
|
||||
| 59612 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59613 | CALL NC,Handler_DecreaseMonsterXPosition | Call Handler_DecreaseMonsterXPosition if the carry flag is not set. | ||
| 59616 | XOR A | Set *Flag_MonsterClimbing to "not climbing" (0). | ||
| 59617 | LD (53830),A | |||
| 59620 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Left.
|
||||
| Controls_Left | 59623 | BIT 0,A | Jump to Controls_Right if the key for left is not being pressed. | |
| 59625 | JR Z,Controls_Right | |||
| 59627 | LD A,(53830) | A=*Flag_MonsterClimbing. | ||
| 59630 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59631 | JP C,61318 | Jump to 61318 if the carry flag is set. | ||
| 59634 | LD A,1 | Write 1 to *53839. | ||
| 59636 | LD (53839),A | |||
| 59639 | LD DE,(53843) | DE=*53843. | ||
| 59643 | CALL 55823 | Call 55823. | ||
| 59646 | LD A,(53837) | A=*Active_MonsterXPosition. | ||
| 59649 | DEC A | Decrease A by one. | ||
| 59650 | CP 252 | Jump to 61318 if A is equal to 252. | ||
| 59652 | JP Z,61318 | |||
| 59655 | LD (53837),A | Write A to *Active_MonsterXPosition. | ||
| 59658 | XOR A | Write 0 to *IX+5. | ||
| 59659 | LD (IX+5),A | |||
| 59662 | INC A | Write 1 to *Flag_Orientation. | ||
| 59663 | LD (53831),A | |||
| 59666 | INC A | Write 2 to:
|
||
| 59667 | LD (IX+0),A | |||
| 59670 | LD (53828),A | |||
| 59673 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
Controls: Right.
|
||||
| Controls_Right | 59676 | BIT 1,A | Jump to Monster_Idle if the key for right is not being pressed. | |
| 59678 | JR Z,Monster_Idle | |||
| 59680 | LD A,(53830) | A=*Flag_MonsterClimbing. | ||
| 59683 | RRCA | Rotate A right one position, setting the carry flag if bit 0 was set. | ||
| 59684 | JP C,61318 | Jump to 61318 if the carry flag is set. | ||
| 59687 | LD A,1 | Write 1 to *53839. | ||
| 59689 | LD (53839),A | |||
| 59692 | LD DE,(53843) | DE=*53843. | ||
| 59696 | CALL 55823 | Call 55823. | ||
| 59699 | LD A,(53837) | A=*Active_MonsterXPosition. | ||
| 59702 | INC A | Increment A by one. | ||
| 59703 | CP 30 | Jump to 61318 if A is equal to 30. | ||
| 59705 | JP Z,61318 | |||
| 59708 | LD (53837),A | Write A to *Active_MonsterXPosition. | ||
| 59711 | XOR A | Write 0 to:
|
||
| 59712 | LD (IX+5),A | |||
| 59715 | LD (53831),A | |||
| 59718 | INC A | Write 1 to:
|
||
| 59719 | LD (IX+0),A | |||
| 59722 | LD (53828),A | |||
| 59725 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
|
No keys are being pressed so decrease the waiting countdown.
|
||||
| Monster_Idle | 59728 | LD A,(53833) | Decrease *Active_MonsterIdleCountdown by one. | |
| 59731 | DEC A | |||
| 59732 | LD (53833),A | |||
| 59735 | JP NZ,61318 | Jump to 61318 if *Active_MonsterIdleCountdown is not yet zero. | ||
|
The idle countdown is finished, so reset the countdown and mark the action event.
|
||||
| 59738 | LD A,25 | Write 25 to *Active_MonsterIdleCountdown. | ||
| 59740 | LD (53833),A | |||
| 59743 | LD A,5 | Write "waiting" (5) to *JumpTable_Pointer. | ||
| 59745 | LD (53828),A | |||
| 59748 | JP Action_JumpTable | Jump to Action_JumpTable. | ||
| Prev: 58925 | Up: Map | Next: 59751 |