mirror of
https://github.com/cc65/cc65.git
synced 2024-12-23 19:29:37 +00:00
Fix broken rand() implementation. The high 8 bits were unused, reducing it to a 24-bit implementation (while still doing all the work for a 32-bit one). The best entropy is in the unused high byte, returning these bits in A instead of bits 8-15, which had considerably lower entropy (i.e. rand() & 255 was effectively a 16-bit LCG).
This commit is contained in:
parent
06bb95d197
commit
32d000fb4c
@ -44,7 +44,6 @@ _rand: clc
|
|||||||
lda rand+1
|
lda rand+1
|
||||||
adc #$59
|
adc #$59
|
||||||
sta rand+1
|
sta rand+1
|
||||||
pha
|
|
||||||
lda rand+2
|
lda rand+2
|
||||||
adc #$41
|
adc #$41
|
||||||
sta rand+2
|
sta rand+2
|
||||||
@ -53,8 +52,7 @@ _rand: clc
|
|||||||
lda rand+3
|
lda rand+3
|
||||||
adc #$31
|
adc #$31
|
||||||
sta rand+3
|
sta rand+3
|
||||||
pla ; return bit 8-22 in (X,A)
|
rts ; return bit (16-22,24-31) in (X,A)
|
||||||
rts
|
|
||||||
|
|
||||||
_srand: sta rand+0 ; Store the seed
|
_srand: sta rand+0 ; Store the seed
|
||||||
stx rand+1
|
stx rand+1
|
||||||
|
Loading…
Reference in New Issue
Block a user