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

132 lines
6.2 KiB
ArmAsm

; _TBMaskedTile
;
; These tile renderes are for "normal" tiles that also apply their mask data. If the case of the second
; background being disabled, the optimized variants are the same as Tile00000
;
; Y register = address of code field tile
; X register = tile address
; Accumulator = logical word offset of the tile (0, 2, 4, ..., 82)
;
; Need to slightly remap these register inputs to save into the direct page cached values
_TBMaskedTile_00
_TBMaskedTile_0H
sta _X_REG ; Save these values as we will need to reload them
sty _Y_REG ; at certain points
stx _T_PTR
; Do the left column first
CopyMaskedWord tiledata+0;tiledata+32+0;$0003
CopyMaskedWord tiledata+4;tiledata+32+4;$1003
CopyMaskedWord tiledata+8;tiledata+32+8;$2003
CopyMaskedWord tiledata+12;tiledata+32+12;$3003
CopyMaskedWord tiledata+16;tiledata+32+16;$4003
CopyMaskedWord tiledata+20;tiledata+32+20;$5003
CopyMaskedWord tiledata+24;tiledata+32+24;$6003
CopyMaskedWord tiledata+28;tiledata+32+28;$7003
; Move the index for the JTableOffset array. This is the same index used for transparent words,
; so, if _X_REG is zero, then we would be patching out the last word in the code field with LDA (0),y
; and then increment _X_REG by two to patch the next-to-last word in the code field with LDA (2),y
inc _X_REG
inc _X_REG
; Do the right column
CopyMaskedWord tiledata+2;tiledata+32+2;$0000
CopyMaskedWord tiledata+6;tiledata+32+6;$1000
CopyMaskedWord tiledata+10;tiledata+32+10;$2000
CopyMaskedWord tiledata+14;tiledata+32+14;$3000
CopyMaskedWord tiledata+18;tiledata+32+18;$4000
CopyMaskedWord tiledata+22;tiledata+32+22;$5000
CopyMaskedWord tiledata+26;tiledata+32+26;$6000
CopyMaskedWord tiledata+30;tiledata+32+30;$7000
rts
;_TBMaskedTile_0H
; sta _X_REG
; sty _Y_REG
; stx _T_PTR
;
; CopyMaskedWord tiledata+64+0;tiledata+64+32+0;$0003
; CopyMaskedWord tiledata+64+4;tiledata+64+32+4;$1003
; CopyMaskedWord tiledata+64+8;tiledata+64+32+8;$2003
; CopyMaskedWord tiledata+64+12;tiledata+64+32+12;$3003
; CopyMaskedWord tiledata+64+16;tiledata+64+32+16;$4003
; CopyMaskedWord tiledata+64+20;tiledata+64+32+20;$5003
; CopyMaskedWord tiledata+64+24;tiledata+64+32+24;$6003
; CopyMaskedWord tiledata+64+28;tiledata+64+32+28;$7003
;
; inc _X_REG
; inc _X_REG
;
; CopyMaskedWord tiledata+64+2;tiledata+64+32+2;$0000
; CopyMaskedWord tiledata+64+6;tiledata+64+32+6;$1000
; CopyMaskedWord tiledata+64+10;tiledata+64+32+10;$2000
; CopyMaskedWord tiledata+64+14;tiledata+64+32+14;$3000
; CopyMaskedWord tiledata+64+18;tiledata+64+32+18;$4000
; CopyMaskedWord tiledata+64+22;tiledata+64+32+22;$5000
; CopyMaskedWord tiledata+64+26;tiledata+64+32+26;$6000
; CopyMaskedWord tiledata+64+30;tiledata+64+32+30;$7000
;
; rts
_TBMaskedTile_V0
_TBMaskedTile_VH
sta _X_REG
sty _Y_REG
stx _T_PTR
CopyMaskedWord tiledata+0;tiledata+32+0;$7003
CopyMaskedWord tiledata+4;tiledata+32+4;$6003
CopyMaskedWord tiledata+8;tiledata+32+8;$5003
CopyMaskedWord tiledata+12;tiledata+32+12;$4003
CopyMaskedWord tiledata+16;tiledata+32+16;$3003
CopyMaskedWord tiledata+20;tiledata+32+20;$2003
CopyMaskedWord tiledata+24;tiledata+32+24;$1003
CopyMaskedWord tiledata+28;tiledata+32+28;$0003
inc _X_REG
inc _X_REG
CopyMaskedWord tiledata+2;tiledata+32+2;$7000
CopyMaskedWord tiledata+6;tiledata+32+6;$6000
CopyMaskedWord tiledata+10;tiledata+32+10;$5000
CopyMaskedWord tiledata+14;tiledata+32+14;$4000
CopyMaskedWord tiledata+18;tiledata+32+18;$3000
CopyMaskedWord tiledata+22;tiledata+32+22;$2000
CopyMaskedWord tiledata+26;tiledata+32+26;$1000
CopyMaskedWord tiledata+30;tiledata+32+30;$0000
rts
;_TBMaskedTile_VH
; sta _X_REG
; sty _Y_REG
; stx _T_PTR
;
; CopyMaskedWord tiledata+64+0;tiledata+64+32+0;$7003
; CopyMaskedWord tiledata+64+4;tiledata+64+32+4;$6003
; CopyMaskedWord tiledata+64+8;tiledata+64+32+8;$5003
; CopyMaskedWord tiledata+64+12;tiledata+64+32+12;$4003
; CopyMaskedWord tiledata+64+16;tiledata+64+32+16;$3003
; CopyMaskedWord tiledata+64+20;tiledata+64+32+20;$2003
; CopyMaskedWord tiledata+64+24;tiledata+64+32+24;$1003
; CopyMaskedWord tiledata+64+28;tiledata+64+32+28;$0003
;
; inc _X_REG
; inc _X_REG
;
; CopyMaskedWord tiledata+64+2;tiledata+64+32+2;$7000
; CopyMaskedWord tiledata+64+6;tiledata+64+32+6;$6000
; CopyMaskedWord tiledata+64+10;tiledata+64+32+10;$5000
; CopyMaskedWord tiledata+64+14;tiledata+64+32+14;$4000
; CopyMaskedWord tiledata+64+18;tiledata+64+32+18;$3000
; CopyMaskedWord tiledata+64+22;tiledata+64+32+22;$2000
; CopyMaskedWord tiledata+64+26;tiledata+64+32+26;$1000
; CopyMaskedWord tiledata+64+30;tiledata+64+32+30;$0000
;
; rts