From 4f81441b0ac6b1822f5d1f7a8805afc07fc5b59b Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Tue, 17 May 2016 16:56:53 +1000 Subject: [PATCH] small cleanup --- 028.bs/constants.i | 2 ++ 028.bs/items.s | 70 +++++++++++++++++++++++++++------------------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/028.bs/constants.i b/028.bs/constants.i index f6e79b0..e4d6276 100644 --- a/028.bs/constants.i +++ b/028.bs/constants.i @@ -48,8 +48,10 @@ BACKGROUND_SCROLL_PIXELS equ 16 ITEM_SPRITE_HEIGHT equ 15 ITEM_SPRITE_SPACING equ 16 +ITEM_SPRITE_SPACING_SHIFT_CONVERT equ 4 ITEM_SPRITE_NUM_VERTICAL_SPRITES equ 6 ITEM_SPRITE_VERTICAL_BYTES equ ((ITEM_SPRITE_HEIGHT*4)+4) +ITEM_SPRITE_VERTICAL_BYTES_SHIFT_CONVERT equ 6 ITEM_SPRITE_BYTES equ (ITEM_SPRITE_NUM_VERTICAL_SPRITES*ITEM_SPRITE_VERTICAL_BYTES)+4 ITEM_SPRITE_VSTART equ 149 ITEM_NUM_BEES equ 2 diff --git a/028.bs/items.s b/028.bs/items.s index 562d68e..2b79bae 100644 --- a/028.bs/items.s +++ b/028.bs/items.s @@ -11,7 +11,8 @@ xdef PrepareItemSpriteData xdef VerticalScrollBees xdef DetectBeeCollisions - + + DeleteItemSprite: move.w #0,ITEM_SPRITE(a1) move.w #0,ITEM_X(a1) @@ -19,6 +20,7 @@ DeleteItemSprite: move.w ITEM_Y(a1),d2 rts + VerticalScrollBees: lea item25,a1 move.w #ITEM_NUM_BEES-1,d6 @@ -26,7 +28,7 @@ VerticalScrollBees: cmp.w #0,ITEM_SPRITE(a1) beq .done move.w ITEM_Y(a1),d4 - mulu.w #ITEM_SPRITE_SPACING,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 @@ -54,7 +56,8 @@ VerticalScrollBees: add.l #ITEM_STRUCT_SIZE,a1 dbra d6,.loop rts - + + ScrollItemSprites: move.w #ITEM_NUM_SLOTS-1,d1 lea item1,a1 @@ -74,6 +77,7 @@ ScrollItemSprites: dbra d1,.loop rts + DetectItemCollisions: move.w #ITEM_NUM_SLOTS-ITEM_NUM_BEES-1,d1 lea item1,a1 @@ -85,7 +89,7 @@ DetectItemCollisions: move.w spriteX,d2 move.w ITEM_X(a1),d3 move.w ITEM_Y(a1),d4 - mulu.w #ITEM_SPRITE_SPACING,d4 + lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d4 add.w #ITEM_SPRITE_VSTART,d4 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d3 ; convert to pixels add.w #ITEM_SPRITE_HORIZONTAL_START_PIXELS,d3 @@ -97,7 +101,6 @@ DetectItemCollisions: bne .skip cmpi.w #ITEM_SPRITE_ARROW_INDEX,ITEM_SPRITE(a1) bge .arrowCollision - .coinCollision: bsr DeleteItemSprite lea coinCounterText,a0 @@ -128,7 +131,7 @@ DetectBeeCollisions: move.w spriteX,d2 move.w ITEM_X(a1),d3 move.w ITEM_Y(a1),d4 - mulu.w #ITEM_SPRITE_SPACING,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 @@ -140,8 +143,6 @@ DetectBeeCollisions: ;; 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 @@ -176,6 +177,7 @@ RenderCoinScore: jsr RenderCounter rts + InitialiseItems: move.l #"0000",coinCounterText bsr RenderCoinScore @@ -195,9 +197,7 @@ ResetItems: SwitchItemSpriteBuffers: - move.w spriteX,spriteLagX - move.w #ITEM_NUM_SLOTS-1,d1 move.w d1,d0 lea item1,a1 @@ -222,7 +222,8 @@ PrepareItemSpriteData: bsr _SetupItemSpriteData dbra d0,.loop rts - + + SetupItemSpriteData: move.l sprite2Pointer,SPR2PTH(a6) move.l sprite3Pointer,SPR3PTH(a6) @@ -238,7 +239,7 @@ SetupItemSpriteData: _SetupItemSpriteData: - ;; d0 - item slot + ;; d0.l - item slot move.l d0,-(sp) move.l d0,d4 ; save item slot @@ -261,16 +262,15 @@ _SetupItemSpriteData: bra .c1 .setupSprite: - move.l #0,d0 move.w ITEM_INDEX(a1),d0 lsr.l #3,d0 mulu.w #ITEM_SPRITE_BYTES*2,d0 add.w spriteBufferIndex,d0 - add.l d0,a0 + adda.w d0,a0 - mulu.w #ITEM_SPRITE_VERTICAL_BYTES,d2 - add.l d2,a0 + lsl.w #ITEM_SPRITE_VERTICAL_BYTES_SHIFT_CONVERT,d2 + adda.w d2,a0 move.w ITEM_X(a1),d0 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d0 ; convert to pixels @@ -287,7 +287,7 @@ _SetupItemSpriteData: ;; beq .noYOffset move.w ITEM_Y(a1),d0 - mulu.w #16,d0 + lsl.w #ITEM_SPRITE_SPACING_SHIFT_CONVERT,d0 lsr.w #ITEM_Y_OFFSET_SHIFT_CONVERT,d1 add.w d1,d0 add.w #ITEM_SPRITE_VSTART,d0 @@ -329,31 +329,32 @@ _SetupItemSpriteData: .spriteIsNotEnabled: move.l (sp)+,d0 rts - + + RenderItemSprite: - ;; d2 - y tile index ? + ;; d2.l - y tile index ? movem.l d2-d3,-(sp) move.l foregroundScrollX,d1 lsr.w #FOREGROUND_SCROLL_SHIFT_CONVERT,d1 ; convert to pixels andi.w #$f,d1 cmp.b #$f,d1 ; only add sprite after tile has scrolled in - bne dontAddSprite + bne .dontAddSprite move.l a2,a3 add.l itemsMapOffset,a3 cmpi.w #0,(a3) - beq dontAddSprite + beq .dontAddSprite -GetSpriteSlot: +.getSpriteSlot: move.w (a3),d0 ; sprite slot sub.w #1,d0 move.w d0,d1 cmp.w #ITEM_NUM_SLOTS,d0 - bge dontAddSprite + bge .dontAddSprite lsl.w #ITEM_STRUCT_MULU_SHIFT,d0 ; multiply by 16 (item control structure size) lea item1,a1 - add.l d0,a1 + adda.w d0,a1 move.w #336<