mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-10-19 16:24:18 +00:00
132 lines
6.2 KiB
ArmAsm
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
|