some obvious optimizations

This commit is contained in:
spannerisms
2021-02-14 01:44:05 -05:00
parent d9946e8f2a
commit 6be396543e
2 changed files with 76 additions and 58 deletions

View File

@@ -524,58 +524,77 @@ DrawPendantCrystalDiagram:
REP #$30 ; Set 16-bit accumulator & index registers REP #$30 ; Set 16-bit accumulator & index registers
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
- -
LDA.l .row0, X : STA $12EA, X LDA.l .row0, X : STA $12EA, X
LDA.l .row1, X : STA $132A, X LDA.l .row1, X : STA $132A, X
LDA.l .row2, X : STA $136A, X LDA.l .row2, X : STA $136A, X
LDA.l .row3, X : STA $13AA, X LDA.l .row3, X : STA $13AA, X
LDA.l .row4, X : STA $13EA, X LDA.l .row4, X : STA $13EA, X
LDA.l .row5, X : STA $142A, X LDA.l .row5, X : STA $142A, X
LDA.l .row6, X : STA $146A, X LDA.l .row6, X : STA $146A, X
LDA.l .row7, X : STA $14AA, X LDA.l .row7, X : STA $14AA, X
LDA.l .row8, X : STA $14EA, X LDA.l .row8, X : STA $14EA, X
INX #2 : CPX.w #$0014 : BCC - INX #2 : CPX.w #$0014 : BCC -
;pendants ; pendants
LDA $7EF374 : AND.w #$0004 : BEQ + ; pendant of courage (green) LDA $7EF374
LDA.w #$3D2B : STA $1332
LDA.w #$3D2C : STA $1334 LSR : BCC + ; pendant of wisdom (red)
LDA.w #$3D2D : STA $1372 LDX.w #$252B
LDA.w #$3D2E : STA $1374 STX.w $13B6
+ LDA $7EF374 : AND.w #$0002 : BEQ + ; pendant of power (blue) INX : STX.w $13B8
LDA.w #$2D2B : STA $13AE INX : STX.w $13F6
LDA.w #$2D2C : STA $13B0 INX : STX.w $13F8
LDA.w #$2D2D : STA $13EE
LDA.w #$2D2E : STA $13F0 + LSR : BCC + ; pendant of power (blue)
+ LDA $7EF374 : AND.w #$0001 : BEQ + ; pendant of wisdom (red) LDX.w #$2D2B
LDA.w #$252B : STA $13B6 STX.w $13AE
LDA.w #$252C : STA $13B8 INX : STX.w $13B0
LDA.w #$252D : STA $13F6 INX : STX.w $13EE
LDA.w #$252E : STA $13F8 INX : STX.w $13F0
+ LSR : BCC + ; pendant of courage (green)
LDX.w #$3D2B
STX.w $1332
INX : STX.w $1334
INX : STX.w $1372
INX : STX.w $1374
+ +
;crystals
LDA $7EF37A : AND.w #$0002 : BEQ + ; crystal 1
LDA.w #$2D44 : STA $14AC ; crystals
LDA.w #$2D45 : STA $14AE LDA $7EF37A
+ LDA $7EF37A : AND.w #$0010 : BEQ + ; crystal 2 LDX.w #$2D44
LDA.w #$2D44 : STA $146E LDY.w #$2D45
LDA.w #$2D45 : STA $1470
+ LDA $7EF37A : AND.w #$0040 : BEQ + ; crystal 3 BIT.w #$0002 : BEQ + ; crystal 1
LDA.w #$2D44 : STA $14B0 STX.w $14AC
LDA.w #$2D45 : STA $14B2 STY.w $14AE
+ LDA $7EF37A : AND.w #$0020 : BEQ + ; crystal 4 + BIT.w #$0010 : BEQ + ; crystal 2
LDA.w #$2D44 : STA $1472 STX.w $146E
LDA.w #$2D45 : STA $1474 STY.w $1470
+ LDA $7EF37A : AND.w #$0004 : BEQ + ; crystal 5 + BIT.w #$0040 : BEQ + ; crystal 3
LDA.w #$2544 : STA $14B4 STX.w $14B0
LDA.w #$2545 : STA $14B6 STY.w $14B2
+ LDA $7EF37A : AND.w #$0001 : BEQ + ; crystal 6 + BIT.w #$0020 : BEQ + ; crystal 4
LDA.w #$2544 : STA $1476 STX.w $1472
LDA.w #$2545 : STA $1478 STY.w $1474
+ LDA $7EF37A : AND.w #$0008 : BEQ + ; crystal 7 + BIT.w #$0008 : BEQ + ; crystal 7
LDA.w #$2D44 : STA $14B8 STX.w $14B8
LDA.w #$2D45 : STA $14BA STY.w $14BA
+ +
LDX.w #$2544
LDY.w #$2545
BIT.w #$0004 : BEQ + ; crystal 5
STX.w $14B4
STY.w $14B6
+ BIT.w #$0001 : BEQ + ; crystal 6
STX.w $1476
STY.w $1478
+
PLB : PLP PLB : PLP
RTL RTL
;================================================================================ ;================================================================================

View File

@@ -627,16 +627,15 @@ RTL
; caller is responsible for setting 8-bit mode and preserving X and Y ; caller is responsible for setting 8-bit mode and preserving X and Y
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CountBits: CountBits:
PHB : PHK : PLB TAX ; Save a copy of value
TAX ; Save a copy of value LSR #4 ; Shift down hi nybble, Leave <3> in C
LSR #4 ; Shift down hi nybble, Leave <3> in C TAY ; And save <7:4> in Y
TAY ; And save <7:4> in Y TXA ; Recover value
TXA ; Recover value AND.b #$07 ; Put out <2:0> in X
AND.b #$07 ; Put out <2:0> in X TAX ; And save in X
TAX ; And save in X LDA.l NybbleBitCounts, X ; Fetch count for <2:0>
LDA NybbleBitCounts, Y; Fetch count for Y TYX ; get <7:4>
ADC.l NybbleBitCounts, X; Add count for X & C ADC.l NybbleBitCounts, X ; Add count for Y & C
PLB
RTL RTL
; Look up table of bit counts in the values $00-$0F ; Look up table of bit counts in the values $00-$0F