From dc6b302cb748150a7b68847649e35fe2075c28a5 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sat, 21 May 2016 14:47:13 +1000 Subject: [PATCH] new scoring system --- 028.bs/constants.i | 2 ++ 028.bs/counter.s | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 028.bs/game1.s | 29 +++++++++++++++------------ 028.bs/items.s | 27 +++++++++++++------------ 028.bs/level.i | 2 ++ 028.bs/macros.i | 6 ++++++ 028.bs/player.s | 23 ++++++++++++++++++++-- 7 files changed, 110 insertions(+), 28 deletions(-) diff --git a/028.bs/constants.i b/028.bs/constants.i index f15f094..a2671c8 100644 --- a/028.bs/constants.i +++ b/028.bs/constants.i @@ -84,6 +84,8 @@ BEE_COLLIDE_SIZE equ 5 BIGBANG_ANIM_DELAY equ 4 BIGBANG_POST_DELAY equ 15 +SCORE_COINS_ADDITION equ 100 + SCREEN_WIDTH equ 320 SCREEN_HEIGHT equ 256 SCREEN_WIDTH_BYTES equ (SCREEN_WIDTH/8) diff --git a/028.bs/counter.s b/028.bs/counter.s index 52dbe20..c7cdffb 100644 --- a/028.bs/counter.s +++ b/028.bs/counter.s @@ -2,13 +2,28 @@ xdef ResetCounter xdef IncrementCounter xdef DecrementCounter + xdef RenderNumber4 RenderCounter: + ;; d0.w x position + ;; a1.l text lea panel,a0 move.w #20,d1 jsr DrawText8 rts +RenderNumber4: + ;; d0.l number + ;; d1.w x position + move.l d1,d3 + move.l #4,d2 + bsr ToAscii + move.l a0,a1 + lea panel,a0 + move.w #20,d1 + move.w d3,d0 + jsr DrawText8 + rts ResetCounter: move.l #"0000",(a0) @@ -57,3 +72,37 @@ DecrementCounter: move.b d0,(a0) .startOfText: rts + + + +ToAscii: + ;; d0.l number + ;; d2.l numb chars + ;; a0.l buffer + ;; movem.l d0-d2/a1,-(a7) + lea staticBuffer,a0 + move.l a0,a1 + add.l d2,a0 + moveq #10,d2 +.loop: + divu.w d2,d0 + swap d0 + addi.b #"0",d0 + move.b d0,-(a0) + move.b #0,d0 + swap d0 + tst.w d0 + bne.s .loop +.loop2: + cmp.l a0,a1 + beq .done + move.b #'0',-(a0) + bra .loop2 +.done: + ;; movem.l (a7)+,d0-d2/a1 + rts + +staticBuffer: + dc.b "0000" + dc.b 0 + diff --git a/028.bs/game1.s b/028.bs/game1.s index d7a34fd..3589658 100644 --- a/028.bs/game1.s +++ b/028.bs/game1.s @@ -88,7 +88,9 @@ Reset: lea player1Text,a1 move.w #192,d0 jsr RenderCounter - + move.l playerXColumnLastSafe,playerXColumn + jsr RenderPlayerScore + move.l startForegroundMapPtr,foregroundMapPtr move.l startPathwayMapPtr,pathwayMapPtr @@ -159,7 +161,6 @@ FadeInLoop: bne .c1 jsr ResetPlayer jsr EnableItemSprites - move.l #0,verticalBlankCount move.l #1,frameCount move.l #FOREGROUND_SCROLL_PIXELS,foregroundScrollPixels @@ -183,8 +184,10 @@ GameLoop: lea skippedFramesCounterText,a0 jsr IncrementCounter lea skippedFramesCounterText,a1 + if 0 move.w #110,d0 - jsr RenderCounter + jsr RenderCounter + endif .noSkippedFrames: add.l #1,frameCount jsr WaitVerticalBlank @@ -805,19 +808,19 @@ InstallFlagGreyPalette: ;; frames after jump before player miss is checked ;; level complete name ;; palette - Level 1,"STAY ON THE PATHWAYS!",100,2*2,12,10,"LEVEL 1",A - Level 2,"COLLECT COINS!",100,2*2,12,10,"LEVEL 2",A - Level 3,"ARROWS ARE YOUR FRIEND!",100,2*2,12,10,"LEVEL 3",A - Level 4,"WATCH OUT FOR BEES!",100,2*2,12,10,"LEVEL 4",A - Level 5,"REMEMBER THE PATHWAYS BEFORE THEY FADE!",75,2*2,12,10,"LEVEL 5",A + Level 1,"STAY ON THE PATHWAYS!",100,2*2,12,10,"LEVEL 1",A,21 + Level 2,"COLLECT COINS!",100,2*2,12,10,"LEVEL 2",A,21 + Level 3,"ARROWS ARE YOUR FRIEND!",100,2*2,12,10,"LEVEL 3",A,21 + Level 4,"WATCH OUT FOR BEES!",100,2*2,12,10,"LEVEL 4",A,21 + Level 5,"REMEMBER THE PATHWAYS BEFORE THEY FADE!",75,2*2,12,10,"LEVEL 5",A,21 - Level 6,"LET'S TRY A LONGER LEVEL!",75,2*2,12,10,"PHEW!, LEVEL 6",B - Level 7,"HAVING FUN YET?",70,2*2,12,10,"LEVEL 7",B + Level 6,"LET'S TRY A LONGER LEVEL!",75,2*2,12,10,"PHEW!, LEVEL 6",B,98 + Level 7,"HAVING FUN YET?",70,2*2,12,10,"LEVEL 7",B,98 - Level 8,"GIDDY UP!",50,4*2,8,6,"GETTING FASTER!, LEVEL 8",C - Level 9,"LETS GO?",25,4*2,8,6,"LEVEL 9",C + Level 8,"GIDDY UP!",50,4*2,8,6,"GETTING FASTER!, LEVEL 8",C,98 + Level 9,"LETS GO?",25,4*2,8,6,"LEVEL 9",C,98 - Level 10,"WHAT? WHAT?!",50,4*2,8,6,"NICE! LEVEL 10",A + Level 10,"WHAT? WHAT?!",50,4*2,8,6,"NICE! LEVEL 10",A,98 ;; Level 10,"WHAT? WHAT?!",15,4*2,8,6,"YOU'RE GOOD, LEVEL 10",C ;; Level 7,"LEVEL 3",50,4*2,8,6,"3",C diff --git a/028.bs/items.s b/028.bs/items.s index c168129..e3f53f6 100644 --- a/028.bs/items.s +++ b/028.bs/items.s @@ -1,5 +1,7 @@ include "includes.i" + xdef score + xdef SetupItemSpriteData xdef ScrollItemSprites xdef RenderItemSprite @@ -11,7 +13,8 @@ xdef PrepareItemSpriteData xdef VerticalScrollBees xdef DetectBeeCollisions - + xdef RenderScore + DetectBeeCollisions: bsr DetectDownBeeCollisions @@ -141,9 +144,8 @@ DetectItemCollisions: bge .arrowCollision .coinCollision: bsr DeleteItemSprite - lea coinCounterText,a0 - jsr IncrementCounter - bsr RenderCoinScore + add.l #SCORE_COINS_ADDITION,score + bsr RenderScore PlaySound Chaching rts @@ -251,16 +253,16 @@ DetectUpBeeCollisions: rts -RenderCoinScore: - lea coinCounterText,a1 - move.w #31,d0 - jsr RenderCounter +RenderScore: + move.l score,d0 + move.w #31,d1 + jsr RenderNumber4 rts InitialiseItems: - move.l #"0000",coinCounterText - bsr RenderCoinScore + move.l #0,score + bsr RenderScore ResetItems: lea item1,a1 @@ -612,7 +614,6 @@ nextSpriteSlot: dc.w 0 -coinCounterText: - dc.b "0000" - dc.b 0 +score: + dc.l 0 align 4 \ No newline at end of file diff --git a/028.bs/level.i b/028.bs/level.i index ee43067..da60a1d 100644 --- a/028.bs/level.i +++ b/028.bs/level.i @@ -14,6 +14,8 @@ InstallLevel\1: move.l #\4,pathwayFadeRate move.w #\5,playerLevelPausePixels move.w #\6,playerLevelMissPixels + move.l #\9,playerXColumnLastSafe, + move.l #\9,playerXColumn rts align 4 diff --git a/028.bs/macros.i b/028.bs/macros.i index 3e80ccc..da9f39e 100644 --- a/028.bs/macros.i +++ b/028.bs/macros.i @@ -129,6 +129,8 @@ PlayerMoveRight: macro move.w d1,spriteR move.w #PLAYER_MOVE_RIGHT,spriteLastMove PlaySound Jump + sub.l #1,playerXColumn + jsr UpdatePlayerScore endm PlayerMoveUp: macro @@ -137,6 +139,7 @@ PlayerMoveUp: macro move.w d1,spriteU move.w #PLAYER_MOVE_UP,spriteLastMove PlaySound Jump + jsr UpdatePlayerScore endm PlayerMoveDown: macro @@ -145,6 +148,7 @@ PlayerMoveDown: macro move.w d1,spriteD move.w #PLAYER_MOVE_DOWN,spriteLastMove PlaySound Jump + jsr UpdatePlayerScore endm PlayerMoveLeft: macro @@ -163,4 +167,6 @@ PlayerMoveLeft: macro move.w d1,spriteL move.w #PLAYER_MOVE_LEFT,spriteLastMove PlaySound Jump + add.l #1,playerXColumn + jsr UpdatePlayerScore endm \ No newline at end of file diff --git a/028.bs/player.s b/028.bs/player.s index 6ff0b32..889a981 100644 --- a/028.bs/player.s +++ b/028.bs/player.s @@ -9,6 +9,7 @@ xdef HidePlayer xdef SetupSpriteData xdef ScrollSprites + xdef RenderPlayerScore xdef deadSprite ; used in items xdef UpdatePlayerFallingAnimation xdef InstallPlayerColorPalette @@ -18,7 +19,9 @@ xdef spriteLagX xdef spriteY xdef spriteX - + xdef playerXColumn + xdef playerXColumnLastSafe + xdef playerLevelPausePixels xdef playerLevelMissPixels @@ -379,6 +382,7 @@ CheckPlayerMiss: bra .dontClearPathway .clearPathway: move.w #2,pathwayClearPending + move.l playerXColumn,playerXColumnLastSafe move.l #PLAYER_BOTTOM_Y,d0 @@ -554,6 +558,18 @@ SelectNextPlayerSprite: .done: bsr InstallPlayerColorPalette rts + + +UpdatePlayerScore: + add.l #10,score +RenderPlayerScore: + jsr RenderScore + move.l playerXColumn,d0 + move.w #110,d1 + jsr RenderNumber4 + + rts + pigPlayerSpriteConfig: dc.l InstallPigColorPalette @@ -621,4 +637,7 @@ pathwayLastConfig: dc.w PATHWAY_CONFIG_FREE pathwayMissPending: dc.w 0 - \ No newline at end of file +playerXColumn: + dc.l 0 +playerXColumnLastSafe: + dc.l 0 \ No newline at end of file