From 2ea04fcaf7a5a83879ceeeebc6b29055829bcce9 Mon Sep 17 00:00:00 2001 From: Zur3l <90565581+Zur3l@users.noreply.github.com> Date: Sat, 11 Jul 2026 16:00:04 -0400 Subject: [PATCH] Decomp GetActualBuyPrice --- .../{main_0200D160.inc => main_0200D1A8.inc} | 1 - asm/{main_0200D160.s => main_0200D1A8.s} | 25 +------------------ include/item_util_4.h | 1 + main.lsf | 2 +- src/item_util_4.c | 12 +++++++++ 5 files changed, 15 insertions(+), 26 deletions(-) rename asm/include/{main_0200D160.inc => main_0200D1A8.inc} (97%) rename asm/{main_0200D160.s => main_0200D1A8.s} (98%) diff --git a/asm/include/main_0200D160.inc b/asm/include/main_0200D1A8.inc similarity index 97% rename from asm/include/main_0200D160.inc rename to asm/include/main_0200D1A8.inc index 4d33a0e5..3070ab77 100644 --- a/asm/include/main_0200D160.inc +++ b/asm/include/main_0200D1A8.inc @@ -9,7 +9,6 @@ .public GetDungeonGroup .public GetExclusiveItemType .public GetItemActionName -.public GetItemBuyPrice .public GetItemCategory .public GetItemName .public GetItemPaletteId diff --git a/asm/main_0200D160.s b/asm/main_0200D1A8.s similarity index 98% rename from asm/main_0200D160.s rename to asm/main_0200D1A8.s index af7a71e7..313f15a0 100644 --- a/asm/main_0200D160.s +++ b/asm/main_0200D1A8.s @@ -1,31 +1,8 @@ .include "asm/macros.inc" - .include "main_0200D160.inc" + .include "main_0200D1A8.inc" .text - arm_func_start GetActualBuyPrice -GetActualBuyPrice: ; 0x0200D160 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r0, [r4, #4] - bl IsShoppableItem - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrsh r0, [r4, #4] - bl IsThrownItem - cmp r0, #0 - ldrsh r0, [r4, #4] - beq _0200D1A0 - bl GetItemBuyPrice - ldrh r1, [r4, #2] - mul r0, r1, r0 - ldmia sp!, {r4, pc} -_0200D1A0: - bl GetItemBuyPrice - ldmia sp!, {r4, pc} - arm_func_end GetActualBuyPrice - arm_func_start GetActualSellPrice GetActualSellPrice: ; 0x0200D1A8 stmdb sp!, {r4, lr} diff --git a/include/item_util_4.h b/include/item_util_4.h index 00924033..b5005a16 100644 --- a/include/item_util_4.h +++ b/include/item_util_4.h @@ -18,6 +18,7 @@ void BulkItemToItem(struct item* item, struct bulk_item* bulk_item); void ItemToBulkItem(struct bulk_item* bulk, struct item* item); s32 GetDisplayedBuyPrice(struct item* item); s32 GetDisplayedSellPrice(struct item* item); +s32 GetActualBuyPrice(struct item* item); #endif //PMDSKY_ITEM_UTIL_4_H diff --git a/main.lsf b/main.lsf index da06a94a..262e1680 100644 --- a/main.lsf +++ b/main.lsf @@ -58,7 +58,7 @@ Static main Object asm/main_0200C5B4.o Object src/item_util.o Object src/item_util_4.o - Object asm/main_0200D160.o + Object asm/main_0200D1A8.o Object src/item_util_1.o Object asm/main_0200EB30.o Object src/main_0200ECFC.o diff --git a/src/item_util_4.c b/src/item_util_4.c index 7b431632..88dd752b 100644 --- a/src/item_util_4.c +++ b/src/item_util_4.c @@ -10,6 +10,7 @@ extern void ItemZInit(); extern u16 GetItemBuyPrice(s16); extern u16 GetItemSellPrice(s16); extern s32 GetMoneyQuantity(struct item*); +extern bool8 IsShoppableItem(s16); extern bool8 IsThrownItem(s16); BOOL IsLosableItem(struct item* item) @@ -227,3 +228,14 @@ s32 GetDisplayedSellPrice(struct item* item) } return GetItemSellPrice(item->id); } + +s32 GetActualBuyPrice(struct item* item) +{ + if (!IsShoppableItem(item->id)) { + return 0; + } + if (IsThrownItem(item->id)) { + return item->quantity * GetItemBuyPrice(item->id); + } + return GetItemBuyPrice(item->id); +}