mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
Small sort optimization
This commit is contained in:
@@ -1076,42 +1076,40 @@ SequenceStart
|
|||||||
; if sortflag=0 then finished, else repeat...
|
; if sortflag=0 then finished, else repeat...
|
||||||
;
|
;
|
||||||
; or something like this :)
|
; or something like this :)
|
||||||
ldx NumberOfPlayers
|
|
||||||
dex
|
|
||||||
stx temp+1 ; for checking end of the loop only
|
|
||||||
|
|
||||||
Bubble
|
Bubble
|
||||||
ldx #0 ;i=x
|
ldx #0 ;i=x
|
||||||
stx temp2 ; sortflag=temp2
|
stx temp2 ; sortflag=temp2
|
||||||
|
inx ; because NumberOfPlayers start from 1 (not 0)
|
||||||
|
|
||||||
BubbleBobble
|
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
|
lda ResultsTable,y
|
||||||
ldy TankSequence+1,x
|
ldy TankSequence,x
|
||||||
cmp ResultsTable,y
|
cmp ResultsTable,y
|
||||||
bcc nextishigher
|
bcc nextishigher
|
||||||
bne swapvalues
|
bne swapvalues
|
||||||
nextisequal
|
nextisequal
|
||||||
; if results are equal, check Direct Hits
|
; if results are equal, check Direct Hits
|
||||||
ldy TankSequence,x
|
ldy TankSequence-1,x
|
||||||
lda DirectHits,y
|
lda DirectHits,y
|
||||||
ldy TankSequence+1,x
|
ldy TankSequence,x
|
||||||
cmp DirectHits,y
|
cmp DirectHits,y
|
||||||
bcc nextishigher
|
bcc nextishigher
|
||||||
bne swapvalues
|
bne swapvalues
|
||||||
nextisequal2
|
nextisequal2
|
||||||
; if results are equal, check money (H)
|
; if results are equal, check money (H)
|
||||||
ldy TankSequence,x
|
ldy TankSequence-1,x
|
||||||
lda EarnedMoneyH,y
|
lda EarnedMoneyH,y
|
||||||
ldy TankSequence+1,x
|
ldy TankSequence,x
|
||||||
cmp EarnedMoneyH,y
|
cmp EarnedMoneyH,y
|
||||||
bcc nextishigher
|
bcc nextishigher
|
||||||
bne swapvalues
|
bne swapvalues
|
||||||
nextisequal2b
|
nextisequal2b
|
||||||
; if results are equal, check money (L)
|
; if results are equal, check money (L)
|
||||||
ldy TankSequence,x
|
ldy TankSequence-1,x
|
||||||
lda EarnedMoneyL,y
|
lda EarnedMoneyL,y
|
||||||
ldy TankSequence+1,x
|
ldy TankSequence,x
|
||||||
cmp EarnedMoneyL,y
|
cmp EarnedMoneyL,y
|
||||||
;
|
;
|
||||||
beq nextishigher ; this is to block hangs when 2 equal values meet
|
beq nextishigher ; this is to block hangs when 2 equal values meet
|
||||||
@@ -1119,16 +1117,16 @@ nextisequal2b
|
|||||||
;here we must swap values
|
;here we must swap values
|
||||||
;because next is smaller than previous
|
;because next is smaller than previous
|
||||||
swapvalues
|
swapvalues
|
||||||
lda TankSequence,x
|
lda TankSequence-1,x
|
||||||
sta temp
|
sta temp
|
||||||
lda TankSequence+1,x
|
lda TankSequence,x
|
||||||
sta TankSequence,x
|
sta TankSequence-1,x
|
||||||
lda temp
|
lda temp
|
||||||
sta TankSequence+1,x
|
sta TankSequence,x
|
||||||
inc temp2
|
inc temp2
|
||||||
nextishigher
|
nextishigher
|
||||||
inx
|
inx
|
||||||
cpx temp+1 ;cpx ^NumberOfPlayers-1
|
cpx NumberOfPlayers
|
||||||
bne BubbleBobble
|
bne BubbleBobble
|
||||||
|
|
||||||
lda temp2
|
lda temp2
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user