@ Random number routine by Dooby
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.global Random
.arm
.align 2
.section .iwram, "ax", %progbits
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ u32 Random(void)
@ Returns a random word.
@
Random:
ldr a3, =RandomSeed @ Point at seeds.
ldmia a3, {a1, a2} @ Load them.
tst a2, a2, lsr #1 @ Top bit into carry.
movs a4, a1, rrx @ 33 bit rotate right.
adc a2, a2, a2 @ Carry into lsb of Rb.
eor a4, a4, a1, lsl #12 @ (involved!)
eor a1, a4, a4, lsr #20 @ (similarly involved!)
stmia a3, {a1, a2} @ Use these next time.
bx lr
.pool
RandomSeed:
.word 0x87799bf2 @ I used some random
.word 0x0b2833ab @ numbers I liked as seed :)
.end
               (
geocities.com/v_d_d)