Prev: 28054 Up: Map Next: 28176
28072: Draw Large Sprite
Used by the routine at DrawSpriteObject.
DrawLargeSprite 28072 LD A,(BC) A=*BC.
DrawLargeSprite_0 28073 INC BC Increment BC by one.
28074 ADD A,E A+=E.
28075 LD E,A E=A.
28076 LD A,(BC) A=*BC.
28077 INC BC Increment BC by one.
28078 ADD A,D A+=D.
28079 DEC A Decrease A by one.
28080 LD D,A D=A.
DrawLargeSprite_1 28081 CP 16 Compare A with 16.
28083 JR NC,DrawLargeSprite_2 Jump to DrawLargeSprite_2 if A is greater than or equal to 16.
28085 LD A,E Jump to DrawLargeSprite_5 if E is less than 32.
28086 CP 32
28088 JR C,DrawLargeSprite_5
DrawLargeSprite_2 28090 LD HL,8 HL=0008+BC.
28093 ADD HL,BC
28094 LD B,H B=H.
28095 LD C,L C=L.
28096 INC D Increment D by one.
DrawLargeSprite_3 28097 LD A,(BC) A=*BC.
28098 INC A Increment A by one.
28099 LD A,D Jump to DrawLargeSprite_1 if D is not equal to 32.
28100 JR NZ,DrawLargeSprite_1
DrawLargeSprite_4 28102 INC BC Increment BC by one.
28103 LD A,(BC) Jump to DrawLargeSprite_0 if *BC is not equal to 128.
28104 CP 128
28106 JR NZ,DrawLargeSprite_0
28108 JP CompleteSpriteSequence Jump to CompleteSpriteSequence.
DrawLargeSprite_5 28111 LD A,D A=D.
28112 ADD A,64 A+=64.
28114 AND %01001000 Keep only bits 3, 6.
28116 LD H,A H=A.
28117 LD A,D A=D.
28118 RRCA RRCA.
28119 RRCA RRCA.
28120 RRCA RRCA.
28121 AND %11100000 Keep only bits 5-7.
28123 ADD A,E A+=E.
28124 LD L,A L=A.
28125 CALL 28054 Call 28054.
28128 INC H Increment H by one.
DrawLargeSprite_6 28129 CALL DrawSprite Call DrawSprite.
28132 CALL ScreenBufferToAttributeBuffer Call ScreenBufferToAttributeBuffer.
28135 INC D Increment D by one.
28136 LD A,D Jump to DrawLargeSprite_7 if D is less than 16.
28137 CP 16
28139 JR C,DrawLargeSprite_7
28141 INC BC Increment BC by four.
28142 INC BC
28143 INC BC
28144 INC BC
28145 JR DrawLargeSprite_3 Jump to DrawLargeSprite_3.
DrawLargeSprite_7 28147 ADD A,64 A+=64.
28149 AND %01001000 Keep only bits 3, 6.
28151 LD H,A H=A.
28152 LD A,D A=D.
28153 RRCA RRCA.
28154 RRCA RRCA.
28155 RRCA RRCA.
28156 AND %11100000 Keep only bits 5-7.
28158 ADD A,E A+=E.
28159 LD L,A L=A.
28160 CALL DrawSprite Call DrawSprite.
28163 INC H Increment H by one.
28164 LD A,(BC) A=*BC.
28165 INC A Increment A by one.
28166 JR NZ,DrawLargeSprite_6 Jump to DrawLargeSprite_6 if A is not zero.
28168 CALL 28054 Call 28054.
28171 CALL ScreenBufferToAttributeBuffer Call ScreenBufferToAttributeBuffer.
28174 JR DrawLargeSprite_4 Jump to DrawLargeSprite_4.
Prev: 28054 Up: Map Next: 28176