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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
.include "constants/gba_constants.s"
.include "constants/species_constants.s"
.include "asm/macros.s"
.syntax unified
.text
thumb_func_start UpdateCoinsWindow
UpdateCoinsWindow: @ 811A704
push {r4,lr}
adds r4, r1, 0
adds r3, r2, 0
lsls r4, 24
lsls r3, 24
movs r1, 0x80
lsls r1, 18
adds r4, r1
lsrs r4, 24
movs r1, 0x80
lsls r1, 17
adds r3, r1
lsrs r3, 24
movs r1, 0x4
adds r2, r4, 0
bl PrintCoins
pop {r4}
pop {r0}
bx r0
thumb_func_end UpdateCoinsWindow
thumb_func_start ShowCoinsWindow
ShowCoinsWindow: @ 811A72C
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r4, r1, 0
adds r3, r2, 0
lsls r4, 24
lsls r3, 24
lsrs r6, r4, 24
movs r0, 0x90
lsls r0, 20
adds r4, r0
lsrs r4, 24
lsrs r5, r3, 24
movs r0, 0xC0
lsls r0, 18
adds r3, r0
lsrs r3, 24
adds r0, r6, 0
adds r1, r5, 0
adds r2, r4, 0
bl MenuDrawTextWindow
mov r0, r8
adds r1, r6, 0
adds r2, r5, 0
bl UpdateCoinsWindow
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end ShowCoinsWindow
thumb_func_start HideCoinsWindow
HideCoinsWindow: @ 811A770
push {r4,lr}
adds r2, r0, 0
adds r3, r1, 0
lsls r2, 24
lsls r3, 24
lsrs r0, r2, 24
movs r1, 0x90
lsls r1, 20
adds r2, r1
lsrs r2, 24
lsrs r1, r3, 24
movs r4, 0xC0
lsls r4, 18
adds r3, r4
lsrs r3, 24
bl MenuZeroFillWindowRect
pop {r4}
pop {r0}
bx r0
thumb_func_end HideCoinsWindow
thumb_func_start PrintCoins
PrintCoins: @ 811A798
push {r4-r7,lr}
sub sp, 0x10
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
adds r5, r1, 0
lsls r2, 24
lsrs r6, r2, 24
lsls r3, 24
lsrs r7, r3, 24
mov r0, sp
adds r1, r4, 0
bl ConvertIntToDecimalString
lsls r1, r5, 1
adds r1, r5
lsls r1, 1
adds r1, 0x21
adds r0, r5, 0x2
lsls r0, 3
subs r1, r0
lsls r1, 24
lsrs r0, r1, 27
subs r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0xE0
lsls r0, 19
ands r0, r1
lsrs r1, r0, 24
ldr r4, _0811A824 @ =gStringVar1
cmp r1, 0
beq _0811A7EA
movs r0, 0xFC
strb r0, [r4]
movs r0, 0x11
strb r0, [r4, 0x1]
movs r0, 0x8
subs r0, r1
strb r0, [r4, 0x2]
adds r4, 0x3
_0811A7EA:
movs r0, 0xFC
strb r0, [r4]
movs r0, 0x11
strb r0, [r4, 0x1]
mov r0, sp
bl StringLength
lsls r0, 16
lsrs r0, 16
subs r0, r5, r0
lsls r1, r0, 1
adds r1, r0
lsls r1, 1
strb r1, [r4, 0x2]
adds r4, 0x3
adds r0, r4, 0
mov r1, sp
bl StringCopy
ldr r0, _0811A828 @ =gOtherText_Coins2
adds r1, r6, 0
adds r2, r7, 0
bl MenuPrint
add sp, 0x10
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0811A824: .4byte gStringVar1
_0811A828: .4byte gOtherText_Coins2
thumb_func_end PrintCoins
thumb_func_start GetCoins
GetCoins: @ 811A82C
ldr r0, _0811A838 @ =gSaveBlock1
ldr r1, _0811A83C @ =0x00000494
adds r0, r1
ldrh r0, [r0]
bx lr
.align 2, 0
_0811A838: .4byte gSaveBlock1
_0811A83C: .4byte 0x00000494
thumb_func_end GetCoins
thumb_func_start GiveCoins
GiveCoins: @ 811A840
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl GetCoins
lsls r0, 16
ldr r1, _0811A858 @ =0x270e0000
cmp r0, r1
bls _0811A85C
movs r0, 0
b _0811A88C
.align 2, 0
_0811A858: .4byte 0x270e0000
_0811A85C:
ldr r0, _0811A874 @ =gSaveBlock1
ldr r1, _0811A878 @ =0x00000494
adds r3, r0, r1
ldrh r1, [r3]
adds r2, r4, r1
lsls r0, r2, 16
lsrs r0, 16
cmp r1, r0
bls _0811A880
ldr r0, _0811A87C @ =0x0000270f
strh r0, [r3]
b _0811A88A
.align 2, 0
_0811A874: .4byte gSaveBlock1
_0811A878: .4byte 0x00000494
_0811A87C: .4byte 0x0000270f
_0811A880:
strh r2, [r3]
ldr r1, _0811A894 @ =0x0000270f
cmp r0, r1
bls _0811A88A
strh r1, [r3]
_0811A88A:
movs r0, 0x1
_0811A88C:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0811A894: .4byte 0x0000270f
thumb_func_end GiveCoins
thumb_func_start TakeCoins
TakeCoins: @ 811A898
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl GetCoins
lsls r0, 16
lsrs r0, 16
cmp r0, r4
bcs _0811A8AE
movs r0, 0
b _0811A8BC
_0811A8AE:
ldr r1, _0811A8C4 @ =gSaveBlock1
ldr r0, _0811A8C8 @ =0x00000494
adds r1, r0
ldrh r0, [r1]
subs r0, r4
strh r0, [r1]
movs r0, 0x1
_0811A8BC:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0811A8C4: .4byte gSaveBlock1
_0811A8C8: .4byte 0x00000494
thumb_func_end TakeCoins
.align 2, 0 @ Don't pad with nop.
|