mirror of
https://github.com/zeldaret/st
synced 2026-08-24 23:36:03 -04:00
Decompiling BOMB (#140)
* 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
This commit is contained in:
@@ -56,8 +56,9 @@ public:
|
||||
/* 05 */ unk8 mUnk_05;
|
||||
/* 06 */ unk8 mUnk_06;
|
||||
/* 07 */ unk8 mUnk_07;
|
||||
/* 08 */ u32 mUnk_08;
|
||||
/* 0C */
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0C */ VecFx32 mUnk_0C;
|
||||
/* 18 */
|
||||
|
||||
MapObject_10_Base(); // func_ov000_0207c018
|
||||
|
||||
@@ -76,13 +77,12 @@ public:
|
||||
class MapObject_10 : public MapObject_10_Base {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 0C */ VecFx32 mUnk_0C;
|
||||
/* 18 */ VecFx32 mUnk_18;
|
||||
/* 24 */
|
||||
|
||||
MapObject_10() {}
|
||||
|
||||
// data_ov031_02113f18
|
||||
// data_ov000_020b36b8
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
/* 04 */ virtual void vfunc_04();
|
||||
/* 08 */ virtual void vfunc_08();
|
||||
@@ -119,10 +119,10 @@ class MapObject {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ VecFx32 mPos;
|
||||
/* 10 */ MapObject_10 *mUnk_10;
|
||||
/* 10 */ MapObject_10_Base *mUnk_10;
|
||||
/* 14 */ union {
|
||||
s16 mUnk_14;
|
||||
UnkAngleStruct mUnk_14_AngleStruct;
|
||||
s16 mAngle;
|
||||
UnkAngleStruct mAngleStruct;
|
||||
};
|
||||
/* 16 */ MapObjState mState;
|
||||
/* 18 */ unk8 mUnk_18[2]; // related to Link walking to the map object when touched
|
||||
@@ -154,7 +154,7 @@ public:
|
||||
/* 38 */
|
||||
|
||||
u16 GetDirection() {
|
||||
return (u16) (this->mUnk_14 + DEG_TO_ANG(45)) / DEG_TO_ANG(90);
|
||||
return (u16) (this->mAngle + DEG_TO_ANG(45)) / DEG_TO_ANG(90);
|
||||
}
|
||||
|
||||
bool IsOrientedVertically() {
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorItemFlower.hpp"
|
||||
#include "Actor/ActorUnkSCCN.hpp"
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "MapObjectPot_Base.hpp"
|
||||
#include "MapObject_10_Pot.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
enum MapObjBombFlowerState_ {
|
||||
MapObjBombFlowerState_0 = 0,
|
||||
MapObjBombFlowerState_1 = 1,
|
||||
MapObjBombFlowerState_2 = 2,
|
||||
MapObjBombFlowerState_3 = 3,
|
||||
MapObjBombFlowerState_4 = 4,
|
||||
MapObjBombFlowerState_5 = 5,
|
||||
MapObjBombFlowerState_6 = 6,
|
||||
MapObjBombFlowerState_Max
|
||||
};
|
||||
|
||||
class MapObjectBombFlower : public MapObjectPot_Base {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 48 */ ModelRender_ov031_0211578c mUnk_48;
|
||||
/* A8 */ STRUCT_PAD(0xA8, 0xB0);
|
||||
/* BC */ fx32 mUnk_B0;
|
||||
/* BC */ fx32 mUnk_B4;
|
||||
/* B8 */ volatile u16 mUnk_B8;
|
||||
/* BA */ u16 mUnk_BA;
|
||||
/* BC */ bool mUnk_BC;
|
||||
/* C0 */ MapObject_10_Pot mUnk_C0;
|
||||
|
||||
MapObjectBombFlower();
|
||||
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 14 */ virtual void vfunc_14() override;
|
||||
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) override;
|
||||
/* 28 */ virtual unk32 vfunc_28() override;
|
||||
/* 38 */ virtual void vfunc_38() override;
|
||||
/* 44 */ virtual bool SetState(MapObjState state, unk32) override;
|
||||
/* 48 */ virtual void vfunc_48() override;
|
||||
/* 50 */ virtual void vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) override;
|
||||
/* 58 */ virtual void vfunc_58();
|
||||
|
||||
bool IsInternalTimerOut() {
|
||||
if (this->mUnk_B8 < this->mUnk_BA) {
|
||||
++this->mUnk_B8;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void func_ov031_02102728(unk32 param1);
|
||||
};
|
||||
|
||||
class MapObjectProfileBombFlower : public MapObjectProfile_Derived2 {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
|
||||
MapObjectProfileBombFlower();
|
||||
|
||||
/* 0C */ virtual MapObject *Create();
|
||||
|
||||
static MapObjectProfileBombFlower *GetProfile();
|
||||
};
|
||||
@@ -1,7 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorUnkSCCN.hpp"
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "MapObject_10_Pot.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
@@ -13,6 +15,15 @@ enum MapObjGrassState_ {
|
||||
MapObjGrassState_MAX
|
||||
};
|
||||
|
||||
class MapObjectProfilePot_Base : public MapObjectProfile_Derived2 {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* D4 */ MapObject_10_Pot mUnk_D4;
|
||||
|
||||
MapObjectProfilePot_Base(MapObjectId param1, MapObjectId param2) :
|
||||
MapObjectProfile_Derived2(param1, param2) {}
|
||||
};
|
||||
|
||||
class MapObjectGrass : public MapObject {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
@@ -41,10 +52,9 @@ public:
|
||||
void func_ov031_02101978(unk32 param1, VecFx32 *param2);
|
||||
};
|
||||
|
||||
class MapObjectProfileGrass : public MapObjectProfile_Derived2 {
|
||||
class MapObjectProfileGrass : public MapObjectProfilePot_Base {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* D4 */ MapObject_10 mUnk_D4;
|
||||
|
||||
MapObjectProfileGrass();
|
||||
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorId.hpp"
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "MapObject_ov031.hpp"
|
||||
#include "MapObjectGrass.hpp"
|
||||
#include "MapObjectPot_Base.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class MapObjectPot : public MapObjectPot_Base {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 40 */ ActorId mUnk_40;
|
||||
/* 44 */ STRUCT_PAD(0x44, 0x48);
|
||||
/* 48 */ ModelRender_ov000_020b198c mUnk_48;
|
||||
|
||||
MapObjectPot();
|
||||
@@ -20,11 +17,10 @@ public:
|
||||
/* 14 */ virtual void vfunc_14() override; // func_ov031_021052cc
|
||||
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3); // func_ov031_021050b4
|
||||
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov031_02105348
|
||||
/* 30 */ virtual ~MapObjectPot() override;
|
||||
/* 3C */ virtual bool vfunc_3C() override; // func_ov031_021053b4
|
||||
/* 40 */ virtual bool vfunc_40() override; // func_ov031_021053fc
|
||||
/* 48 */ virtual void vfunc_48() override; // func_ov031_021051d4
|
||||
/* 54 */ virtual unk32 vfunc_54() override; // func_ov031_02105310
|
||||
/* 3C */ virtual bool vfunc_3C() override; // func_ov031_021053b4
|
||||
/* 40 */ virtual bool vfunc_40() override; // func_ov031_021053fc
|
||||
/* 48 */ virtual void vfunc_48() override; // func_ov031_021051d4
|
||||
/* 54 */ virtual unk32 vfunc_54() override; // func_ov031_02105310
|
||||
};
|
||||
|
||||
class MapObjectProfilePot : public MapObjectProfilePot_Base {
|
||||
@@ -32,7 +28,6 @@ public:
|
||||
/* 00 (base) */
|
||||
|
||||
MapObjectProfilePot();
|
||||
~MapObjectProfilePot();
|
||||
|
||||
/* 0C */ virtual MapObject *Create();
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
#include "Actor/ActorId.hpp"
|
||||
#include "MapObject.hpp"
|
||||
|
||||
enum MapObjPot_Base_State_ {
|
||||
MapObjPot_BaseState_0 = 0,
|
||||
MapObjPot_BaseState_1 = 1,
|
||||
MapObjPot_BaseState_2 = 2,
|
||||
MapObjPot_BaseState_3 = 3,
|
||||
MapObjPotBase_State_Max
|
||||
};
|
||||
|
||||
class MapObjectPot_Base : public MapObject {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 40 */ ActorId mUnk_40;
|
||||
/* 44 */ unk16 mUnk_44;
|
||||
/* 48 */
|
||||
|
||||
MapObjectPot_Base();
|
||||
|
||||
// data_ov000_020b35d0
|
||||
/* 00 */ virtual bool vfunc_00();
|
||||
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override;
|
||||
/* 28 */ virtual unk32 vfunc_28() override;
|
||||
/* 30 */ virtual ~MapObjectPot_Base() = 0 override;
|
||||
/* 38 */ virtual void vfunc_38() override;
|
||||
/* 3C */ virtual bool vfunc_3C() override;
|
||||
/* 40 */ virtual bool vfunc_40() override;
|
||||
/* 44 */ virtual bool SetState(MapObjState state, unk32 param2) override;
|
||||
/* 48 */ virtual void vfunc_48() override;
|
||||
/* 4C */ virtual bool vfunc_4C() override;
|
||||
/* 50 */ virtual void vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) override;
|
||||
/* 54 */ virtual unk32 vfunc_54() override;
|
||||
|
||||
void func_ov000_0209da78(unk32 param1, unk32 param2);
|
||||
};
|
||||
@@ -1,41 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class MapObjectUnkBMFL : public MapObject {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 40 */
|
||||
|
||||
MapObjectUnkBMFL();
|
||||
|
||||
/* 30 */ virtual ~MapObjectUnkBMFL() override;
|
||||
|
||||
void func_ov031_021025c4(void);
|
||||
void func_ov031_02102708(void);
|
||||
void func_ov031_02102718(void);
|
||||
void func_ov031_02102728(void);
|
||||
void func_ov031_021027a4(void);
|
||||
void func_ov031_02102894(void);
|
||||
void func_ov031_021029f0(void);
|
||||
void func_ov031_02102a40(void);
|
||||
void func_ov031_02102ad8(void);
|
||||
void func_ov031_02102af4(void);
|
||||
};
|
||||
|
||||
class MapObjectProfileUnkBMFL : public MapObjectProfile {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
|
||||
MapObjectProfileUnkBMFL();
|
||||
~MapObjectProfileUnkBMFL();
|
||||
|
||||
/* 0C */ virtual MapObject *Create();
|
||||
|
||||
static MapObjectProfileUnkBMFL *GetProfile();
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorUnkBOMB.hpp"
|
||||
#include "Actor/ActorBomb.hpp"
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "Unknown/UnkStruct_ov031_Items.hpp"
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
/* 040 */ UnkSystem6_Derived2 mUnk_040;
|
||||
/* 048 */ unk8 mUnk_048;
|
||||
/* 049 */ STRUCT_PAD(0x049, 0x04C);
|
||||
/* 04C */ ActorUnkBOMB_unk mUnk_04C[0x4];
|
||||
/* 04C */ ActorBomb_unk mUnk_04C[0x4];
|
||||
/* 07C */ unk32 mUnk_07C;
|
||||
/* 080 */ unk32 mUnk_080;
|
||||
/* 084 */ u16 mUnk_084;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectGrass.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "MapObject_ov031.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
#include "MapObject.hpp"
|
||||
|
||||
class MapObject_10_Pot_Base : public MapObject_10_Base {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 0C */
|
||||
|
||||
MapObject_10_Pot_Base() {}
|
||||
|
||||
// should definitely be in ov000
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
/* 04 */ virtual void vfunc_04();
|
||||
/* 08 */ virtual void vfunc_08();
|
||||
/* 0C */ virtual void vfunc_0C();
|
||||
/* 10 */ virtual void vfunc_10(Cylinder *param1);
|
||||
/* 14 */ virtual void vfunc_14();
|
||||
/* 18 */ virtual void vfunc_18(VecFx32 *param1);
|
||||
/* 1C */ virtual void vfunc_1C(VecFx32 *param1);
|
||||
};
|
||||
|
||||
class MapObject_10_Pot : public MapObject_10_Pot_Base {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 18 */ fx32 mUnk_18;
|
||||
/* 1C */ fx32 mUnk_1C;
|
||||
/* 20 */
|
||||
|
||||
MapObject_10_Pot() {}
|
||||
};
|
||||
@@ -1,45 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
class MapObjectPot_Base : public MapObject {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 40 */
|
||||
|
||||
MapObjectPot_Base();
|
||||
|
||||
// data_ov000_020b35d0
|
||||
|
||||
/* 00 */ virtual bool vfunc_00(); // func_ov000_0209d780
|
||||
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov000_0209d8e8
|
||||
/* 28 */ virtual unk32 vfunc_28() override; // func_ov000_0209d9f8
|
||||
/* 30 */ virtual ~MapObjectPot_Base() = 0 override;
|
||||
/* 38 */ virtual void vfunc_38() override; // func_ov000_0209d9ac
|
||||
/* 3C */ virtual bool vfunc_3C() override; // func_ov000_0209db74
|
||||
/* 40 */ virtual bool vfunc_40() override; // func_ov000_0209db7c
|
||||
/* 44 */ virtual void vfunc_44(unk32, unk32) override; // func_ov000_0209d7a4
|
||||
/* 48 */ virtual void vfunc_48() override; // func_ov000_0209da60
|
||||
/* 4C */ virtual void vfunc_4C() override; // func_ov000_0209da70
|
||||
/* 50 */ virtual void vfunc_50() override; // func_ov000_0209dac0
|
||||
/* 54 */ virtual unk32 vfunc_54() override; // func_ov000_0209da64
|
||||
|
||||
// overlay 0
|
||||
void func_ov000_0209d8e8(MapObjectPot_Base *param1, fx32 param2);
|
||||
unk32 func_ov000_0209da64();
|
||||
};
|
||||
|
||||
class MapObject_10_Pot : public MapObject_10 {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 24 */
|
||||
|
||||
MapObject_10_Pot() {}
|
||||
};
|
||||
|
||||
class MapObjectProfilePot_Base : public MapObjectProfile_Derived2 {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* D4 */ MapObject_10_Pot mUnk_D4;
|
||||
|
||||
MapObjectProfilePot_Base(MapObjectId param1, MapObjectId param2) :
|
||||
MapObjectProfile_Derived2(param1, param2) {}
|
||||
};
|
||||
Reference in New Issue
Block a user