Routines |
Prev: 71C6 | Up: Map | Next: 720E |
Used by the routines at 63DA, 6498, 651F, 6669, 6733, AnimateExplosion, 6CF5, MeteorUpdate and JetmanThrust.
|
||||
ColouriseSprite | 71CF | EXX | Switch to the shadow registers. | |
71D0 | LD HL,($5DCF) | HL'=actor co-ordinates. | ||
71D3 | CALL AttributeAddress | Call AttributeAddress - HL' now holds the co-ordinates to an attribute file address. | ||
71D6 | LD A,($5DC4) | B'=width loop counter (in pixels). | ||
71D9 | LD B,A | |||
71DA | LD A,($5DC3) | A=5DC3. | ||
71DD | RRCA | A=((A / 04) + 01) / 02. | ||
71DE | RRCA | |||
71DF | INC A | |||
71E0 | RRCA | |||
71E1 | AND %00011111 | Keep only bits 0-4. | ||
71E3 | INC A | Increment A by one. | ||
71E4 | LD C,A | C=height loop counter (in pixels). | ||
71E5 | LD D,(IX+$03) | D=object colour attribute. | ||
71E8 | LD E,B | E=width loop counter (in pixels). | ||
ColouriseSprite_Loop1 | 71E9 | PUSH HL | Stash HL on the stack. | |
ColouriseSprite_Loop2 | 71EA | LD A,H | A=actor Y position. | |
71EB | CP $5B | Decrement position if address is outside of attribute file address range. | ||
71ED | JR NC,ColouriseSprite_1 | |||
71EF | CP $58 | |||
71F1 | JR C,ColouriseSprite_1 | |||
71F3 | LD (HL),D | Otherwise, set the colour at this location. | ||
71F4 | INC L | Next tile column. | ||
71F5 | LD A,L | Next tile if column < screen width (32 chars). | ||
71F6 | AND %00011111 | |||
71F8 | JR NZ,ColouriseSprite_0 | |||
71FA | LD A,L | Else, wrap-around and continue applying colour. | ||
71FB | SUB $20 | |||
71FD | LD L,A | L=start of current row. | ||
ColouriseSprite_0 | 71FE | DJNZ ColouriseSprite_Loop2 | Decrease counter by one and loop back to ColouriseSprite_Loop2 until counter is zero. | |
ColouriseSprite_1 | 7200 | POP HL | Restore HL from the stack. | |
7201 | PUSH BC | Stash BC on the stack. | ||
7202 | AND A | Clear the carry flag. | ||
7203 | LD BC,$0020 | HL -= 32 tiles. Places address pointer previous line. | ||
7206 | SBC HL,BC | |||
7208 | POP BC | Restore BC from the stack. | ||
7209 | LD B,E | B=reset to original width counter. | ||
720A | DEC C | Decrement height counter. | ||
720B | JR NZ,ColouriseSprite_Loop1 | Repeat until all tiles have been coloured. | ||
720D | RET | Return. |
Prev: 71C6 | Up: Map | Next: 720E |