diff --git a/028.bs/foreground.tmx b/028.bs/foreground.tmx index 4b93852..bdf38bb 100644 --- a/028.bs/foreground.tmx +++ b/028.bs/foreground.tmx @@ -18,7 +18,7 @@ - eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMIbRPnjMRI47FxLtJlY9PvtHEnBlxIwbdICel7wJ5C1sdhACvjQqDwcjALkdGYMAqWUQcpy4kREWhPT40Th8SYm/wRLXpMaROxXV+w+SMBgFowAA+ysMrA== + eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/pAFXaFj74skv2PISKXnGlQi1vjQqDwcjALkdGYMAqWUQcpy4kREWhPT40Th8SYm/wRLXpMaROxXV+w+SMBgFowAAAWIMrg== diff --git a/028.bs/image.s b/028.bs/image.s index 34d66a1..a84dfc2 100644 --- a/028.bs/image.s +++ b/028.bs/image.s @@ -8,7 +8,7 @@ SwitchBuffers: ;; offscreen - bitplane address - + move.l foregroundScrollX,d0 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels lsr.w #3,d0 ; bytes to scroll @@ -47,7 +47,9 @@ SwitchBackgroundBuffers: add.l #BITPLANE_WIDTH_BYTES*SCREEN_BIT_DEPTH*(96-1),d0 lea copperListBpl2Ptr2_MP,a0 - bsr.s PokeBitplanePointers + bsr.s PokeBitplanePointers + + jsr SwitchItemSpriteBuffers rts diff --git a/028.bs/items.s b/028.bs/items.s index 5ce5298..118dfde 100644 --- a/028.bs/items.s +++ b/028.bs/items.s @@ -7,13 +7,13 @@ xdef EnableItemSprites xdef DetectItemCollisions xdef InitialiseItems + xdef SwitchItemSpriteBuffers DeleteItemSprite: 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 rts ScrollItemSprites: @@ -30,7 +30,6 @@ ScrollItemSprites: 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 @@ -86,34 +85,25 @@ ResetItems: move.w #0,ITEM_X(a1) move.w #0,ITEM_LAGX(a1) move.w ITEM_Y(a1),d2 - ;; bsr ClearItemSpriteData add.l #ITEM_STRUCT_SIZE,a1 ; multiply by 16 (item control structure size) dbra d1,.loop1 move.l #0,itemSpritesEnabled rts - -ClearItemSpriteData: - rts - ;; move.w #ITEM_SPRITE_NUM_VERTICAL_SPRITES-1,d4 - ;; sub.w d2,d4 ; this is because of the upside board at the moment - ;; move.w d4,d2 - move.w #ITEM_NUM_COIN_ANIMS-1,d4 - move.l #spriteCoin1,a0 -.l2: - move.w #ITEM_SPRITE_NUM_VERTICAL_SPRITES-1,d3 -.l1: - cmp.w d3,d2 - bne .skip - move.b #0,3(a0) - move.b #0,1(a0) -.skip: - add.l #ITEM_SPRITE_VERTICAL_BYTES,a0 - dbra.w d3,.l1 - add.l #4,a0 - dbra.w d4,.l2 - rts + +SwitchItemSpriteBuffers: + + move.w spriteX,spriteLagX + move.w #ITEM_NUM_SLOTS-1,d1 + move.w d1,d0 + lea item1,a1 +.loop: + move.w ITEM_X(a1),ITEM_LAGX(a1) + adda.l #ITEM_STRUCT_SIZE,a1 + dbra d1,.loop + rts + SetupItemSpriteData: ;; d0 - item slot move.l d0,-(sp) @@ -149,7 +139,7 @@ SetupItemSpriteData: move.w ITEM_LAGX(a1),d0 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels - move.w ITEM_X(a1),ITEM_LAGX(a1) + ;; move.w ITEM_X(a1),ITEM_LAGX(a1) cmp.l #0,itemSpritesEnabled beq .dontEnable diff --git a/028.bs/player.s b/028.bs/player.s index 07a8d58..d5f349a 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -181,7 +181,7 @@ ProcessJoystick: SetupSpriteData: move.l currentSprite,a0 move.w spriteLagX,d0 - move.w spriteX,spriteLagX + ;; move.w spriteX,spriteLagX move.w d0,d1 andi #1,d1 @@ -267,7 +267,8 @@ CheckPlayerMiss: ;; add the offset based on the sprite's x position - move.w spriteLagX,d0 + move.w spriteX,d0 + ;; move.w spriteLagX,d0 cmpi.w #PLAYER_LEFT_X,d0 blt .doBigBang sub.w #PLAYER_LEFT_X,d0