![]() |
Routines |
Prev: 26657 | Up: Map |
Used by the routine at 24576.
|
|||||||
26730 | LD HL,(31851) | Pick up Horace's current location. | |||||
26733 | LD BC,(31940) | Pick up the location of the bell in the current maze. | |||||
26737 | LD A,B | Has Horace already sounded the alarm? | |||||
26738 | OR C | ||||||
26739 | RET Z | Return if so. | |||||
26740 | AND A | Clear the carry flag. (This instruction is redundant.) | |||||
26741 | SBC HL,BC | Subtract the bell's location from Horace's. | |||||
26743 | LD A,H | Is Horace in exactly the same location as the bell? | |||||
26744 | OR L | ||||||
26745 | JR Z,26814 | Jump if so. | |||||
26747 | INC HL | Is Horace one space to the left of the bell? | |||||
26748 | LD A,H | ||||||
26749 | OR L | ||||||
26750 | JR Z,26814 | Jump if so. | |||||
26752 | DEC HL | Is Horace one space to the right of the bell? | |||||
26753 | DEC HL | ||||||
26754 | LD A,H | ||||||
26755 | OR L | ||||||
26756 | JR Z,26814 | Jump if so. | |||||
26758 | LD BC,33 | Is Horace one space above the bell? | |||||
26761 | ADD HL,BC | ||||||
26762 | LD A,H | ||||||
26763 | OR L | ||||||
26764 | JR Z,26814 | Jump if so. | |||||
26766 | XOR A | Clear the carry flag. (This instruction is redundant.) | |||||
26767 | LD BC,65 | Is Horace one space below the bell? | |||||
26770 | SBC HL,BC | ||||||
26772 | LD A,H | ||||||
26773 | OR L | ||||||
26774 | JR Z,26814 | Jump if so. | |||||
Horace has not sounded the alarm.
|
|||||||
26776 | LD HL,(31940) | Pick up the location of the bell in the current maze. | |||||
26779 | LD A,(31942) | Increment the bell's animation frame counter. | |||||
26782 | INC A | ||||||
26783 | LD (31942),A | ||||||
26786 | AND 56 | Keep only bits 3, 4 and 5. | |||||
26788 | CP 31 | Is the result 30 or less (i.e. bit 5 reset)? | |||||
26790 | JR C,26794 | Jump if so. | |||||
26792 | XOR 56 | Flip bits 3 and 4, and reset bit 5. | |||||
26794 | RLCA | BC=4*A. | |||||
26795 | RLCA | ||||||
26796 | LD C,A | ||||||
26797 | LD B,0 | ||||||
26799 | LD DE,32519 | This is the base address of the graphic data for the bell. | |||||
26802 | EX DE,HL | Point DE at the graphic data for the appropriate bell sprite. | |||||
26803 | ADD HL,BC | ||||||
26804 | EX DE,HL | ||||||
26805 | CALL 27663 | Set HL' to the attribute file address of the bell's location. | |||||
26808 | LD C,58 | This is the attribute byte (INK 2: PAPER 7). | |||||
26810 | CALL 27606 | Draw the bell. | |||||
26813 | RET | ||||||
Horace has sounded the alarm.
|
|||||||
26814 | LD HL,0 | Clear the bell location to indicate that Horace has sounded the alarm. | |||||
26817 | LD (31940),HL | ||||||
26820 | LD DE,32647 | Point DE at the graphic data for the blank sprite. | |||||
26823 | LD HL,(28625) | Pick up the bell location for the current maze. | |||||
26826 | CALL 27663 | Set HL' to the corresponding attribute file address. | |||||
26829 | LD C,62 | This is the attribute byte (INK 6: PAPER 7). | |||||
26831 | CALL 27606 | Draw the blank sprite where the bell was. | |||||
26834 | CALL 26657 | Draw Horace. | |||||
26837 | LD HL,(31859) | Add 60 to the score. | |||||
26840 | LD BC,60 | ||||||
26843 | ADD HL,BC | ||||||
26844 | LD (31859),HL | ||||||
26847 | CALL 26055 | Print the new score and make a sound effect. | |||||
26850 | LD A,(31842) | Pick up the game speed parameter in A. | |||||
26853 | LD L,0 | HL=128*A. | |||||
26855 | LD H,A | ||||||
26856 | SRA H | ||||||
26858 | RR L | ||||||
26860 | LD (28078),HL | Initialise the guard panic timer to this value. | |||||
26863 | LD A,(28090) | Update the animation frame in the temporary guard buffer; these instructions are redundant and have no effect on any of the guards. | |||||
26866 | ADD A,2 | ||||||
26868 | AND 3 | ||||||
26870 | LD (28090),A | ||||||
26873 | LD HL,(31859) | Add 150 to the score. | |||||
26876 | LD BC,150 | ||||||
26879 | ADD HL,BC | ||||||
26880 | LD (31859),HL | ||||||
26883 | CALL 26055 | Print the new score and make a sound effect. | |||||
26886 | RET |
Prev: 26657 | Up: Map |