multiple items at last

This commit is contained in:
alpine9000
2016-04-22 17:18:16 +10:00
parent adfe732c89
commit 86d137c8cf
4 changed files with 45 additions and 21 deletions
+1
View File
@@ -22,6 +22,7 @@ ITEM_SPRITE_NUM_VERTICAL_SPRITES equ 6
ITEM_SPRITE_VERTICAL_BYTES equ ((ITEM_SPRITE_HEIGHT*4)+4)
ITEM_SPRITE_BYTES equ (ITEM_SPRITE_NUM_VERTICAL_SPRITES*ITEM_SPRITE_VERTICAL_BYTES)+4
ITEM_SPRITE_VSTART equ 149
ITEM_NUM_SLOTS equ 8
ITEM_X equ 0
ITEM_LAGX equ 2
+1 -1
View File
@@ -13,7 +13,7 @@
</layer>
<layer name="items" width="100" height="8">
<data encoding="base64" compression="zlib">
eJxjYBgFQx04MdJW/SggHjiOhi1eQI20h24GoTAfjZPBA0BxgRwf6PyBAEO5PAS5HRmTAwZDHFACSPH3UI5raoHRMBgFgwUAAJSiBXc=
eJxjYBgFgx04M+KXdyQgjw6ciFRPrLpRgADoceE6GoYogBppCt0MfOkfJDeajukPXHCEOSg+kOMLnT8QYCinDydGVEwOGAxxQAkgxd9DOa6pBYZyXI+C4QUASQkGyg==
</data>
</layer>
</map>
+40 -20
View File
@@ -5,13 +5,23 @@
xdef RenderItemSprite
ScrollItemSprites:
move.w #1,d0
lsl.w #ITEM_STRUCT_MULU_SHIFT,d0 ; multiply by 16 (item control structure size)
move.w #ITEM_NUM_SLOTS-1,d1
lea item1,a1
add.l d0,a1
.loop:
move.l foregroundScrollPixels,d0
sub.w d0,ITEM_X(a1)
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
sub.w d0,ITEM_X(a1)
cmp.w #160<<FOREGROUND_SCROLL_SHIFT_CONVERT,ITEM_X(a1)
bgt .skip
move.w #0,ITEM_SPRITE(a1)
move.w #0,ITEM_X(a1)
move.w #0,ITEM_LAGX(a1)
move.w ITEM_Y(a1),d2
bsr ClearItemSpriteData
.skip:
add.l #ITEM_STRUCT_SIZE,a1 ; multiply by 16 (item control structure size)
dbra d1,.loop
rts
ClearItemSpriteData:
@@ -24,7 +34,7 @@ ClearItemSpriteData:
move.w #ITEM_SPRITE_NUM_VERTICAL_SPRITES-1,d3
.l1:
cmp.w d3,d2
beq .skip
bne .skip
move.b #0,3(a0)
move.b #0,1(a0)
@@ -37,7 +47,7 @@ ClearItemSpriteData:
SetupItemSpriteData:
;; d0 - item slot
move.l #1,d0
move.l d0,-(sp)
lsl.w #ITEM_STRUCT_MULU_SHIFT,d0 ; multiply by 16 (item control structure size)
lea item1,a1
@@ -82,35 +92,43 @@ SetupItemSpriteData:
move.l a0,SPR2PTH(a6)
add.w #1,ITEM_INDEX(a1)
move.l (sp)+,d0
rts
RenderItemSprite:
;; d2 - y tile index ?
movem.l d2-d3,-(sp)
move.l #1,d0
lsl.w #ITEM_STRUCT_MULU_SHIFT,d0 ; multiply by 16 (item control structure size)
lea item1,a1
add.l d0,a1
move.l foregroundScrollX,d0
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels
andi.w #$f,d0
cmp.b #$f,d0
bne .dontAddSprite
move.l foregroundScrollX,d1
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d1 ; convert to pixels
andi.w #$f,d1
cmp.b #$f,d1
bne dontAddSprite
move.l a2,a3
add.l mapSize,a3
cmpi.w #0,(a3)
beq .dontAddSprite
beq dontAddSprite
GetSpriteSlot:
move.w (a3),d0 ; sprite slot
move.w d0,d1
lsl.w #ITEM_STRUCT_MULU_SHIFT,d0 ; multiply by 16 (item control structure size)
lea item1,a1
add.l d0,a1
move.l #deadSprite,currentItemSprite
move.w #336<<FOREGROUND_SCROLL_SHIFT_CONVERT,ITEM_X(a1)
sub.l #1,d2
move.w d2,ITEM_Y(a1)
move.w ITEM_X(a1),ITEM_LAGX(a1)
bsr ClearItemSpriteData
add.w #1,d1
move.w d1,ITEM_SPRITE(a1)
move.l #spriteCoin1,currentItemSprite
.dontAddSprite:
dontAddSprite:
movem.l (sp)+,d2-d3
rts
@@ -135,3 +153,5 @@ currentItemSprite:
ItemSprite spriteCoin7,sprite_coin-1.bin
nextSpriteSlot:
dc.w 0
+3
View File
@@ -133,7 +133,10 @@ SetupSpriteData:
move.b d0,2(a0) ;spriteVStop
move.l a0,SPR0PTH(a6)
move.l #ITEM_NUM_SLOTS-1,d0
.loop:
jsr SetupItemSpriteData
dbra d0,.loop
move.l #deadSprite,SPR1PTH(a6)
move.l #deadSprite,SPR3PTH(a6)