From da2f0948d3875b623285e1dba1c9052c5c7b8b84 Mon Sep 17 00:00:00 2001 From: Stefan Date: Thu, 16 Jul 2026 13:57:03 +0200 Subject: [PATCH 1/2] Change clc to sec in math operations Analysis done. --- src/desk_acc/cd.remote.s | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/desk_acc/cd.remote.s b/src/desk_acc/cd.remote.s index 7ebd9c3f2..e5d38399e 100644 --- a/src/desk_acc/cd.remote.s +++ b/src/desk_acc/cd.remote.s @@ -2284,7 +2284,7 @@ PRNGMathLoop1: PRNGMathLoop2: cmp HexTrackCount0Base bmi ExitMathLoop2 - clc + sec sbc HexTrackCount0Base jmp PRNGMathLoop2 @@ -2337,10 +2337,8 @@ CPLLoop: ;;; ============================================================ - ;; TODO: Analysis - WTF is going on here?? This *seems* like an attempt to convert from BCD to binary, but it's... not. It's kinda wonky. .proc Hex2BCDSorta stx Hex2BCDSaveX - ;; TODO: Analysis - The return values from this function seem bizarre and inexplicable. Better analysis needs to be done on this code. sty Hex2BCDSaveY ldx #$00 @@ -2348,7 +2346,7 @@ DivideBy10: cmp #$0a bmi TenOrLess inx - clc + sec sbc #$0a jmp DivideBy10 From c354adccb5bcf82a3341bc4ca8c243ade776fd3a Mon Sep 17 00:00:00 2001 From: Stefan Date: Sun, 19 Jul 2026 22:12:21 +0200 Subject: [PATCH 2/2] Some cleanup --- src/desk_acc/cd.remote.s | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/desk_acc/cd.remote.s b/src/desk_acc/cd.remote.s index e5d38399e..1126ed310 100644 --- a/src/desk_acc/cd.remote.s +++ b/src/desk_acc/cd.remote.s @@ -2233,7 +2233,7 @@ FoundUnplayedTrack: lda #$ff sta (PlayedListPtr),y tya - jsr Hex2BCDSorta + jsr Hex2BCD sta BCDRandomPickedTrk pla @@ -2283,8 +2283,8 @@ PRNGMathLoop1: PRNGMathLoop2: cmp HexTrackCount0Base - bmi ExitMathLoop2 - sec + bcc ExitMathLoop2 + sec ; original code was clc sbc HexTrackCount0Base jmp PRNGMathLoop2 @@ -2337,16 +2337,16 @@ CPLLoop: ;;; ============================================================ -.proc Hex2BCDSorta +.proc Hex2BCD stx Hex2BCDSaveX sty Hex2BCDSaveY ldx #$00 DivideBy10: cmp #$0a - bmi TenOrLess + bcc TenOrLess inx - sec + sec ; original code was clc sbc #$0a jmp DivideBy10 @@ -2369,7 +2369,7 @@ Hex2BCDSaveX := *+1 Hex2BCDTemp: .byte $00 -.endproc ; Hex2BCDSorta +.endproc ; Hex2BCD ;;; ============================================================