mirror of
https://frontier.innolan.net/github/AmigaExamples.git
synced 2026-09-14 06:52:06 +00:00
keep sprites in sync with playfields
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
</layer>
|
||||
<layer name="items" width="100" height="8">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMIbRPnjMRI47FxLtJlY9PvtHEnBlxIwbdICel7wJ5C1sdhACvjQqDwcjALkdGYMAqWUQcpy4kREWhPT40Th8SYm/wRLXpMaROxXV+w+SMBgFowAA+ysMrA==
|
||||
eJxjYBgFgxk4MRJW40iEGlLNRFbnRaL5ww2AwhdfGDszoqolx3xnEvR5D+H4IDbt4QOwMCYmrJHjzgWHeh8c4rjUE6t/pAFXaFj74skv2PISKXnGlQi1vjQqDwcjALkdGYMAqWUQcpy4kREWhPT40Th8SYm/wRLXpMaROxXV+w+SMBgFowAAAWIMrg==
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
||||
+4
-2
@@ -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
|
||||
|
||||
|
||||
+15
-25
@@ -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
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user