more item work

This commit is contained in:
Seth Barberee 2026-01-19 11:33:05 -08:00
parent 2a478bc062
commit 751aa84dee
4 changed files with 30 additions and 46 deletions

View File

@ -68,45 +68,3 @@ _0200EBB8:
_0200EBC8: .word BABY_EXCLUSIVE_ITEM_PAIRS
arm_func_end ReturnEggExclusiveItem
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

View File

@ -1641,17 +1641,18 @@ struct bag_items_inner {
#define MAIN_INVENTORY_INDEX 0
#define SPECIAL_EPISODE_INVENTORY_INDEX 1
#define RESCUE_INVENTORY_INDEX 2
#define NUM_INVENTORIES 3
struct bag_items {
// Indexes:
// 0x0 - Main, default
// 0x1 - Special Episode
// 0x2 - Rescue
/* 0x0 */ struct bag_items_inner inventories[3];
/* 0x0 */ struct bag_items_inner inventories[NUM_INVENTORIES];
/* 0x384 */ struct bag_items_inner *bag_items;
/* 0x388 */ u8 active_inventory_idx;
u8 fill2[0x1009];
u32 maybeMoney[3]; // indexed with an u8, uses same indexes as Inventory
u32 maybeMoney[NUM_INVENTORIES]; // indexed with an u8, uses same indexes as Inventory
};
struct bulk_item

View File

@ -1,6 +1,12 @@
#ifndef PMDSKY_MAIN_0200ECFC_H
#define PMDSKY_MAIN_0200ECFC_H
// Set the active inventory to the main inventory
void SetActiveInventoryToMain(void);
// Init all inventories, all money the player is carrying, and set default active inventory
void AllInventoriesZInit(void);
// Init the special episode inventory and money the player is carrying
void SpecialEpisodeInventoryZInit(void);

View File

@ -5,9 +5,28 @@ extern struct bag_items* BAG_ITEMS_PTR_MIRROR;
extern void ItemZInit(struct item *item);
void SetActiveInventoryToMain(void)
{
SetActiveInventory(MAIN_INVENTORY_INDEX);
}
void AllInventoriesZInit(void)
{
for(int inventory_index = MAIN_INVENTORY_INDEX; inventory_index < NUM_INVENTORIES; inventory_index++)
{
for(int bag_index = 0; bag_index < INVENTORY_SIZE - 2; bag_index++)
{
ItemZInit(&BAG_ITEMS_PTR_MIRROR->inventories[inventory_index].bag_items[bag_index]);
}
BAG_ITEMS_PTR_MIRROR->maybeMoney[inventory_index] = 0;
}
SetActiveInventory(MAIN_INVENTORY_INDEX);
}
void SpecialEpisodeInventoryZInit(void)
{
for(s32 index = 0; index < INVENTORY_SIZE - 2; index++)
for(int index = 0; index < INVENTORY_SIZE - 2; index++)
{
ItemZInit(&BAG_ITEMS_PTR_MIRROR->inventories[SPECIAL_EPISODE_INVENTORY_INDEX].bag_items[index]);
}
@ -17,7 +36,7 @@ void SpecialEpisodeInventoryZInit(void)
void RescueInventoryZInit(void)
{
for(s32 index = 0; index < INVENTORY_SIZE - 2; index++)
for(int index = 0; index < INVENTORY_SIZE - 2; index++)
{
ItemZInit(&BAG_ITEMS_PTR_MIRROR->inventories[RESCUE_INVENTORY_INDEX].bag_items[index]);
}