From 298b621a774f40bf9bfcd27052d7def065d2ded4 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Wed, 18 May 2016 20:59:02 +1000 Subject: [PATCH] multiple bees --- 028.bs/assets/items.png | Bin 4675 -> 4816 bytes 028.bs/constants.i | 3 +- 028.bs/credits.s | 4 +- 028.bs/items.s | 214 +++++++++++++++++++++------- 028.bs/levels/levelA_foreground.tmx | 2 +- 5 files changed, 166 insertions(+), 57 deletions(-) diff --git a/028.bs/assets/items.png b/028.bs/assets/items.png index 7bb486817c6d97e4c52cc0f736fb359db590a0b6..ef7c34bf4d85f28cda87e2740164b3750cf4de0c 100644 GIT binary patch delta 2519 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 shnK|%=vI@nVGdRVlRyrS80= r2.x+w + ble .skip + + move.w d2,d6 + add.w #BEE_COLLIDE_SIZE,d6 + cmp.w d3,d6 ; r1.x+w <= r2.x + ble .skip + + move.w d4,d6 + add.w #BEE_COLLIDE_SIZE,d6 + cmp.w d5,d6 ; r1.y >= r2.y+h + ble .skip + + move.w d5,d6 + add.w #BEE_COLLIDE_SIZE,d6 + cmp.w d4,d6 ; r1.y+h < r2.y + ble .skip + + bsr DeleteItemSprite + jmp BigBang +.skip: + rts RenderCoinScore: @@ -208,18 +287,19 @@ SwitchItemSpriteBuffers: PrepareItemSpriteData: - cmp.l #0,itemSpritesEnabled - bne .enableSprites move.l #deadSprite,sprite2Pointer move.l #deadSprite,sprite3Pointer move.l #deadSprite,sprite4Pointer - move.l #deadSprite,sprite5Pointer + move.l #deadSprite,sprite5Pointer + + cmp.l #0,itemSpritesEnabled + bne .enableSprites rts .enableSprites: move.l #ITEM_NUM_SLOTS-1,d0 .loop: - bsr _SetupItemSpriteData + bsr _SetupItemSpriteData dbra d0,.loop rts @@ -270,7 +350,19 @@ _SetupItemSpriteData: adda.w d0,a0 lsl.w #ITEM_SPRITE_VERTICAL_BYTES_SHIFT_CONVERT,d2 - adda.w d2,a0 + move.w d2,d3 + + cmp.l #item25,a1 + beq .bee + cmp.l #item26,a1 + beq .bee + bra .continueBee +.bee: + move.w #0,d3 +.continueBee: + + + adda.w d3,a0 ; ITEM_Y or 0 for bee move.w ITEM_X(a1),d0 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels @@ -289,7 +381,15 @@ _SetupItemSpriteData: move.w ITEM_Y(a1),d0 lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d0 lsr.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d1 - add.w d1,d0 + + cmp.b #ITEM_SPRITE_BEE_UP_INDEX,d4 + bne .notBeeUp + sub.w d1,d0 + bra .afterNotBeeUp +.notBeeUp: + add.w d1,d0 +.afterNotBeeUp: + add.w #ITEM_SPRITE_VSTART,d0 move.b d0,(a0) ; spriteVStart add.w #ITEM_SPRITE_HEIGHT,d0 @@ -298,9 +398,11 @@ _SetupItemSpriteData: .noYOffset: .c1: - sub.l d2,a0 ;#1*ITEM_SPRITE_VERTICAL_BYTES,a0 - cmp.b #ITEM_SPRITE_BEE_INDEX,d4 - bge .beeSprite + sub.l d3,a0 ;#1*ITEM_SPRITE_VERTICAL_BYTES,a0 or 0 for bee + cmp.b #ITEM_SPRITE_BEE_UP_INDEX,d4 + bge .beeUpSprite + cmp.b #ITEM_SPRITE_BEE_DOWN_INDEX,d4 + bge .beeDownSprite cmp.b #ITEM_SPRITE_ARROW_INDEX,d4 bge .arrowSprite cmp.b #ITEM_SPRITE_COINB_INDEX,d4 @@ -311,22 +413,32 @@ _SetupItemSpriteData: .coinBSprite: move.l a0,sprite3Pointer bra .done -.arrowSprite: - move.l a0,sprite4Pointer +.arrowSprite: cmp.w #0,ITEM_X(a1) beq .done + move.l a0,sprite4Pointer bsr InstallArrowPalette bra .done -.beeSprite: - move.l a0,sprite5Pointer +.beeDownSprite: cmp.w #0,ITEM_X(a1) - beq .dontAnimate + beq .dontAnimateDownBee + move.l a0,sprite4Pointer bsr InstallBeePalette - bra .dontAnimate - -.dontAnimate: - cmp.w #1,beeMovingDown + bra .dontAnimateDownBee +.beeUpSprite: + cmp.w #0,ITEM_X(a1) + beq .dontAnimateUpBee + move.l a0,sprite5Pointer + bsr InstallBeePalette + bra .dontAnimateUpBee +.dontAnimateDownBee: + cmp.w #1,beeDownMovingDown beq .setBeeDown + bra .setBeeUp +.dontAnimateUpBee: + cmp.w #1,beeUpMovingDown + beq .setBeeDown + bra .setBeeUp .setBeeUp: move.w #1<<3,ITEM_INDEX(a1) bra .spriteIsNotEnabled @@ -396,17 +508,19 @@ InstallArrowPalette: itemSpritesEnabled: dc.l 0 spriteBufferIndex: - dc.l 0 + dc.l 0 sprite2Pointer: - dc.l 0 + dc.l deadSprite sprite3Pointer: - dc.l 0 + dc.l deadSprite sprite4Pointer: - dc.l 0 + dc.l deadSprite sprite5Pointer: - dc.l 0 -beeMovingDown: + dc.l deadSprite +beeUpMovingDown: dc.w 1 +beeDownMovingDown: + dc.w 1 ;; coinA ItemControl item1,spriteCoinA1,1 @@ -438,13 +552,11 @@ beeMovingDown: ItemControl item23,spriteArrow1,0 ItemControl item24,spriteArrow1,0 - ;; bee - ItemControl item25,spriteBee1,1 - ItemControl item26,spriteBee1,1 - if 0 - ItemControl item27,spriteArrow1,1 - ItemControl item28,spriteArrow1,1 - endif + ;; beeDown + ItemControl item25,spriteBeeDown1,1 + + ;; beeUp + ItemControl item26,spriteBeeUp1,1 ItemSprite spriteCoinA1,sprite_coin-0.bin ItemSprite spriteCoinA2,sprite_coin-0.bin @@ -473,15 +585,11 @@ beeMovingDown: ItemSprite spriteArrow7,sprite_arrow-1.bin ItemSprite spriteArrow8,sprite_arrow-1.bin - ItemSprite spriteBee1,sprite_bee-1.bin - ItemSprite spriteBee2,sprite_bee-0.bin - ItemSprite spriteBee3,sprite_bee-1.bin - ItemSprite spriteBee4,sprite_bee-0.bin - ItemSprite spriteBee5,sprite_bee-1.bin - ItemSprite spriteBee6,sprite_bee-0.bin - ItemSprite spriteBee7,sprite_bee-1.bin - ItemSprite spriteBee8,sprite_bee-0.bin + ItemSprite spriteBeeDown1,sprite_bee-1.bin + ItemSprite spriteBeeDown2,sprite_bee-0.bin + ItemSprite spriteBeeUp1,sprite_bee-0.bin + ItemSprite spriteBeeUp2,sprite_bee-1.bin nextSpriteSlot: dc.w 0 diff --git a/028.bs/levels/levelA_foreground.tmx b/028.bs/levels/levelA_foreground.tmx index 1ff602e..d788e5a 100644 --- a/028.bs/levels/levelA_foreground.tmx +++ b/028.bs/levels/levelA_foreground.tmx @@ -18,7 +18,7 @@ - eJztlUsOgzAMRMnRCrRAv5FaNnD/e1SRqORG8S9OKQveBilMxvZYgqra2RK1S59PyHngQLyDeEfXwHo5C/Uaz7UoUS/kS2XcuG9tjj/0GBiPi3GmpkAmuR6Se09G88lYkjXcXbs85+jeFfFphTNS+3oZssb6ykUyjyWL45J1D7Q+ugf34RV7hDU4YE2J/sZoxpW/WRrCfHH/XJ69YCcaTo7+P+V4auunuCfOMa2ElJ/V81d0f9yHlcfG+9spxxtPYBLK + eJztlEkOgzAMRfHRCm0ZOkVqV+X+90BZILlWPJC4EQveDvPx8B3SNAd7ooV0/MvEIyfhHSaAXIPrZTLqt+SshUe96K/kcQe/2pz8OMcI8r5vhTN1Dp7k5rB891Y0q8cWr/Huzoz+zsQ5PWUUdJ9Mn2bg+8rFMk+JF5fEfxLIM95H2LBHXEMD17ToH5XvJE/ifLR/zc/BsBPp/qFcFS09A95w9Z+JuNarRCqfNedc+Yz1Qr1/76OU1877O/BjAd0kEuI=