diff --git a/028.bs/assets/items.png b/028.bs/assets/items.png
index cbf1f42..6120ce2 100644
Binary files a/028.bs/assets/items.png and b/028.bs/assets/items.png differ
diff --git a/028.bs/assets/palette.pal b/028.bs/assets/palette.pal
deleted file mode 100644
index a1cacfb..0000000
--- a/028.bs/assets/palette.pal
+++ /dev/null
@@ -1,25 +0,0 @@
-000 000 000 255
-082 000 015 255
-133 000 026 255
-210 063 006 255
-211 116 039 255
-253 174 017 255
-233 216 100 255
-016 132 233 255
-000 000 014 255
-029 192 255 255
-121 235 255 255
-071 174 192 255
-213 213 213 255
-210 000 039 255
-154 154 154 255
-000 000 000 000
-232 174 100 255
-252 114 100 255
-171 049 027 255
-004 050 117 255
-020 155 173 255
-030 236 255 255
-252 115 009 255
-255 255 011 255
-255 255 255 255
diff --git a/028.bs/constants.i b/028.bs/constants.i
index 5297cfd..7317c80 100644
--- a/028.bs/constants.i
+++ b/028.bs/constants.i
@@ -34,9 +34,11 @@ 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 16
+ITEM_NUM_SLOTS equ (8*3)
ITEM_SPRITE_HORIZONTAL_START_PIXELS equ 32
ITEM_SPRITE_Y_COLLISION_OFFSET equ 1
+ITEM_SPRITE_ARROW_INDEX equ 16
+ITEM_SPRITE_COINB_INDEX equ 8
;item control struct offsets
ITEM_X equ 0
@@ -44,6 +46,7 @@ ITEM_LAGX equ 2
ITEM_Y equ 4
ITEM_SPRITE equ 6
ITEM_INDEX equ 8
+ITEM_SPRITE_ENABLED equ 10
ITEM_SPRITE_ADDRESS equ 12
ITEM_STRUCT_SIZE equ 16
ITEM_STRUCT_MULU_SHIFT equ 4
diff --git a/028.bs/foreground.tmx b/028.bs/foreground.tmx
index bdf38bb..f3c7220 100644
--- a/028.bs/foreground.tmx
+++ b/028.bs/foreground.tmx
@@ -18,7 +18,7 @@
- eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/pAFXaFj74skv2PISKXnGlQi1vjQqDwcjALkdGYMAqWUQcpy4kREWhPT40Th8SYm/wRLXpMaROxXV+w+SMBgFowAAAWIMrg==
+ eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/pAFXaFj7AnEojjDBlpdIyTOuRKj1pVF5OBgByO3IGARILYOQ48SNjLAgpMePxuFLSvwNlrgmNY7cqajef5CEwSgYBQB8ggzC
diff --git a/028.bs/items.s b/028.bs/items.s
index 118dfde..edbb5fd 100644
--- a/028.bs/items.s
+++ b/028.bs/items.s
@@ -104,7 +104,24 @@ SwitchItemSpriteBuffers:
dbra d1,.loop
rts
-SetupItemSpriteData:
+
+SetupItemSpriteData:
+ cmp.l #0,itemSpritesEnabled
+ bne .enableSprites
+ move.l #deadSprite,SPR2PTH(a6)
+ move.l #deadSprite,SPR3PTH(a6)
+ move.l #deadSprite,SPR4PTH(a6)
+ rts
+
+.enableSprites:
+ move.l #ITEM_NUM_SLOTS,d0
+.loop:
+ bsr _SetupItemSpriteData
+ dbra d0,.loop
+ rts
+
+
+_SetupItemSpriteData:
;; d0 - item slot
move.l d0,-(sp)
move.l d0,d4 ; save item slot
@@ -113,15 +130,15 @@ SetupItemSpriteData:
lea item1,a1
add.l d0,a1
+ cmpi.w #0,ITEM_SPRITE_ENABLED(a1)
+ beq .spriteIsNotEnabled
- move.w ITEM_Y(a1),d2
- ;; move.l #5,d2
-
+ move.w ITEM_Y(a1),d2
move.l ITEM_SPRITE_ADDRESS(a1),a0
-
+
cmp.w #(ITEM_NUM_COIN_ANIMS-1)<<3,ITEM_INDEX(a1)
ble .dontResetIndex
- move.l #0,ITEM_INDEX(a1)
+ move.w #0,ITEM_INDEX(a1)
.dontResetIndex:
cmp.l #deadSprite,a0
bne .setupSprite
@@ -137,12 +154,11 @@ SetupItemSpriteData:
mulu.w #ITEM_SPRITE_VERTICAL_BYTES,d2
add.l d2,a0
- move.w ITEM_LAGX(a1),d0
+ move.w ITEM_X(a1),d0
+ ;; move.w ITEM_LAGX(a1),d0
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels
;; move.w ITEM_X(a1),ITEM_LAGX(a1)
- cmp.l #0,itemSpritesEnabled
- beq .dontEnable
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d0
move.w d0,d1
@@ -153,23 +169,23 @@ SetupItemSpriteData:
.c1:
sub.l d2,a0 ;#1*ITEM_SPRITE_VERTICAL_BYTES,a0
- cmp.b #8,d4
+ cmp.b #ITEM_SPRITE_ARROW_INDEX,d4
bge .arrowSprite
+ cmp.b #ITEM_SPRITE_COINB_INDEX,d4
+ bge .coinBSprite
+.coinASprite:
move.l a0,SPR2PTH(a6)
bra .done
+.coinBSprite:
+ move.l a0,SPR3PTH(a6)
+ bra .done
.arrowSprite:
move.l a0,SPR4PTH(a6)
bra .done
-.dontEnable:
- cmp.b #8,d4
- bge .dontEnableArrowSprite
- move.l #deadSprite,SPR2PTH(a6)
- bra .done
-.dontEnableArrowSprite:
- move.l #deadSprite,SPR4PTH(a6)
.done:
add.w #1,ITEM_INDEX(a1)
+.spriteIsNotEnabled:
move.l (sp)+,d0
rts
@@ -196,7 +212,6 @@ GetSpriteSlot:
lea item1,a1
add.l d0,a1
- ;; move.l #deadSprite,ITEM_SPRITE_ADDRESS(a1)
move.w #336<