From 1bfcd57d26d79b1a569609dce78d19694a0dc5b0 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Fri, 12 May 2023 12:01:57 +0200 Subject: [PATCH] Small sort optimization --- game.asm | 30 ++++++++++++++---------------- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 56628 -> 56624 bytes 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/game.asm b/game.asm index a25e9b2..1c11788 100644 --- a/game.asm +++ b/game.asm @@ -1076,42 +1076,40 @@ SequenceStart ; if sortflag=0 then finished, else repeat... ; ; or something like this :) - ldx NumberOfPlayers - dex - stx temp+1 ; for checking end of the loop only Bubble ldx #0 ;i=x stx temp2 ; sortflag=temp2 + inx ; because NumberOfPlayers start from 1 (not 0) BubbleBobble - ldy TankSequence,x + ldy TankSequence-1,x ; x count from 1 to NumberOfPlayers (we need cout from 0 to NumberOfPlayers-1) lda ResultsTable,y - ldy TankSequence+1,x + ldy TankSequence,x cmp ResultsTable,y bcc nextishigher bne swapvalues nextisequal ; if results are equal, check Direct Hits - ldy TankSequence,x + ldy TankSequence-1,x lda DirectHits,y - ldy TankSequence+1,x + ldy TankSequence,x cmp DirectHits,y bcc nextishigher bne swapvalues nextisequal2 ; if results are equal, check money (H) - ldy TankSequence,x + ldy TankSequence-1,x lda EarnedMoneyH,y - ldy TankSequence+1,x + ldy TankSequence,x cmp EarnedMoneyH,y bcc nextishigher bne swapvalues nextisequal2b ; if results are equal, check money (L) - ldy TankSequence,x + ldy TankSequence-1,x lda EarnedMoneyL,y - ldy TankSequence+1,x + ldy TankSequence,x cmp EarnedMoneyL,y ; beq nextishigher ; this is to block hangs when 2 equal values meet @@ -1119,16 +1117,16 @@ nextisequal2b ;here we must swap values ;because next is smaller than previous swapvalues - lda TankSequence,x + lda TankSequence-1,x sta temp - lda TankSequence+1,x - sta TankSequence,x + lda TankSequence,x + sta TankSequence-1,x lda temp - sta TankSequence+1,x + sta TankSequence,x inc temp2 nextishigher inx - cpx temp+1 ;cpx ^NumberOfPlayers-1 + cpx NumberOfPlayers bne BubbleBobble lda temp2 diff --git a/scorch.bin b/scorch.bin index cb8dd471997bd235a400a2333eb97c0983dfe965..873112ff6f14f9dd496bef4610d7d61095f39af2 100644 GIT binary patch delta 7240 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