summaryrefslogtreecommitdiff
path: root/asm/rng.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-11-01 10:08:48 -0700
committerYamaArashi <shadow962@live.com>2016-11-01 10:16:34 -0700
commit6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch)
treedcea69ec49430f004c17ff71b77587cafd78c69a /asm/rng.s
parentfef81187dce23adc635d7f4b7fd82298eab09ec2 (diff)
split asm files
Diffstat (limited to 'asm/rng.s')
-rw-r--r--asm/rng.s65
1 files changed, 65 insertions, 0 deletions
diff --git a/asm/rng.s b/asm/rng.s
new file mode 100644
index 000000000..1f1e4678c
--- /dev/null
+++ b/asm/rng.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start GenerateRandomNumber
+@ u16 GenerateRandomNumber()
+GenerateRandomNumber: @ 806F5CC
+ ldr r2, =0x03005d80
+ ldr r1, [r2]
+ ldr r0, =0x41c64e6d
+ muls r0, r1
+ ldr r1, =0x00006073
+ adds r0, r1
+ str r0, [r2]
+ ldr r2, =0x020249c0
+ ldr r1, [r2]
+ adds r1, 0x1
+ str r1, [r2]
+ lsrs r0, 16
+ bx lr
+ .pool
+ thumb_func_end GenerateRandomNumber
+
+ thumb_func_start SeedRng
+@ void SeedRng(u16 seed)
+SeedRng: @ 806F5F8
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, =0x03005d80
+ str r0, [r1]
+ ldr r1, =0x020249bc
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end SeedRng
+
+ thumb_func_start SeedRng2
+SeedRng2: @ 806F610
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, =0x03005d84
+ str r0, [r1]
+ bx lr
+ .pool
+ thumb_func_end SeedRng2
+
+ thumb_func_start GenerateRandomNumber2
+GenerateRandomNumber2: @ 806F620
+ ldr r2, =0x03005d84
+ ldr r1, [r2]
+ ldr r0, =0x41c64e6d
+ muls r0, r1
+ ldr r1, =0x00006073
+ adds r0, r1
+ str r0, [r2]
+ lsrs r0, 16
+ bx lr
+ .pool
+ thumb_func_end GenerateRandomNumber2
+
+ .align 2, 0 @ Don't pad with nop.