mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-13 05:47:34 -05:00
Decomped GetItemCategory
This commit is contained in:
@@ -1,12 +1,18 @@
|
||||
#pragma once
|
||||
.public ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
.public AVAILABLE_ITEMS_IN_GROUP_TABLE
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
.public GetDungeonGroup
|
||||
.public GetItemActionName
|
||||
.public GetItemBuyPrice
|
||||
.public GetItemCategory
|
||||
.public GetItemMoveId
|
||||
.public GetItemName
|
||||
.public GetItemPaletteId
|
||||
.public GetItemSellPrice
|
||||
.public GetLanguage
|
||||
.public GetThrownItemQuantityLimit
|
||||
.public HandleSir0Translation
|
||||
.public ITEM_DATA_TABLE_PTRS
|
||||
.public ITEM_TABLES_PTRS_1
|
||||
@@ -17,7 +23,6 @@
|
||||
.public MultiplyByFixedPoint
|
||||
.public PointsToZero
|
||||
.public RandRangeSafe
|
||||
.public StringFromId
|
||||
.public ZInit8
|
||||
.public _02094D0C
|
||||
.public _02094D20
|
||||
@@ -36,16 +41,13 @@
|
||||
.public _02098038
|
||||
.public _02098054
|
||||
.public _02098070
|
||||
.public _0209808C
|
||||
.public _0209809C
|
||||
.public _020980AC
|
||||
.public _020980B0
|
||||
.public _020A18BC
|
||||
.public _020AF6C4
|
||||
.public _020AF6C8
|
||||
.public _020AFF88_EU
|
||||
.public strcpy
|
||||
.public strncpy
|
||||
.public sub_0200EB64
|
||||
.public sub_020238E0
|
||||
.public sub_02050974
|
||||
.public sub_02050990
|
||||
|
||||
15
asm/include/main_0200E828.inc
Normal file
15
asm/include/main_0200E828.inc
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
.public ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
.public ITEM_DATA_TABLE_PTRS
|
||||
.public IsItemValid
|
||||
.public ItemZInit
|
||||
.public SprintfStatic__0200E808_EU
|
||||
.public StringFromId
|
||||
.public _0209808C
|
||||
.public _0209809C
|
||||
.public _020980AC
|
||||
.public _020980B0
|
||||
.public strcpy
|
||||
.public vsprintf
|
||||
@@ -2355,519 +2355,3 @@ GetExclusiveItemParameter: ; 0x0200E7E8
|
||||
.align 2, 0
|
||||
_0200E804: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetExclusiveItemParameter
|
||||
|
||||
arm_func_start GetItemCategory
|
||||
GetItemCategory: ; 0x0200E808
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E824 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #4]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200E824: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemCategory
|
||||
|
||||
arm_func_start EnsureValidItem
|
||||
EnsureValidItem: ; 0x0200E828
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0
|
||||
ble _0200E844
|
||||
ldr r1, _0200E860 ; =0x00000578
|
||||
cmp r4, r1
|
||||
blt _0200E84C
|
||||
_0200E844:
|
||||
mov r0, #0x55
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200E84C:
|
||||
bl IsItemValid
|
||||
cmp r0, #0
|
||||
moveq r4, #0x55
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200E860: .word 0x00000578
|
||||
arm_func_end EnsureValidItem
|
||||
|
||||
arm_func_start GetItemName
|
||||
GetItemName: ; 0x0200E864
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
#if defined(EUROPE)
|
||||
add r0, r0, #0x278
|
||||
add r0, r0, #0x1800
|
||||
#elif defined(JAPAN)
|
||||
add r0, r0, #0x93
|
||||
add r0, r0, #0xd00
|
||||
#else
|
||||
add r0, r0, #0x76
|
||||
add r0, r0, #0x1a00
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl StringFromId
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end GetItemName
|
||||
|
||||
arm_func_start GetItemNameFormatted
|
||||
GetItemNameFormatted: ; 0x0200E884
|
||||
#ifdef EUROPE
|
||||
#define GET_ITEM_NAME_FORMATTED_SPRINTF SprintfStatic__0200E808_EU
|
||||
#else
|
||||
#define GET_ITEM_NAME_FORMATTED_SPRINTF SprintfStatic__0200E990
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r7, r1
|
||||
mov r8, r0
|
||||
mov r0, r7
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
bl EnsureValidItem
|
||||
#if defined(EUROPE)
|
||||
add r0, r0, #0x278
|
||||
add r0, r0, #0x1800
|
||||
#elif defined(JAPAN)
|
||||
add r0, r0, #0x93
|
||||
add r0, r0, #0xd00
|
||||
#else
|
||||
add r0, r0, #0x76
|
||||
add r0, r0, #0x1a00
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl StringFromId
|
||||
mov r4, r0
|
||||
mov r0, r7
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E97C ; =ITEM_DATA_TABLE_PTRS
|
||||
cmp r5, #0
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r1, [r0, #4]
|
||||
bne _0200E8E8
|
||||
add r0, r1, #0xf4
|
||||
and r0, r0, #0xff
|
||||
cmp r0, #2
|
||||
bhi _0200E914
|
||||
_0200E8E8:
|
||||
cmp r6, #0
|
||||
beq _0200E904
|
||||
ldr r1, _0200E980 ; =_0209808C
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E904:
|
||||
mov r0, r8
|
||||
mov r1, r4
|
||||
bl strcpy
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E914:
|
||||
cmp r1, #0xf
|
||||
bne _0200E94C
|
||||
cmp r6, #0
|
||||
beq _0200E938
|
||||
ldr r1, _0200E984 ; =_0209809C
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E938:
|
||||
ldr r1, _0200E988 ; =_020980AC
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E94C:
|
||||
cmp r6, #0
|
||||
beq _0200E968
|
||||
ldr r1, _0200E98C ; =_020980B0
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E968:
|
||||
ldr r1, _0200E988 ; =_020980AC
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_0200E97C: .word ITEM_DATA_TABLE_PTRS
|
||||
_0200E980: .word _0209808C
|
||||
_0200E984: .word _0209809C
|
||||
_0200E988: .word _020980AC
|
||||
_0200E98C: .word _020980B0
|
||||
arm_func_end GetItemNameFormatted
|
||||
|
||||
#ifndef EUROPE
|
||||
arm_func_start SprintfStatic__0200E990
|
||||
SprintfStatic__0200E990: ; 0x0200E990
|
||||
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__0200E990
|
||||
#endif
|
||||
|
||||
arm_func_start GetItemBuyPrice
|
||||
GetItemBuyPrice: ; 0x0200E9B8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E9D4 ; =ITEM_DATA_TABLE_PTRS
|
||||
mov r0, r0, lsl #4
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200E9D4: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemBuyPrice
|
||||
|
||||
arm_func_start GetItemSellPrice
|
||||
GetItemSellPrice: ; 0x0200E9D8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E9F4 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrh r0, [r0, #2]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200E9F4: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemSellPrice
|
||||
|
||||
arm_func_start GetItemSpriteId
|
||||
GetItemSpriteId: ; 0x0200E9F8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA14 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #5]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA14: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemSpriteId
|
||||
|
||||
arm_func_start GetItemPaletteId
|
||||
GetItemPaletteId: ; 0x0200EA18
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA34 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xc]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA34: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemPaletteId
|
||||
|
||||
arm_func_start GetItemActionName
|
||||
GetItemActionName: ; 0x0200EA38
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA54 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xd]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA54: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemActionName
|
||||
|
||||
arm_func_start GetThrownItemQuantityLimit
|
||||
GetThrownItemQuantityLimit: ; 0x0200EA58
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r1
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA7C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
add r0, r0, r4
|
||||
ldrb r0, [r0, #0xa]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200EA7C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetThrownItemQuantityLimit
|
||||
|
||||
arm_func_start GetItemMoveId
|
||||
GetItemMoveId: ; 0x0200EA80
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA9C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrsh r0, [r0, #8]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA9C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemMoveId
|
||||
|
||||
arm_func_start TestItemAiFlag
|
||||
TestItemAiFlag: ; 0x0200EAA0
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _0200EAD4
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x80
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
_0200EAD4:
|
||||
cmp r1, #1
|
||||
bne _0200EB04
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x40
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
_0200EB04:
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x20
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EB2C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end TestItemAiFlag
|
||||
|
||||
arm_func_start IsItemInTimeDarkness
|
||||
IsItemInTimeDarkness: ; 0x0200EB30
|
||||
ldr r1, _0200EB54 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #2
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EB54: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end IsItemInTimeDarkness
|
||||
|
||||
arm_func_start IsItemValidVeneer
|
||||
IsItemValidVeneer: ; 0x0200EB58
|
||||
ldr ip, _0200EB60 ; =IsItemValid
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200EB60: .word IsItemValid
|
||||
arm_func_end IsItemValidVeneer
|
||||
|
||||
arm_func_start sub_0200EB64
|
||||
sub_0200EB64: ; 0x0200EB64
|
||||
ldr r1, _0200EB88 ; =ITEM_DATA_TABLE_PTRS
|
||||
mov r2, r0, lsl #0x1f
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, r0, asr #1
|
||||
ldr r3, [r1, r0, lsl #2]
|
||||
ldr r0, _0200EB8C ; =0x000007FF
|
||||
mov r1, r2, lsr #0x1b
|
||||
and r0, r0, r3, asr r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EB88: .word ITEM_DATA_TABLE_PTRS
|
||||
_0200EB8C: .word 0x000007FF
|
||||
arm_func_end sub_0200EB64
|
||||
|
||||
arm_func_start sub_0200EB90
|
||||
sub_0200EB90: ; 0x0200EB90
|
||||
mov ip, #0
|
||||
ldr r2, _0200EBC8 ; =ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
b _0200EBB8
|
||||
_0200EB9C:
|
||||
add r1, r2, ip, lsl #2
|
||||
ldrsh r1, [r1, #2]
|
||||
mov r3, ip, lsl #2
|
||||
cmp r0, r1
|
||||
ldreqsh r0, [r2, r3]
|
||||
bxeq lr
|
||||
add ip, ip, #1
|
||||
_0200EBB8:
|
||||
cmp ip, #0x10
|
||||
blt _0200EB9C
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EBC8: .word ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
arm_func_end sub_0200EB90
|
||||
|
||||
arm_func_start SetActiveInventoryToMain
|
||||
SetActiveInventoryToMain: ; 0x0200EBCC
|
||||
ldr ip, _0200EBD8 ; =SetActiveInventory
|
||||
mov r0, #0
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200EBD8: .word SetActiveInventory
|
||||
arm_func_end SetActiveInventoryToMain
|
||||
|
||||
arm_func_start AllInventoriesZInit
|
||||
AllInventoriesZInit: ; 0x0200EBDC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, #0
|
||||
ldr r6, _0200EC44 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r7, sl
|
||||
mov fp, sl
|
||||
mov r4, #6
|
||||
mov r5, #0x12c
|
||||
_0200EBF8:
|
||||
mul sb, sl, r5
|
||||
mov r8, fp
|
||||
_0200EC00:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, sb
|
||||
mla r0, r8, r4, r0
|
||||
bl ItemZInit
|
||||
add r8, r8, #1
|
||||
cmp r8, #0x32
|
||||
blt _0200EC00
|
||||
ldr r0, [r6]
|
||||
add r0, r0, sl, lsl #2
|
||||
add r0, r0, #0x1000
|
||||
add sl, sl, #1
|
||||
str r7, [r0, #0x394]
|
||||
cmp sl, #3
|
||||
blt _0200EBF8
|
||||
mov r0, r7
|
||||
bl SetActiveInventory
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_0200EC44: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end AllInventoriesZInit
|
||||
|
||||
arm_func_start SpecialEpisodeInventoryZInit
|
||||
SpecialEpisodeInventoryZInit: ; 0x0200EC48
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
ldr r5, _0200EC8C ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r6, #0
|
||||
mov r4, #6
|
||||
_0200EC58:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x12c
|
||||
mla r0, r6, r4, r0
|
||||
bl ItemZInit
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x32
|
||||
blt _0200EC58
|
||||
ldr r0, _0200EC8C ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1000
|
||||
str r1, [r0, #0x398]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200EC8C: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end SpecialEpisodeInventoryZInit
|
||||
|
||||
arm_func_start RescueInventoryZInit
|
||||
RescueInventoryZInit: ; 0x0200EC90
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
ldr r5, _0200ECD4 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r6, #0
|
||||
mov r4, #6
|
||||
_0200ECA0:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x258
|
||||
mla r0, r6, r4, r0
|
||||
bl ItemZInit
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x32
|
||||
blt _0200ECA0
|
||||
ldr r0, _0200ECD4 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1000
|
||||
str r1, [r0, #0x39c]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200ECD4: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end RescueInventoryZInit
|
||||
|
||||
arm_func_start SetActiveInventory
|
||||
SetActiveInventory: ; 0x0200ECD8
|
||||
ldr r2, _0200ECF8 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0x12c
|
||||
ldr r3, [r2]
|
||||
strb r0, [r3, #0x388]
|
||||
ldr r2, [r2]
|
||||
mla r1, r0, r1, r2
|
||||
str r1, [r2, #0x384]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200ECF8: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end SetActiveInventory
|
||||
|
||||
503
asm/main_0200E828.s
Normal file
503
asm/main_0200E828.s
Normal file
@@ -0,0 +1,503 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_0200E828.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start EnsureValidItem
|
||||
EnsureValidItem: ; 0x0200E828
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0
|
||||
ble _0200E844
|
||||
ldr r1, _0200E860 ; =0x00000578
|
||||
cmp r4, r1
|
||||
blt _0200E84C
|
||||
_0200E844:
|
||||
mov r0, #0x55
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200E84C:
|
||||
bl IsItemValid
|
||||
cmp r0, #0
|
||||
moveq r4, #0x55
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200E860: .word 0x00000578
|
||||
arm_func_end EnsureValidItem
|
||||
|
||||
arm_func_start GetItemName
|
||||
GetItemName: ; 0x0200E864
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
#if defined(EUROPE)
|
||||
add r0, r0, #0x278
|
||||
add r0, r0, #0x1800
|
||||
#elif defined(JAPAN)
|
||||
add r0, r0, #0x93
|
||||
add r0, r0, #0xd00
|
||||
#else
|
||||
add r0, r0, #0x76
|
||||
add r0, r0, #0x1a00
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl StringFromId
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end GetItemName
|
||||
|
||||
arm_func_start GetItemNameFormatted
|
||||
GetItemNameFormatted: ; 0x0200E884
|
||||
#ifdef EUROPE
|
||||
#define GET_ITEM_NAME_FORMATTED_SPRINTF SprintfStatic__0200E808_EU
|
||||
#else
|
||||
#define GET_ITEM_NAME_FORMATTED_SPRINTF SprintfStatic__0200E990
|
||||
#endif
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r7, r1
|
||||
mov r8, r0
|
||||
mov r0, r7
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
bl EnsureValidItem
|
||||
#if defined(EUROPE)
|
||||
add r0, r0, #0x278
|
||||
add r0, r0, #0x1800
|
||||
#elif defined(JAPAN)
|
||||
add r0, r0, #0x93
|
||||
add r0, r0, #0xd00
|
||||
#else
|
||||
add r0, r0, #0x76
|
||||
add r0, r0, #0x1a00
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl StringFromId
|
||||
mov r4, r0
|
||||
mov r0, r7
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E97C ; =ITEM_DATA_TABLE_PTRS
|
||||
cmp r5, #0
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r1, [r0, #4]
|
||||
bne _0200E8E8
|
||||
add r0, r1, #0xf4
|
||||
and r0, r0, #0xff
|
||||
cmp r0, #2
|
||||
bhi _0200E914
|
||||
_0200E8E8:
|
||||
cmp r6, #0
|
||||
beq _0200E904
|
||||
ldr r1, _0200E980 ; =_0209808C
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E904:
|
||||
mov r0, r8
|
||||
mov r1, r4
|
||||
bl strcpy
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E914:
|
||||
cmp r1, #0xf
|
||||
bne _0200E94C
|
||||
cmp r6, #0
|
||||
beq _0200E938
|
||||
ldr r1, _0200E984 ; =_0209809C
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E938:
|
||||
ldr r1, _0200E988 ; =_020980AC
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E94C:
|
||||
cmp r6, #0
|
||||
beq _0200E968
|
||||
ldr r1, _0200E98C ; =_020980B0
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0200E968:
|
||||
ldr r1, _0200E988 ; =_020980AC
|
||||
mov r0, r8
|
||||
mov r2, r4
|
||||
bl GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
.align 2, 0
|
||||
_0200E97C: .word ITEM_DATA_TABLE_PTRS
|
||||
_0200E980: .word _0209808C
|
||||
_0200E984: .word _0209809C
|
||||
_0200E988: .word _020980AC
|
||||
_0200E98C: .word _020980B0
|
||||
arm_func_end GetItemNameFormatted
|
||||
|
||||
#ifndef EUROPE
|
||||
arm_func_start SprintfStatic__0200E990
|
||||
SprintfStatic__0200E990: ; 0x0200E990
|
||||
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__0200E990
|
||||
#endif
|
||||
|
||||
arm_func_start GetItemBuyPrice
|
||||
GetItemBuyPrice: ; 0x0200E9B8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E9D4 ; =ITEM_DATA_TABLE_PTRS
|
||||
mov r0, r0, lsl #4
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200E9D4: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemBuyPrice
|
||||
|
||||
arm_func_start GetItemSellPrice
|
||||
GetItemSellPrice: ; 0x0200E9D8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200E9F4 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrh r0, [r0, #2]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200E9F4: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemSellPrice
|
||||
|
||||
arm_func_start GetItemSpriteId
|
||||
GetItemSpriteId: ; 0x0200E9F8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA14 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #5]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA14: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemSpriteId
|
||||
|
||||
arm_func_start GetItemPaletteId
|
||||
GetItemPaletteId: ; 0x0200EA18
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA34 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xc]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA34: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemPaletteId
|
||||
|
||||
arm_func_start GetItemActionName
|
||||
GetItemActionName: ; 0x0200EA38
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA54 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xd]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA54: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemActionName
|
||||
|
||||
arm_func_start GetThrownItemQuantityLimit
|
||||
GetThrownItemQuantityLimit: ; 0x0200EA58
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r1
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA7C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
add r0, r0, r4
|
||||
ldrb r0, [r0, #0xa]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200EA7C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetThrownItemQuantityLimit
|
||||
|
||||
arm_func_start GetItemMoveId
|
||||
GetItemMoveId: ; 0x0200EA80
|
||||
stmdb sp!, {r3, lr}
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EA9C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrsh r0, [r0, #8]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EA9C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end GetItemMoveId
|
||||
|
||||
arm_func_start TestItemAiFlag
|
||||
TestItemAiFlag: ; 0x0200EAA0
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r1, #0
|
||||
bne _0200EAD4
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x80
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
_0200EAD4:
|
||||
cmp r1, #1
|
||||
bne _0200EB04
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x40
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
_0200EB04:
|
||||
bl EnsureValidItem
|
||||
ldr r1, _0200EB2C ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #0x20
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0200EB2C: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end TestItemAiFlag
|
||||
|
||||
arm_func_start IsItemInTimeDarkness
|
||||
IsItemInTimeDarkness: ; 0x0200EB30
|
||||
ldr r1, _0200EB54 ; =ITEM_DATA_TABLE_PTRS
|
||||
#ifdef EUROPE
|
||||
ldr r1, [r1]
|
||||
#else
|
||||
ldr r1, [r1, #4]
|
||||
#endif
|
||||
add r0, r1, r0, lsl #4
|
||||
ldrb r0, [r0, #0xe]
|
||||
tst r0, #2
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EB54: .word ITEM_DATA_TABLE_PTRS
|
||||
arm_func_end IsItemInTimeDarkness
|
||||
|
||||
arm_func_start IsItemValidVeneer
|
||||
IsItemValidVeneer: ; 0x0200EB58
|
||||
ldr ip, _0200EB60 ; =IsItemValid
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200EB60: .word IsItemValid
|
||||
arm_func_end IsItemValidVeneer
|
||||
|
||||
arm_func_start sub_0200EB64
|
||||
sub_0200EB64: ; 0x0200EB64
|
||||
ldr r1, _0200EB88 ; =ITEM_DATA_TABLE_PTRS
|
||||
mov r2, r0, lsl #0x1f
|
||||
ldr r1, [r1, #8]
|
||||
mov r0, r0, asr #1
|
||||
ldr r3, [r1, r0, lsl #2]
|
||||
ldr r0, _0200EB8C ; =0x000007FF
|
||||
mov r1, r2, lsr #0x1b
|
||||
and r0, r0, r3, asr r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EB88: .word ITEM_DATA_TABLE_PTRS
|
||||
_0200EB8C: .word 0x000007FF
|
||||
arm_func_end sub_0200EB64
|
||||
|
||||
arm_func_start sub_0200EB90
|
||||
sub_0200EB90: ; 0x0200EB90
|
||||
mov ip, #0
|
||||
ldr r2, _0200EBC8 ; =ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
b _0200EBB8
|
||||
_0200EB9C:
|
||||
add r1, r2, ip, lsl #2
|
||||
ldrsh r1, [r1, #2]
|
||||
mov r3, ip, lsl #2
|
||||
cmp r0, r1
|
||||
ldreqsh r0, [r2, r3]
|
||||
bxeq lr
|
||||
add ip, ip, #1
|
||||
_0200EBB8:
|
||||
cmp ip, #0x10
|
||||
blt _0200EB9C
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200EBC8: .word ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
arm_func_end sub_0200EB90
|
||||
|
||||
arm_func_start SetActiveInventoryToMain
|
||||
SetActiveInventoryToMain: ; 0x0200EBCC
|
||||
ldr ip, _0200EBD8 ; =SetActiveInventory
|
||||
mov r0, #0
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200EBD8: .word SetActiveInventory
|
||||
arm_func_end SetActiveInventoryToMain
|
||||
|
||||
arm_func_start AllInventoriesZInit
|
||||
AllInventoriesZInit: ; 0x0200EBDC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, #0
|
||||
ldr r6, _0200EC44 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r7, sl
|
||||
mov fp, sl
|
||||
mov r4, #6
|
||||
mov r5, #0x12c
|
||||
_0200EBF8:
|
||||
mul sb, sl, r5
|
||||
mov r8, fp
|
||||
_0200EC00:
|
||||
ldr r0, [r6]
|
||||
add r0, r0, sb
|
||||
mla r0, r8, r4, r0
|
||||
bl ItemZInit
|
||||
add r8, r8, #1
|
||||
cmp r8, #0x32
|
||||
blt _0200EC00
|
||||
ldr r0, [r6]
|
||||
add r0, r0, sl, lsl #2
|
||||
add r0, r0, #0x1000
|
||||
add sl, sl, #1
|
||||
str r7, [r0, #0x394]
|
||||
cmp sl, #3
|
||||
blt _0200EBF8
|
||||
mov r0, r7
|
||||
bl SetActiveInventory
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_0200EC44: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end AllInventoriesZInit
|
||||
|
||||
arm_func_start SpecialEpisodeInventoryZInit
|
||||
SpecialEpisodeInventoryZInit: ; 0x0200EC48
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
ldr r5, _0200EC8C ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r6, #0
|
||||
mov r4, #6
|
||||
_0200EC58:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x12c
|
||||
mla r0, r6, r4, r0
|
||||
bl ItemZInit
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x32
|
||||
blt _0200EC58
|
||||
ldr r0, _0200EC8C ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1000
|
||||
str r1, [r0, #0x398]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200EC8C: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end SpecialEpisodeInventoryZInit
|
||||
|
||||
arm_func_start RescueInventoryZInit
|
||||
RescueInventoryZInit: ; 0x0200EC90
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
ldr r5, _0200ECD4 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r6, #0
|
||||
mov r4, #6
|
||||
_0200ECA0:
|
||||
ldr r0, [r5]
|
||||
add r0, r0, #0x258
|
||||
mla r0, r6, r4, r0
|
||||
bl ItemZInit
|
||||
add r6, r6, #1
|
||||
cmp r6, #0x32
|
||||
blt _0200ECA0
|
||||
ldr r0, _0200ECD4 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x1000
|
||||
str r1, [r0, #0x39c]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200ECD4: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end RescueInventoryZInit
|
||||
|
||||
arm_func_start SetActiveInventory
|
||||
SetActiveInventory: ; 0x0200ECD8
|
||||
ldr r2, _0200ECF8 ; =BAG_ITEMS_PTR_MIRROR
|
||||
mov r1, #0x12c
|
||||
ldr r3, [r2]
|
||||
strb r0, [r3, #0x388]
|
||||
ldr r2, [r2]
|
||||
mla r1, r0, r1, r2
|
||||
str r1, [r2, #0x384]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200ECF8: .word BAG_ITEMS_PTR_MIRROR
|
||||
arm_func_end SetActiveInventory
|
||||
@@ -1483,4 +1483,11 @@ struct bag_items {
|
||||
/* 0x384 */ struct bag_items_inner *bag_items;
|
||||
};
|
||||
|
||||
struct item_data_entry
|
||||
{
|
||||
/* 0x0 */ u8 *name;
|
||||
/* 0x4 */ enum item_category category;
|
||||
u8 fill8[8];
|
||||
};
|
||||
|
||||
#endif //PMDSKY_ITEM_H
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "item.h"
|
||||
|
||||
enum item_category GetItemCategoryVeneer(s16 index);
|
||||
// Likely a linker-generated veneer for GetItemCategory.
|
||||
// See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer-
|
||||
enum item_category GetItemCategoryVeneer(s16 item_id);
|
||||
|
||||
#endif //PMDSKY_ITEM_UTIL_H
|
||||
|
||||
9
include/item_util_2.h
Normal file
9
include/item_util_2.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_ITEM_UTIL_2_H
|
||||
#define PMDSKY_ITEM_UTIL_2_H
|
||||
|
||||
#include "item.h"
|
||||
|
||||
// Returns the category of the specified item
|
||||
enum item_category GetItemCategory(s16 item_id);
|
||||
|
||||
#endif //PMDSKY_ITEM_UTIL_2_H
|
||||
2
main.lsf
2
main.lsf
@@ -23,6 +23,8 @@ Static main
|
||||
Object asm/main_0200C4CC.o
|
||||
Object src/item_util.o
|
||||
Object asm/main_0200CAFC.o
|
||||
Object src/item_util_2.o
|
||||
Object asm/main_0200E828.o
|
||||
Object src/main_0200ECFC.o
|
||||
Object asm/main_0200ED1C.o
|
||||
Object src/main_02025788.o
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#include "item_util.h"
|
||||
#include "item_util_2.h"
|
||||
|
||||
extern enum item_category GetItemCategory(s16 index);
|
||||
|
||||
enum item_category GetItemCategoryVeneer(s16 index)
|
||||
enum item_category GetItemCategoryVeneer(s16 item_id)
|
||||
{
|
||||
return GetItemCategory(index);
|
||||
return GetItemCategory(item_id);
|
||||
}
|
||||
|
||||
16
src/item_util_2.c
Normal file
16
src/item_util_2.c
Normal file
@@ -0,0 +1,16 @@
|
||||
#include "item_util_2.h"
|
||||
|
||||
extern struct item_data_entry *ITEM_DATA_TABLE_PTRS[3];
|
||||
extern s16 EnsureValidItem(s16 item_id);
|
||||
|
||||
#ifdef EUROPE
|
||||
#define ITEM_DATA_TABLE_PTRS_INDEX 0
|
||||
#else
|
||||
#define ITEM_DATA_TABLE_PTRS_INDEX 1
|
||||
#endif
|
||||
|
||||
enum item_category GetItemCategory(s16 item_id)
|
||||
{
|
||||
s16 valid_item_id = EnsureValidItem(item_id);
|
||||
return ITEM_DATA_TABLE_PTRS[ITEM_DATA_TABLE_PTRS_INDEX][valid_item_id].category;
|
||||
}
|
||||
Reference in New Issue
Block a user