@ 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