From 74f0a49c5a5add800fd7e8e698d875fe7ce1be63 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 19 Jan 2026 10:38:22 -0800 Subject: [PATCH] unify bag item struct and use proper header --- asm/main_0200ED1C.s | 41 ----------------------------------------- include/item.h | 3 +++ include/main_0200ECFC.h | 13 ++++++------- main.lsf | 1 - src/main_0200ECFC.c | 23 ++++++++++++++++++++++- src/script_variable.c | 2 -- 6 files changed, 31 insertions(+), 52 deletions(-) delete mode 100644 asm/main_0200ED1C.s diff --git a/asm/main_0200ED1C.s b/asm/main_0200ED1C.s deleted file mode 100644 index 3c3b1c25..00000000 --- a/asm/main_0200ED1C.s +++ /dev/null @@ -1,41 +0,0 @@ - .include "asm/macros.inc" - .include "main_0200ED1C.inc" - - .text - - arm_func_start SetMoneyCarried -SetMoneyCarried: ; 0x0200ED1C - ldr r1, _0200ED50 ; =0x0001869F - cmp r0, r1 - movgt r0, r1 - bgt _0200ED34 - cmp r0, #0 - movlt r0, #0 -_0200ED34: - ldr r1, _0200ED54 ; =BAG_ITEMS_PTR_MIRROR - ldr r2, [r1] - ldrb r1, [r2, #0x388] - add r1, r2, r1, lsl #2 - add r1, r1, #0x1000 - str r0, [r1, #0x394] - bx lr - .align 2, 0 -_0200ED50: .word 0x0001869F -_0200ED54: .word BAG_ITEMS_PTR_MIRROR - arm_func_end SetMoneyCarried - - arm_func_start AddMoneyCarried -AddMoneyCarried: ; 0x0200ED58 - ldr r1, _0200ED7C ; =BAG_ITEMS_PTR_MIRROR - ldr ip, _0200ED80 ; =SetMoneyCarried - ldr r2, [r1] - ldrb r1, [r2, #0x388] - add r1, r2, r1, lsl #2 - add r1, r1, #0x1000 - ldr r1, [r1, #0x394] - add r0, r0, r1 - bx ip - .align 2, 0 -_0200ED7C: .word BAG_ITEMS_PTR_MIRROR -_0200ED80: .word SetMoneyCarried - arm_func_end AddMoneyCarried diff --git a/include/item.h b/include/item.h index ca83a6f2..95fccfb9 100644 --- a/include/item.h +++ b/include/item.h @@ -1640,6 +1640,9 @@ struct bag_items_inner { struct bag_items { u8 fill0[0x384]; /* 0x384 */ struct bag_items_inner *bag_items; + u8 unk388; + u8 fill2[0x1009]; + u32 maybeMoney[]; // Unknown size, but indexed with an u8 }; struct bulk_item diff --git a/include/main_0200ECFC.h b/include/main_0200ECFC.h index 338dce1c..6571e6af 100644 --- a/include/main_0200ECFC.h +++ b/include/main_0200ECFC.h @@ -1,15 +1,14 @@ #ifndef PMDSKY_MAIN_0200ECFC_H #define PMDSKY_MAIN_0200ECFC_H -typedef struct { - u8 fill1[0x388]; - u8 unk388; - u8 fill2[0x1009]; - u32 maybeMoney[]; // Unknown size, but indexed with an u8 -} bag_items; - // Gets the amount of money the player is carrying. // return: value u32 GetMoneyCarried(void); +// Sets the amount of money the player is carrying. +void SetMoneyCarried(s32 amount); + +// Adds the amount of to the money the player is carrying. +void AddMoneyCarried(s32 amount); + #endif //PMDSKY_MAIN_0200ECFC_H diff --git a/main.lsf b/main.lsf index 235a35ea..e044aab5 100644 --- a/main.lsf +++ b/main.lsf @@ -42,7 +42,6 @@ Static main Object src/item_util_1.o Object asm/main_0200EB30.o Object src/main_0200ECFC.o - Object asm/main_0200ED1C.o Object src/main_0200EDC0.o Object asm/main_0200EDFC.o Object src/exclusive_item.o diff --git a/src/main_0200ECFC.c b/src/main_0200ECFC.c index 331b0340..1a8392c6 100644 --- a/src/main_0200ECFC.c +++ b/src/main_0200ECFC.c @@ -1,9 +1,30 @@ #include "main_0200ECFC.h" +#include "item.h" -extern bag_items* BAG_ITEMS_PTR_MIRROR; +extern struct bag_items* BAG_ITEMS_PTR_MIRROR; u32 GetMoneyCarried(void) { int tmp = BAG_ITEMS_PTR_MIRROR->unk388; return BAG_ITEMS_PTR_MIRROR->maybeMoney[tmp]; } + +void SetMoneyCarried(s32 amount) +{ + s32 var_r0; + + var_r0 = amount; + if (var_r0 > 99999) { + var_r0 = 99999; + } else if (var_r0 < 0) { + var_r0 = 0; + } + + BAG_ITEMS_PTR_MIRROR->maybeMoney[BAG_ITEMS_PTR_MIRROR->unk388] = var_r0; +} + +void AddMoneyCarried(s32 amount) +{ + SetMoneyCarried(amount + BAG_ITEMS_PTR_MIRROR->maybeMoney[BAG_ITEMS_PTR_MIRROR->unk388]); +} + diff --git a/src/script_variable.c b/src/script_variable.c index 1beac63b..e1348365 100644 --- a/src/script_variable.c +++ b/src/script_variable.c @@ -37,8 +37,6 @@ extern s32 GetMoneyStored(); extern s32 GetLanguageType(); extern enum game_mode GetGameMode(); extern s32 GetNotifyNote(); -extern s32 AddMoneyCarried(s32 arg0); -extern s32 SetMoneyCarried(s32 arg0); extern s32 SetMoneyStored(s32 arg0); extern s32 SetNotifyNote(s32 arg0); extern void InitDungeonListScriptVars();