1
0
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:
Brad Smith 2016-07-11 20:48:47 -04:00
parent 06bb95d197
commit 32d000fb4c

View File

@ -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