gigatron/rom/Contrib/at67/gbas/runtime/sprite_ROMv5a.i
2025-01-28 19:17:01 +03:00

75 lines
2.1 KiB
OpenEdge ABL

; do *NOT* use register4 to register7 during time slicing
spriteId EQU register0
spriteXY EQU register1
spriteAddrs EQU register2
%SUB drawSprite_
drawSprite_ LDWI _spritesLut_
ADDW spriteId
ADDW spriteId
DEEK
STW spriteAddrs ; get sprite address table
drawS_loop LDW spriteAddrs
DEEK
BEQ drawS_exit
STW giga_sysArg0
INC spriteAddrs
INC spriteAddrs
LDW spriteAddrs
DEEK
ADDW spriteXY
SYS 64
INC spriteAddrs
INC spriteAddrs
BRA drawS_loop
drawS_exit RET
%ENDS
%SUB drawSprite
drawSprite PUSH
LDWI SYS_Sprite6_v3_64
STW giga_sysFn
CALLI drawSprite_
POP
RET
%ENDS
%SUB drawSpriteX
drawSpriteX PUSH
LDWI SYS_Sprite6x_v3_64
STW giga_sysFn
CALLI drawSprite_
POP
RET
%ENDS
%SUB drawSpriteY
drawSpriteY PUSH
LDWI SYS_Sprite6y_v3_64
STW giga_sysFn
CALLI drawSprite_
POP
RET
%ENDS
%SUB drawSpriteXY
drawSpriteXY PUSH
LDWI SYS_Sprite6xy_v3_64
STW giga_sysFn
CALLI drawSprite_
POP
RET
%ENDS
%SUB getSpriteLUT
getSpriteLUT LDWI _spritesLut_
ADDW spriteId
ADDW spriteId
DEEK
DEEK
RET
%ENDS