From d332783c859d6adaabde327a578ed1af642e6c6b Mon Sep 17 00:00:00 2001 From: Lucas Scharenbroich Date: Tue, 26 Jul 2022 00:10:53 -0500 Subject: [PATCH] Add additional parameter to AddSprite to avoid needing to call UpdateSprite immediately --- demos/kfest-2022/demo-5/App.Main.s | 20 +++++++++----------- src/Tool.s | 25 ++++++++++++++++++------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/demos/kfest-2022/demo-5/App.Main.s b/demos/kfest-2022/demo-5/App.Main.s index e6a22bd..3704b8a 100644 --- a/demos/kfest-2022/demo-5/App.Main.s +++ b/demos/kfest-2022/demo-5/App.Main.s @@ -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 diff --git a/src/Tool.s b/src/Tool.s index e49b645..760331e 100644 --- a/src/Tool.s +++ b/src/Tool.s @@ -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