mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2026-09-12 22:53:27 +00:00
multiple bees
This commit is contained in:
+161
-53
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user