iigs-game-engine/src/blitter/Tiles11010.s

64 lines
2.9 KiB
ArmAsm

; _TBMaskedPrioritySpriteTile
;
; Renders a composited tile with masking to the code field. The sprite is underlaid
_TBMaskedPrioritySpriteTile_00
_TBMaskedPrioritySpriteTile_0H
sta _X_REG ; Immedately stash the parameters
sty _Y_REG
jsr _TBCopyTileDataToCBuff ; Copy the tile data into the compositing buffer (using correct x-register)
jsr _TBCopyTileMaskToCBuff ; Copy the tile mask into the compositing buffer (using correct x-register)
jsr _TBUnderlaySpriteDataAndMask ; Underlay the data and mask from the sprite plane into the compositing buffer
jmp _TBMaskedCBuff ; Render the masked tile from the compositing buffer into the code field
;_TBMaskedPrioritySpriteTile_0H
; sta _X_REG
; sty _Y_REG
; jsr _TBCopyTileDataToCBuffH
; jsr _TBCopyTileMaskToCBuffH
; jsr _TBUnderlaySpriteDataAndMask
; jmp _TBMaskedCBuff
_TBMaskedPrioritySpriteTile_V0
_TBMaskedPrioritySpriteTile_VH
sta _X_REG
sty _Y_REG
jsr _TBCopyTileDataToCBuffV
jsr _TBCopyTileMaskToCBuffV
jsr _TBUnderlaySpriteDataAndMask
jmp _TBMaskedCBuff
;_TBMaskedPrioritySpriteTile_VH
; sta _X_REG
; sty _Y_REG
; jsr _TBCopyTileDataToCBuffVH
; jsr _TBCopyTileMaskToCBuffVH
; jsr _TBUnderlaySpriteDataAndMask
; jmp _TBMaskedCBuff
_TBUnderlaySpriteDataAndMask
ldx _SPR_X_REG ; set to the unaligned tile block address in the sprite plane
]line equ 0
lup 8
ldal spritedata+{]line*SPRITE_PLANE_SPAN},x
and blttmp+{]line*4}+32
ora blttmp+{]line*4} ; Maybe this can be a TSB???
sta blttmp+{]line*4}
ldal spritemask+{]line*SPRITE_PLANE_SPAN},x
and blttmp+{]line*4}+32
sta blttmp+{]line*4}+32
ldal spritedata+{]line*SPRITE_PLANE_SPAN}+2,x
and blttmp+{]line*4}+32+2
ora blttmp+{]line*4}+2
sta blttmp+{]line*4}+2
ldal spritemask+{]line*SPRITE_PLANE_SPAN}+2,x
and blttmp+{]line*4}+32+2
sta blttmp+{]line*4}+32+2
]line equ ]line+1
--^
rts