75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			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
 |