Decomp GetItemTypeParameter

This commit is contained in:
VicSevenT 2025-12-31 19:58:15 -06:00
parent 1d5b73adc8
commit 9f8bd00748
8 changed files with 29 additions and 43 deletions

View File

@ -50,6 +50,7 @@
.public MultiplyByFixedPoint
.public PointsToZero
.public RandRangeSafe
.public SprintfStatic__0200E808_EU
.public strcpy
.public strncpy
.public sub_0200EB64

View File

@ -1,3 +0,0 @@
#pragma once
.public GetExclusiveItemOffsetEnsureValid
.public ITEM_DATA_TABLE_PTRS

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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);