Add additional parameter to AddSprite to avoid needing to call UpdateSprite immediately

This commit is contained in:
Lucas Scharenbroich 2022-07-26 00:10:53 -05:00
parent 2e578148d9
commit d332783c85
2 changed files with 27 additions and 18 deletions

View File

@ -119,13 +119,15 @@ SpriteCount equ 50
; Create the sprites ; Create the sprites
HERO_FRAME_1 equ {SPRITE_16X16+145} HERO_SIZE equ {SPRITE_16X16}
HERO_FLAGS equ HERO_SIZE ; no extra H/V bits for now
HERO_FRAME_1 equ HERO_SIZE+145
HERO_VBUFF_1 equ VBUFF_SPRITE_START+0*VBUFF_SPRITE_STEP HERO_VBUFF_1 equ VBUFF_SPRITE_START+0*VBUFF_SPRITE_STEP
HERO_FRAME_2 equ {SPRITE_16X16+147} HERO_FRAME_2 equ HERO_SIZE+147
HERO_VBUFF_2 equ VBUFF_SPRITE_START+1*VBUFF_SPRITE_STEP HERO_VBUFF_2 equ VBUFF_SPRITE_START+1*VBUFF_SPRITE_STEP
HERO_FRAME_3 equ {SPRITE_16X16+149} HERO_FRAME_3 equ HERO_SIZE+149
HERO_VBUFF_3 equ VBUFF_SPRITE_START+2*VBUFF_SPRITE_STEP HERO_VBUFF_3 equ VBUFF_SPRITE_START+2*VBUFF_SPRITE_STEP
HERO_FRAME_4 equ {SPRITE_16X16+151} HERO_FRAME_4 equ HERO_SIZE+151
HERO_VBUFF_4 equ VBUFF_SPRITE_START+3*VBUFF_SPRITE_STEP HERO_VBUFF_4 equ VBUFF_SPRITE_START+3*VBUFF_SPRITE_STEP
HERO_SLOT equ 1 HERO_SLOT equ 1
@ -145,17 +147,13 @@ HERO_SLOT equ 1
pea HERO_VBUFF_4 pea HERO_VBUFF_4
_GTECreateSpriteStamp _GTECreateSpriteStamp
pea HERO_FRAME_1 pea HERO_SLOT ; Put the player in slot 1
pea HERO_FLAGS
pea HERO_VBUFF_1 ; and use this stamp
pei PlayerX pei PlayerX
pei PlayerY pei PlayerY
pea HERO_SLOT ; Put the player in slot 1
_GTEAddSprite _GTEAddSprite
pea HERO_SLOT
pea $0000
pea HERO_VBUFF_1 ; and use this stamp
_GTEUpdateSprite
EvtLoop EvtLoop
pha pha
_GTEReadControl _GTEReadControl

View File

@ -314,7 +314,7 @@ TSPtr equ FirstParam
_TSExit #0;#4 _TSExit #0;#4
; CreateSpriteStamp(spriteId: Word, vbuffAddr: Word) ; CreateSpriteStamp(spriteDescriptor: Word, vbuffAddr: Word)
_TSCreateSpriteStamp _TSCreateSpriteStamp
:vbuff equ FirstParam :vbuff equ FirstParam
:spriteId equ FirstParam+2 :spriteId equ FirstParam+2
@ -328,11 +328,13 @@ _TSCreateSpriteStamp
_TSExit #0;#4 _TSExit #0;#4
; AddSprite(spriteSlot, spriteFlags, vbuff, spriteX, spriteY)
_TSAddSprite _TSAddSprite
:spriteSlot equ FirstParam+0 :spriteY equ FirstParam+0
:spriteY equ FirstParam+2 :spriteX equ FirstParam+2
:spriteX equ FirstParam+4 :vbuff equ FirstParam+4
:spriteId equ FirstParam+6 :spriteFlags equ FirstParam+6
:spriteSlot equ FirstParam+8
_TSEntry _TSEntry
@ -348,11 +350,19 @@ _TSAddSprite
lda :spriteSlot,s lda :spriteSlot,s
tax tax
lda :spriteId,s lda :spriteFlags,s
jsr _AddSprite jsr _AddSprite
_TSExit #0;#8 lda :spriteFlags,s
tax
lda :vbuff,s
tay
lda :spriteSlot,s
jsr _UpdateSprite
_TSExit #0;#10
; MoveSprite(spriteSlot, x, y)
_TSMoveSprite _TSMoveSprite
:spriteY equ FirstParam+0 :spriteY equ FirstParam+0
:spriteX equ FirstParam+2 :spriteX equ FirstParam+2
@ -368,6 +378,7 @@ _TSMoveSprite
_TSExit #0;#6 _TSExit #0;#6
; UpdateSprite(spriteSlot, spriteFlags, vbuff)
_TSUpdateSprite _TSUpdateSprite
:vbuff equ FirstParam+0 :vbuff equ FirstParam+0
:spriteFlags equ FirstParam+2 :spriteFlags equ FirstParam+2