Skip to content

Commit 7b70e20

Browse files
committed
Add MabMaterialAnimation0x14 class
1 parent 788260a commit 7b70e20

13 files changed

Lines changed: 530 additions & 71 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: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,55 @@ class AmberHaze0x20;
99
class AmberLensBase0x120;
1010
class BoundingShape0x2c;
1111
class CmbModelPart0x34;
12+
class FloatyBarge0x4c;
13+
class FloatyBoat0x28;
1214
class GdbModel0x48;
1315
class GreyFalconNode0x1c;
16+
class MabMaterialAnimation0x14;
1417
class PurpleRibbon0x24;
1518
class ShadowWolf0xc;
19+
class WhiteFalconNode0x18;
1620

1721
// SIZE 0x118
1822
// VTABLE: GOLDP 0x1005690c
1923
class FluffyGloomkins0x118 : public ZoweeBlubberworth0xf0 {
2024
public:
2125
FluffyGloomkins0x118();
2226
~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
27+
void VTable0x08() override; // vtable+0x08
28+
undefined4* VTable0x0c() override; // vtable+0x0c
29+
void VTable0x18() override; // vtable+0x18
30+
void VTable0x1c(undefined4*) override; // vtable+0x1c
31+
void VTable0x20(undefined4) override; // vtable+0x20
32+
void VTable0x24(undefined4) override; // vtable+0x24
33+
void VTable0x28(undefined4*) override; // vtable+0x28
34+
MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) const override; // vtable+0x2c
35+
AmberHaze0x1c* VTable0x30(LegoU32 p_index) const override; // vtable+0x30
36+
CmbModelPart0x34* VTable0x34(LegoU32 p_index) const override; // vtable+0x34
37+
IGdbModel0x40* VTable0x38(LegoU32 p_index) const override; // vtable+0x38
38+
ShadowWolf0xc* VTable0x3c(LegoU32 p_index) const override; // vtable+0x3c
39+
WhiteFalconNode0x18* VTable0x40(LegoU32 p_index) const override; // vtable+0x40
40+
BoundingShape0x2c* VTable0x44(LegoU32 p_index) const override; // vtable+0x44
41+
FloatyBoat0x28* VTable0x48(LegoU32 p_index) const override; // vtable+0x48
42+
undefined4* VTable0x4c(LegoU32 p_index) const override; // vtable+0x4c
43+
undefined4* VTable0x50(LegoU32 p_index) const override; // vtable+0x50
4044

4145
// SYNTHETIC: GOLDP 0x100171e0
4246
// FluffyGloomkins0x118::`scalar deleting destructor'
4347

4448
private:
4549
void FUN_10017390();
4650

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
51+
PurpleRibbon0x24* m_unk0xf0; // 0xf0
52+
AmberHaze0x20* m_unk0xf4; // 0xf4
53+
GdbModel0x48* m_unk0xf8; // 0xf8
54+
GreyFalconNode0x1c* m_unk0xfc; // 0xfc
55+
FloatyBarge0x4c* m_unk0x100; // 0x100
56+
ShadowWolf0xc* m_unk0x104; // 0x104
57+
MabMaterialAnimation0x14* m_unk0x108; // 0x108
58+
CmbModelPart0x34* m_unk0x10c; // 0x10c
59+
BoundingShape0x2c* m_unk0x110; // 0x110
60+
AmberLensBase0x120* m_unk0x114; // 0x114
5761
};
5862

5963
#endif // FLUFFYGLOOMKINS0X118_H

GolDP/include/zoweeblubberworth0xf0.h

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
class AmberHaze0x1c;
77
class BoundingShape0x2c;
88
class CmbModelPart0x34;
9+
class FloatyBoat0x28;
910
class IGdbModel0x40;
1011
class MagentaRibbon0x20;
1112
class ShadowWolf0xc;
13+
class WhiteFalconNode0x18;
1214

1315
// VTABLE: GOLDP 0x100576ec
1416
// SIZE 0xf0
@@ -17,7 +19,7 @@ class ZoweeBlubberworth0xf0 {
1719
ZoweeBlubberworth0xf0();
1820
virtual void VTable0x00(void); // vtable+0x00
1921
virtual void VTable0x04(void); // vtable+0x04
20-
virtual undefined4* VTable0x08(void) = 0; // vtable+0x08
22+
virtual void VTable0x08(void) = 0; // vtable+0x08
2123
virtual undefined4* VTable0x0c(void) = 0; // vtable+0x0c
2224
virtual ~ZoweeBlubberworth0xf0(void); // vtable+0x10
2325
virtual void VTable0x14(undefined4, undefined4, undefined4, float); // vtable+0x14
@@ -26,16 +28,16 @@ class ZoweeBlubberworth0xf0 {
2628
virtual void VTable0x20(undefined4) = 0; // vtable+0x20
2729
virtual void VTable0x24(undefined4) = 0; // vtable+0x24
2830
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
31+
virtual MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) const = 0; // vtable+0x2c
32+
virtual AmberHaze0x1c* VTable0x30(LegoU32 p_index) const = 0; // vtable+0x30
33+
virtual CmbModelPart0x34* VTable0x34(LegoU32 p_index) const = 0; // vtable+0x34
34+
virtual IGdbModel0x40* VTable0x38(LegoU32 p_index) const = 0; // vtable+0x38
35+
virtual ShadowWolf0xc* VTable0x3c(LegoU32 p_index) const = 0; // vtable+0x3c
36+
virtual WhiteFalconNode0x18* VTable0x40(LegoU32 p_index) const = 0; // vtable+0x40
37+
virtual BoundingShape0x2c* VTable0x44(LegoU32 p_index) const = 0; // vtable+0x44
38+
virtual FloatyBoat0x28* VTable0x48(LegoU32 p_index) const = 0; // vtable+0x48
39+
virtual undefined4* VTable0x4c(LegoU32 p_index) const = 0; // vtable+0x4c
40+
virtual undefined4* VTable0x50(LegoU32 p_index) const = 0; // vtable+0x50
3941
virtual void VTable0x54(void); // vtable+0x54
4042

4143
// SYNTHETIC: GOLDP 0x1002c0c0
@@ -48,6 +50,8 @@ class ZoweeBlubberworth0xf0 {
4850
undefined4 GetUnk0x2c() const { return m_unk0x2c; }
4951
undefined4 GetUnk0x34() const { return m_unk0x34; }
5052
undefined4 GetUnk0x3c() const { return m_unk0x3c; }
53+
undefined4 GetUnk0x6c() const { return m_unk0x6c; }
54+
undefined4 GetUnk0x74() const { return m_unk0x74; }
5155
undefined4 GetUnk0x7c() const { return m_unk0x7c; }
5256

5357
private:

GolDP/src/fluffygloomkins0x118.cpp

Lines changed: 31 additions & 32 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,67 +36,55 @@ 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

6668
// STUB: GOLDP 0x100172f0
67-
undefined4* FluffyGloomkins0x118::VTable0x40(LegoU32 p_index)
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

9686
// STUB: GOLDP 0x10017350
97-
undefined4* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index)
87+
undefined4* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index) const
9888
{
9989
#if 0
10090
return &m_unk0x108[p_index];
@@ -106,7 +96,7 @@ undefined4* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index)
10696
}
10797

10898
// STUB: GOLDP 0x10017370
109-
undefined4* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index)
99+
undefined4* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index) const
110100
{
111101
#if 0
112102
return &m_unk0x114[p_index];
@@ -117,8 +107,8 @@ undefined4* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index)
117107
#endif
118108
}
119109

120-
// STUB: GOLDP 0x10017390
121-
undefined4* FluffyGloomkins0x118::VTable0x08()
110+
// FUNCTION: GOLDP 0x10017390
111+
void FluffyGloomkins0x118::VTable0x08()
122112
{
123113
if (GetUnk0x0c() != 0) {
124114
m_unk0xf0 = new PurpleRibbon0x24[GetUnk0x0c()];
@@ -169,17 +159,26 @@ undefined4* FluffyGloomkins0x118::VTable0x08()
169159
}
170160
}
171161

172-
// ...
162+
if (GetUnk0x6c() != 0) {
163+
m_unk0x100 = new FloatyBarge0x4c[GetUnk0x6c()];
164+
if (m_unk0x100 == NULL) {
165+
GOL_FATALERROR(c_golErrorOutOfMemory);
166+
}
167+
}
168+
169+
if (GetUnk0x74() != 0) {
170+
m_unk0x108 = new MabMaterialAnimation0x14[GetUnk0x74()];
171+
if (m_unk0x108 == NULL) {
172+
GOL_FATALERROR(c_golErrorOutOfMemory);
173+
}
174+
}
173175

174176
if (GetUnk0x7c()) {
175177
m_unk0x114 = new AmberLens0x344[GetUnk0x7c()];
176178
if (m_unk0x114 == NULL) {
177179
GOL_FATALERROR(c_golErrorOutOfMemory);
178180
}
179181
}
180-
// TODO
181-
STUB(0x10017390);
182-
return NULL;
183182
}
184183

185184
// STUB: GOLDP 0x10017ac0

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;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#ifndef CUTSCENEEVENT0xE4_H
2+
#define CUTSCENEEVENT0xE4_H
3+
4+
#include "decomp.h"
5+
#include "types.h"
6+
7+
class GolFileParser;
8+
class MabMaterialAnimation0x14;
9+
10+
class CutSceneEvent0xe4 {
11+
// FIXME: size is unknown
12+
13+
private:
14+
void FUN_004a0ff0(GolFileParser& p_parser);
15+
16+
void* m_vftable; // 0x00
17+
undefined m_unk0x04[0x68 - 0x04]; // 0x04
18+
LegoU32 m_unk0x68; // 0x68
19+
undefined m_unk0x6c[0x70 - 0x6c];
20+
MabMaterialAnimation0x14* m_unk0x70; // 0x70
21+
undefined m_unk0x74[0xe4 - 0x74]; // 0x04
22+
};
23+
24+
#endif // CUTSCENEEVENT0xE4_H
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include "cutscenevent0xe4.h"
2+
3+
#include "mabmaterialanimation0x14.h"
4+
5+
// STUB: LEGORACERS 0x004a0ff0
6+
void CutSceneEvent0xe4::FUN_004a0ff0(GolFileParser& p_parser)
7+
{
8+
// ...
9+
m_unk0x70 = new MabMaterialAnimation0x14[m_unk0x68];
10+
11+
// TODO
12+
STUB(0x004a0ff0);
13+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#ifndef MABMATERIALANIMATION0X14_H
2+
#define MABMATERIALANIMATION0X14_H
3+
4+
#include "decomp.h"
5+
#include "goltxtparser.h"
6+
#include "types.h"
7+
8+
// VTABLE: GOLDP 0x10057040
9+
// VTABLE: LEGORACERS 0x004af684
10+
// SIZE 0x1fc
11+
class MabTxtParser : public GolTxtParser {};
12+
13+
class MabMaterialAnimationItem0x8;
14+
class MabMaterialAnimationItem0x18;
15+
class WhiteFalcon0x140;
16+
17+
// VTABLE: GOLDP 0x10057034
18+
// VTABLE: LEGORACERS 0x004af678
19+
// SIZE 0x14
20+
class MabMaterialAnimation0x14 {
21+
public:
22+
MabMaterialAnimation0x14();
23+
virtual ~MabMaterialAnimation0x14(); // vtable+0x00
24+
virtual void VTable0x04(
25+
WhiteFalcon0x140* p_renderer,
26+
const LegoChar* p_fileName,
27+
LegoBool32 p_binary
28+
); // vtable+0x04
29+
virtual void VTable0x08(); // vtable+0x08
30+
31+
// SYNTHETIC: GOLDP 0x10017a00
32+
// SYNTHETIC: LEGORACERS 0x004a11e0
33+
// MabMaterialAnimation0x14::`vector deleting destructor'
34+
35+
private:
36+
void FUN_10025a40(WhiteFalcon0x140* p_renderer, GolFileParser& p_parser);
37+
void FUN_10025b60(GolFileParser& p_parser);
38+
39+
MabMaterialAnimationItem0x8* m_unk0x04;
40+
LegoU32 m_unk0x08;
41+
MabMaterialAnimationItem0x18* m_unk0x0c;
42+
LegoU32 m_unk0x10;
43+
};
44+
45+
#endif // MABMATERIALANIMATION0X14_H

0 commit comments

Comments
 (0)