Prev: 6D96 Up: Map Next: 6E10
6DA8: Draw Large Sprite
Used by the routine at DrawSpriteObject.
DrawLargeSprite 6DA8 LD A,(BC) A=*BC.
DrawLargeSprite_0 6DA9 INC BC Increment BC by one.
6DAA ADD A,E A+=E.
6DAB LD E,A E=A.
6DAC LD A,(BC) A=*BC.
6DAD INC BC Increment BC by one.
6DAE ADD A,D A+=D.
6DAF DEC A Decrease A by one.
6DB0 LD D,A D=A.
DrawLargeSprite_1 6DB1 CP $10 Compare A with 10.
6DB3 JR NC,DrawLargeSprite_2 Jump to DrawLargeSprite_2 if A is greater than or equal to 10.
6DB5 LD A,E Jump to DrawLargeSprite_5 if E is less than 20.
6DB6 CP $20
6DB8 JR C,DrawLargeSprite_5
DrawLargeSprite_2 6DBA LD HL,$0008 HL=0008+BC.
6DBD ADD HL,BC
6DBE LD B,H B=H.
6DBF LD C,L C=L.
6DC0 INC D Increment D by one.
DrawLargeSprite_3 6DC1 LD A,(BC) A=*BC.
6DC2 INC A Increment A by one.
6DC3 LD A,D Jump to DrawLargeSprite_1 if D is not equal to 20.
6DC4 JR NZ,DrawLargeSprite_1
DrawLargeSprite_4 6DC6 INC BC Increment BC by one.
6DC7 LD A,(BC) Jump to DrawLargeSprite_0 if *BC is not equal to 80.
6DC8 CP $80
6DCA JR NZ,DrawLargeSprite_0
6DCC JP CompleteSpriteSequence Jump to CompleteSpriteSequence.
DrawLargeSprite_5 6DCF LD A,D A=D.
6DD0 ADD A,$40 A+=40.
6DD2 AND %01001000 Keep only bits 3, 6.
6DD4 LD H,A H=A.
6DD5 LD A,D A=D.
6DD6 RRCA RRCA.
6DD7 RRCA RRCA.
6DD8 RRCA RRCA.
6DD9 AND %11100000 Keep only bits 5-7.
6DDB ADD A,E A+=E.
6DDC LD L,A L=A.
6DDD CALL $6D96 Call 6D96.
6DE0 INC H Increment H by one.
DrawLargeSprite_6 6DE1 CALL DrawSprite Call DrawSprite.
6DE4 CALL ScreenBufferToAttributeBuffer Call ScreenBufferToAttributeBuffer.
6DE7 INC D Increment D by one.
6DE8 LD A,D Jump to DrawLargeSprite_7 if D is less than 10.
6DE9 CP $10
6DEB JR C,DrawLargeSprite_7
6DED INC BC Increment BC by four.
6DEE INC BC
6DEF INC BC
6DF0 INC BC
6DF1 JR DrawLargeSprite_3 Jump to DrawLargeSprite_3.
DrawLargeSprite_7 6DF3 ADD A,$40 A+=40.
6DF5 AND %01001000 Keep only bits 3, 6.
6DF7 LD H,A H=A.
6DF8 LD A,D A=D.
6DF9 RRCA RRCA.
6DFA RRCA RRCA.
6DFB RRCA RRCA.
6DFC AND %11100000 Keep only bits 5-7.
6DFE ADD A,E A+=E.
6DFF LD L,A L=A.
6E00 CALL DrawSprite Call DrawSprite.
6E03 INC H Increment H by one.
6E04 LD A,(BC) A=*BC.
6E05 INC A Increment A by one.
6E06 JR NZ,DrawLargeSprite_6 Jump to DrawLargeSprite_6 if A is not zero.
6E08 CALL $6D96 Call 6D96.
6E0B CALL ScreenBufferToAttributeBuffer Call ScreenBufferToAttributeBuffer.
6E0E JR DrawLargeSprite_4 Jump to DrawLargeSprite_4.
Prev: 6D96 Up: Map Next: 6E10