Skip to content

Commit 1c0b368

Browse files
committed
Implement GreyFalconNode0x1c
1 parent 32e8206 commit 1c0b368

15 files changed

Lines changed: 549 additions & 321 deletions

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ set(GOLDP_INLINE_EXPANSION_SOURCES
128128
GolDP/src/gdbmodelindexarray0xc.cpp
129129
GolDP/src/shadowwolf0xc.cpp
130130
GolDP/src/gdbmodel0x48.cpp
131+
GolDP/src/greyfalconnode0x1c.cpp
131132
)
132133

133134
add_library(common_goldp OBJECT ${COMMON_SOURCES})
@@ -169,7 +170,7 @@ add_library(goldp SHARED
169170
GolDP/src/azureridge0x38.cpp
170171
GolDP/src/amberlensbase0x120.cpp
171172
GolDP/src/amberlens0x344.cpp
172-
GolDP/src/jadeorbit0x220.cpp
173+
GolDP/src/jadeorbit0xd0.cpp
173174
GolDP/src/ddrawutil.cpp
174175
GolDP/src/jadeorbitbase0x10.cpp
175176
GolDP/src/amberhaze0x1c.cpp
@@ -209,6 +210,7 @@ add_library(goldp SHARED
209210
GolDP/src/gdbmodel0x48.cpp
210211
GolDP/src/igdbmodelindexarray0x8.cpp
211212
GolDP/src/gdbmodelindexarray0xc.cpp
213+
GolDP/src/greyfalconnode0x1c.cpp
212214
util/decomp.cpp
213215
$<TARGET_OBJECTS:common_goldp>
214216
)

GolDP/include/fluffygloomkins0x118.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
#include "decomp.h"
66
#include "zoweeblubberworth0xf0.h"
77

8-
class CmbModelPart0x34;
98
class AmberHaze0x20;
109
class AmberLensBase0x120;
1110
class BoundingShape0x2c;
11+
class CmbModelPart0x34;
1212
class GdbModel0x48;
13+
class GreyFalconNode0x1c;
1314
class PurpleRibbon0x24;
1415
class ShadowWolf0xc;
1516

@@ -46,7 +47,7 @@ class FluffyGloomkins0x118 : public ZoweeBlubberworth0xf0 {
4647
PurpleRibbon0x24* m_unk0xf0; // 0xf0
4748
AmberHaze0x20* m_unk0xf4; // 0xf4
4849
GdbModel0x48* m_unk0xf8; // 0xf8
49-
undefined4* m_unk0xfc; // 0xfc
50+
GreyFalconNode0x1c* m_unk0xfc; // 0xfc
5051
undefined4* m_unk0x100; // 0x100
5152
ShadowWolf0xc* m_unk0x104; // 0x104
5253
undefined4* m_unk0x108; // 0x108

GolDP/include/greyfalconnode0x1c.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#ifndef GREYFALCONNODE0x1C_H
2+
#define GREYFALCONNODE0x1C_H
3+
4+
#include "compat.h"
5+
#include "decomp.h"
6+
#include "whitefalconnode0x18.h"
7+
8+
class JadeOrbitBase0x10;
9+
class JadeOrbit0xd0;
10+
struct GolMatrix4;
11+
12+
// VTABLE: GOLDP 0x1005672c
13+
// SIZE 0x1c
14+
class GreyFalconNode0x1c : public WhiteFalconNode0x18 {
15+
public:
16+
GreyFalconNode0x1c();
17+
~GreyFalconNode0x1c() override; // vtable+0x00
18+
19+
void Clear() override; // vtable+0x08
20+
void VTable0x0c() override; // vtable+0x0c
21+
JadeOrbitBase0x10* VTable0x18(LegoU32 p_index) const override; // vtable+0x18
22+
LegoU32 VTable0x1c(const JadeOrbitBase0x10&) const override; // vtable+0x1c
23+
void VTable0x20(const GolMatrix4& p_m) override; // vtable+0x20
24+
void VTable0x24(const GolMatrix34* p_m) override; // vtable+0x24
25+
void VTable0x2c(LegoU32 p_index, GolMatrix34* p_dest) const override; // vtable+0x2c
26+
27+
void FUN_10014a60(const GolMatrix4& p_m1, const GolMatrix4& p_m2, const GolMatrix4& p_m3);
28+
29+
// SYNTHETIC: GOLDP 0x10017940
30+
// GreyFalconNode0x1c::`vector deleting destructor'
31+
32+
private:
33+
JadeOrbit0xd0* m_unk0x18; // 0x18
34+
};
35+
36+
#endif // GREYFALCONNODE0x1C_H

GolDP/include/jadeorbit0x220.h

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,12 @@
22
#define JADEORBIT0X220_H
33

44
#include "compat.h"
5-
#include "jadeorbitbase0x10.h"
5+
#include "jadeorbit0xd0.h"
66
#include "types.h"
77

8-
// VTABLE: GOLDP 0x1005622c
98
// SIZE 0x220
10-
class JadeOrbit0x220 : public JadeOrbitBase0x10 {
9+
class JadeOrbit0x220 : public JadeOrbit0xd0 {
1110
public:
12-
JadeOrbit0x220();
13-
void VTable0x00() override; // vtable+0x00
14-
void VTable0x04() override; // vtable+0x04
15-
void VTable0x08(undefined4, undefined4) override; // vtable+0x08
16-
void VTable0x0c() override; // vtable+0x0c
17-
void VTable0x10() override; // vtable+0x10
18-
void VTable0x14() override; // vtable+0x14
19-
void GetBasis(GolVec3* p_right, GolVec3* p_forward,
20-
GolVec3* p_up) override; // vtable+0x18
21-
void VTable0x1c(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x1c
22-
void VTable0x20(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x20
23-
void VTable0x24(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x24
24-
void VTable0x28() override; // vtable+0x28
25-
void VTable0x2c() override; // vtable+0x2c
26-
void GetUp(GolVec3* p_up) override; // vtable+0x30
27-
void GetForward(GolVec3* p_forward) override; // vtable+0x34
28-
void GetRight(GolVec3* p_right) override; // vtable+0x38
29-
void VTable0x3c() override; // vtable+0x3c
30-
void GetPosition(GolVec3* p_position) override; // vtable+0x40
31-
void SetPosition(GolVec3* p_position) override; // vtable+0x44
32-
void VTable0x48() override; // vtable+0x48
33-
34-
GolVec3 m_up; // 0x10
35-
LegoFloat m_unk0x1c; // 0x1c
36-
GolVec3 m_forward; // 0x20
37-
LegoFloat m_unk0x2c; // 0x2c
38-
GolVec3 m_right; // 0x30
39-
LegoFloat m_unk0x3c; // 0x3c
40-
GolVec3 m_position; // 0x40
41-
LegoFloat m_unk0x4c; // 0x4c
42-
LegoFloat m_unk0x50; // 0x50
43-
LegoFloat m_unk0x54; // 0x54
44-
LegoFloat m_unk0x58; // 0x58
45-
LegoFloat m_unk0x5c; // 0x5c
46-
LegoFloat m_unk0x60; // 0x60
47-
LegoFloat m_unk0x64; // 0x64
48-
LegoFloat m_unk0x68; // 0x68
49-
LegoFloat m_unk0x6c; // 0x6c
50-
LegoFloat m_unk0x70; // 0x70
51-
LegoFloat m_unk0x74; // 0x74
52-
LegoFloat m_unk0x78; // 0x78
53-
LegoFloat m_unk0x7c; // 0x7c
54-
LegoFloat m_unk0x80; // 0x80
55-
LegoFloat m_unk0x84; // 0x84
56-
LegoFloat m_unk0x88; // 0x88
57-
LegoFloat m_unk0x8c; // 0x8c
58-
LegoFloat m_unk0x90; // 0x90
59-
LegoFloat m_unk0x94; // 0x94
60-
LegoFloat m_unk0x98; // 0x98
61-
LegoFloat m_unk0x9c; // 0x9c
62-
LegoFloat m_unk0xa0; // 0xa0
63-
LegoFloat m_unk0xa4; // 0xa4
64-
LegoFloat m_unk0xa8; // 0xa8
65-
LegoFloat m_unk0xac; // 0xac
66-
LegoFloat m_unk0xb0; // 0xb0
67-
LegoFloat m_unk0xb4; // 0xb4
68-
LegoFloat m_unk0xb8; // 0xb8
69-
LegoFloat m_unk0xbc; // 0xbc
70-
LegoFloat m_unk0xc0; // 0xc0
71-
LegoFloat m_unk0xc4; // 0xc4
72-
LegoFloat m_unk0xc8; // 0xc8
73-
LegoFloat m_unk0xcc; // 0xcc
7411
GolMatrix4 m_unk0xd0; // 0xd0
7512
GolMatrix4 m_unk0x110; // 0x110
7613
GolMatrix4 m_unk0x150; // 0x150

GolDP/include/jadeorbit0xd0.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#ifndef JADEORBIT0XD0_H
2+
#define JADEORBIT0XD0_H
3+
4+
#include "compat.h"
5+
#include "jadeorbitbase0x10.h"
6+
#include "types.h"
7+
8+
// VTABLE: GOLDP 0x1005622c
9+
// SIZE 0xd0
10+
class JadeOrbit0xd0 : public JadeOrbitBase0x10 {
11+
public:
12+
JadeOrbit0xd0();
13+
void VTable0x00() override; // vtable+0x00
14+
void VTable0x04() override; // vtable+0x04
15+
void VTable0x08(undefined4, undefined4) override; // vtable+0x08
16+
void VTable0x0c() override; // vtable+0x0c
17+
void VTable0x10() override; // vtable+0x10
18+
void VTable0x14() override; // vtable+0x14
19+
void GetBasis(GolVec3* p_right, GolVec3* p_forward,
20+
GolVec3* p_up) override; // vtable+0x18
21+
void VTable0x1c(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x1c
22+
void VTable0x20(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x20
23+
void VTable0x24(GolVec3* p_unk0x04, GolVec3* p_unk0x08) override; // vtable+0x24
24+
void VTable0x28() override; // vtable+0x28
25+
void VTable0x2c() override; // vtable+0x2c
26+
void GetUp(GolVec3* p_up) override; // vtable+0x30
27+
void GetForward(GolVec3* p_forward) override; // vtable+0x34
28+
void GetRight(GolVec3* p_right) override; // vtable+0x38
29+
void VTable0x3c() override; // vtable+0x3c
30+
void GetPosition(GolVec3* p_position) override; // vtable+0x40
31+
void SetPosition(GolVec3* p_position) override; // vtable+0x44
32+
void VTable0x48() override; // vtable+0x48
33+
34+
GolMatrix4 m_unk0x10; // 0x10
35+
// GolVec3 m_up; // 0x10
36+
// LegoFloat m_unk0x1c; // 0x1c
37+
// GolVec3 m_forward; // 0x20
38+
// LegoFloat m_unk0x2c; // 0x2c
39+
// GolVec3 m_right; // 0x30
40+
// LegoFloat m_unk0x3c; // 0x3c
41+
// GolVec3 m_position; // 0x40
42+
// LegoFloat m_unk0x4c; // 0x4c
43+
GolMatrix4 m_unk0x50; // 0x50
44+
GolMatrix4 m_unk0x90; // 0x90
45+
};
46+
47+
#endif // JADEORBIT0XD0_H

GolDP/include/jadeorbitbase0x10.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class JadeOrbitBase0x10 {
3131
virtual void SetPosition(GolVec3* p_position) = 0; // vtable+0x44
3232
virtual void VTable0x48() = 0; // vtable+0x48
3333

34-
undefined4 m_unk0x04; // 0x04
35-
undefined4 m_unk0x08; // 0x08
36-
undefined4 m_unk0x0c; // 0x0c
34+
JadeOrbitBase0x10* m_unk0x04; // 0x04
35+
undefined4 m_unk0x08; // 0x08
36+
undefined4 m_unk0x0c; // 0x0c
3737
};
3838

3939
#endif // JADEORBITBASE0X10_H

GolDP/include/whitefalconnode0x18.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
#include "golnametable.h"
55

6+
struct GolMatrix34;
7+
struct GolMatrix4;
8+
class JadeOrbitBase0x10;
9+
610
// VTABLE: GOLDP 0x10057454
711
// SIZE 0x18
812
class WhiteFalconNode0x18 : public GolNameTable {
@@ -14,18 +18,18 @@ class WhiteFalconNode0x18 : public GolNameTable {
1418
virtual void VTable0x0c() = 0; // vtable+0x0c
1519
virtual void VTable0x10(undefined4 p_param); // vtable+0x10
1620
virtual void VTable0x14(undefined4 p_unk0x04,
17-
undefined4 p_unk0x08); // vtable+0x14
18-
virtual void VTable0x18() = 0; // vtable+0x18
19-
virtual undefined4 VTable0x1c(undefined4); // vtable+0x1c
20-
virtual void VTable0x20(undefined4); // vtable+0x20
21-
virtual void VTable0x24(undefined4); // vtable+0x24
22-
virtual void VTable0x28(undefined4, undefined4); // vtable+0x28
23-
virtual void VTable0x2c(undefined4, undefined4); // vtable+0x2c
21+
undefined4 p_unk0x08); // vtable+0x14
22+
virtual JadeOrbitBase0x10* VTable0x18(LegoU32 p_index) const = 0; // vtable+0x18
23+
virtual LegoU32 VTable0x1c(const JadeOrbitBase0x10&) const; // vtable+0x1c
24+
virtual void VTable0x20(const GolMatrix4& p_m); // vtable+0x20
25+
virtual void VTable0x24(const GolMatrix34* p_m); // vtable+0x24
26+
virtual void VTable0x28(undefined4, undefined4); // vtable+0x28
27+
virtual void VTable0x2c(LegoU32 p_index, GolMatrix34* p_dest) const; // vtable+0x2c
2428

2529
// SYNTHETIC: GOLDP 0x100299a0
2630
// WhiteFalconNode0x18::`scalar deleting destructor'
2731

28-
private:
32+
protected:
2933
undefined4 m_unk0x0c; // 0x0c
3034
undefined4 m_unk0x10; // 0x10
3135
undefined4 m_unk0x14; // 0x14

GolDP/include/zoweeblubberworth0xf0.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class ZoweeBlubberworth0xf0 {
4646
undefined4 GetUnk0x1c() const { return m_unk0x1c; }
4747
undefined4 GetUnk0x24() const { return m_unk0x24; }
4848
undefined4 GetUnk0x2c() const { return m_unk0x2c; }
49+
undefined4 GetUnk0x34() const { return m_unk0x34; }
4950
undefined4 GetUnk0x3c() const { return m_unk0x3c; }
5051
undefined4 GetUnk0x7c() const { return m_unk0x7c; }
5152

GolDP/src/fluffygloomkins0x118.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "cmbmodelpart0x34.h"
77
#include "gdbmodel0x48.h"
88
#include "golerror.h"
9+
#include "greyfalconnode0x1c.h"
910
#include "purpleribbon0x24.h"
1011
#include "shadowwolf0xc.h"
1112

@@ -147,16 +148,19 @@ undefined4* FluffyGloomkins0x118::VTable0x08()
147148
}
148149
}
149150

150-
// ...
151-
152151
if (GetUnk0x2c() != 0) {
153152
m_unk0x104 = new ShadowWolf0xc[GetUnk0x2c()];
154153
if (m_unk0x104 == NULL) {
155154
GOL_FATALERROR(c_golErrorOutOfMemory);
156155
}
157156
}
158157

159-
// ...
158+
if (GetUnk0x34() != 0) {
159+
m_unk0xfc = new GreyFalconNode0x1c[GetUnk0x34()];
160+
if (m_unk0xfc == NULL) {
161+
GOL_FATALERROR(c_golErrorOutOfMemory);
162+
}
163+
}
160164

161165
if (GetUnk0x3c() != 0) {
162166
m_unk0x110 = new BoundingShape0x2c[GetUnk0x3c()];

0 commit comments

Comments
 (0)