diff --git a/asm_routines/random16.s b/asm_routines/random16.s index a5e18fe8..cd522cc9 100644 --- a/asm_routines/random16.s +++ b/asm_routines/random16.s @@ -11,35 +11,50 @@ SEEDH = $4F XOR_MAGIC = $7657 ; "vW" + ;============================= + ; random16 + ;============================= + ; takes: + ; not 0, cc = 5+ = 27 + ; not 0, cs = 5+12+19 = 36 + ; $0000 = 5+7+19 = 31 + ; $8000 = 5+6+14 = 25 + ; $XX00 = 5+6+7+19 = 37 random16: - lda SEEDL - beq lowZero ; $0000 and $8000 are special values // ; Do a normal shift - asl SEEDL - lda SEEDH - rol - bcc noEor + lda SEEDL ; 3 + beq lowZero ; $0000 and $8000 are special values ; 2 + + asl SEEDL ; Do a normal shift ; 5 + lda SEEDH ; 3 + rol ; 2 + bcc noEor ; 2 doEor: - ; high byte is in .A - eor #>XOR_MAGIC - sta SEEDH - lda SEEDL - eor #XOR_MAGIC ; 2 + sta SEEDH ; 3 + lda SEEDL ; 3 + eor #XOR_MAGIC - sta SEEDH - lda SEEDL - eor #XOR_MAGIC ; 2 + sta SEEDH ; 3 + lda SEEDL ; 3 + eor #