Files
ph/include/Save/SaveItemManager.hpp
Yanis 0421d36979 Decompile overlay 8 (95%) (#115)
* started overlay 8

* progress

* progress

* progress

* more headers

* progress

* more progress

* symbols

* fix splits + new headers

* more progress

* func_ov008_02112ee0 & func_ov008_02112f28

* document fish in save item manager and unrelated things because precommit is mad

* SaveItemManager ctor

* progress?

* fix build issues

* split files to match data

* format

* format

* cleanup and match vfunc_08

* add reloc for overlay 0

* fix vtable symbol

* improve non-matching functions

---------

Co-authored-by: Aetias <144526980+AetiasHax@users.noreply.github.com>
2025-07-13 15:11:50 +02:00

179 lines
4.5 KiB
C++

#pragma once
#include "global.h"
#include "types.h"
#include "../Item/Item.hpp"
#include "Actor/Actor.hpp"
#include "Unknown/UnkStruct_020ec7dc.hpp"
class SaveItemManager_f8 {
public:
/* 00 */ u32 mUnk_00[2];
/* 08 */
static void func_ov008_021139d8();
static void func_ov008_021139dc();
~SaveItemManager_f8();
SaveItemManager_f8();
};
class SaveItemManager_2f8 {
public:
/* 00 */ u32 mUnk_00[2];
/* 08 */ u32 mUnk_08[1];
/* 0c */
static void func_ov008_02113984();
static void func_ov008_02113988();
~SaveItemManager_2f8();
SaveItemManager_2f8();
};
class SaveItemManager_d1c {
public:
/* 00 */ unk8 pad[0x1c];
/* 1c */ Actor_UnkStruct_020 mUnk_1c;
/* 30 */
static void func_ov008_02113968();
static void func_ov008_0211396c();
SaveItemManager_d1c();
~SaveItemManager_d1c();
};
class SaveItemManager_cec {
public:
/* 00 */ unk32 mUnk_00;
void func_ov000_0207a3e4();
};
class SaveItemManager_2400 {
public:
/* 00 */ unk32 mUnk_00;
void func_ov000_0207a5ac();
};
class SaveItemManager_2580 {
public:
/* 00 */ u16 mUnk_00[11];
/* 16 */
};
class SaveItemManager_2840 {
public:
/* 00 */ unk32 mUnk_00;
void func_ov000_0207a4f0();
};
class SaveItemManager_2940 {
public:
/* 00 */ unk32 mUnk_00;
void func_ov000_0207a6d0();
};
extern "C" void Fill16(int value, unsigned short *dst, int size);
extern "C" void Fill32(unk32, u32 *, unk32);
extern "C" void Fill256(int value, int *dst, int size);
class SaveInventory {
public:
/* 0000 */ ItemFlags itemFlags;
/* 0010 */ u32 salvagedTreasureFlags;
/* 0014 */ ShipPartPricesShown shipPartPricesShown;
/* 0020 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)];
/* 0024 */ u8 equippedShipParts[ShipPart_COUNT];
/* 002c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT];
/* 0074 */ s8 treasure[Treasure_COUNT];
/* 007c */ unk16 unk_7c;
/* 007e */ unk8 unk_7e;
/* 007f */ unk8 unk_7f;
/* 0080 */ u16 hourglassSeconds;
/* 0082 */ u16 fishSize[FishType_COUNT];
/* 008e */ u16 numRupees;
/* 0090 */ unk8 unk_90;
/* 0091 */ unk8 unk_91;
/* 0092 */ unk8 unk_92;
/* 0093 */ u8 numBombs;
/* 0094 */ u8 numBombchus;
/* 0095 */ u8 numArrows;
/* 0096 */ s8 equippedItem;
/* 0097 */ Potion potions[MAX_POTIONS];
/* 0099 */ u8 numGems[Gem_COUNT];
/* 009c */ u8 quiverSize;
/* 009d */ u8 bombBagSize;
/* 009e */ u8 bombchuBagSize;
/* 009f */ FishType fishCount[FishType_COUNT];
/* 00a5 */ u8 equippedFairy;
/* 00a6 */ unk16 unk_a6;
/* 00a8 */ unk32 unk_a8[0x12];
/* 00f0 */ u16 unk_f0[4];
/* 00f8 */
SaveInventory() {
Fill32(0, this->itemFlags.flags, sizeof(this->itemFlags));
Fill32(0, &this->salvagedTreasureFlags, sizeof(this->salvagedTreasureFlags));
Fill32(0, this->shipPartPricesShown.flags, sizeof(this->shipPartPricesShown));
Fill32(0, this->treasurePriceShownFlags, sizeof(this->treasurePriceShownFlags));
this->unk_7c = 0;
this->unk_7e = 0;
this->unk_7f = 0;
this->Init();
Fill256(0, this->unk_a8, sizeof(this->unk_a8));
Fill16(0, this->unk_f0, sizeof(this->unk_f0));
}
void Init();
};
class SaveItemManager_Dummy2 {
public:
/* 000 */ u32 unk_cac[16];
SaveItemManager_Dummy2() {
Fill32(0, this->unk_cac, sizeof(this->unk_cac));
Fill32(0, this->unk_cac, sizeof(this->unk_cac));
}
};
class SaveItemManager {
public:
/* 0000 */ SaveInventory inventory;
/* 00f8 */ SaveItemManager_f8 unk_f8[64];
/* 02f8 */ SaveItemManager_2f8 unk_2f8[207];
/* 0cac */ SaveItemManager_Dummy2 unk_cac;
/* 0cec */ SaveItemManager_cec unk_cec;
/* 0cf0 */ unk8 unk_cf0[0xd1c - 0xcf0];
/* 0d1c */ SaveItemManager_d1c unk_d1c[8];
/* 0e9c */ u32 unk_e9c[2];
/* 0ea4 */ u32 unk_ea4[1];
/* 0ea8 */ unk8 unk_ea8[0xeb0 - 0xea8];
/* 0eb0 */ u32 unk_eb0[2];
/* 0eb8 */ u32 unk_eb8[336];
/* 13f8 */ unk8 unk_13f8[0x1400 - 0x13f8];
/* 1400 */ unk32 unk_1400[0x400];
/* 2400 */ SaveItemManager_2400 unk_2400;
/* 2404 */ unk8 unk_2404[0x2580 - 0x2404];
/* 2580 */ SaveItemManager_2580 unk_2580[32];
/* 2840 */ SaveItemManager_2840 unk_2840;
/* 2844 */ unk8 unk_2844[0x2900 - 0x2844];
/* 2900 */ UnkStruct_020ec7dc unk_2900;
/* 2940 */ SaveItemManager_2940 unk_2940;
/* 2940 */ unk8 unk_2944[0x29c0 - 0x2944];
/* 29c0 */ unk32 unk_29c0;
/* 29c4 */
SaveItemManager();
void func_ov000_0207a418();
};
extern SaveItemManager gSaveItemManager;