Prev: 54806 Up: Map Next: 55153
54855: Routine at D647
Used by the routines at 54476 and Handler_SeaCreatures.
54855 LD DE,41196 DE=41196.
54858 LD HL,41068 HL=Graphics_MaskSprite.
54861 LD BC,128 BC=0128.
54864 LDIR Copy 0128 bytes of data from Graphics_MaskSprite to 41196.
54866 LD A,16 Set INK: *IX+9.
54868 RST 16
54869 LD A,(IX+9)
54872 RST 16
54873 LD HL,(23606) HL=*CHARS.
54876 PUSH HL Stash HL, IY and IX on the stack.
54877 PUSH IY
54879 PUSH IX
54881 LD E,(IX+6) DE=(*IX+6)*8.
54884 LD D,0
54886 SLA E
54888 RL D
54890 SLA E
54892 RL D
54894 SLA E
54896 RL D
54898 ADD HL,DE HL+=DE.
54899 LD B,(IX+2) B=*IX+2.
54902 INC B Increment B by one.
54903 LD C,0 C=0.
54905 LD (56120),BC Write BC to *56120.
54909 LD E,(IX+7) E=*IX+7.
54912 LD D,(IX+8) D=*IX+8.
54915 LD A,D A=D.
54916 INC A Increment A by one.
54917 SLA A Shift A left three positions (with carry).
54919 SLA A
54921 SLA A
54923 LD C,A C=A.
54924 LD B,0 B=0.
54926 LD IY,41204 IY=41204.
54930 ADD IY,BC IY+=BC.
54932 LD C,E C=E.
54933 SLA C Shift C left three positions (with carry).
54935 SLA C
54937 SLA C
54939 LD B,0 B=0.
54941 LD (56118),BC Write BC to *56118.
54945 LD IX,41204 IX=41204.
54949 PUSH HL Stash HL, DE and HL on the stack.
54950 PUSH DE
54951 PUSH HL
54952 LD B,8 B=8.
54954 PUSH BC Stash BC on the stack.
54955 LD A,(HL) A=*HL.
54956 LD BC,(56120) BC=*56120.
54960 SLA A Shift A left (with carry).
54962 RL C Rotate C left.
54964 SLA A Shift A left (with carry).
54966 RL C Rotate C left.
54968 DJNZ 54960 Decrease counter by one and loop back to 54960 until counter is zero.
54970 LD (IY+0),A Write A to *IY+0.
54973 LD A,C A=C.
54974 OR (IX+0) Merge the bits from *IX+0.
54977 LD (IX+0),A Write A to *IX+0.
54980 INC HL Increment HL by one.
54981 INC IX Increment IX by one.
54983 INC IY Increment IY by one.
54985 POP BC Restore BC from the stack.
54986 DJNZ 54954 Decrease counter by one and loop back to 54954 until counter is zero.
54988 POP HL Restore HL from the stack.
54989 LD BC,(56118) BC=*56118.
54993 ADD HL,BC HL+=BC.
54994 DEC D Decrease D by one.
54995 JR NZ,54951 Jump to 54951 until D is zero.
54997 POP DE Restore DE from the stack.
54998 LD BC,8 BC=0008.
55001 ADD IX,BC IX+=BC.
55003 ADD IY,BC IY+=BC.
55005 POP HL Restore HL from the stack.
55006 ADD HL,BC HL+=BC.
55007 DEC E Decrease E by one.
55008 JR NZ,54949 Jump to 54949 until E is zero.
55010 LD HL,40940 HL=Graphics_GoldfishGamePlayer.
55013 POP IX Restore IX from the stack.
55015 LD A,(IX+3) A=*IX+3.
55018 INC A Increment A by one.
55019 SLA A Shift A left (with carry).
55021 LD E,A E=A.
55022 LD D,0 D=0.
55024 ADD HL,DE HL+=DE.
55025 LD (23606),HL Write HL to *CHARS.
55028 LD D,(IX+8) D=*IX+8.
55031 LD E,(IX+7) E=*IX+7.
55034 LD A,(IX+2) Jump to 55042 if *IX+2 is equal to 3.
55037 CP 3
55039 JR Z,55042
55041 INC E Increment E by one.
55042 INC D Increment D by one.
55043 LD A,D A=D.
55044 LD (56120),A Write A to *56120.
55047 LD A,3 Jump to 55055 if 3 is not equal to *IX+3.
55049 CP (IX+3)
55052 JR NZ,55055
55054 DEC D Decrease D by one.
55055 LD B,(IX+1) B=*IX+1.
55058 LD C,(IX+0) C=*IX+0.
55061 LD A,D A=D.
55062 LD A,32 A=32.
55064 POP IY Restore IY from the stack.
55066 LD A,32 A=32.
55068 PUSH AF Stash AF, DE and BC on the stack.
55069 PUSH DE
55070 PUSH BC
55071 LD D,A D=A.
55072 LD A,C Jump to 55129 if C is higher than 34.
55073 CP 34
55075 JR NC,55129
55077 PUSH DE Stash DE on the stack.
55078 CALL 3545 Call CL_SET.
55081 POP DE Restore DE and BC from the stack.
55082 POP BC
55083 PUSH BC Stash BC on the stack.
55084 LD A,D A=D.
55085 CALL GoldfishGame_PrintColourUDG Call GoldfishGame_PrintColourUDG.
55088 LD A,C A=C.
55089 CP 2 Compare A with 2.
55091 CALL Z,55116 Call 55116 zero.
55094 DEC C Decrease C by one.
55095 LD A,(56120) D+=*56120.
55098 ADD A,D
55099 LD D,A
55100 DEC E Decrease E by one.
55101 JR NZ,55085 Jump to 55085 until E is zero.
55103 POP BC Restore BC, DE and AF from the stack.
55104 POP DE
55105 POP AF
55106 DEC B Decrease B by one.
55107 INC A Increment A by one.
55108 DEC D Decrease D by one.
55109 JR NZ,55068 Jump to 55068 until D is zero.
55111 POP HL Restore HL from the stack.
55112 LD (23606),HL Write HL to *CHARS.
55115 RET Return.
55116 DEC E Decrease E by one.
55117 PUSH AF Stash AF on the stack.
55118 INC E Increment E by one.
55119 POP AF Restore AF from the stack.
55120 RET Z Return if E is zero.
55121 DEC E Decrease E by one.
55122 LD A,(56120) D+=*56120.
55125 ADD A,D
55126 LD D,A
55127 JR 55116 Jump to 55116.
55129 LD A,(56120) D+=*56120.
55132 ADD A,D
55133 LD D,A
55134 DEC E Decrease E by one.
55135 JP Z,55147 Jump to 55147 if E is zero.
55138 DEC C Decrease C by one.
55139 LD A,C Jump to 55129 if C is higher than 34.
55140 CP 34
55142 JR NC,55129
55144 JP 55077 Jump to 55077.
55147 POP BC Restore BC, BC and BC from the stack.
55148 POP BC
55149 POP BC
55150 JP 55111 Jump to 55111.
Prev: 54806 Up: Map Next: 55153