mirror of
https://github.com/zeldaret/st
synced 2026-08-23 15:12:15 -04:00
473e1e102b
* feat: begin decompiling * feat: some progress * fix: forgot to change symbol * feat: increase matching * fix: function params not updated * feat: more matching * fix: noo more errors oon local help * fix: match back UnkStruct_PlayerGet_74.data * feat: little progress * fix: SWBM.data regression * feat: up jp version * feat: update matching * refactor: rename UnkBOMB to Bomb * feat: decompiling part of MapObjectUnkBMFL * feat: destroy MapObjectPot's vfunc_24 for the good of all * fix: revert wrong symbol * feat: updating jp symbols * feat: eur advancements * feat: weird stuff * feat: fix build issue * feat: rename BMFL to BombFlower * feat: catchup jp .data * feat: improve BombFlower * feat: improve bomb matching * style: cleanup * style: cleanup v2 * fix: mapobjectpot_base .data * feat: better match for mapobjectpot_base * style: use deg_to_rad macro * style: cleaner variable definition * doc: better comment * fix: build
124 lines
3.8 KiB
C++
124 lines
3.8 KiB
C++
#pragma once
|
|
|
|
#include "Unknown/UnkFileSystem.hpp"
|
|
#include "types.h"
|
|
#include <nns/g3d/g3d.h>
|
|
|
|
//! TODO: doesn't belong here but since we don't know what it is...
|
|
class UnkSystem3 {
|
|
public:
|
|
/* 00 */ void *mUnk_00;
|
|
/* 04 */ void *mUnk_04;
|
|
/* 08 */ unk32 mUnk_08;
|
|
/* 0C */
|
|
|
|
UnkSystem3(const char *path, unk32 param2);
|
|
UnkSystem3(const char *path, unk32 param2, unk32 param3, unk32 param4);
|
|
~UnkSystem3();
|
|
|
|
void func_02015410(const char *path, unk32 param2);
|
|
void func_0201541c(const char *param1, unk32 param2);
|
|
void func_02015460(const char *param1, void *param2, unk32 param3);
|
|
};
|
|
|
|
class MapObjectProfile_Derived2_20_Base_18 {
|
|
public:
|
|
/* 00 */ const char *mUnk_00;
|
|
/* 04 */ unk32 mUnk_04;
|
|
/* 08 */
|
|
|
|
MapObjectProfile_Derived2_20_Base_18(); // func_02016620
|
|
~MapObjectProfile_Derived2_20_Base_18();
|
|
};
|
|
|
|
class MapObjectProfile_Derived2_20_Base_54 {
|
|
public:
|
|
/* 00 (vtable) */
|
|
/* 04 */ const char *mUnk_04;
|
|
/* 08 */ unk32 mUnk_08;
|
|
/* 0C */ unk32 mUnk_0C;
|
|
/* 10 */
|
|
|
|
MapObjectProfile_Derived2_20_Base_54();
|
|
~MapObjectProfile_Derived2_20_Base_54();
|
|
|
|
/* 00 */ virtual void vfunc_00();
|
|
/* 04 */ virtual void vfunc_04();
|
|
/* 08 */ virtual void vfunc_08(unk32 param1);
|
|
/* 0C */ virtual void vfunc_0C();
|
|
};
|
|
|
|
class UnkStruct_ov000_02058a84 {
|
|
public:
|
|
/* 0 */ STRUCT_PAD(0x0, 0x6);
|
|
/* 6 */ u16 mUnk_6;
|
|
/* 8 */
|
|
};
|
|
|
|
class MapObjectProfile_Derived2_20_Base {
|
|
public:
|
|
/* 00 (vtable) */
|
|
/* 04 */ const char *mDirName;
|
|
/* 08 */ const char *mArchiveName;
|
|
/* 0C */ void *mUnk_0C;
|
|
/* 10 */ void *mUnk_10;
|
|
/* 14 */ u8 mUnk_14;
|
|
/* 15 */ u8 mUnk_15;
|
|
/* 16 */ u8 mUnk_16;
|
|
/* 17 */ u8 mUnk_17;
|
|
/* 18 */ MapObjectProfile_Derived2_20_Base_18 mUnk_18;
|
|
/* 20 */ UnkSystem3 mUnk_20;
|
|
/* 2C */ UnkFileSystem3 mUnk_2C;
|
|
/* 3C */ UnkFileSystem5 mUnk_3C;
|
|
/* 50 */ BMDSectionModel *mUnk_50;
|
|
/* 54 */ MapObjectProfile_Derived2_20_Base_54 mUnk_54[4];
|
|
/* 94 */
|
|
|
|
MapObjectProfile_Derived2_20_Base(const char *directory, const char *archiveName, const char *param3, const char *param4,
|
|
unk32 param5,
|
|
unk32 param6); // func_ov000_02058540
|
|
|
|
// data_ov000_020b1b14
|
|
/* 00 */ virtual ~MapObjectProfile_Derived2_20_Base();
|
|
/* 08 */
|
|
|
|
void func_ov000_020586b4(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
|
|
void func_ov000_020588f0(void *param1, unk32 param2, unk32 param3, void *param4);
|
|
void func_ov000_02058900(void);
|
|
void func_ov000_02058914(void *param1);
|
|
void func_ov000_020589e4(void);
|
|
unk32 func_ov000_02058a24();
|
|
void unc_ov000_02058a58(void);
|
|
UnkStruct_ov000_02058a84 *func_ov000_02058a84(unk32 param1, const char *param2);
|
|
void func_ov000_02058ab0(void);
|
|
};
|
|
|
|
#define GET_PROFILE(T) (&ProfileInstance<T>::sProfile)
|
|
#define GET_PROFILE_20(T) (&ProfileInstance<T>::sProfile.mUnk_20)
|
|
#define GET_PROFILE_20_50(T) (ProfileInstance<T>::sProfile.mUnk_20.mUnk_50)
|
|
#define GET_PROFILE_D4(T) (&ProfileInstance<T>::sProfile.mUnk_D4)
|
|
|
|
#define DECL_PROFILE(T) \
|
|
T ProfileInstance<T>::sProfile; \
|
|
T *T::GetProfile() { \
|
|
return &ProfileInstance<T>::sProfile; \
|
|
}
|
|
|
|
template <typename T> struct ProfileInstance {
|
|
static T sProfile;
|
|
};
|
|
|
|
template <typename T> static inline G3d_Model *GetModelFromProfile() {
|
|
return G3d_GetModelPtr((BMDSectionModel *) GET_PROFILE_20_50(T));
|
|
}
|
|
|
|
template <typename T> static inline G3d_Model *GetModelFromProfile2(s32 param1, u32 resId) {
|
|
T *pProfile = GET_PROFILE(T);
|
|
pProfile->func_ov000_0209ccd8(param1, resId);
|
|
return G3d_GetModelPtr((BMDSectionModel *) pProfile->mUnk_20[param1]->mUnk_50);
|
|
}
|
|
|
|
static inline G3d_Model *GetModelFromProfile3(MapObjectProfile_Derived2_20_Base *param1, const char *name) {
|
|
return G3d_GetUnkPtr(param1->mUnk_50, name);
|
|
}
|