mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-10-19 16:24:18 +00:00
73 lines
2.6 KiB
ArmAsm
73 lines
2.6 KiB
ArmAsm
|
|
; On entry
|
|
;
|
|
; B is set to the correct BG1 data bank
|
|
; A is set to the the tile descriptor
|
|
; Y is set to the top-left address of the tile in the BG1 data bank
|
|
;
|
|
; tmp0/tmp1 is reserved
|
|
_RenderTileBG1
|
|
pha ; Save the tile descriptor
|
|
|
|
and #TILE_VFLIP_BIT+TILE_HFLIP_BIT ; Only horizontal and vertical flips are supported for BG1
|
|
xba
|
|
tax
|
|
|
|
pla
|
|
and #TILE_ID_MASK ; Mask out the ID and save just that
|
|
_Mul128 ; multiplied by 128
|
|
jmp (:actions,x)
|
|
:actions dw _TBSolidBG1_00,_TBSolidBG1_0H,_TBSolidBG1_V0,_TBSolidBG1_VH
|
|
|
|
_TBSolidBG1_00
|
|
tax
|
|
]line equ 0
|
|
lup 8
|
|
ldal tiledata+{]line*4},x
|
|
sta: $0000+{]line*$0100},y
|
|
ldal tiledata+{]line*4}+2,x
|
|
sta: $0002+{]line*$0100},y
|
|
]line equ ]line+1
|
|
--^
|
|
rts
|
|
|
|
_TBSolidBG1_0H
|
|
tax
|
|
]line equ 0
|
|
lup 8
|
|
ldal tiledata+{]line*4}+64,x
|
|
sta: $0000+{]line*$0100},y
|
|
ldal tiledata+{]line*4}+64+2,x
|
|
sta: $0002+{]line*$0100},y
|
|
]line equ ]line+1
|
|
--^
|
|
rts
|
|
|
|
_TBSolidBG1_V0
|
|
tax
|
|
]src equ 7
|
|
]dest equ 0
|
|
lup 8
|
|
ldal tiledata+{]src*4},x
|
|
sta: $0000+{]dest*$0100},y
|
|
ldal tiledata+{]src*4}+2,x
|
|
sta: $0002+{]dest*$0100},y
|
|
]src equ ]src-1
|
|
]dest equ ]dest+1
|
|
--^
|
|
rts
|
|
|
|
_TBSolidBG1_VH
|
|
tax
|
|
]src equ 7
|
|
]dest equ 0
|
|
lup 8
|
|
ldal tiledata+{]src*4}+64,x
|
|
sta: $0000+{]dest*$0100},y
|
|
ldal tiledata+{]src*4}+64+2,x
|
|
sta: $0002+{]dest*$0100},y
|
|
]src equ ]src-1
|
|
]dest equ ]dest+1
|
|
--^
|
|
rts
|