1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start SeedRng
SeedRng:
push {r4,lr}
ldr r4, _08006170
ldrb r2, [r0]
ldrb r1, [r0, 0x1]
muls r2, r1
ldrb r3, [r0, 0x2]
ldrb r1, [r0, 0x3]
muls r1, r3
ldr r3, _08006174
adds r1, r3
adds r2, r1
ldrb r1, [r0, 0x4]
ldrb r0, [r0, 0x5]
muls r0, r1
adds r2, r0
str r2, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08006170: .4byte gUnknown_203B07C
_08006174: .4byte 0x0000d305
thumb_func_end SeedRng
thumb_func_start Random16
Random16:
ldr r2, _08006188
ldr r1, [r2]
ldr r0, _0800618C
muls r0, r1
adds r0, 0x1
str r0, [r2]
asrs r0, 16
bx lr
.align 2, 0
_08006188: .4byte gUnknown_203B07C
_0800618C: .4byte 0x5d588b65
thumb_func_end Random16
thumb_func_start Random
Random:
push {r4,lr}
bl Random16
adds r4, r0, 0
lsls r4, 16
asrs r4, 16
bl Random16
lsls r0, 16
asrs r0, 16
lsls r4, 16
orrs r4, r0
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end Random
thumb_func_start RandomCapped
RandomCapped:
push {r4,lr}
adds r4, r0, 0
bl Random
ldr r1, _080061C8
ands r0, r1
muls r0, r4
asrs r0, 16
ands r0, r1
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080061C8: .4byte 0x0000ffff
thumb_func_end RandomCapped
thumb_func_start RandomRange
RandomRange:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
cmp r5, r4
beq _080061EC
cmp r5, r4
blt _080061E4
subs r0, r5, r4
bl RandomCapped
adds r0, r4
b _080061EC
_080061E4:
subs r0, r4, r5
bl RandomCapped
adds r0, r5
_080061EC:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end RandomRange
thumb_func_start GetRngState
GetRngState:
ldr r0, _080061FC
ldr r0, [r0]
bx lr
.align 2, 0
_080061FC: .4byte gUnknown_203B07C
thumb_func_end GetRngState
thumb_func_start ReseedRng
ReseedRng:
push {r4,lr}
ldr r4, _08006214
str r0, [r4]
bl Random
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08006214: .4byte gUnknown_203B07C
thumb_func_end ReseedRng
.align 2, 0 @ Don't pad with nop.
|