mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-09-29 11:55:21 +00:00
Optimized rand16
This commit is contained in:
parent
32021f42fa
commit
49ade7b345
@ -1037,37 +1037,37 @@ end
|
|||||||
asm internal_rand16()#1
|
asm internal_rand16()#1
|
||||||
!zone {
|
!zone {
|
||||||
+asmPlasmRet 0
|
+asmPlasmRet 0
|
||||||
ldx #6
|
ldx #6 ; start check = 1, plus 5 loops to mul by 32 = 6 total
|
||||||
|
ldy seed
|
||||||
lda seed+1
|
lda seed+1
|
||||||
and #$7F ; in case kbd routine has advanced past MAGIC
|
and #$7F ; in case kbd routine has advanced past MAGIC
|
||||||
beq .hiZero
|
|
||||||
sta seed+1
|
sta seed+1
|
||||||
bne .chk ; always taken
|
bne .chk ; zero check - hi byte
|
||||||
|
tya
|
||||||
|
bne .chk ; zero check - lo byte
|
||||||
|
lda #1 ; force 0 seed to go to 1
|
||||||
|
bne .ret ; always taken
|
||||||
.shift
|
.shift
|
||||||
asl seed
|
asl
|
||||||
|
tay
|
||||||
rol seed+1
|
rol seed+1
|
||||||
.chk
|
.chk
|
||||||
lda seed
|
cpy #<MAGIC
|
||||||
sec
|
|
||||||
sbc #<MAGIC
|
|
||||||
tay
|
|
||||||
lda seed+1
|
lda seed+1
|
||||||
sbc #>MAGIC
|
sbc #>MAGIC
|
||||||
bcc .next
|
bcc .next
|
||||||
sty seed
|
|
||||||
sta seed+1
|
sta seed+1
|
||||||
|
tya
|
||||||
|
sbc #<MAGIC
|
||||||
|
!byte $C9 ; CMP imm - to skip next opcode
|
||||||
.next
|
.next
|
||||||
|
tya
|
||||||
dex
|
dex
|
||||||
bne .shift
|
bne .shift ; 32 / 25
|
||||||
.ret
|
.ret
|
||||||
lda seed
|
sta seed
|
||||||
ldy seed+1
|
ldy seed+1
|
||||||
rts
|
rts
|
||||||
.hiZero
|
|
||||||
lda seed ; zero-check
|
|
||||||
bne .next
|
|
||||||
inc seed ; force 0 seed to go to 1
|
|
||||||
bne .ret ; always taken
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1345,8 +1345,10 @@ export def rand16()#1
|
|||||||
word result
|
word result
|
||||||
if recordMode
|
if recordMode
|
||||||
*seed = recordSeed
|
*seed = recordSeed
|
||||||
|
//printf1("%x:", recordSeed)
|
||||||
result = internal_rand16()
|
result = internal_rand16()
|
||||||
recordSeed = *seed
|
recordSeed = *seed
|
||||||
|
//printf1("%x ", recordSeed)
|
||||||
return result
|
return result
|
||||||
fin
|
fin
|
||||||
return internal_rand16()
|
return internal_rand16()
|
||||||
|
Loading…
Reference in New Issue
Block a user