From 9f8bd00748b494459f1af78c22f31a63974fe7b5 Mon Sep 17 00:00:00 2001 From: VicSevenT Date: Wed, 31 Dec 2025 19:58:15 -0600 Subject: [PATCH] Decomp GetItemTypeParameter --- asm/include/main_0200CAFC.inc | 1 + asm/include/main_0200E7E8.inc | 3 --- asm/main_0200CAFC.s | 17 ----------------- asm/main_0200E7E8.s | 21 --------------------- include/item_util_1.h | 6 ++++++ main.lsf | 1 - src/item_util_1.c | 21 +++++++++++++++++++++ src/item_util_2.c | 2 +- 8 files changed, 29 insertions(+), 43 deletions(-) delete mode 100644 asm/include/main_0200E7E8.inc delete mode 100644 asm/main_0200E7E8.s diff --git a/asm/include/main_0200CAFC.inc b/asm/include/main_0200CAFC.inc index a4a78fcb..acc4bc41 100644 --- a/asm/include/main_0200CAFC.inc +++ b/asm/include/main_0200CAFC.inc @@ -50,6 +50,7 @@ .public MultiplyByFixedPoint .public PointsToZero .public RandRangeSafe +.public SprintfStatic__0200E808_EU .public strcpy .public strncpy .public sub_0200EB64 diff --git a/asm/include/main_0200E7E8.inc b/asm/include/main_0200E7E8.inc deleted file mode 100644 index 66d87dc3..00000000 --- a/asm/include/main_0200E7E8.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public GetExclusiveItemOffsetEnsureValid -.public ITEM_DATA_TABLE_PTRS diff --git a/asm/main_0200CAFC.s b/asm/main_0200CAFC.s index 2453e659..d93584d3 100644 --- a/asm/main_0200CAFC.s +++ b/asm/main_0200CAFC.s @@ -1857,20 +1857,3 @@ _0200E800: .word _020AFF88_EU #endif _0200E75C: .word _02098070 arm_func_end LoadItemPspi2n - -#ifdef EUROPE - arm_func_start SprintfStatic__0200E808_EU -SprintfStatic__0200E808_EU: ; 0x0200E808 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__0200E808_EU -#endif - diff --git a/asm/main_0200E7E8.s b/asm/main_0200E7E8.s deleted file mode 100644 index 3bca37cb..00000000 --- a/asm/main_0200E7E8.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "main_0200E7E8.inc" - - .text - - arm_func_start GetExclusiveItemParameter -GetExclusiveItemParameter: ; 0x0200E7E8 - stmdb sp!, {r3, lr} - bl GetExclusiveItemOffsetEnsureValid - ldr r1, _0200E804 ; =ITEM_DATA_TABLE_PTRS -#ifdef EUROPE - ldr r1, [r1, #4] -#else - ldr r1, [r1] -#endif - add r0, r1, r0, lsl #2 - ldrsh r0, [r0, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0200E804: .word ITEM_DATA_TABLE_PTRS - arm_func_end GetExclusiveItemParameter diff --git a/include/item_util_1.h b/include/item_util_1.h index 2d3eac33..9aee4be6 100644 --- a/include/item_util_1.h +++ b/include/item_util_1.h @@ -3,6 +3,10 @@ #include "util.h" +#ifdef EUROPE +void SprintfStatic__0200E808_EU(char* buf, const char* fmt, ...); +#endif + u8 GetExclusiveItemType(s16 item_id); s16 GetExclusiveItemOffsetEnsureValid(s16 item_id); @@ -10,4 +14,6 @@ s16 GetExclusiveItemOffsetEnsureValid(s16 item_id); // In particular, checks if the "is valid" flag is set on its item_p.bin entry. bool8 IsItemValid(s16 item_id); +s16 GetExclusiveItemParameter(s16 item_id); + #endif //PMDSKY_ITEM_UTIL_1_H diff --git a/main.lsf b/main.lsf index 8ff610ff..60e5c837 100644 --- a/main.lsf +++ b/main.lsf @@ -40,7 +40,6 @@ Static main Object src/item_util_4.o Object asm/main_0200CAFC.o Object src/item_util_1.o - Object asm/main_0200E7E8.o Object src/item_util_2.o Object asm/main_0200EB30.o Object src/main_0200ECFC.o diff --git a/src/item_util_1.c b/src/item_util_1.c index f27dea92..438aa9b2 100644 --- a/src/item_util_1.c +++ b/src/item_util_1.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "item_util_1.h" #include "item.h" @@ -8,6 +9,17 @@ struct item_data_entry_alt { extern struct item_data_entry *ITEM_DATA_TABLE_PTRS[3]; +extern s32 vsprintf(u8* str, const u8* format, va_list ap); + +#ifdef EUROPE +void SprintfStatic__0200E808_EU(char* buf, const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + vsprintf(buf, fmt, args); +} +#endif + u8 GetExclusiveItemType(s16 item_id) { item_id = GetExclusiveItemOffsetEnsureValid(item_id); #ifdef EUROPE @@ -34,3 +46,12 @@ bool8 IsItemValid(s16 item_id) return FALSE; } + +s16 GetExclusiveItemParameter(s16 item_id) { + item_id = GetExclusiveItemOffsetEnsureValid(item_id); +#ifdef EUROPE + return ((struct item_data_entry_alt**) (void**)ITEM_DATA_TABLE_PTRS)[1][item_id].unk2; +#else + return ((struct item_data_entry_alt**) (void**)ITEM_DATA_TABLE_PTRS)[0][item_id].unk2; +#endif +} diff --git a/src/item_util_2.c b/src/item_util_2.c index c0a7fa70..6edebf3e 100644 --- a/src/item_util_2.c +++ b/src/item_util_2.c @@ -9,7 +9,7 @@ extern const char ITEM_NAME_FORMAT_INDIGO; extern const char ITEM_NAME_FORMAT_PLAIN; extern const char ITEM_NAME_FORMAT_CREAM; -extern char* SprintfStatic__0200E808_EU(char*, const char*, ...); +// extern char* SprintfStatic__0200E808_EU(char*, const char*, ...); extern u8* strcpy(u8*, u8*); extern s32 vsprintf(u8* str, const u8* format, va_list ap);