![]() |
Routines |
Prev: 57631 | Up: Map | Next: 57901 |
Used by the routine at Handler_Animals.
|
||||
*PlayerBooty starts at 0000 and counts up for every item of booty collected. This means that, the chance that animals appear increases when the player has collected over 100 items (of booty, not treasure - which counts down from 0125).
|
||||
AnimalsEventTiming | 57642 | LD BC,(23540) | If the player has collected over 100 items of booty (in *PlayerBooty) then jump to IncreasedFrequencyAnimalsEventTiming. | |
57646 | LD A,C | |||
57647 | CP 100 | |||
57649 | JR NC,IncreasedFrequencyAnimalsEventTiming | |||
57651 | LD HL,(23672) | Return if *FRAMES is lower than 1400. | ||
57654 | LD DE,1400 | |||
57657 | SBC HL,DE | |||
57659 | RET C | |||
Use FRAMES as a counter.
|
||||
StartAnimalsEvent | 57660 | LD HL,0 | Reset *FRAMES to 0000 to start a new event cycle. | |
57663 | LD (23672),HL | |||
57666 | CALL GetRandomNumber | Call GetRandomNumber. | ||
57669 | AND %00000011 | Ensure the random number is between 0 and 3. | ||
57671 | LD HL,62231 | HL=62231+the random number. | ||
57674 | LD E,A | |||
57675 | LD D,0 | |||
57677 | ADD HL,DE | |||
57678 | PUSH HL | Stash HL on the stack. | ||
57679 | INC HL | Increment HL by one. | ||
57680 | LD A,(HL) | A=*HL. | ||
57681 | LD IX,(23514) | IX=*ReferenceKeysAndLockedDoors. | ||
57685 | LD B,A | B=A. | ||
AnimalsEventTiming_0 | 57686 | LD A,(IX+0) | Jump to AnimalsEventTiming_2 if *IX+0 is equal to 255. | |
57689 | CP 255 | |||
57691 | JR Z,AnimalsEventTiming_2 | |||
57693 | LD A,(IX+1) | Jump to AnimalsEventTiming_1 if *IX+1 is not equal to B. | ||
57696 | CP B | |||
57697 | JR NZ,AnimalsEventTiming_1 | |||
57699 | LD A,(IX+5) | Jump to 57624 if *IX+5 is not equal to 0. | ||
57702 | CP 0 | |||
57704 | JP NZ,57624 | |||
AnimalsEventTiming_1 | 57707 | LD DE,6 | IX+=0006. | |
57710 | ADD IX,DE | |||
57712 | JR AnimalsEventTiming_0 | Jump to AnimalsEventTiming_0. | ||
AnimalsEventTiming_2 | 57714 | LD IX,62236 | IX=62236. | |
57718 | CALL GetRandomNumber | Call GetRandomNumber. | ||
57721 | BIT 3,A | Test bit 3 of A. | ||
57723 | JR Z,AnimalsEventTiming_3 | Jump to AnimalsEventTiming_3 if {} is zero. | ||
57725 | LD (IX+0),2 | Write 2 to *IX+0. | ||
57729 | LD (IX+2),1 | Write 1 to *IX+2. | ||
57733 | LD (IX+4),1 | Write 1 to *IX+4. | ||
57737 | LD (IX+5),0 | Write 0 to *IX+5. | ||
57741 | LD (IX+11),1 | Write 1 to *IX+11. | ||
57745 | LD (IX+13),2 | Write 2 to *IX+13. | ||
57749 | JR AnimalsEventTiming_4 | Jump to AnimalsEventTiming_4. | ||
AnimalsEventTiming_3 | 57751 | LD (IX+0),37 | Write 37 to *IX+0. | |
57755 | LD (IX+2),0 | Write 0 to *IX+2. | ||
57759 | LD (IX+4),255 | Write 255 to *IX+4. | ||
57763 | LD (IX+5),0 | Write 0 to *IX+5. | ||
57767 | LD (IX+11),0 | Write 0 to *IX+11. | ||
57771 | LD (IX+13),36 | Write 36 to *IX+13. | ||
AnimalsEventTiming_4 | 57775 | CALL GetRandomNumber | Call GetRandomNumber. | |
57778 | BIT 5,A | Test bit 5 of A. | ||
57780 | JR Z,AnimalsEventTiming_6 | Jump to AnimalsEventTiming_6 if {} is zero. | ||
57782 | POP HL | Restore HL from the stack. | ||
57783 | PUSH HL | Stash HL on the stack. | ||
57784 | LD A,(HL) | Set up the screen buffer location 33/*HL using CL_SET. | ||
57785 | LD B,A | |||
57786 | LD C,33 | |||
57788 | CALL 3545 | |||
57791 | LD HL,(23684) | HL=*DF_CC. | ||
57794 | LD B,32 | B=32. | ||
AnimalsEventTiming_5 | 57796 | LD A,(HL) | A=*HL. | |
57797 | INC HL | Increment HL by one. | ||
57798 | CP 255 | Jump to 57624 if A is not equal to 255. | ||
57800 | JP NZ,57624 | |||
57803 | DJNZ AnimalsEventTiming_5 | Decrease counter by one and loop back to AnimalsEventTiming_5 until counter is zero. | ||
57805 | POP HL | Restore HL from the stack. | ||
57806 | LD A,(HL) | A=*HL. | ||
57807 | INC A | Increment A by one. | ||
57808 | LD (IX+1),A | Write A to *IX+1. | ||
57811 | LD (IX+14),A | Write A to *IX+14. | ||
57814 | LD (IX+3),3 | Write 3 to *IX+3. | ||
57818 | LD (IX+15),3 | Write 3 to *IX+15. | ||
57822 | LD (IX+6),32 | Write 32 to *IX+6. | ||
57826 | LD (IX+9),3 | Write 3 to *IX+9. | ||
57830 | LD (IX+7),4 | Write 4 to *IX+7. | ||
57834 | LD (IX+8),1 | Write 1 to *IX+8. | ||
57838 | LD A,1 | Write 1 to *SoundFlag_Animal. | ||
57840 | LD (65535),A | |||
57843 | LD A,(IX+4) | Return if *IX+4 is equal to 1. | ||
57846 | CP 1 | |||
57848 | RET Z | |||
57849 | LD (IX+6),36 | Write 36 to *IX+6. | ||
57853 | RET | Return. | ||
AnimalsEventTiming_6 | 57854 | POP HL | Restore HL from the stack. | |
57855 | LD A,(HL) | A=*HL. | ||
57856 | INC A | Increment A by three. | ||
57857 | INC A | |||
57858 | INC A | |||
57859 | LD (IX+1),A | Write A to *IX+1. | ||
57862 | LD (IX+14),A | Write A to *IX+14. | ||
57865 | LD (IX+3),3 | Write 3 to *IX+3. | ||
57869 | LD (IX+6),40 | Write 40 to *IX+6. | ||
57873 | LD (IX+9),6 | Write 6 to *IX+9. | ||
57877 | LD (IX+7),2 | Write 2 to *IX+7. | ||
57881 | LD (IX+8),2 | Write 2 to *IX+8. | ||
57885 | LD A,2 | Write 2 to *SoundFlag_Animal. | ||
57887 | LD (65535),A | |||
57890 | LD A,(IX+4) | Return if *IX+4 is equal to 255. | ||
57893 | CP 255 | |||
57895 | RET Z | |||
57896 | LD (IX+6),44 | Write 44 to *IX+6. | ||
57900 | RET | Return. |
Prev: 57631 | Up: Map | Next: 57901 |