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
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_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_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_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_SLOT equ 1
@ -145,17 +147,13 @@ HERO_SLOT equ 1
pea HERO_VBUFF_4
_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 PlayerY
pea HERO_SLOT ; Put the player in slot 1
_GTEAddSprite
pea HERO_SLOT
pea $0000
pea HERO_VBUFF_1 ; and use this stamp
_GTEUpdateSprite
EvtLoop
pha
_GTEReadControl

View File

@ -314,7 +314,7 @@ TSPtr equ FirstParam
_TSExit #0;#4
; CreateSpriteStamp(spriteId: Word, vbuffAddr: Word)
; CreateSpriteStamp(spriteDescriptor: Word, vbuffAddr: Word)
_TSCreateSpriteStamp
:vbuff equ FirstParam
:spriteId equ FirstParam+2
@ -328,11 +328,13 @@ _TSCreateSpriteStamp
_TSExit #0;#4
; AddSprite(spriteSlot, spriteFlags, vbuff, spriteX, spriteY)
_TSAddSprite
:spriteSlot equ FirstParam+0
:spriteY equ FirstParam+2
:spriteX equ FirstParam+4
:spriteId equ FirstParam+6
:spriteY equ FirstParam+0
:spriteX equ FirstParam+2
:vbuff equ FirstParam+4
:spriteFlags equ FirstParam+6
:spriteSlot equ FirstParam+8
_TSEntry
@ -348,11 +350,19 @@ _TSAddSprite
lda :spriteSlot,s
tax
lda :spriteId,s
lda :spriteFlags,s
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
:spriteY equ FirstParam+0
:spriteX equ FirstParam+2
@ -368,6 +378,7 @@ _TSMoveSprite
_TSExit #0;#6
; UpdateSprite(spriteSlot, spriteFlags, vbuff)
_TSUpdateSprite
:vbuff equ FirstParam+0
:spriteFlags equ FirstParam+2