mirror of
https://github.com/alpine9000/amiga_examples
synced 2025-12-08 14:59:01 +00:00
multiple items at last
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user