diff options
Diffstat (limited to 'arm9')
-rw-r--r-- | arm9/arm9.lsf | 6 | ||||
-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.s | 14 | ||||
-rw-r--r-- | arm9/asm/unk_02028910.s | 81 | ||||
-rw-r--r-- | arm9/asm/unk_020377F0.s | 6 | ||||
-rw-r--r-- | arm9/asm/unk_0206E2F0.s | 2 | ||||
-rw-r--r-- | arm9/global.inc | 14 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E1AD8.s | 2 | ||||
-rw-r--r-- | arm9/src/coins.c | 44 |
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; +} |