Prev: 7038 Up: Map Next: 7097
704B: Colourise sprite
Used by the routine at 6633.
ColouriseSprite 704B EXX Switch to the shadow registers.
704C LD HL,($5E27) HL'=actor co-ordinates.
704F LD D,(IX+$03) D'=object colour attribute.
This entry point is used by the routine at 6FAC.
ColouriseSprite_0 7052 CALL AttributeAddress Call AttributeAddress - HL' now holds the co-ordinates to an attribute file address.
7055 LD A,($5E24) B'=width loop counter (in pixels).
7058 LD B,A
7059 LD A,($5E23) A=HeightPixels.
705C RRCA A=((A / 04) + 01) / 02.
705D RRCA
705E INC A
705F RRCA
7060 AND %00011111 Keep only bits 0-4.
7062 INC A Increment A by one.
7063 LD C,A C'=height loop counter (in pixels).
This entry point is used by the routine at 6A9B.
ColouriseSprite_1 7064 LD E,B E'=width loop counter (in pixels).
ColouriseSprite_Loop1 7065 PUSH HL Stash HL on the stack.
ColouriseSprite_Loop2 7066 LD A,H A=actor Y position.
7067 CP $5B Decrement position if address is outside of attribute file address range.
7069 JR NC,ColouriseSprite_4
706B PUSH HL Stash HL and BC on the stack.
706C PUSH BC
706D LD BC,$5820 BC'=5820.
7070 AND A Clear the carry flag.
7071 SBC HL,BC
7073 POP BC Restore BC and HL from the stack.
7074 POP HL
7075 JR C,ColouriseSprite_4
7077 LD A,(HL)
7078 CP $76
707A JR Z,ColouriseSprite_2
707C LD (HL),D
ColouriseSprite_2 707D INC L
707E LD A,L
707F AND %00011111 Keep only bits 0-4.
7081 JR NZ,ColouriseSprite_3
7083 LD A,L
7084 SUB $20
7086 LD L,A
ColouriseSprite_3 7087 DJNZ ColouriseSprite_Loop2 Decrease counter by one and loop back to ColouriseSprite_Loop2 until counter is zero.
ColouriseSprite_4 7089 POP HL Restore HL from the stack.
708A PUSH BC Stash BC on the stack.
708B AND A Clear the carry flag.
708C LD BC,$0020 HL -= 32 tiles. Places address pointer previous line.
708F SBC HL,BC
7091 POP BC Restore BC from the stack.
7092 LD B,E B=reset to original width counter.
7093 DEC C Decrement height counter.
7094 JR NZ,ColouriseSprite_Loop1 Repeat until all tiles have been coloured.
7096 RET Return.
Prev: 7038 Up: Map Next: 7097