![]() |
Routines |
| Prev: E414 | Up: Map | Next: E535 |
|
|
|||||||
| Human_Shooter | E447 | POP HL | Restore human table pointer from the stack. | ||||
| Shooter_DecreaseCountdown | E448 | LD A,(HL) | Decrease the humans action countdown by one. | ||||
| E449 | DEC A | ||||||
| E44A | LD (HL),A | ||||||
| E44B | CP $C8 | Jump to Shooter_AboutToHide if the humans action countdown (A) is higher than C8. | |||||
| E44D | JP NC,Shooter_AboutToHide | ||||||
| E450 | CP $14 | Jump to Shooter_EndCycle if the humans action countdown (A) is lower than 14. | |||||
| E452 | JR C,Shooter_EndCycle | ||||||
| E454 | AND %00011111 | Keep only bits 0-4. | |||||
| E456 | JR Z,Shooter_Action | Jump to Shooter_Action if the result is zero. | |||||
| E458 | LD A,(HL) | A=*HL. | |||||
| E459 | RLCA | RLCA. | |||||
| E45A | RLCA | ||||||
| E45B | RLCA | ||||||
| E45C | AND %00000011 | Keep only bits 0-1. | |||||
| E45E | CALL $DBD9 | Call DBD9. | |||||
| E461 | JR Human_Shooter_0 | Jump to Human_Shooter_0. | |||||
|
Handle the action, but also give a small chance the human should hide.
|
|||||||
| Shooter_Action | E463 | CALL ShouldHumanHide | Call ShouldHumanHide. | ||||
| E466 | JR C,Shooter_DecreaseCountdown | Jump to Shooter_DecreaseCountdown if the human is set to start hiding. | |||||
| E468 | CALL TargetMonster | Call TargetMonster. | |||||
| E46B | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
| E46C | AND %00000011 | Keep only bits 0-1. | |||||
| E46E | RRCA | Rotate A right three positions (bits 0 to 2 are now in positions 5 to 7). | |||||
| E46F | RRCA | ||||||
| E470 | RRCA | ||||||
| E471 | OR %00011111 | Set bits 0-4. | |||||
| E473 | LD (HL),A | Write A to *HL. | |||||
| Human_Shooter_0 | E474 | INC HL | Increment HL by one. | ||||
| E475 | LD A,(HL) | A=*HL. | |||||
| E476 | CP B | Compare A with B. | |||||
| E477 | INC HL | Increment HL by one. | |||||
| E478 | LD A,(HL) | A=*HL. | |||||
| E479 | DEC HL | Decrease HL by two. | |||||
| E47A | DEC HL | ||||||
| E47B | JR Z,Human_Shooter_1 | Jump to Human_Shooter_1 if HL is zero. | |||||
| E47D | JR NC,Human_Shooter_2 | Jump to Human_Shooter_2 if {} is higher. | |||||
| E47F | CP C | Jump to Human_Shooter_5 if A is equal to C. | |||||
| E480 | JR Z,Human_Shooter_5 | ||||||
| E482 | JR C,Human_Shooter_4 | Jump to Human_Shooter_4 if A is lower than C. | |||||
| E484 | JR Human_Shooter_6 | Jump to Human_Shooter_6. | |||||
| Human_Shooter_1 | E486 | CP C | Jump to Human_Shooter_3 if A is lower than C. | ||||
| E487 | JR C,Human_Shooter_3 | ||||||
| E489 | JR Human_Shooter_11 | Jump to Human_Shooter_11. | |||||
| Human_Shooter_2 | E48B | CP C | Jump to Human_Shooter_9 if A is equal to C. | ||||
| E48C | JR Z,Human_Shooter_9 | ||||||
| E48E | JR C,Human_Shooter_8 | Jump to Human_Shooter_8 if A is lower than C. | |||||
| E490 | JR Human_Shooter_10 | Jump to Human_Shooter_10. | |||||
| Human_Shooter_3 | E492 | LD B,$CA |
|
||||
| E494 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
| Human_Shooter_4 | E496 | LD B,$CC |
|
||||
| E498 | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
| Human_Shooter_5 | E49A | LD B,$CE |
|
||||
| E49C | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
| Human_Shooter_6 | E49E | LD B,$D0 |
|
||||
| Human_Shooter_7 | E4A0 | CALL RandomNumber | Call RandomNumber. | ||||
| E4A3 | CP $04 | Compare A with 04. | |||||
| E4A5 | LD A,B | A=B. | |||||
| E4A6 | JP NC,Draw_Human_Sprite | Jump to Draw_Human_Sprite if {} is higher. | |||||
| E4A9 | LD C,$00 | C=00. | |||||
| E4AB | CALL Human_Shooter_13 | Call Human_Shooter_13. | |||||
| E4AE | JP Draw_Human_Sprite | Jump to Draw_Human_Sprite. | |||||
| Human_Shooter_8 | E4B1 | LD B,$CC |
|
||||
| E4B3 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
| Human_Shooter_9 | E4B5 | LD B,$CE |
|
||||
| E4B7 | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
| Human_Shooter_10 | E4B9 | LD B,$D0 |
|
||||
| E4BB | JR Human_Shooter_12 | Jump to Human_Shooter_12. | |||||
| Human_Shooter_11 | E4BD | LD B,$D2 |
|
||||
| E4BF | JR Human_Shooter_7 | Jump to Human_Shooter_7. | |||||
| Human_Shooter_12 | E4C1 | CALL RandomNumber | Call RandomNumber. | ||||
| E4C4 | CP $04 | Compare A with 04... | |||||
| E4C6 | LD A,B | A=B. | |||||
| E4C7 | JP NC,Draw_Human_Sprite_Mirrored | Jump to Draw_Human_Sprite_Mirrored if A is higher than 04. | |||||
| E4CA | LD C,$80 | C=80. | |||||
| E4CC | CALL Human_Shooter_13 | Call Human_Shooter_13. | |||||
| E4CF | JP Draw_Human_Sprite_Mirrored | Jump to Draw_Human_Sprite_Mirrored. | |||||
|
When the countdown reaches 0A (from 80), jump to Shooter_Action to start a new cycle.
|
|||||||
| Shooter_EndCycle | E4D2 | CP $0A | Jump to Shooter_Action if A is equal to 0A. | ||||
| E4D4 | JR Z,Shooter_Action | ||||||
|
The countdown between CE-C9 handles the delay before C8 will hide the human.
|
|||||||
| Shooter_AboutToHide | E4D6 | LD A,$C0 |
|
||||
| E4D8 | JP NZ,Draw_Human_Sprite | Jump to Draw_Human_Sprite until the countdown equals C8 (from line E44B). | |||||
| E4DB | JP Handler_Human_Hide | Jump to Handler_Human_Hide. | |||||
| Human_Shooter_13 | E4DE | LD A,($D3F8) | Compare *NumberBullets with 08... | ||||
| E4E1 | CP $08 | ||||||
| E4E3 | LD A,B | A=B. | |||||
| E4E4 | RET Z | Return if *NumberBullets is equal to 08 on line E4E1. | |||||
| E4E5 | LD DE,$D2BC | DE=D2BC. | |||||
| E4E8 | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
| Human_Shooter_14 | E4E9 | INC DE | Increment DE by three. | ||||
| E4EA | INC DE | ||||||
| E4EB | INC DE | ||||||
| E4EC | LD A,(DE) | Jump to Human_Shooter_14 if *DE is not zero. | |||||
| E4ED | AND A | ||||||
| E4EE | JR NZ,Human_Shooter_14 | ||||||
| E4F0 | LD A,B | A=B. | |||||
| E4F1 | SUB $C8 | A-=C8. | |||||
| E4F3 | RRCA | RRCA. | |||||
| E4F4 | OR C | Set the bits from C. | |||||
| E4F5 | LD (DE),A | Write A to *DE. | |||||
| E4F6 | INC DE | Increment DE by one. | |||||
| E4F7 | INC HL | Increment HL by one. | |||||
| E4F8 | LD C,(HL) | C=*HL. | |||||
| E4F9 | INC HL | Increment HL by one. | |||||
| E4FA | LD B,(HL) | B=*HL. | |||||
| E4FB | CP $04 | Jump to Human_Shooter_15 if A is not equal to 04. | |||||
| E4FD | JR NZ,Human_Shooter_15 | ||||||
| E4FF | INC C | Increment C by one. | |||||
| E500 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
| Human_Shooter_15 | E502 | CP $82 | Jump to Human_Shooter_16 if A is not equal to 82. | ||||
| E504 | JR NZ,Human_Shooter_16 | ||||||
| E506 | INC B | Increment B by one. | |||||
| E507 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
| Human_Shooter_16 | E509 | CP $02 | Jump to Human_Shooter_17 if A is equal to 02. | ||||
| E50B | JR Z,Human_Shooter_17 | ||||||
| E50D | CP $01 | Jump to Human_Shooter_17 if A is equal to 01. | |||||
| E50F | JR Z,Human_Shooter_17 | ||||||
| E511 | CP $85 | Jump to Human_Shooter_18 if A is not equal to 85. | |||||
| E513 | JR NZ,Human_Shooter_18 | ||||||
| Human_Shooter_17 | E515 | INC B | Increment B by one. | ||||
| E516 | INC C | Increment C by one. | |||||
| E517 | JR Human_Shooter_19 | Jump to Human_Shooter_19. | |||||
| Human_Shooter_18 | E519 | AND %00000011 | Keep only bits 0-1. | ||||
| E51B | CP $03 | Jump to Human_Shooter_19 if A is not equal to 03. | |||||
| E51D | JR NZ,Human_Shooter_19 | ||||||
| E51F | INC B | Increment B by one. | |||||
| Human_Shooter_19 | E520 | LD A,C | Write C to *DE. | ||||
| E521 | LD (DE),A | ||||||
| E522 | INC DE | Increment DE by one. | |||||
| E523 | LD A,B | Write B to *DE. | |||||
| E524 | LD (DE),A | ||||||
| E525 | DEC HL | Decrease HL by two. | |||||
| E526 | DEC HL | ||||||
| E527 | LD A,($D3F8) | Increment *NumberBullets by one. | |||||
| E52A | INC A | ||||||
| E52B | LD ($D3F8),A | ||||||
|
|
|||||||
| E52E | LD A,$02 | Write melody ID 02 to *MelodyID. | |||||
| E530 | LD ($FF8D),A | ||||||
| E533 | EX AF,AF' | Exchange the AF register with the shadow AF register. | |||||
| E534 | RET | Return. | |||||
| Prev: E414 | Up: Map | Next: E535 |