mirror of
https://github.com/zeldaret/ph
synced 2026-07-09 14:05:36 -04:00
Decomp src/00_Core/Map/MapBase.cpp (57%) (#129)
* Comments * Lay out theoretical code * Externalise func_020196bc & func_020196fc * Pull merge * Pull merge * Decomp MapBase::func_ov00_02080edc * Fix MapManager TilePos params * Decomp progress * Fix MapManager param issue * Decomp progress * Update MapManager var pointer type * Fix function defs * Update symbols * Update * Match MapBase_Unk2::func_ov00_02080ad0 (thx 2 dt mow & yanis) * Update * Decomp progress 26% * Decomp progress 28% * Fix struct overlap * Fix unknown members * Uncomment and fix rest of methods (most still non-matching) * Decomp progress * Corrections
This commit is contained in:
@@ -8,12 +8,18 @@
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
class CameraViewpoint : public SysObject {
|
||||
public:
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
/* 04 */ unk8 mUnk_04;
|
||||
/* 05 */ unk8 mUnk_05[3];
|
||||
/* 04 */ u8 mUnk_04;
|
||||
/* 08 */ Vec3p mPos;
|
||||
/* 14 */ unk16 mUnk_14;
|
||||
/* 16 */ unk16 mUnk_16;
|
||||
/* 18 */ unk16 mUnk_18[2];
|
||||
/* 18 */ u16 mUnk_18[2];
|
||||
/* 1c */
|
||||
|
||||
inline CameraViewpoint() :
|
||||
mUnk_00(0),
|
||||
mUnk_04(0xff),
|
||||
mUnk_14(0),
|
||||
mUnk_16(0) {}
|
||||
};
|
||||
|
||||
@@ -6,15 +6,16 @@
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
class Exit : public SysObject {
|
||||
public:
|
||||
/* 00 */ unk32 mDestCourse;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0c */ unk32 mUnk_0c;
|
||||
/* 10 */ unk16 mUnk_10;
|
||||
/* 12 */ unk8 mDestMap;
|
||||
/* 13 */ unk8 mDestEntrance;
|
||||
/* 14 */ unk8 mUnk_14;
|
||||
/* 15 */ unk8 mUnk_15;
|
||||
/* 12 */ u8 mDestMap;
|
||||
/* 13 */ u8 mDestEntrance;
|
||||
/* 14 */ u8 mUnk_14;
|
||||
/* 15 */ u8 mUnk_15;
|
||||
/* 16 */ unk8 mUnk_16;
|
||||
/* 17 */ unk8 mUnk_17;
|
||||
/* 18 */
|
||||
|
||||
+96
-52
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "nds/math.h"
|
||||
|
||||
#include "DTCM/UnkStruct_027e0d38.hpp"
|
||||
#include "Map/CameraViewpoint.hpp"
|
||||
#include "Map/Course.hpp"
|
||||
#include "Map/Entrance.hpp"
|
||||
@@ -20,6 +21,36 @@
|
||||
#define MAX_VIEWPOINTS 8
|
||||
#define MAX_MAP_UNK_130 0x20
|
||||
|
||||
struct MapBase_Unk_13c {
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0c */
|
||||
};
|
||||
|
||||
struct MapBase_Unk_140 {
|
||||
/* 00 */ unk8 mUnk_00[0x5c];
|
||||
/* 5c */ unk8 mUnk_5c;
|
||||
/* 5d */ unk8 mUnk_5d[3];
|
||||
/* 60 */ unk32 *mUnk_60;
|
||||
/* 64 */
|
||||
};
|
||||
|
||||
struct MapBase_Unk_144 {
|
||||
/* 00 */ unk8 mUnk_00[0xc];
|
||||
/* 0c */ unk32 mUnk_0c;
|
||||
/* 10 */
|
||||
|
||||
unk32 *func_ov000_0209c08c(unk32 param_2, unk32 param_3);
|
||||
void func_ov000_0209c61c(void);
|
||||
unk32 *func_ov000_0209c530(void);
|
||||
void func_ov000_0209c788(void);
|
||||
void func_ov000_0209c8e4(unk32 param_2);
|
||||
void func_ov000_0209c1e4(unk32 param_2, unk32 param_3, unk32 param_4);
|
||||
void func_ov000_0209c2b4(unk32 param_2, unk32 param_3);
|
||||
void func_ov000_0209c2d0(unk32 param_2, unk32 param_3);
|
||||
};
|
||||
|
||||
struct MapBase_Unk_180 {
|
||||
/* 0 */ unk32 mUnk_0;
|
||||
/* 4 */
|
||||
@@ -29,20 +60,33 @@ struct MapBase_Unk_180 {
|
||||
};
|
||||
|
||||
struct MapBase_Unk1 {
|
||||
/* 00 */ s32 mUnk_00;
|
||||
/* 00 */ unk32 *mUnk_00;
|
||||
/* 04 */ Exit mExit_04;
|
||||
/* 1c */ Exit mExit_1c;
|
||||
/* 34 */
|
||||
|
||||
void func_ov00_02080324(s32 param_2, s32 param_3, s32 param_4);
|
||||
void func_ov00_02080324(void *param_2, void *param_3, void *param_4);
|
||||
};
|
||||
|
||||
struct MapBase_Unk2_02080ad0 {
|
||||
TriggerBase **mUnk_00;
|
||||
TriggerBase **mUnk_04;
|
||||
};
|
||||
|
||||
struct MapBase_Unk2 {
|
||||
/* 00 */ TriggerBase **mTrigger;
|
||||
/* 04 */ Vec3p mVec;
|
||||
/* 10 */
|
||||
/* 00 */ TriggerBase **ppTVar1;
|
||||
/* 04 */ TriggerBase **ppTVar2;
|
||||
/* 08 */ TriggerBase **mTrigger;
|
||||
/* 10 */ Vec3p mVec;
|
||||
/* 14 */
|
||||
/* 20 */
|
||||
|
||||
void func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3);
|
||||
void func_ov00_02080ad0(MapBase_Unk2_02080ad0 param_2, TriggerBase **param_3);
|
||||
};
|
||||
|
||||
struct UnkStruct_0207f38c {
|
||||
/* 00 */ unk8 mUnk_00[0x14];
|
||||
/* 14 */ TilePos mUnk_14;
|
||||
};
|
||||
|
||||
class MapBase : public SysObject {
|
||||
@@ -67,7 +111,7 @@ public:
|
||||
/* 014 */ unk8 mUnk_014;
|
||||
/* 015 */ unk8 mUnk_015;
|
||||
/* 016 */ unk8 mCurrViewpointId[2];
|
||||
/* 018 */ unk8 mUnk_018[2];
|
||||
/* 018 */ u8 mUnk_018[2];
|
||||
/* 01a */ unk8 mUnk_01a;
|
||||
/* 01b */ unk8 mUnk_01b;
|
||||
/* 01c */ unk8 mUnk_01c;
|
||||
@@ -80,7 +124,7 @@ public:
|
||||
/* 02a */ s16 mHeight;
|
||||
/* 02c */ unk16 mUnk_02c;
|
||||
/* 02e */ unk16 mUnk_02e;
|
||||
/* 030 */ s16 mUnk_030;
|
||||
/* 030 */ u16 mUnk_030;
|
||||
/* 032 */ unk8 mUnk_032[2];
|
||||
/* 034 */ unk32 mUnk_034;
|
||||
/* 038 */ unk32 mUnk_038;
|
||||
@@ -92,17 +136,17 @@ public:
|
||||
/* 050 */ unk8 mUnk_050[0x80];
|
||||
/* 0d0 */ Vec3p mCenter;
|
||||
/* 0dc */ AABB mBounds;
|
||||
/* 0f4 */ Vec3p mUnk_0f4;
|
||||
/* 0f4 */ Vec3p mOffset;
|
||||
/* 100 */ std::vector<Entrance> mEntrances;
|
||||
/* 10c */ std::vector<TriggerBase *> mTriggers;
|
||||
/* 118 */ std::vector<Exit> mExits;
|
||||
/* 124 */ std::vector<CameraViewpoint> mViewpoints;
|
||||
/* 130 */ std::vector<TriggerBase *> mUnk_130;
|
||||
/* 13c */ unk32 mUnk_13c;
|
||||
/* 140 */ unk32 mUnk_140;
|
||||
/* 144 */ void *mUnk_144;
|
||||
/* 13c */ MapBase_Unk_13c *mUnk_13c;
|
||||
/* 140 */ MapBase_Unk_140 *mUnk_140;
|
||||
/* 144 */ MapBase_Unk_144 *mUnk_144;
|
||||
/* 148 */ s32 mUnk_148;
|
||||
/* 14c */ s32 mUnk_14c;
|
||||
/* 14c */ unk32 mUnk_14c;
|
||||
/* 150 */ unk32 mUnk_150;
|
||||
/* 154 */ unk32 mUnk_154;
|
||||
/* 158 */ unk8 mUnk_158[8];
|
||||
@@ -141,32 +185,32 @@ public:
|
||||
/* 60 */ virtual unk32 vfunc_60(TilePos *param_1);
|
||||
/* 64 */ virtual unk32 vfunc_64();
|
||||
/* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2);
|
||||
/* 6c */ virtual unk8 vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4);
|
||||
/* 6c */ virtual void vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4);
|
||||
/* 70 */ virtual u16 vfunc_70(Vec3p *param_2);
|
||||
/* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2);
|
||||
/* 78 */ virtual unk32 *vfunc_78(TilePos *param_1);
|
||||
/* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]);
|
||||
/* 80 */ virtual unk32 vfunc_80();
|
||||
/* 84 */ virtual void vfunc_84(unk32 param_2);
|
||||
/* 80 */ virtual bool vfunc_80(TilePos *param_2);
|
||||
/* 84 */ virtual bool vfunc_84(UnkStruct_0207f38c *param_2);
|
||||
/* 88 */ virtual unk32 vfunc_88();
|
||||
/* 8c */ virtual unk32 vfunc_8c();
|
||||
/* 90 */ virtual unk8 vfunc_90(TilePos *param_2, unk32 param_3);
|
||||
/* 90 */ virtual void vfunc_90(TilePos *param_2, unk32 param_3);
|
||||
/* 94 */ virtual void vfunc_94();
|
||||
/* 98 */ virtual void vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4);
|
||||
/* 98 */ virtual void vfunc_98(TilePos *param_2, unk32 param_3, unk32 param_4);
|
||||
/* 9c */ virtual void vfunc_9c();
|
||||
/* a0 */ virtual void vfunc_a0();
|
||||
/* a4 */ virtual unk32 vfunc_a4(unk8 *param_1);
|
||||
/* a8 */ virtual void vfunc_a8();
|
||||
/* ac */ virtual void vfunc_ac();
|
||||
/* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3);
|
||||
/* b4 */ virtual void vfunc_b4();
|
||||
/* b8 */ virtual unk32 vfunc_b8();
|
||||
/* b4 */ virtual unk32 *vfunc_b4();
|
||||
/* b8 */ virtual unk32 vfunc_b8(unk32 param_2);
|
||||
/* bc */ virtual void vfunc_bc();
|
||||
/* c0 */ virtual void vfunc_c0();
|
||||
/* c4 */
|
||||
|
||||
void SetBounds(unk32 map, unk32 course);
|
||||
void GetMapFilePath(char *courseName, unk32 num1, unk32 buf);
|
||||
void SetBounds(unk32 map, Course *course);
|
||||
void GetMapFilePath(char *courseName, unk32 num1, char *buf);
|
||||
void func_ov00_0207ddf8(bool param_2);
|
||||
void func_ov00_0207de68(unk32 param_2);
|
||||
void func_ov00_0207de88();
|
||||
@@ -174,64 +218,64 @@ public:
|
||||
bool func_ov00_0207e08c(s32 *param_2, s32 param_3);
|
||||
s32 func_ov00_0207e0f0(s32 param_2);
|
||||
s32 func_ov00_0207e28c(s32 param_2);
|
||||
static unk8 func_ov00_0207e940(unk8 *param_1);
|
||||
static unk8 func_ov00_0207e968();
|
||||
static unk8 func_ov00_0207e96c();
|
||||
static unk8 func_ov00_0207f100();
|
||||
bool func_ov00_0207f104(unk32 param_2, unk32 param_3);
|
||||
static unk8 *func_ov00_0207e940(unk8 *param_1);
|
||||
static void func_ov00_0207e968();
|
||||
static void func_ov00_0207e96c();
|
||||
static void func_ov00_0207f100();
|
||||
bool func_ov00_0207f104(Vec3p *param_2, unk32 *param_3);
|
||||
unk32 func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3);
|
||||
bool func_ov00_0207f38c(s32 *param_2);
|
||||
bool func_ov00_0207f38c(UnkStruct_0207f38c *param_2);
|
||||
void func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3);
|
||||
static void func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3);
|
||||
static void func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, TilePos *param_3, unk32 param_4);
|
||||
void func_ov00_0207f630(Vec2s *param_2, Vec3p *param_3);
|
||||
unk8 GetTileStartX(unk32 x);
|
||||
unk8 GetTileStartZ(unk32 z);
|
||||
s32 GetTileEndX(unk32 x);
|
||||
s32 GetTileEndZ(unk32 z);
|
||||
unk32 GetTileStartX(unk32 x);
|
||||
unk32 GetTileStartZ(unk32 z);
|
||||
unk32 GetTileEndX(unk32 x);
|
||||
unk32 GetTileEndZ(unk32 z);
|
||||
void GetTileBounds(TilePos *tilePos, AABB *bounds);
|
||||
s32 GetClampedTileX(s32 worldX);
|
||||
s32 GetClampedTileY(s32 worldZ);
|
||||
unk8 GetTileX(s32 worldX);
|
||||
unk8 GetTileY(s32 worldZ);
|
||||
unk32 GetTileX(s32 worldX);
|
||||
unk32 GetTileY(s32 worldZ);
|
||||
bool IsInBounds(Vec3p *tileWorldPos);
|
||||
s32 AddEntrance(Entrance *param_2);
|
||||
unk32 AddEntrance(Entrance *param_2);
|
||||
Entrance *FindEntrance(unk32 id);
|
||||
void func_ov00_0207f924(s32 param_2);
|
||||
unk8 func_ov00_0207f934();
|
||||
unk8 func_ov00_0207f948(unk32 param_2);
|
||||
void func_ov00_0207f924(unk32 param_2);
|
||||
unk32 *func_ov00_0207f934();
|
||||
void func_ov00_0207f948(unk32 *param_2);
|
||||
void AddTrigger(TriggerParams *param_2);
|
||||
s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3);
|
||||
s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4);
|
||||
unk8 GetOverlappingTrigger(Vec3p *param_2);
|
||||
u32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4);
|
||||
u8 GetOverlappingTrigger(Vec3p *param_2);
|
||||
TriggerBase *FindTrigger(unk32 type);
|
||||
unk8 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity);
|
||||
unk32 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity);
|
||||
bool IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3);
|
||||
bool AnyTrigger_func_0c(unk32 type);
|
||||
unk8 Trigger_vfunc_08();
|
||||
bool AddTrigger(unk32 param_2);
|
||||
bool func_ov00_0207ff88(s32 param_2);
|
||||
void Trigger_vfunc_08();
|
||||
bool AddTrigger(TriggerBase *param_2);
|
||||
bool func_ov00_0207ff88(TriggerBase *param_2);
|
||||
void func_ov00_0208005c(s32 param_2, s32 param_3, unk32 param_4);
|
||||
void func_ov00_0208006c(unk32 param_2, s32 param_3);
|
||||
void func_ov00_0208007c(s32 param_2, s32 param_3);
|
||||
void func_ov00_0208008c(u32 param_2);
|
||||
unk8 AddExit(Exit *param_2);
|
||||
char func_ov00_02080140(Exit *param_2);
|
||||
void AddExit(Exit *param_2);
|
||||
u8 func_ov00_02080140(Exit *param_2);
|
||||
bool FindExit(u32 param_2, Exit *param_3);
|
||||
unk8 AddCameraViewpoint(CameraViewpoint *param_2);
|
||||
void AddCameraViewpoint(CameraViewpoint *param_2);
|
||||
bool FindViewpoint_Unk_4(unk8 id, CameraViewpoint *param_3);
|
||||
bool FindViewpoint_Unk_0(s32 param_2, CameraViewpoint *param_3);
|
||||
void GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3);
|
||||
unk32 GetCurrentViewpoint_Unk_00(s32 param_2);
|
||||
bool func_ov00_02080824(u32 param_2, unk8 *param_3);
|
||||
bool AddUnk_130(s32 param_2);
|
||||
bool func_ov00_020809b8(s32 param_2);
|
||||
unk8 func_ov00_02080a78(Vec3p *param_2);
|
||||
unk8 func_ov00_02080b24(TilePos *param_2);
|
||||
bool AddUnk_130(TriggerBase *param_2);
|
||||
bool func_ov00_020809b8(TriggerBase *param_2);
|
||||
TriggerBase *func_ov00_02080a78(Vec3p *param_2);
|
||||
void func_ov00_02080b24(TilePos *param_2);
|
||||
void func_ov00_02080d08(TilePos *param_2);
|
||||
bool TriggerOfType_vfunc_10(unk32 type);
|
||||
void func_ov00_02080de4();
|
||||
unk8 func_ov00_02080de8(unk32 param_2);
|
||||
void func_ov00_02080de8(unk32 param_2);
|
||||
void func_ov00_02080edc();
|
||||
|
||||
MapBase(u32 param1, u32 param2);
|
||||
|
||||
+10
-10
@@ -165,15 +165,15 @@ public:
|
||||
void func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4);
|
||||
void func_ov00_02082660(s32 param_2, s32 param_3);
|
||||
void func_ov00_02082670(unk32 param_2, s32 param_3);
|
||||
void func_ov00_02082680(unk32 param_2, unk32 param_3);
|
||||
void func_ov00_020826a0(unk32 param_2, unk32 param_3);
|
||||
void func_ov00_02082680(TilePos *param_2, unk32 param_3);
|
||||
void func_ov00_020826a0(TilePos *param_2, unk32 param_3);
|
||||
void CreateMap(unk32 mapType, unk32 param_3, unk32 param_4);
|
||||
void DestroyMap();
|
||||
void MapData_vfunc_44();
|
||||
void func_ov00_02082808(bool param_2);
|
||||
s32 MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]);
|
||||
void MapData_vfunc_84(unk32 param_2);
|
||||
bool func_ov00_020828f8(s32 *param_2);
|
||||
void MapData_vfunc_84(UnkStruct_0207f38c *param_2);
|
||||
bool func_ov00_020828f8(UnkStruct_0207f38c *param_2);
|
||||
u8 GetNumMaps();
|
||||
s32 func_ov00_02082914(unk32 param_2);
|
||||
void func_ov00_02082acc();
|
||||
@@ -235,8 +235,8 @@ public:
|
||||
unk8 GetOverlappingTrigger(Vec3p *param_2);
|
||||
bool func_ov00_02083790(s32 param_2);
|
||||
bool func_ov00_02083840(s32 param_2);
|
||||
bool AddTrigger(s32 param_2);
|
||||
bool func_ov00_020838d8(s32 param_2);
|
||||
bool AddTrigger(TriggerBase *param_2);
|
||||
bool func_ov00_020838d8(TriggerBase *param_2);
|
||||
bool FindExit(u32 param_2, Exit *param_3);
|
||||
char func_ov00_020838f8(Exit *param_2);
|
||||
bool func_ov00_02083908(char param_2, CameraViewpoint *param_3);
|
||||
@@ -247,8 +247,8 @@ public:
|
||||
void func_ov00_02083958(s32 param_2);
|
||||
void func_ov00_02083968(u32 param_2, unk8 *param_3);
|
||||
bool func_ov00_02083978(Vec3p *param_2, Vec3p *param_3);
|
||||
bool func_ov00_020839b4(s32 param_2);
|
||||
bool func_ov00_020839c4(s32 param_2);
|
||||
bool func_ov00_020839b4(TriggerBase *param_2);
|
||||
bool func_ov00_020839c4(TriggerBase *param_2);
|
||||
s32 func_ov00_020839d4(s32 param_2);
|
||||
s32 func_ov00_020839f8(s32 param_2);
|
||||
TilePos func_ov00_02083a1c(Vec3p *param_3);
|
||||
@@ -278,8 +278,8 @@ public:
|
||||
static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2);
|
||||
unk32 GetMapData_Unk_48();
|
||||
unk32 GetMapData_Unk_4c();
|
||||
unk32 func_ov00_0208412c();
|
||||
void func_ov00_0208413c(unk32 param_2);
|
||||
unk32 *func_ov00_0208412c();
|
||||
void func_ov00_0208413c(unk32 *param_2);
|
||||
unk8 MapData_vfunc_58(TilePos *param_1, int param_2);
|
||||
s32 func_ov00_02084164(TilePos *param_2);
|
||||
u8 GetMapData_Unk_0a();
|
||||
|
||||
@@ -23,10 +23,15 @@ struct TriggerParams {
|
||||
/* b */
|
||||
};
|
||||
|
||||
class TriggerBase : public SysObject {
|
||||
class UnkStruct_TriggerBase : public SysObject {
|
||||
public:
|
||||
virtual unk32 vfunc_00(void *);
|
||||
};
|
||||
|
||||
class TriggerBase : public UnkStruct_TriggerBase {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ unk8 mUnk_04;
|
||||
/* 04 */ bool mUnk_04;
|
||||
/* 05 */ u8 mId;
|
||||
/* 06 */ unk8 mUnk_06[2];
|
||||
/* 08 */ u32 mUnk_08;
|
||||
@@ -36,7 +41,7 @@ public:
|
||||
|
||||
/* 00 */ virtual ~TriggerBase();
|
||||
/* 08 */ virtual void vfunc_08();
|
||||
/* 0c */ virtual unk32 vfunc_0c();
|
||||
/* 0c */ virtual bool vfunc_0c(bool param_2);
|
||||
/* 10 */ virtual unk32 vfunc_10();
|
||||
/* 14 */ virtual bool Overlaps(Vec3p *point);
|
||||
/* 18 */ virtual bool GetBoundingBox(AABB *bbox);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "Physics/Sphere.hpp"
|
||||
|
||||
class TriggerSphere : public TriggerBase {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 14 */ Sphere mSphere;
|
||||
/* 24 */ s32 mHeight;
|
||||
|
||||
Reference in New Issue
Block a user