mirror of
https://github.com/zeldaret/ph
synced 2026-07-09 06:03:28 -04:00
Merge remote-tracking branch 'zeldaret/main' into decomp-PlayerControl
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define MAX_POTIONS 2
|
||||
|
||||
typedef s32 ItemFlag;
|
||||
enum ItemFlag_ {
|
||||
ItemFlag_None = -1,
|
||||
@@ -233,6 +235,77 @@ enum ItemId_ {
|
||||
/* 0x88 */ ItemId_Unk_136 = 136,
|
||||
};
|
||||
|
||||
enum Gem {
|
||||
Gem_Courage,
|
||||
Gem_Power,
|
||||
Gem_Wisdom,
|
||||
Gem_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipPart;
|
||||
enum ShipPart_ {
|
||||
ShipPart_Anchor,
|
||||
ShipPart_Prow,
|
||||
ShipPart_Hull,
|
||||
ShipPart_Cannon,
|
||||
ShipPart_Handrail,
|
||||
ShipPart_Wheel,
|
||||
ShipPart_Chimney,
|
||||
ShipPart_Bridge,
|
||||
ShipPart_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipType;
|
||||
enum ShipType_ {
|
||||
ShipType_Linebeck,
|
||||
ShipType_Bright,
|
||||
ShipType_Iron,
|
||||
ShipType_Stone,
|
||||
ShipType_Vintage,
|
||||
ShipType_Demon,
|
||||
ShipType_Tropical,
|
||||
ShipType_Dignified,
|
||||
ShipType_Golden,
|
||||
ShipType_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipItem;
|
||||
#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type)
|
||||
#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT)
|
||||
|
||||
typedef u32 Treasure;
|
||||
enum Treasure_ {
|
||||
Treasure_PinkCoral,
|
||||
Treasure_WhitePearlLoop,
|
||||
Treasure_DarkPearlLoop,
|
||||
Treasure_ZoraScale,
|
||||
Treasure_GoronAmber,
|
||||
Treasure_RutoCrown,
|
||||
Treasure_HelmarocPlume,
|
||||
Treasure_RegalRing,
|
||||
|
||||
Treasure_COUNT,
|
||||
};
|
||||
|
||||
typedef u8 Potion;
|
||||
enum Potion_ {
|
||||
Potion_None,
|
||||
Potion_Red,
|
||||
Potion_Purple,
|
||||
Potion_Yellow,
|
||||
Potion_COUNT,
|
||||
};
|
||||
|
||||
struct ItemFlags {
|
||||
/* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)];
|
||||
/* 10 */
|
||||
};
|
||||
|
||||
struct ShipPartPricesShown {
|
||||
/* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)];
|
||||
/* c */
|
||||
};
|
||||
|
||||
namespace Item {
|
||||
bool func_ov00_020ad020(ItemId item);
|
||||
bool func_ov00_020ad068(ItemId item);
|
||||
|
||||
+10
-109
@@ -5,25 +5,20 @@ extern "C" {
|
||||
}
|
||||
|
||||
#include "global.h"
|
||||
#include "lib/math.h"
|
||||
#include "nds/math.h"
|
||||
#include "types.h"
|
||||
|
||||
#include "Actor/ActorNaviBase.hpp"
|
||||
#include "DTCM/UnkStruct_027e0f78.hpp"
|
||||
#include "Actor/Navi/ActorNaviBase.hpp"
|
||||
#include "Item/Item.hpp"
|
||||
#include "Map/MapManager.hpp"
|
||||
#include "Player/EquipItem.hpp"
|
||||
#include "Player/HealthManager.hpp"
|
||||
#include "Render/ModelRender.hpp"
|
||||
#include "Save/AdventureFlags.hpp"
|
||||
#include "Save/SaveItemManager.hpp"
|
||||
#include "Sound/Sfx.hpp"
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes
|
||||
#define MAX_AMMO_UPGRADE 2
|
||||
#define MAX_UNK_0BA 9
|
||||
#define MAX_POTIONS 2
|
||||
|
||||
typedef s32 FairyId;
|
||||
enum FairyId_ {
|
||||
@@ -34,78 +29,6 @@ enum FairyId_ {
|
||||
FairyId_COUNT = 3,
|
||||
};
|
||||
|
||||
enum Gem {
|
||||
Gem_Courage,
|
||||
Gem_Power,
|
||||
Gem_Wisdom,
|
||||
Gem_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipPart;
|
||||
enum ShipPart_ {
|
||||
ShipPart_Anchor,
|
||||
ShipPart_Prow,
|
||||
ShipPart_Hull,
|
||||
ShipPart_Cannon,
|
||||
ShipPart_Handrail,
|
||||
ShipPart_Wheel,
|
||||
ShipPart_Chimney,
|
||||
ShipPart_Bridge,
|
||||
ShipPart_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipType;
|
||||
enum ShipType_ {
|
||||
ShipType_Linebeck,
|
||||
ShipType_Bright,
|
||||
ShipType_Iron,
|
||||
ShipType_Stone,
|
||||
ShipType_Vintage,
|
||||
ShipType_Demon,
|
||||
ShipType_Tropical,
|
||||
ShipType_Dignified,
|
||||
ShipType_Golden,
|
||||
ShipType_COUNT,
|
||||
};
|
||||
|
||||
typedef u32 ShipItem;
|
||||
#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type)
|
||||
#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT)
|
||||
|
||||
typedef u32 Treasure;
|
||||
enum Treasure_ {
|
||||
Treasure_PinkCoral,
|
||||
Treasure_WhitePearlLoop,
|
||||
Treasure_DarkPearlLoop,
|
||||
Treasure_ZoraScale,
|
||||
Treasure_GoronAmber,
|
||||
Treasure_RutoCrown,
|
||||
Treasure_HelmarocPlume,
|
||||
Treasure_RegalRing,
|
||||
|
||||
Treasure_COUNT,
|
||||
};
|
||||
|
||||
#define NUM_POTIONS 2
|
||||
typedef u8 Potion;
|
||||
enum Potion_ {
|
||||
Potion_None,
|
||||
Potion_Red,
|
||||
Potion_Purple,
|
||||
Potion_Yellow,
|
||||
Potion_COUNT,
|
||||
};
|
||||
|
||||
struct ItemFlags {
|
||||
/* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)];
|
||||
/* 10 */
|
||||
};
|
||||
|
||||
struct ShipPartPricesShown {
|
||||
/* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)];
|
||||
/* c */
|
||||
};
|
||||
|
||||
typedef u32 ItemModelId;
|
||||
enum ItemModelId_ {
|
||||
ItemModelId_OshusSword, // swA
|
||||
@@ -136,35 +59,6 @@ enum DungeonItemModelId_ {
|
||||
DungeonItemModelId_COUNT,
|
||||
};
|
||||
|
||||
struct SaveItemManager {
|
||||
/* 00 */ ItemFlags itemFlags;
|
||||
/* 10 */ u32 salvagedTreasureFlags;
|
||||
/* 14 */ ShipPartPricesShown shipPartPricesShown;
|
||||
/* 20 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)];
|
||||
/* 24 */ u8 equippedShipParts[ShipPart_COUNT];
|
||||
/* 2c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT];
|
||||
/* 74 */ s8 treasure[Treasure_COUNT];
|
||||
/* 7c */ unk8 unk_7c[4];
|
||||
/* 80 */ u16 hourglassSeconds;
|
||||
/* 82 */ u16 unk_82[6];
|
||||
/* 8e */ u16 numRupees;
|
||||
/* 90 */ unk8 unk_90;
|
||||
/* 91 */ unk8 unk_91;
|
||||
/* 92 */ unk8 unk_92;
|
||||
/* 93 */ u8 numBombs;
|
||||
/* 94 */ u8 numBombchus;
|
||||
/* 95 */ u8 numArrows;
|
||||
/* 96 */ s8 equippedItem;
|
||||
/* 97 */ Potion potions[NUM_POTIONS];
|
||||
/* 99 */ u8 numGems[Gem_COUNT];
|
||||
/* 9c */ u8 quiverSize;
|
||||
/* 9d */ u8 bombBagSize;
|
||||
/* 9e */ u8 bombchuBagSize;
|
||||
/* 9f */ u8 unk_9f[6];
|
||||
/* a5 */ u8 equippedFairy;
|
||||
/* a6 */
|
||||
};
|
||||
|
||||
class ItemManager : public SysObject {
|
||||
public:
|
||||
/* 000 */ ItemFlag mEquippedItem;
|
||||
@@ -211,6 +105,7 @@ public:
|
||||
static void Destroy();
|
||||
ItemManager();
|
||||
~ItemManager();
|
||||
void Init();
|
||||
|
||||
// Save/load
|
||||
void Save(SaveItemManager *save);
|
||||
@@ -221,6 +116,7 @@ public:
|
||||
ActorNaviBase *GetFairy(FairyId id) const;
|
||||
u32 GetActiveFairyLevel(FairyId id) const;
|
||||
u32 GetFairyLevel(FairyId id) const;
|
||||
void SpawnFairies();
|
||||
|
||||
// Equip item
|
||||
void ClearPrevEquippedItem();
|
||||
@@ -239,6 +135,11 @@ public:
|
||||
bool ClearForcedEquipItem();
|
||||
void UpdateSwordShieldInUse();
|
||||
static EquipItem *GetEquipItemUnchecked(ItemFlag equipId);
|
||||
void InitEquipItems();
|
||||
void func_ov004_02107648();
|
||||
void func_ov004_02107650();
|
||||
void func_ov004_02107698();
|
||||
void func_ov004_021076bc();
|
||||
|
||||
// Ammo
|
||||
u16 GetAmmo(ItemFlag equipId) const;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class ItemModelLoader {
|
||||
public:
|
||||
/* 00 */ unk32 mItems;
|
||||
/* 04 */ unk32 mDungeonItems;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0c */ unk8 mUnk_0c[0x14];
|
||||
/* 20 */
|
||||
|
||||
ItemModelLoader();
|
||||
ItemModelLoader *func_ov000_020bb2ec();
|
||||
unk32 func_ov000_020bb34c();
|
||||
void func_ov000_020bb378(s32 param1);
|
||||
unk32 func_ov000_020bb390(s32 equipId);
|
||||
unk32 func_ov000_020bb3a8(s32 param1);
|
||||
s32 func_ov000_020bb3b4(s32 param1, char *param2);
|
||||
unk32 func_ov000_020bb3d4(s32 param1, unk32 param2);
|
||||
void func_ov000_020bb3f4(char *param2);
|
||||
void func_ov000_020bb414(unk32 param1);
|
||||
void func_ov000_020bb420(unk32 param1);
|
||||
void func_ov000_020bb42c(unk32 param1);
|
||||
|
||||
static void Create();
|
||||
static void Destroy();
|
||||
};
|
||||
Reference in New Issue
Block a user