mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-30 22:27:51 -05:00
Merge pull request #111 from AnonymousRandomPerson/main
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Decomped some item funcs
This commit is contained in:
@@ -1,73 +1,30 @@
|
||||
#pragma once
|
||||
.public _02094C0C
|
||||
.public _02094C18
|
||||
.public _02094D0C
|
||||
.public _02094D20
|
||||
.public _02097F34
|
||||
.public _02097F50
|
||||
.public _02097F58
|
||||
.public _02097F68
|
||||
.public _02097F6C
|
||||
.public _02097F7C
|
||||
.public _02097F90
|
||||
.public _02097F9C
|
||||
.public _02097FAC
|
||||
.public _02097FB8
|
||||
.public _02097FC4
|
||||
.public _02097FE4
|
||||
.public _02098038
|
||||
.public _02098054
|
||||
.public _02098070
|
||||
.public _0209808C
|
||||
.public _0209809C
|
||||
.public _020980AC
|
||||
.public _020980B0
|
||||
.public _0209E7A6
|
||||
.public _020A18BC
|
||||
.public _020AF6C4
|
||||
.public _020AF6C8
|
||||
.public _020AFF88_EU
|
||||
.public AllInventoriesZInit
|
||||
.public AllKecleonShopsZInit
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
.public AVAILABLE_ITEMS_IN_GROUP_TABLE
|
||||
.public BAG_ITEMS
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public DrawTextInWindow
|
||||
.public DUNGEON_RETURN_STATUS_TABLE
|
||||
.public DrawTextInWindow
|
||||
.public FormatMoveString
|
||||
.public GET_ITEM_NAME_FORMATTED_SPRINTF
|
||||
.public GetDungeonGroup
|
||||
.public GetDungeonResultString
|
||||
.public GetLanguage
|
||||
.public GetItemCategoryVeneer
|
||||
.public GetStringFromFileVeneer
|
||||
.public GetWindow
|
||||
.public HandleSir0Translation
|
||||
.public InitMoveCheckId
|
||||
.public ITEM_DATA_TABLE_PTRS
|
||||
.public ITEM_TABLES_PTRS_1
|
||||
.public LoadFileFromRom
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MONEY_QUANTITY_TABLE
|
||||
.public MultiplyByFixedPoint
|
||||
.public PointsToZero
|
||||
.public LoadItemPspi2n
|
||||
.public PreprocessString
|
||||
.public RandRangeSafe
|
||||
.public RescueInventoryZInit
|
||||
.public SetActiveInventoryToMain
|
||||
.public SpecialEpisodeInventoryZInit
|
||||
.public SpecialEpisodeKecleonShopZInit
|
||||
.public strcpy
|
||||
.public StringFromId
|
||||
.public strncpy
|
||||
.public _02094C0C
|
||||
.public _02094C18
|
||||
.public _0209E7A6
|
||||
.public sub_0200D670
|
||||
.public sub_0200FD38
|
||||
.public sub_0200FD3C
|
||||
.public sub_02010590
|
||||
.public sub_02011AB8
|
||||
.public sub_020238E0
|
||||
.public sub_020265A8
|
||||
.public sub_02050974
|
||||
.public sub_02050990
|
||||
.public sub_020509BC
|
||||
.public vsprintf
|
||||
.public ZInit8
|
||||
|
||||
56
asm/include/main_0200CAFC.inc
Normal file
56
asm/include/main_0200CAFC.inc
Normal file
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
.public AVAILABLE_ITEMS_IN_GROUP_TABLE
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.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
|
||||
.public IsItemValid
|
||||
.public LoadFileFromRom
|
||||
.public MONEY_QUANTITY_TABLE
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MultiplyByFixedPoint
|
||||
.public PointsToZero
|
||||
.public RandRangeSafe
|
||||
.public ZInit8
|
||||
.public _02094D0C
|
||||
.public _02094D20
|
||||
.public _02097F34
|
||||
.public _02097F50
|
||||
.public _02097F58
|
||||
.public _02097F68
|
||||
.public _02097F6C
|
||||
.public _02097F7C
|
||||
.public _02097F90
|
||||
.public _02097F9C
|
||||
.public _02097FAC
|
||||
.public _02097FB8
|
||||
.public _02097FC4
|
||||
.public _02097FE4
|
||||
.public _02098038
|
||||
.public _02098054
|
||||
.public _02098070
|
||||
.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
|
||||
.public sub_020509BC
|
||||
.public vsprintf
|
||||
3
asm/include/main_0200E7E8.inc
Normal file
3
asm/include/main_0200E7E8.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public GetExclusiveItemOffsetEnsureValid
|
||||
.public ITEM_DATA_TABLE_PTRS
|
||||
16
asm/include/main_0200E864.inc
Normal file
16
asm/include/main_0200E864.inc
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
.public ARM9_UNKNOWN_TABLE__NA_2097FF8
|
||||
.public BAG_ITEMS_PTR_MIRROR
|
||||
.public EnsureValidItem
|
||||
.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
|
||||
@@ -348,6 +348,7 @@
|
||||
.public MISSION_MENU_STRING_IDS_2
|
||||
.public MISSION_RANK_POINTS
|
||||
.public MISSION_STRING_IDS
|
||||
.public MissionToWonderMailPassword
|
||||
.public MultiplyByFixedPoint
|
||||
.public MUNCH_BELT_STAT_BOOST
|
||||
.public NO_SEND_ITEM_TABLE
|
||||
@@ -546,7 +547,6 @@
|
||||
.public sub_0204C978
|
||||
.public sub_0204CA1C
|
||||
.public sub_0204D018
|
||||
.public sub_0204DE7C
|
||||
.public sub_0204E210
|
||||
.public sub_0204E584
|
||||
.public sub_0204E6FC
|
||||
|
||||
@@ -2121,8 +2121,6 @@
|
||||
.public sub_02060680
|
||||
.public sub_020606E4
|
||||
.public sub_0206074C
|
||||
.public sub_02060804
|
||||
.public sub_02060904
|
||||
.public sub_02072D9C
|
||||
.public sub_02072DBC
|
||||
.public sub_02072DDC
|
||||
@@ -2208,5 +2206,7 @@
|
||||
.public UpdateSimpleMenu
|
||||
.public UpdateTeamSelectionMenu
|
||||
.public UpdateTextBox
|
||||
.public ValidateLegendaryChallengeMission
|
||||
.public ValidateNormalChallengeMission
|
||||
.public vsprintf
|
||||
.public wcstombs
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
.public EnemyEvolution
|
||||
.public EntityIsValid__022E0354
|
||||
.public FadeToBlack
|
||||
.public FillMissionDestinationInfo
|
||||
.public FIXED_ROOM_REVISIT_OVERRIDES
|
||||
.public FreeLoadedAttackSpriteAndMore
|
||||
.public FreeTopScreenStatus
|
||||
@@ -178,7 +179,6 @@
|
||||
.public ov29_02346DA4
|
||||
.public ov29_02346E48
|
||||
.public ov29_023480FC
|
||||
.public ov29_023484A0
|
||||
.public ov29_02348850
|
||||
.public ov29_02348894
|
||||
.public ov29_023488C8
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
.public GetNbFloorsPlusOne
|
||||
.public GetNbPrecedingFloors
|
||||
.public GetNbRecruited
|
||||
.public GetPlayerGender
|
||||
.public GetSecondFormIfValid
|
||||
.public GetSpriteFileSize
|
||||
.public GetSpriteSize
|
||||
@@ -93,7 +94,6 @@
|
||||
.public ov29_022EACCC
|
||||
.public ov29_022EACE4
|
||||
.public ov29_022ED0F4
|
||||
.public ov29_022F42D8
|
||||
.public ov29_0230027C
|
||||
.public ov29_0230D618
|
||||
.public ov29_02339138
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
.public GetMonsterPreEvolution
|
||||
.public GetName
|
||||
.public GetPerformanceFlagWithChecks
|
||||
.public GetPlayerGender
|
||||
.public GetRandomExplorerMazeMonster
|
||||
.public GetRandomSpawnMonsterID
|
||||
.public GetSecondFormIfValid
|
||||
@@ -111,7 +112,6 @@
|
||||
.public ov29_022EAF34
|
||||
.public ov29_022EAFB0
|
||||
.public ov29_022F2FE4
|
||||
.public ov29_022F42D8
|
||||
.public ov29_022FA3D4
|
||||
.public ov29_022FBA54
|
||||
.public ov29_022FBBEC
|
||||
|
||||
2877
asm/main_0200C4CC.s
2877
asm/main_0200C4CC.s
File diff suppressed because it is too large
Load Diff
2321
asm/main_0200CAFC.s
Normal file
2321
asm/main_0200CAFC.s
Normal file
File diff suppressed because it is too large
Load Diff
21
asm/main_0200E7E8.s
Normal file
21
asm/main_0200E7E8.s
Normal file
@@ -0,0 +1,21 @@
|
||||
.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
|
||||
481
asm/main_0200E864.s
Normal file
481
asm/main_0200E864.s
Normal file
@@ -0,0 +1,481 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_0200E864.inc"
|
||||
|
||||
.text
|
||||
|
||||
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
|
||||
@@ -31938,8 +31938,8 @@ _0204DE74: .word WONDER_MAIL_BITS_SWAP
|
||||
_0204DE78: .word _0209E264
|
||||
arm_func_end WonderMailPasswordToMission
|
||||
|
||||
arm_func_start sub_0204DE7C
|
||||
sub_0204DE7C: ; 0x0204DE7C
|
||||
arm_func_start MissionToWonderMailPassword
|
||||
MissionToWonderMailPassword: ; 0x0204DE7C
|
||||
stmdb sp!, {r4, r5, lr}
|
||||
sub sp, sp, #0x6c
|
||||
mov r2, #0
|
||||
@@ -31997,7 +31997,7 @@ _0204DF20:
|
||||
.align 2, 0
|
||||
_0204DF4C: .word _0209E264
|
||||
_0204DF50: .word WONDER_MAIL_BITS_SWAP
|
||||
arm_func_end sub_0204DE7C
|
||||
arm_func_end MissionToWonderMailPassword
|
||||
|
||||
arm_func_start sub_0204DF54
|
||||
sub_0204DF54: ; 0x0204DF54
|
||||
|
||||
@@ -14444,8 +14444,8 @@ _020607FC:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0206074C
|
||||
|
||||
arm_func_start sub_02060804
|
||||
sub_02060804: ; 0x02060804
|
||||
arm_func_start ValidateNormalChallengeMission
|
||||
ValidateNormalChallengeMission: ; 0x02060804
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
@@ -14516,10 +14516,10 @@ _020608E0:
|
||||
_020608FC:
|
||||
and r0, r4, #0xff
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
arm_func_end sub_02060804
|
||||
arm_func_end ValidateNormalChallengeMission
|
||||
|
||||
arm_func_start sub_02060904
|
||||
sub_02060904: ; 0x02060904
|
||||
arm_func_start ValidateLegendaryChallengeMission
|
||||
ValidateLegendaryChallengeMission: ; 0x02060904
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrb r3, [r0, #0x20]
|
||||
ldrb r2, [r1, #1]
|
||||
@@ -14548,7 +14548,7 @@ _02060948:
|
||||
_02060964:
|
||||
and r0, ip, #0xff
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end sub_02060904
|
||||
arm_func_end ValidateLegendaryChallengeMission
|
||||
|
||||
arm_func_start sub_0206096C
|
||||
sub_0206096C: ; 0x0206096C
|
||||
@@ -16037,7 +16037,7 @@ sub_02061CC8: ; 0x02061CC8
|
||||
add r0, sp, #4
|
||||
mov r1, r4
|
||||
add sb, sb, #0xd
|
||||
bl sub_0204DE7C
|
||||
bl MissionToWonderMailPassword
|
||||
mov r7, #0
|
||||
mov fp, #0x44
|
||||
add r6, sp, #4
|
||||
|
||||
@@ -20337,8 +20337,8 @@ ARM9_UNKNOWN_FUNCTION_TABLE__NA_20A3CF4:
|
||||
.word sub_02060680
|
||||
.word sub_020606E4
|
||||
.word sub_0206074C
|
||||
.word sub_02060804
|
||||
.word sub_02060904
|
||||
.word ValidateNormalChallengeMission
|
||||
.word ValidateLegendaryChallengeMission
|
||||
.global MISSION_BANNED_STORY_MONSTERS
|
||||
MISSION_BANNED_STORY_MONSTERS:
|
||||
.byte 0x6D, 0x00, 0x29, 0x00, 0xDD, 0x01, 0x83, 0x01, 0x69, 0x00, 0x71, 0x00, 0x73, 0x00, 0xB2, 0x00
|
||||
|
||||
@@ -273,7 +273,7 @@ _022DEE78:
|
||||
addne r0, r0, #0x4000
|
||||
strneb r1, [r0, #0xda + OV29_022DEBBC_OFFSET]
|
||||
_022DEEA4:
|
||||
bl ov29_023484A0
|
||||
bl FillMissionDestinationInfo
|
||||
cmp r4, #1
|
||||
bne _022DEF08
|
||||
ldr r1, _022DEF2C ; =DUNGEON_PTR
|
||||
|
||||
@@ -5890,7 +5890,7 @@ ov29_022E7F94: ; 0x022E7F94
|
||||
strb r0, [r1]
|
||||
bl SetMinimapDataE448
|
||||
bl ov29_022E8104
|
||||
bl ov29_022F42D8
|
||||
bl GetPlayerGender
|
||||
cmp r0, #2
|
||||
ldr r0, _022E8014 ; =TOP_SCREEN_STATUS_PTR
|
||||
moveq r1, #1
|
||||
@@ -6010,7 +6010,7 @@ InitializeTeamStats: ; 0x022E8130
|
||||
mov r1, #1
|
||||
ldr r0, [r0]
|
||||
strb r1, [r0, #0x24]
|
||||
bl ov29_022F42D8
|
||||
bl GetPlayerGender
|
||||
cmp r0, #2
|
||||
ldr r0, _022E818C ; =TOP_SCREEN_STATUS_PTR
|
||||
moveq r1, #1
|
||||
|
||||
@@ -4429,8 +4429,8 @@ ov29_022F426C: ; 0x022F426C
|
||||
_022F42D4: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022F426C
|
||||
|
||||
arm_func_start ov29_022F42D8
|
||||
ov29_022F42D8: ; 0x022F42D8
|
||||
arm_func_start GetPlayerGender
|
||||
GetPlayerGender: ; 0x022F42D8
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetHero
|
||||
cmp r0, #0
|
||||
@@ -4439,7 +4439,7 @@ ov29_022F42D8: ; 0x022F42D8
|
||||
ldrsh r0, [r0, #4]
|
||||
bl GetMonsterGenderVeneer
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_022F42D8
|
||||
arm_func_end GetPlayerGender
|
||||
|
||||
arm_func_start ov29_022F42F8
|
||||
ov29_022F42F8: ; 0x022F42F8
|
||||
|
||||
@@ -656,8 +656,8 @@ _02348498: .word ov29_023537C4
|
||||
_0234849C: .word ov29_0237C694
|
||||
arm_func_end HandleFloorCard
|
||||
|
||||
arm_func_start ov29_023484A0
|
||||
ov29_023484A0: ; 0x023484A0
|
||||
arm_func_start FillMissionDestinationInfo
|
||||
FillMissionDestinationInfo: ; 0x023484A0
|
||||
#ifdef JAPAN
|
||||
#define OV29_023484A0_OFFSET -0xA4
|
||||
#else
|
||||
@@ -704,7 +704,7 @@ _023484FC:
|
||||
#else
|
||||
mov r0, r7
|
||||
mov r1, r8
|
||||
bl ov29_02349790
|
||||
bl GetMissionIfActiveOnFloor
|
||||
movs sb, r0
|
||||
moveq r0, #0
|
||||
beq _02348784
|
||||
@@ -924,7 +924,7 @@ _023487D4:
|
||||
.align 2, 0
|
||||
_02348804: .word DUNGEON_PTR
|
||||
_02348808: .word ov10_022C48E4
|
||||
arm_func_end ov29_023484A0
|
||||
arm_func_end FillMissionDestinationInfo
|
||||
|
||||
#ifndef JAPAN
|
||||
arm_func_start ov29_0234880C
|
||||
@@ -936,7 +936,7 @@ ov29_0234880C: ; 0x0234880C
|
||||
_0234881C:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl ov29_02349790
|
||||
bl GetMissionIfActiveOnFloor
|
||||
cmp r0, #0
|
||||
movne r0, r4
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
@@ -2267,8 +2267,8 @@ _02349788:
|
||||
arm_func_end FloorHasMissionMonster
|
||||
|
||||
#ifndef JAPAN
|
||||
arm_func_start ov29_02349790
|
||||
ov29_02349790: ; 0x02349790
|
||||
arm_func_start GetMissionIfActiveOnFloor
|
||||
GetMissionIfActiveOnFloor: ; 0x02349790
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r0, r1
|
||||
@@ -2283,7 +2283,7 @@ ov29_02349790: ; 0x02349790
|
||||
cmpeq r2, r1
|
||||
movne r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ov29_02349790
|
||||
arm_func_end GetMissionIfActiveOnFloor
|
||||
#endif
|
||||
|
||||
arm_func_start ov29_023497C8
|
||||
|
||||
@@ -4384,7 +4384,7 @@ SetBothScreensWindowColorToDefault: ; 0x0234CF60
|
||||
bl SetBothScreensWindowsColor
|
||||
ldmia sp!, {r3, pc}
|
||||
_0234CF7C:
|
||||
bl ov29_022F42D8
|
||||
bl GetPlayerGender
|
||||
cmp r0, #1
|
||||
bne _0234CF94
|
||||
mov r0, #0
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
#ifndef PMDSKY_ITEM_H
|
||||
#define PMDSKY_ITEM_H
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#ifdef EUROPE
|
||||
#define ITEM_DATA_TABLE_PTRS_INDEX 0
|
||||
#else
|
||||
#define ITEM_DATA_TABLE_PTRS_INDEX 1
|
||||
#endif
|
||||
|
||||
// Item ID
|
||||
enum item_id {
|
||||
ITEM_NOTHING = 0,
|
||||
@@ -1483,4 +1491,12 @@ struct bag_items {
|
||||
/* 0x384 */ struct bag_items_inner *bag_items;
|
||||
};
|
||||
|
||||
struct item_data_entry
|
||||
{
|
||||
/* 0x0 */ u8 *name;
|
||||
/* 0x4 */ enum item_category category;
|
||||
u8 fill5[0xE - 0x5];
|
||||
/* 0xE */ bool8 valid;
|
||||
};
|
||||
|
||||
#endif //PMDSKY_ITEM_H
|
||||
|
||||
10
include/item_util.h
Normal file
10
include/item_util.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_ITEM_UTIL_H
|
||||
#define PMDSKY_ITEM_UTIL_H
|
||||
|
||||
#include "item.h"
|
||||
|
||||
// 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
|
||||
10
include/item_util_1.h
Normal file
10
include/item_util_1.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_ITEM_UTIL_1_H
|
||||
#define PMDSKY_ITEM_UTIL_1_H
|
||||
|
||||
#include "util.h"
|
||||
|
||||
// Checks if an item is valid given its ID.
|
||||
// In particular, checks if the "is valid" flag is set on its item_p.bin entry.
|
||||
bool8 IsItemValid(s16 item_id);
|
||||
|
||||
#endif //PMDSKY_ITEM_UTIL_1_H
|
||||
11
include/item_util_2.h
Normal file
11
include/item_util_2.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#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);
|
||||
// Checks if the given item ID is valid (using IsItemValid). If so, return the given item ID. Otherwise, return ITEM_PLAIN_SEED.
|
||||
s16 EnsureValidItem(s16 item_id);
|
||||
|
||||
#endif //PMDSKY_ITEM_UTIL_2_H
|
||||
6
main.lsf
6
main.lsf
@@ -21,6 +21,12 @@ Static main
|
||||
Object src/directory_file_mngr.o
|
||||
Object src/directory_file.o
|
||||
Object asm/main_0200C4CC.o
|
||||
Object src/item_util.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_0200E864.o
|
||||
Object src/main_0200ECFC.o
|
||||
Object asm/main_0200ED1C.o
|
||||
Object src/main_02025788.o
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "dungeon_capabilities_1.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "item.h"
|
||||
#include "item_util.h"
|
||||
|
||||
#define NUM_POTENTIAL_ROCK_TARGETS 20
|
||||
|
||||
@@ -18,7 +19,6 @@ extern void SetMonsterActionFields(struct action_data *action_pointer, u16 actio
|
||||
extern bool8 IqSkillIsEnabled(struct entity *pokemon, u8 iq_skill);
|
||||
extern const struct tile *GetTile(s32 x, s32 y);
|
||||
extern bool8 TestItemAiFlag(s16 id, s32 aiFlag);
|
||||
extern enum item_category GetItemCategoryVeneer(s16 index);
|
||||
extern void GetPossibleAiArcItemTargets(struct entity *pokemon, struct item *item, struct position potential_targets[], bool8 ignore_roll_chance);
|
||||
extern s32 GetDirectionTowardsPosition(struct position *origin_pos, struct position *target_pos);
|
||||
extern struct item *GetItemInfo(struct entity *entity);
|
||||
|
||||
7
src/item_util.c
Normal file
7
src/item_util.c
Normal file
@@ -0,0 +1,7 @@
|
||||
#include "item_util.h"
|
||||
#include "item_util_2.h"
|
||||
|
||||
enum item_category GetItemCategoryVeneer(s16 item_id)
|
||||
{
|
||||
return GetItemCategory(item_id);
|
||||
}
|
||||
12
src/item_util_1.c
Normal file
12
src/item_util_1.c
Normal file
@@ -0,0 +1,12 @@
|
||||
#include "item_util_1.h"
|
||||
#include "item.h"
|
||||
|
||||
extern struct item_data_entry *ITEM_DATA_TABLE_PTRS[3];
|
||||
|
||||
bool8 IsItemValid(s16 item_id)
|
||||
{
|
||||
if (ITEM_DATA_TABLE_PTRS[ITEM_DATA_TABLE_PTRS_INDEX][item_id].valid & 1)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
21
src/item_util_2.c
Normal file
21
src/item_util_2.c
Normal file
@@ -0,0 +1,21 @@
|
||||
#include "item_util_2.h"
|
||||
#include "item_util_1.h"
|
||||
|
||||
extern struct item_data_entry *ITEM_DATA_TABLE_PTRS[3];
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
s16 EnsureValidItem(s16 item_id)
|
||||
{
|
||||
if (item_id <= 0 || item_id >= 0x578)
|
||||
return ITEM_PLAIN_SEED;
|
||||
|
||||
if (!IsItemValid(item_id))
|
||||
return ITEM_PLAIN_SEED;
|
||||
|
||||
return item_id;
|
||||
}
|
||||
Reference in New Issue
Block a user