summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lsf6
-rw-r--r--arm9/asm/options.s (renamed from arm9/asm/unk_02024F30.s)6
-rw-r--r--arm9/asm/player_data.s (renamed from arm9/asm/unk_020238C4.s)4
-rw-r--r--arm9/asm/scrcmd_14.s14
-rw-r--r--arm9/asm/unk_02028910.s81
-rw-r--r--arm9/asm/unk_020377F0.s6
-rw-r--r--arm9/asm/unk_0206E2F0.s2
-rw-r--r--arm9/global.inc14
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s2
-rw-r--r--arm9/src/coins.c44
10 files changed, 71 insertions, 108 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 5d663de4..fa1828ce 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -84,11 +84,11 @@ Static arm9
Object unk_02022504.o
Object save.o
Object unk_0202376C.o
- Object unk_020238C4.o
+ Object player_data.o
Object unk_02023AC4.o
Object unk_02023C40.o
Object unk_02024E64.o
- Object unk_02024F30.o
+ Object options.o
Object unk_020250A4.o
Object unk_02025484.o
Object unk_020254B8.o
@@ -98,7 +98,7 @@ Static arm9
Object unk_02027E30.o
Object unk_020281E0.o
Object unk_020286F8.o
- Object unk_02028910.o
+ Object coins.o
Object unk_02028980.o
Object unk_02029A84.o
Object unk_02029AE0.o
diff --git a/arm9/asm/unk_02024F30.s b/arm9/asm/options.s
index 0ee173aa..5869b5b1 100644
--- a/arm9/asm/unk_02024F30.s
+++ b/arm9/asm/options.s
@@ -11,7 +11,7 @@ FUN_02024F30: ; 0x02024F30
mov r1, #0x2
bl AllocFromHeap
add r4, r0, #0x0
- bl FUN_02024F50
+ bl Options_init
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -24,8 +24,8 @@ FUN_02024F44: ; 0x02024F44
nop
_02024F4C: .word MI_CpuCopy8
- thumb_func_start FUN_02024F50
-FUN_02024F50: ; 0x02024F50
+ thumb_func_start Options_init
+Options_init: ; 0x02024F50
push {r4, lr}
add r4, r0, #0x0
mov r1, #0x0
diff --git a/arm9/asm/unk_020238C4.s b/arm9/asm/player_data.s
index 8a32582c..edcf1391 100644
--- a/arm9/asm/unk_020238C4.s
+++ b/arm9/asm/player_data.s
@@ -17,12 +17,12 @@ Sav2_PlayerData_init: ; 0x020238C8
mov r2, #0x2c
bl MIi_CpuClearFast
add r0, r4, #0x0
- bl FUN_02024F50
+ bl Options_init
add r0, r4, #0x4
bl PlayerData_Clear
add r0, r4, #0x0
add r0, #0x24
- bl FUN_02028910
+ bl InitCoins
add r4, #0x26
add r0, r4, #0x0
bl FUN_02029E48
diff --git a/arm9/asm/scrcmd_14.s b/arm9/asm/scrcmd_14.s
index 516d9cf4..f8addc83 100644
--- a/arm9/asm/scrcmd_14.s
+++ b/arm9/asm/scrcmd_14.s
@@ -87,7 +87,7 @@ FUN_02043ACC: ; 0x02043ACC
bl GetVarPointer
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_02028930
+ bl CheckCoins
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -110,7 +110,7 @@ FUN_02043AFC: ; 0x02043AFC
bl VarGet
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_02028934
+ bl GiveCoins
mov r0, #0x0
pop {r3-r5, pc}
@@ -131,7 +131,7 @@ FUN_02043B28: ; 0x02043B28
bl VarGet
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_0202896C
+ bl TakeCoins
mov r0, #0x0
pop {r3-r5, pc}
@@ -153,7 +153,7 @@ FUN_02043B54: ; 0x02043B54
add r1, r0, #0x0
ldrh r1, [r1, #0x0]
add r0, r4, #0x0
- bl FUN_0202896C
+ bl TakeCoins
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -182,7 +182,7 @@ FUN_02043B84: ; 0x02043B84
bl ScriptReadWord
add r4, r0, #0x0
add r0, r6, #0x0
- bl FUN_02028930
+ bl CheckCoins
cmp r0, r4
bhs _02043BC8
mov r0, #0x0
@@ -222,7 +222,7 @@ FUN_02043BD0: ; 0x02043BD0
bl GetVarPointer
ldrh r5, [r0, #0x0]
add r0, r6, #0x0
- bl FUN_02028930
+ bl CheckCoins
cmp r0, r5
bhs _02043C1E
mov r0, #0x0
@@ -260,7 +260,7 @@ FUN_02043C28: ; 0x02043C28
bl VarGet
add r1, r0, #0x0
add r0, r6, #0x0
- bl FUN_02028954
+ bl CanGiveCoins
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
diff --git a/arm9/asm/unk_02028910.s b/arm9/asm/unk_02028910.s
deleted file mode 100644
index 7dd124e0..00000000
--- a/arm9/asm/unk_02028910.s
+++ /dev/null
@@ -1,81 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02028910
-FUN_02028910: ; 0x02028910
- mov r1, #0x0
- strh r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02028918
-FUN_02028918: ; 0x02028918
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _0202892C ; =0x0000C350
- add r4, r1, #0x0
- cmp r4, r0
- bls _02028928
- bl ErrorHandling
-_02028928:
- strh r4, [r5, #0x0]
- pop {r3-r5, pc}
- .balign 4
-_0202892C: .word 0x0000C350
-
- thumb_func_start FUN_02028930
-FUN_02028930: ; 0x02028930
- ldrh r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02028934
-FUN_02028934: ; 0x02028934
- ldrh r3, [r0, #0x0]
- ldr r2, _02028950 ; =0x0000C350
- cmp r3, r2
- blo _02028940
- mov r0, #0x0
- bx lr
-_02028940:
- add r1, r3, r1
- strh r1, [r0, #0x0]
- ldrh r1, [r0, #0x0]
- cmp r1, r2
- bls _0202894C
- strh r2, [r0, #0x0]
-_0202894C:
- mov r0, #0x1
- bx lr
- .balign 4
-_02028950: .word 0x0000C350
-
- thumb_func_start FUN_02028954
-FUN_02028954: ; 0x02028954
- ldrh r0, [r0, #0x0]
- add r1, r1, r0
- ldr r0, _02028968 ; =0x0000C350
- cmp r1, r0
- bhi _02028962
- mov r0, #0x1
- bx lr
-_02028962:
- mov r0, #0x0
- bx lr
- nop
-_02028968: .word 0x0000C350
-
- thumb_func_start FUN_0202896C
-FUN_0202896C: ; 0x0202896C
- ldrh r2, [r0, #0x0]
- cmp r2, r1
- bhs _02028976
- mov r0, #0x0
- bx lr
-_02028976:
- sub r1, r2, r1
- strh r1, [r0, #0x0]
- mov r0, #0x1
- bx lr
- .balign 4
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index a063db6f..d8ae2ca5 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -2379,7 +2379,7 @@ _02038956:
str r0, [sp, #0x4]
ldr r0, [sp, #0x0]
add r6, r1, #0x0
- bl FUN_02028930
+ bl CheckCoins
str r0, [sp, #0x8]
ldr r0, [r5, #0x4]
ldr r1, [r5, #0x8]
@@ -2397,7 +2397,7 @@ _02038956:
ldr r0, [r4, #0xc]
bl FUN_0202390C
ldr r1, [r5, #0x0]
- bl FUN_02028918
+ bl SetCoins
add r0, r7, #0x0
bl FUN_0205F6C8
ldr r1, [r5, #0x18]
@@ -2435,7 +2435,7 @@ FUN_020389CC: ; 0x020389CC
str r4, [r4, #0xc]
ldr r0, [r5, #0xc]
bl FUN_0202390C
- bl FUN_02028930
+ bl CheckCoins
str r0, [r4, #0x0]
bl FUN_020126FC
str r0, [r4, #0x4]
diff --git a/arm9/asm/unk_0206E2F0.s b/arm9/asm/unk_0206E2F0.s
index 6d87f0fa..87dc3013 100644
--- a/arm9/asm/unk_0206E2F0.s
+++ b/arm9/asm/unk_0206E2F0.s
@@ -128,7 +128,7 @@ FUN_0206E394: ; 0x0206E394
FUN_0206E39C: ; 0x0206E39C
push {r3, lr}
bl FUN_0202390C
- bl FUN_02028930
+ bl CheckCoins
pop {r3, pc}
thumb_func_start FUN_0206E3A8
diff --git a/arm9/global.inc b/arm9/global.inc
index 9da41335..c50189e6 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -1588,7 +1588,7 @@
.extern FUN_02024F18
.extern FUN_02024F30
.extern FUN_02024F44
-.extern FUN_02024F50
+.extern Options_init
.extern FUN_02024F9C
.extern FUN_02024FD8
.extern FUN_02024FE0
@@ -1897,12 +1897,12 @@
.extern FUN_02028854
.extern FUN_0202888C
.extern FUN_020288AC
-.extern FUN_02028910
-.extern FUN_02028918
-.extern FUN_02028930
-.extern FUN_02028934
-.extern FUN_02028954
-.extern FUN_0202896C
+.extern InitCoins
+.extern SetCoins
+.extern CheckCoins
+.extern GiveCoins
+.extern CanGiveCoins
+.extern TakeCoins
.extern FUN_02028980
.extern FUN_02028994
.extern FUN_020289A4
diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s
index eb8f906e..db4c4e07 100644
--- a/arm9/modules/05/asm/mod05_021E1AD8.s
+++ b/arm9/modules/05/asm/mod05_021E1AD8.s
@@ -1956,7 +1956,7 @@ MOD05_021E29C8: ; 0x021E29C8
str r0, [sp, #0x10]
ldr r0, [r6, #0xc]
bl FUN_0202390C
- bl FUN_02028930
+ bl CheckCoins
add r2, r0, #0
mov r0, #1
str r0, [sp]
diff --git a/arm9/src/coins.c b/arm9/src/coins.c
new file mode 100644
index 00000000..80efb768
--- /dev/null
+++ b/arm9/src/coins.c
@@ -0,0 +1,44 @@
+#include "global.h"
+#include "coins.h"
+
+#pragma thumb on
+
+void InitCoins(u16 * coins)
+{
+ *coins = 0;
+}
+
+void SetCoins(u16 * coins, u16 value)
+{
+ GF_ASSERT(value <= MAX_COINS);
+ *coins = value;
+}
+
+u16 CheckCoins(u16 * coins)
+{
+ return *coins;
+}
+
+BOOL GiveCoins(u16 * coins, u16 amount)
+{
+ if (*coins >= MAX_COINS)
+ return FALSE;
+ *coins += amount;
+ if (*coins > MAX_COINS)
+ *coins = MAX_COINS;
+ return TRUE;
+}
+
+BOOL CanGiveCoins(u16 * coins, u16 amount)
+{
+
+ return (u32)(amount + *coins) <= MAX_COINS;
+}
+
+BOOL TakeCoins(u16 * coins, u16 amount)
+{
+ if (*coins < amount)
+ return FALSE;
+ *coins -= amount;
+ return TRUE;
+}