multiple bees

This commit is contained in:
alpine9000
2016-05-18 20:59:02 +10:00
parent 2c4305a0ca
commit 298b621a77
5 changed files with 166 additions and 57 deletions
+161 -53
View File
@@ -13,6 +13,11 @@
xdef DetectBeeCollisions
DetectBeeCollisions:
bsr DetectDownBeeCollisions
bsr DetectUpBeeCollisions
rts
DeleteItemSprite:
move.w #0,ITEM_SPRITE(a1)
move.w #0,ITEM_X(a1)
@@ -20,11 +25,13 @@ DeleteItemSprite:
move.w ITEM_Y(a1),d2
rts
VerticalScrollBees:
bsr VerticalScrollDownBee
bsr VerticalScrollUpBee
rts
VerticalScrollDownBee:
lea item25,a1
move.w #ITEM_NUM_BEES-1,d6
.loop:
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
@@ -33,7 +40,7 @@ VerticalScrollBees:
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
add.w d0,d4
cmp.w #1,beeMovingDown
cmp.w #1,beeDownMovingDown
bne .up
.down:
add.w #1,d0
@@ -48,15 +55,45 @@ VerticalScrollBees:
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeMovingDown
move.w #1,beeDownMovingDown
bra .done
.beeAtBottom:
move.w #0,beeMovingDown
move.w #0,beeDownMovingDown
.done:
add.l #ITEM_STRUCT_SIZE,a1
dbra d6,.loop
rts
VerticalScrollUpBee:
lea item26,a1
cmp.w #0,ITEM_SPRITE(a1)
beq .done
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
lsl.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d4
move.w ITEM_Y_OFFSET(a1),d0
sub.w d0,d4
cmp.w #1,beeUpMovingDown
bne .up
.down:
add.w #1,d0
bra .c1
.up:
sub.w #1,d0
.c1:
move.w d0,ITEM_Y_OFFSET(a1)
cmp.w #(ITEM_SPRITE_VSTART)<<ITEM_Y_OFFSET_SHIFT_CONVERT,d4
ble .beeAtBottom
cmp.w #0,d0
ble .beeAtTop
bra .done
.beeAtTop:
move.w #1,beeUpMovingDown
bra .done
.beeAtBottom:
move.w #0,beeUpMovingDown
.done:
rts
ScrollItemSprites:
move.w #ITEM_NUM_SLOTS-1,d1
@@ -120,10 +157,8 @@ DetectItemCollisions:
rts
DetectBeeCollisions:
DetectDownBeeCollisions:
lea item25,a1
move.w #ITEM_NUM_BEES-1,d7
.loop:
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
@@ -166,9 +201,53 @@ DetectBeeCollisions:
bsr DeleteItemSprite
jmp BigBang
.skip:
add.w #ITEM_STRUCT_SIZE,a1
dbra d7,.loop
rts
rts
DetectUpBeeCollisions:
lea item26,a1
cmp.w #0,ITEM_SPRITE_ENABLED(a1)
beq .skip
cmp.w #0,ITEM_SPRITE(a1)
beq .skip
move.w spriteX,d2
move.w ITEM_X(a1),d3
move.w ITEM_Y(a1),d4
lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4
add.w #ITEM_SPRITE_VSTART,d4
move.w ITEM_Y_OFFSET(a1),d5
lsr.l #ITEM_Y_OFFSET_SHIFT_CONVERT,d5
sub.w d5,d4
lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels
add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3
move.w spriteY,d5
;; d2 = playerX pixels
;; d3 = beeX pixels
;; d4 = beeY pixels
;; d5 = player Y pixels
move.w d3,d6
add.w #BEE_COLLIDE_SIZE,d6
cmp.w d2,d6 ; r1.x >= 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