Routines |
Prev: 58388 | Up: Map | Next: 58677 |
|
|||||||
Human_Shooter | 58439 | POP HL | Restore human table pointer from the stack. | ||||
Shooter_DecreaseCountdown | 58440 | LD A,(HL) | Decrease the humans action countdown by one. | ||||
58441 | DEC A | ||||||
58442 | LD (HL),A | ||||||
58443 | CP 200 | Jump to Shooter_AboutToHide if the humans action countdown (A) is higher than 200. | |||||
58445 | JP NC,Shooter_AboutToHide | ||||||
58448 | CP 20 | Jump to Shooter_EndCycle if the humans action countdown (A) is lower than 20. | |||||
58450 | JR C,Shooter_EndCycle | ||||||
58452 | AND %00011111 | Keep only bits 0-4. | |||||
58454 | JR Z,Shooter_Action | Jump to Shooter_Action if the result is zero. | |||||
58456 | LD A,(HL) | A=*HL. | |||||
58457 | RLCA | RLCA. | |||||
58458 | RLCA | ||||||
58459 | RLCA | ||||||
58460 | AND %00000011 | Keep only bits 0-1. | |||||
58462 | CALL 56281 | Call 56281. | |||||
58465 | JR Human_Shooter_0 | Jump to Human_Shooter_0. | |||||
Handle the action, but also give a small chance the human should hide.
|
|||||||
Shooter_Action | 58467 | CALL ShouldHumanHide | Call ShouldHumanHide. | ||||
58470 | JR C,Shooter_DecreaseCountdown | Jump to Shooter_DecreaseCountdown if the human is set to start hiding. | |||||
58472 | CALL TargetMonster | Call TargetMonster. | |||||
58475 | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
58476 | AND %00000011 | Keep only bits 0-1. | |||||
58478 | RRCA | Rotate A right three positions (bits 0 to 2 are now in positions 5 to 7). | |||||
58479 | RRCA | ||||||
58480 | RRCA | ||||||
58481 | OR %00011111 | Set bits 0-4. | |||||
58483 | LD (HL),A | Write A to *HL. | |||||
Human_Shooter_0 | 58484 | INC HL | Increment HL by one. | ||||
58485 | LD A,(HL) | A=*HL. | |||||
58486 | CP B | Compare A with B. | |||||
58487 | INC HL | Increment HL by one. | |||||
58488 | LD A,(HL) | A=*HL. | |||||
58489 | DEC HL | Decrease HL by two. | |||||
58490 | DEC HL | ||||||
58491 | JR Z,Human_Shooter_1 | Jump to Human_Shooter_1 if HL is zero. | |||||
58493 | JR NC,Human_Shooter_2 | Jump to Human_Shooter_2 if {} is higher. | |||||
58495 | CP C | Jump to Human_Shooter_5 if A is equal to C. | |||||
58496 | JR Z,Human_Shooter_5 | ||||||
58498 | JR C,Human_Shooter_4 | Jump to Human_Shooter_4 if A is lower than C. | |||||
58500 | JR Human_Shooter_6 | Jump to Human_Shooter_6. | |||||
Human_Shooter_1 | 58502 | CP C | Jump to Human_Shooter_3 if A is lower than C. | ||||
58503 | JR C,Human_Shooter_3 | ||||||
58505 | JR Human_Shooter_11 | Jump to Human_Shooter_11. | |||||
Human_Shooter_2 | 58507 | CP C | Jump to Human_Shooter_9 if A is equal to C. | ||||
58508 | JR Z,Human_Shooter_9 | ||||||
58510 | JR C,Human_Shooter_8 | Jump to Human_Shooter_8 if A is lower than C. | |||||
58512 | JR Human_Shooter_10 | Jump to Human_Shooter_10. | |||||
Human_Shooter_3 | 58514 | LD B,202 |
|
||||
58516 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
Human_Shooter_4 | 58518 | LD B,204 |
|
||||
58520 | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
Human_Shooter_5 | 58522 | LD B,206 |
|
||||
58524 | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
Human_Shooter_6 | 58526 | LD B,208 |
|
||||
Human_Shooter_7 | 58528 | CALL RandomNumber | Call RandomNumber. | ||||
58531 | CP 4 | Compare A with 4. | |||||
58533 | LD A,B | A=B. | |||||
58534 | JP NC,Draw_Human_Sprite | Jump to Draw_Human_Sprite if {} is higher. | |||||
58537 | LD C,0 | C=0. | |||||
58539 | CALL Human_Shooter_13 | Call Human_Shooter_13. | |||||
58542 | JP Draw_Human_Sprite | Jump to Draw_Human_Sprite. | |||||
Human_Shooter_8 | 58545 | LD B,204 |
|
||||
58547 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
Human_Shooter_9 | 58549 | LD B,206 |
|
||||
58551 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
Human_Shooter_10 | 58553 | LD B,208 |
|
||||
58555 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
Human_Shooter_11 | 58557 | LD B,210 |
|
||||
58559 | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
Human_Shooter_12 | 58561 | CALL RandomNumber | Call RandomNumber. | ||||
58564 | CP 4 | Compare A with 4... | |||||
58566 | LD A,B | A=B. | |||||
58567 | JP NC,Draw_Human_Sprite_Mirrored | Jump to Draw_Human_Sprite_Mirrored if A is higher than 4. | |||||
58570 | LD C,128 | C=128. | |||||
58572 | CALL Human_Shooter_13 | Call Human_Shooter_13. | |||||
58575 | JP Draw_Human_Sprite_Mirrored | Jump to Draw_Human_Sprite_Mirrored. | |||||
When the countdown reaches 10 (from 128), jump to Shooter_Action to start a new cycle.
|
|||||||
Shooter_EndCycle | 58578 | CP 10 | Jump to Shooter_Action if A is equal to 10. | ||||
58580 | JR Z,Shooter_Action | ||||||
The countdown between 206-201 handles the delay before 200 will hide the human.
|
|||||||
Shooter_AboutToHide | 58582 | LD A,192 |
|
||||
58584 | JP NZ,Draw_Human_Sprite | Jump to Draw_Human_Sprite until the countdown equals 200 (from line 58443). | |||||
58587 | JP Handler_Human_Hide | Jump to Handler_Human_Hide. | |||||
Human_Shooter_13 | 58590 | LD A,(54264) | Compare *NumberBullets with 8... | ||||
58593 | CP 8 | ||||||
58595 | LD A,B | A=B. | |||||
58596 | RET Z | Return if *NumberBullets is equal to 8 on line 58593. | |||||
58597 | LD DE,53948 | DE=53948. | |||||
58600 | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
Human_Shooter_14 | 58601 | INC DE | Increment DE by three. | ||||
58602 | INC DE | ||||||
58603 | INC DE | ||||||
58604 | LD A,(DE) | Jump to Human_Shooter_14 if *DE is not zero. | |||||
58605 | AND A | ||||||
58606 | JR NZ,Human_Shooter_14 | ||||||
58608 | LD A,B | A=B. | |||||
58609 | SUB 200 | A-=200. | |||||
58611 | RRCA | RRCA. | |||||
58612 | OR C | Set the bits from C. | |||||
58613 | LD (DE),A | Write A to *DE. | |||||
58614 | INC DE | Increment DE by one. | |||||
58615 | INC HL | Increment HL by one. | |||||
58616 | LD C,(HL) | C=*HL. | |||||
58617 | INC HL | Increment HL by one. | |||||
58618 | LD B,(HL) | B=*HL. | |||||
58619 | CP 4 | Jump to Human_Shooter_15 if A is not equal to 4. | |||||
58621 | JR NZ,Human_Shooter_15 | ||||||
58623 | INC C | Increment C by one. | |||||
58624 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
Human_Shooter_15 | 58626 | CP 130 | Jump to Human_Shooter_16 if A is not equal to 130. | ||||
58628 | JR NZ,Human_Shooter_16 | ||||||
58630 | INC B | Increment B by one. | |||||
58631 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
Human_Shooter_16 | 58633 | CP 2 | Jump to Human_Shooter_17 if A is equal to 2. | ||||
58635 | JR Z,Human_Shooter_17 | ||||||
58637 | CP 1 | Jump to Human_Shooter_17 if A is equal to 1. | |||||
58639 | JR Z,Human_Shooter_17 | ||||||
58641 | CP 133 | Jump to Human_Shooter_18 if A is not equal to 133. | |||||
58643 | JR NZ,Human_Shooter_18 | ||||||
Human_Shooter_17 | 58645 | INC B | Increment B by one. | ||||
58646 | INC C | Increment C by one. | |||||
58647 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
Human_Shooter_18 | 58649 | AND %00000011 | Keep only bits 0-1. | ||||
58651 | CP 3 | Jump to Human_Shooter_19 if A is not equal to 3. | |||||
58653 | JR NZ,Human_Shooter_19 | ||||||
58655 | INC B | Increment B by one. | |||||
Human_Shooter_19 | 58656 | LD A,C | Write C to *DE. | ||||
58657 | LD (DE),A | ||||||
58658 | INC DE | Increment DE by one. | |||||
58659 | LD A,B | Write B to *DE. | |||||
58660 | LD (DE),A | ||||||
58661 | DEC HL | Decrease HL by two. | |||||
58662 | DEC HL | ||||||
58663 | LD A,(54264) | Increment *NumberBullets by one. | |||||
58666 | INC A | ||||||
58667 | LD (54264),A | ||||||
|
|||||||
58670 | LD A,2 | Write melody ID 2 to *MelodyID. | |||||
58672 | LD (65421),A | ||||||
58675 | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
58676 | RET | Return. |
Prev: 58388 | Up: Map | Next: 58677 |