Skip to content

Commit 4200fa3

Browse files
madebrfoxtacles
andauthored
Add MabMaterialAnimation0x14 class (isledecomp#254)
* Add MabMaterialAnimation0x14 class * fixes * update * update * update * Matches --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
1 parent 788260a commit 4200fa3

14 files changed

Lines changed: 580 additions & 100 deletions

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ set(COMMON_SOURCES
100100
common/src/cmbmodelpart0x34.cpp
101101
common/src/cmbmodelpartdata0x18.cpp
102102
common/src/cmbmodelpartdata0x28.cpp
103+
common/src/mabmaterialanimation0x14.cpp
104+
common/src/mabmaterialanimationitem0x8.cpp
105+
common/src/mabmaterialanimationitem0x18.cpp
103106
)
104107

105108
# These GOLDP-only files currently need the same inline expansion behavior as common_goldp.
@@ -278,6 +281,7 @@ add_executable(legoracers WIN32
278281
LEGORacers/src/aquacoral0x37b8.cpp
279282
LEGORacers/src/stackoflegou16.cpp
280283
LEGORacers/src/crimsonsun0xa4.cpp
284+
LEGORacers/src/cutscenevent0xe4.cpp
281285
LEGORacers/src/glassblock0x3368.cpp
282286
LEGORacers/src/glassshard0x3b8.cpp
283287
LEGORacers/src/glassstream0x94.cpp

GolDP/include/fluffygloomkins0x118.h

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,54 +6,59 @@
66
#include "zoweeblubberworth0xf0.h"
77

88
class AmberHaze0x20;
9+
class AmberLens0x344;
910
class AmberLensBase0x120;
1011
class BoundingShape0x2c;
1112
class CmbModelPart0x34;
13+
class FloatyBarge0x4c;
14+
class FloatyBoat0x28;
1215
class GdbModel0x48;
1316
class GreyFalconNode0x1c;
17+
class MabMaterialAnimation0x14;
1418
class PurpleRibbon0x24;
1519
class ShadowWolf0xc;
20+
class WhiteFalconNode0x18;
1621

1722
// SIZE 0x118
1823
// VTABLE: GOLDP 0x1005690c
1924
class FluffyGloomkins0x118 : public ZoweeBlubberworth0xf0 {
2025
public:
2126
FluffyGloomkins0x118();
2227
~FluffyGloomkins0x118() override;
23-
undefined4* VTable0x08(void) override; // vtable+0x08
24-
undefined4* VTable0x0c(void) override; // vtable+0x0c
25-
void VTable0x18(void) override; // vtable+0x18
26-
void VTable0x1c(undefined4*) override; // vtable+0x1c
27-
void VTable0x20(undefined4) override; // vtable+0x20
28-
void VTable0x24(undefined4) override; // vtable+0x24
29-
void VTable0x28(undefined4*) override; // vtable+0x28
30-
MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) override; // vtable+0x2c
31-
AmberHaze0x1c* VTable0x30(LegoU32 p_index) override; // vtable+0x30
32-
CmbModelPart0x34* VTable0x34(LegoU32 p_index) override; // vtable+0x34
33-
IGdbModel0x40* VTable0x38(LegoU32 p_index) override; // vtable+0x38
34-
ShadowWolf0xc* VTable0x3c(LegoU32 p_index) override; // vtable+0x3c
35-
undefined4* VTable0x40(LegoU32 p_index) override; // vtable+0x40
36-
BoundingShape0x2c* VTable0x44(LegoU32 p_index) override; // vtable+0x44
37-
undefined4* VTable0x48(LegoU32 p_index) override; // vtable+0x48
38-
undefined4* VTable0x4c(LegoU32 p_index) override; // vtable+0x4c
39-
undefined4* VTable0x50(LegoU32 p_index) override; // vtable+0x50
28+
void VTable0x08() override; // vtable+0x08
29+
undefined4* VTable0x0c() override; // vtable+0x0c
30+
void VTable0x18() override; // vtable+0x18
31+
void VTable0x1c(undefined4*) override; // vtable+0x1c
32+
void VTable0x20(undefined4) override; // vtable+0x20
33+
void VTable0x24(undefined4) override; // vtable+0x24
34+
void VTable0x28(undefined4*) override; // vtable+0x28
35+
MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) const override; // vtable+0x2c
36+
AmberHaze0x1c* VTable0x30(LegoU32 p_index) const override; // vtable+0x30
37+
CmbModelPart0x34* VTable0x34(LegoU32 p_index) const override; // vtable+0x34
38+
IGdbModel0x40* VTable0x38(LegoU32 p_index) const override; // vtable+0x38
39+
ShadowWolf0xc* VTable0x3c(LegoU32 p_index) const override; // vtable+0x3c
40+
WhiteFalconNode0x18* VTable0x40(LegoU32 p_index) const override; // vtable+0x40
41+
BoundingShape0x2c* VTable0x44(LegoU32 p_index) const override; // vtable+0x44
42+
FloatyBoat0x28* VTable0x48(LegoU32 p_index) const override; // vtable+0x48
43+
MabMaterialAnimation0x14* VTable0x4c(LegoU32 p_index) const override; // vtable+0x4c
44+
AmberLensBase0x120* VTable0x50(LegoU32 p_index) const override; // vtable+0x50
4045

4146
// SYNTHETIC: GOLDP 0x100171e0
4247
// FluffyGloomkins0x118::`scalar deleting destructor'
4348

4449
private:
4550
void FUN_10017390();
4651

47-
PurpleRibbon0x24* m_unk0xf0; // 0xf0
48-
AmberHaze0x20* m_unk0xf4; // 0xf4
49-
GdbModel0x48* m_unk0xf8; // 0xf8
50-
GreyFalconNode0x1c* m_unk0xfc; // 0xfc
51-
undefined4* m_unk0x100; // 0x100
52-
ShadowWolf0xc* m_unk0x104; // 0x104
53-
undefined4* m_unk0x108; // 0x108
54-
CmbModelPart0x34* m_unk0x10c; // 0x10c
55-
BoundingShape0x2c* m_unk0x110; // 0x110
56-
AmberLensBase0x120* m_unk0x114; // 0x114
52+
PurpleRibbon0x24* m_unk0xf0; // 0xf0
53+
AmberHaze0x20* m_unk0xf4; // 0xf4
54+
GdbModel0x48* m_unk0xf8; // 0xf8
55+
GreyFalconNode0x1c* m_unk0xfc; // 0xfc
56+
FloatyBarge0x4c* m_unk0x100; // 0x100
57+
ShadowWolf0xc* m_unk0x104; // 0x104
58+
MabMaterialAnimation0x14* m_unk0x108; // 0x108
59+
CmbModelPart0x34* m_unk0x10c; // 0x10c
60+
BoundingShape0x2c* m_unk0x110; // 0x110
61+
AmberLens0x344* m_unk0x114; // 0x114
5762
};
5863

5964
#endif // FLUFFYGLOOMKINS0X118_H

GolDP/include/zoweeblubberworth0xf0.h

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,44 @@
33

44
#include "golnametable.h"
55

6+
class AmberLensBase0x120;
67
class AmberHaze0x1c;
78
class BoundingShape0x2c;
89
class CmbModelPart0x34;
10+
class FloatyBoat0x28;
911
class IGdbModel0x40;
12+
class MabMaterialAnimation0x14;
1013
class MagentaRibbon0x20;
1114
class ShadowWolf0xc;
15+
class WhiteFalconNode0x18;
1216

1317
// VTABLE: GOLDP 0x100576ec
1418
// SIZE 0xf0
1519
class ZoweeBlubberworth0xf0 {
1620
public:
1721
ZoweeBlubberworth0xf0();
18-
virtual void VTable0x00(void); // vtable+0x00
19-
virtual void VTable0x04(void); // vtable+0x04
20-
virtual undefined4* VTable0x08(void) = 0; // vtable+0x08
21-
virtual undefined4* VTable0x0c(void) = 0; // vtable+0x0c
22-
virtual ~ZoweeBlubberworth0xf0(void); // vtable+0x10
23-
virtual void VTable0x14(undefined4, undefined4, undefined4, float); // vtable+0x14
24-
virtual void VTable0x18(void); // vtable+0x18
25-
virtual void VTable0x1c(undefined4*) = 0; // vtable+0x1c
26-
virtual void VTable0x20(undefined4) = 0; // vtable+0x20
27-
virtual void VTable0x24(undefined4) = 0; // vtable+0x24
28-
virtual void VTable0x28(undefined4*) = 0; // vtable+0x28
29-
virtual MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) = 0; // vtable+0x2c
30-
virtual AmberHaze0x1c* VTable0x30(LegoU32 p_index) = 0; // vtable+0x30
31-
virtual CmbModelPart0x34* VTable0x34(LegoU32 p_index) = 0; // vtable+0x34
32-
virtual IGdbModel0x40* VTable0x38(LegoU32 p_index) = 0; // vtable+0x38
33-
virtual ShadowWolf0xc* VTable0x3c(LegoU32 p_index) = 0; // vtable+0x3c
34-
virtual undefined4* VTable0x40(LegoU32 p_index) = 0; // vtable+0x40
35-
virtual BoundingShape0x2c* VTable0x44(LegoU32 p_index) = 0; // vtable+0x44
36-
virtual undefined4* VTable0x48(LegoU32 p_index) = 0; // vtable+0x48
37-
virtual undefined4* VTable0x4c(LegoU32 p_index) = 0; // vtable+0x4c
38-
virtual undefined4* VTable0x50(LegoU32 p_index) = 0; // vtable+0x50
39-
virtual void VTable0x54(void); // vtable+0x54
22+
virtual void VTable0x00(); // vtable+0x00
23+
virtual void VTable0x04(); // vtable+0x04
24+
virtual void VTable0x08() = 0; // vtable+0x08
25+
virtual undefined4* VTable0x0c() = 0; // vtable+0x0c
26+
virtual ~ZoweeBlubberworth0xf0(); // vtable+0x10
27+
virtual void VTable0x14(undefined4, undefined4, undefined4, float); // vtable+0x14
28+
virtual void VTable0x18(); // vtable+0x18
29+
virtual void VTable0x1c(undefined4*) = 0; // vtable+0x1c
30+
virtual void VTable0x20(undefined4) = 0; // vtable+0x20
31+
virtual void VTable0x24(undefined4) = 0; // vtable+0x24
32+
virtual void VTable0x28(undefined4*) = 0; // vtable+0x28
33+
virtual MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) const = 0; // vtable+0x2c
34+
virtual AmberHaze0x1c* VTable0x30(LegoU32 p_index) const = 0; // vtable+0x30
35+
virtual CmbModelPart0x34* VTable0x34(LegoU32 p_index) const = 0; // vtable+0x34
36+
virtual IGdbModel0x40* VTable0x38(LegoU32 p_index) const = 0; // vtable+0x38
37+
virtual ShadowWolf0xc* VTable0x3c(LegoU32 p_index) const = 0; // vtable+0x3c
38+
virtual WhiteFalconNode0x18* VTable0x40(LegoU32 p_index) const = 0; // vtable+0x40
39+
virtual BoundingShape0x2c* VTable0x44(LegoU32 p_index) const = 0; // vtable+0x44
40+
virtual FloatyBoat0x28* VTable0x48(LegoU32 p_index) const = 0; // vtable+0x48
41+
virtual MabMaterialAnimation0x14* VTable0x4c(LegoU32 p_index) const = 0; // vtable+0x4c
42+
virtual AmberLensBase0x120* VTable0x50(LegoU32 p_index) const = 0; // vtable+0x50
43+
virtual void VTable0x54(); // vtable+0x54
4044

4145
// SYNTHETIC: GOLDP 0x1002c0c0
4246
// ZoweeBlubberworth0xf0::`scalar deleting destructor'
@@ -48,6 +52,8 @@ class ZoweeBlubberworth0xf0 {
4852
undefined4 GetUnk0x2c() const { return m_unk0x2c; }
4953
undefined4 GetUnk0x34() const { return m_unk0x34; }
5054
undefined4 GetUnk0x3c() const { return m_unk0x3c; }
55+
undefined4 GetUnk0x6c() const { return m_unk0x6c; }
56+
undefined4 GetUnk0x74() const { return m_unk0x74; }
5157
undefined4 GetUnk0x7c() const { return m_unk0x7c; }
5258

5359
private:

GolDP/src/fluffygloomkins0x118.cpp

Lines changed: 72 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
#include "amberlens0x344.h"
55
#include "boundingshape0x2c.h"
66
#include "cmbmodelpart0x34.h"
7+
#include "floatybarge0x4c.h"
78
#include "gdbmodel0x48.h"
89
#include "golerror.h"
910
#include "greyfalconnode0x1c.h"
11+
#include "mabmaterialanimation0x14.h"
1012
#include "purpleribbon0x24.h"
1113
#include "shadowwolf0xc.h"
1214

@@ -34,91 +36,67 @@ FluffyGloomkins0x118::~FluffyGloomkins0x118()
3436
}
3537

3638
// FUNCTION: GOLDP 0x10017250
37-
MagentaRibbon0x20* FluffyGloomkins0x118::VTable0x2c(LegoU32 p_index)
39+
MagentaRibbon0x20* FluffyGloomkins0x118::VTable0x2c(LegoU32 p_index) const
3840
{
3941
return &m_unk0xf0[p_index];
4042
}
4143

4244
// FUNCTION: GOLDP 0x10017270
43-
AmberHaze0x1c* FluffyGloomkins0x118::VTable0x30(LegoU32 p_index)
45+
AmberHaze0x1c* FluffyGloomkins0x118::VTable0x30(LegoU32 p_index) const
4446
{
4547
return &m_unk0xf4[p_index];
4648
}
4749

48-
// STUB: GOLDP 0x10017290
49-
CmbModelPart0x34* FluffyGloomkins0x118::VTable0x34(LegoU32 p_index)
50+
// FUNCTION: GOLDP 0x10017290
51+
CmbModelPart0x34* FluffyGloomkins0x118::VTable0x34(LegoU32 p_index) const
5052
{
5153
return &m_unk0x10c[p_index];
5254
}
5355

54-
// STUB: GOLDP 0x100172b0
55-
IGdbModel0x40* FluffyGloomkins0x118::VTable0x38(LegoU32 p_index)
56+
// FUNCTION: GOLDP 0x100172b0
57+
IGdbModel0x40* FluffyGloomkins0x118::VTable0x38(LegoU32 p_index) const
5658
{
5759
return &m_unk0xf8[p_index];
5860
}
5961

60-
// STUB: GOLDP 0x100172d0
61-
ShadowWolf0xc* FluffyGloomkins0x118::VTable0x3c(LegoU32 p_index)
62+
// FUNCTION: GOLDP 0x100172d0
63+
ShadowWolf0xc* FluffyGloomkins0x118::VTable0x3c(LegoU32 p_index) const
6264
{
6365
return &m_unk0x104[p_index];
6466
}
6567

66-
// STUB: GOLDP 0x100172f0
67-
undefined4* FluffyGloomkins0x118::VTable0x40(LegoU32 p_index)
68+
// FUNCTION: GOLDP 0x100172f0
69+
WhiteFalconNode0x18* FluffyGloomkins0x118::VTable0x40(LegoU32 p_index) const
6870
{
69-
#if 0
7071
return &m_unk0xfc[p_index];
71-
#else
72-
// TODO
73-
STUB(0x100172f0);
74-
return NULL;
75-
#endif
7672
}
7773

7874
// FUNCTION: GOLDP 0x10017310
79-
BoundingShape0x2c* FluffyGloomkins0x118::VTable0x44(LegoU32 p_index)
75+
BoundingShape0x2c* FluffyGloomkins0x118::VTable0x44(LegoU32 p_index) const
8076
{
8177
return &m_unk0x110[p_index];
8278
}
8379

84-
// STUB: GOLDP 0x10017330
85-
undefined4* FluffyGloomkins0x118::VTable0x48(LegoU32 p_index)
80+
// FUNCTION: GOLDP 0x10017330
81+
FloatyBoat0x28* FluffyGloomkins0x118::VTable0x48(LegoU32 p_index) const
8682
{
87-
#if 0
8883
return &m_unk0x100[p_index];
89-
#else
90-
// TODO
91-
STUB(0x10017330);
92-
return NULL;
93-
#endif
9484
}
9585

96-
// STUB: GOLDP 0x10017350
97-
undefined4* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index)
86+
// FUNCTION: GOLDP 0x10017350
87+
MabMaterialAnimation0x14* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index) const
9888
{
99-
#if 0
10089
return &m_unk0x108[p_index];
101-
#else
102-
// TODO
103-
STUB(0x10017350);
104-
return NULL;
105-
#endif
10690
}
10791

108-
// STUB: GOLDP 0x10017370
109-
undefined4* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index)
92+
// FUNCTION: GOLDP 0x10017370
93+
AmberLensBase0x120* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index) const
11094
{
111-
#if 0
11295
return &m_unk0x114[p_index];
113-
#else
114-
// TODO
115-
STUB(0x10017370);
116-
return NULL;
117-
#endif
11896
}
11997

120-
// STUB: GOLDP 0x10017390
121-
undefined4* FluffyGloomkins0x118::VTable0x08()
98+
// FUNCTION: GOLDP 0x10017390
99+
void FluffyGloomkins0x118::VTable0x08()
122100
{
123101
if (GetUnk0x0c() != 0) {
124102
m_unk0xf0 = new PurpleRibbon0x24[GetUnk0x0c()];
@@ -169,17 +147,26 @@ undefined4* FluffyGloomkins0x118::VTable0x08()
169147
}
170148
}
171149

172-
// ...
150+
if (GetUnk0x6c() != 0) {
151+
m_unk0x100 = new FloatyBarge0x4c[GetUnk0x6c()];
152+
if (m_unk0x100 == NULL) {
153+
GOL_FATALERROR(c_golErrorOutOfMemory);
154+
}
155+
}
156+
157+
if (GetUnk0x74() != 0) {
158+
m_unk0x108 = new MabMaterialAnimation0x14[GetUnk0x74()];
159+
if (m_unk0x108 == NULL) {
160+
GOL_FATALERROR(c_golErrorOutOfMemory);
161+
}
162+
}
173163

174164
if (GetUnk0x7c()) {
175165
m_unk0x114 = new AmberLens0x344[GetUnk0x7c()];
176166
if (m_unk0x114 == NULL) {
177167
GOL_FATALERROR(c_golErrorOutOfMemory);
178168
}
179169
}
180-
// TODO
181-
STUB(0x10017390);
182-
return NULL;
183170
}
184171

185172
// STUB: GOLDP 0x10017ac0
@@ -190,14 +177,50 @@ undefined4* FluffyGloomkins0x118::VTable0x0c()
190177
return NULL;
191178
}
192179

193-
// STUB: GOLDP 0x100180a0
180+
// FUNCTION: GOLDP 0x100180a0
194181
void FluffyGloomkins0x118::VTable0x18()
195182
{
196183
if (m_unk0x114) {
197184
delete[] m_unk0x114;
198185
m_unk0x114 = NULL;
199186
}
200-
STUB(0x100180a0);
187+
if (m_unk0x100) {
188+
delete[] m_unk0x100;
189+
m_unk0x100 = NULL;
190+
}
191+
if (m_unk0x110) {
192+
delete[] m_unk0x110;
193+
m_unk0x110 = NULL;
194+
}
195+
if (m_unk0xfc) {
196+
delete[] m_unk0xfc;
197+
m_unk0xfc = NULL;
198+
}
199+
if (m_unk0x104) {
200+
delete[] m_unk0x104;
201+
m_unk0x104 = NULL;
202+
}
203+
if (m_unk0xf8) {
204+
delete[] m_unk0xf8;
205+
m_unk0xf8 = NULL;
206+
}
207+
if (m_unk0x10c) {
208+
delete[] m_unk0x10c;
209+
m_unk0x10c = NULL;
210+
}
211+
if (m_unk0xf4) {
212+
delete[] m_unk0xf4;
213+
m_unk0xf4 = NULL;
214+
}
215+
if (m_unk0xf0) {
216+
delete[] m_unk0xf0;
217+
m_unk0xf0 = NULL;
218+
}
219+
if (m_unk0x108) {
220+
delete[] m_unk0x108;
221+
m_unk0x108 = NULL;
222+
}
223+
ZoweeBlubberworth0xf0::VTable0x18();
201224
}
202225

203226
// STUB: GOLDP 0x100181b0

GolDP/src/goldevicelist.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ INT_PTR_COMPAT GolDeviceList::SelectDeviceDlgProc(HWND p_hWnd, UINT p_uMsg, WPAR
616616
return 0;
617617
}
618618

619-
// FUNCTION: GOLDP 0x10026100
619+
// FUNCTION: GOLDP 0x10026100 FOLDED
620620
GolDeviceList::GolDeviceList()
621621
{
622622
m_countDrivers = 0;

0 commit comments

Comments
 (0)