Skip to content

Commit baa370f

Browse files
committed
Implement CmbModelPart0x34
1 parent 3c7fd51 commit baa370f

18 files changed

Lines changed: 543 additions & 192 deletions

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ set(COMMON_SOURCES
9797
common/src/golmath.cpp
9898
common/src/golstring.cpp
9999
common/src/golstringtable.cpp
100+
common/src/cmbmodelpart0x34.cpp
101+
common/src/cmbmodelpartdata0x18.cpp
102+
common/src/cmbmodelpartdata0x28.cpp
100103
)
101104

102105
# These GOLDP-only files currently need the same inline expansion behavior as common_goldp.
@@ -216,7 +219,6 @@ set_property(TARGET goldp PROPERTY SUFFIX ".dll")
216219

217220
# --- LEGORacers.exe target ---
218221
add_executable(legoracers WIN32
219-
LEGORacers/src/cmbmodelpart0x34.cpp
220222
LEGORacers/src/main.cpp
221223
LEGORacers/src/cactusinterface0x4.cpp
222224
LEGORacers/src/legoracers.cpp
@@ -261,7 +263,6 @@ add_executable(legoracers WIN32
261263
LEGORacers/src/glassstream0x94.cpp
262264
LEGORacers/src/celestialforge0x48.cpp
263265
LEGORacers/src/opalhaven0xf4.cpp
264-
LEGORacers/src/cmbmodelpartdata0x18.cpp
265266
LEGORacers/src/silverhollow0xb8.cpp
266267
LEGORacers/src/golapp.cpp
267268
LEGORacers/src/whitefalcon0x140.cpp

GolDP/include/fluffygloomkins0x118.h

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "decomp.h"
66
#include "zoweeblubberworth0xf0.h"
77

8+
class CmbModelPart0x34;
89
class AmberHaze0x20;
910
class AmberLensBase0x120;
1011
class BoundingShape0x2c;
@@ -16,23 +17,23 @@ class FluffyGloomkins0x118 : public ZoweeBlubberworth0xf0 {
1617
public:
1718
FluffyGloomkins0x118();
1819
~FluffyGloomkins0x118() override;
19-
undefined4* VTable0x08(void) override; // vtable+0x08
20-
undefined4* VTable0x0c(void) override; // vtable+0x0c
21-
void VTable0x18(void) override; // vtable+0x18
22-
void VTable0x1c(undefined4*) override; // vtable+0x1c
23-
void VTable0x20(undefined4) override; // vtable+0x20
24-
void VTable0x24(undefined4) override; // vtable+0x24
25-
void VTable0x28(undefined4*) override; // vtable+0x28
26-
undefined4* VTable0x2c(undefined4) override; // vtable+0x2c
27-
undefined4* VTable0x30(undefined4) override; // vtable+0x30
28-
undefined4* VTable0x34(undefined4) override; // vtable+0x34
29-
undefined4* VTable0x38(undefined4) override; // vtable+0x38
30-
undefined4* VTable0x3c(undefined4) override; // vtable+0x3c
31-
undefined4* VTable0x40(undefined4) override; // vtable+0x40
32-
undefined4* VTable0x44(undefined4) override; // vtable+0x44
33-
undefined4* VTable0x48(undefined4) override; // vtable+0x48
34-
undefined4* VTable0x4c(undefined4) override; // vtable+0x4c
35-
undefined4* VTable0x50(undefined4) override; // vtable+0x50
20+
undefined4* VTable0x08(void) override; // vtable+0x08
21+
undefined4* VTable0x0c(void) override; // vtable+0x0c
22+
void VTable0x18(void) override; // vtable+0x18
23+
void VTable0x1c(undefined4*) override; // vtable+0x1c
24+
void VTable0x20(undefined4) override; // vtable+0x20
25+
void VTable0x24(undefined4) override; // vtable+0x24
26+
void VTable0x28(undefined4*) override; // vtable+0x28
27+
MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) override; // vtable+0x2c
28+
AmberHaze0x1c* VTable0x30(LegoU32 p_index) override; // vtable+0x30
29+
CmbModelPart0x34* VTable0x34(LegoU32 p_index) override; // vtable+0x34
30+
undefined4* VTable0x38(LegoU32 p_index) override; // vtable+0x38
31+
undefined4* VTable0x3c(LegoU32 p_index) override; // vtable+0x3c
32+
undefined4* VTable0x40(LegoU32 p_index) override; // vtable+0x40
33+
BoundingShape0x2c* VTable0x44(LegoU32 p_index) override; // vtable+0x44
34+
undefined4* VTable0x48(LegoU32 p_index) override; // vtable+0x48
35+
undefined4* VTable0x4c(LegoU32 p_index) override; // vtable+0x4c
36+
undefined4* VTable0x50(LegoU32 p_index) override; // vtable+0x50
3637

3738
// SYNTHETIC: GOLDP 0x100171e0
3839
// FluffyGloomkins0x118::`scalar deleting destructor'
@@ -47,7 +48,7 @@ class FluffyGloomkins0x118 : public ZoweeBlubberworth0xf0 {
4748
undefined4* m_unk0x100; // 0x100
4849
undefined4* m_unk0x104; // 0x104
4950
undefined4* m_unk0x108; // 0x108
50-
undefined4* m_unk0x10c; // 0x10c
51+
CmbModelPart0x34* m_unk0x10c; // 0x10c
5152
BoundingShape0x2c* m_unk0x110; // 0x110
5253
AmberLensBase0x120* m_unk0x114; // 0x114
5354
};

GolDP/include/zoweeblubberworth0xf0.h

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

44
#include "golnametable.h"
55

6+
class CmbModelPart0x34;
7+
class AmberHaze0x1c;
8+
class BoundingShape0x2c;
9+
class MagentaRibbon0x20;
10+
611
// VTABLE: GOLDP 0x100576ec
712
// SIZE 0xf0
813
class ZoweeBlubberworth0xf0 {
@@ -19,23 +24,24 @@ class ZoweeBlubberworth0xf0 {
1924
virtual void VTable0x20(undefined4) = 0; // vtable+0x20
2025
virtual void VTable0x24(undefined4) = 0; // vtable+0x24
2126
virtual void VTable0x28(undefined4*) = 0; // vtable+0x28
22-
virtual undefined4* VTable0x2c(undefined4) = 0; // vtable+0x2c
23-
virtual undefined4* VTable0x30(undefined4) = 0; // vtable+0x30
24-
virtual undefined4* VTable0x34(undefined4) = 0; // vtable+0x34
25-
virtual undefined4* VTable0x38(undefined4) = 0; // vtable+0x38
26-
virtual undefined4* VTable0x3c(undefined4) = 0; // vtable+0x3c
27-
virtual undefined4* VTable0x40(undefined4) = 0; // vtable+0x40
28-
virtual undefined4* VTable0x44(undefined4) = 0; // vtable+0x44
29-
virtual undefined4* VTable0x48(undefined4) = 0; // vtable+0x48
30-
virtual undefined4* VTable0x4c(undefined4) = 0; // vtable+0x4c
31-
virtual undefined4* VTable0x50(undefined4) = 0; // vtable+0x50
27+
virtual MagentaRibbon0x20* VTable0x2c(LegoU32 p_index) = 0; // vtable+0x2c
28+
virtual AmberHaze0x1c* VTable0x30(LegoU32 p_index) = 0; // vtable+0x30
29+
virtual CmbModelPart0x34* VTable0x34(LegoU32 p_index) = 0; // vtable+0x34
30+
virtual undefined4* VTable0x38(LegoU32 p_index) = 0; // vtable+0x38
31+
virtual undefined4* VTable0x3c(LegoU32 p_index) = 0; // vtable+0x3c
32+
virtual undefined4* VTable0x40(LegoU32 p_index) = 0; // vtable+0x40
33+
virtual BoundingShape0x2c* VTable0x44(LegoU32 p_index) = 0; // vtable+0x44
34+
virtual undefined4* VTable0x48(LegoU32 p_index) = 0; // vtable+0x48
35+
virtual undefined4* VTable0x4c(LegoU32 p_index) = 0; // vtable+0x4c
36+
virtual undefined4* VTable0x50(LegoU32 p_index) = 0; // vtable+0x50
3237
virtual void VTable0x54(void); // vtable+0x54
3338

3439
// SYNTHETIC: GOLDP 0x1002c0c0
3540
// ZoweeBlubberworth0xf0::`scalar deleting destructor'
3641

3742
undefined4 GetUnk0x0c() const { return m_unk0x0c; }
3843
undefined4 GetUnk0x14() const { return m_unk0x14; }
44+
undefined4 GetUnk0x1c() const { return m_unk0x1c; }
3945
undefined4 GetUnk0x3c() const { return m_unk0x3c; }
4046
undefined4 GetUnk0x7c() const { return m_unk0x7c; }
4147

GolDP/src/fluffygloomkins0x118.cpp

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "amberhaze0x20.h"
44
#include "amberlens0x344.h"
55
#include "boundingshape0x2c.h"
6+
#include "cmbmodelpart0x34.h"
67
#include "golerror.h"
78
#include "purpleribbon0x24.h"
89

@@ -29,91 +30,105 @@ FluffyGloomkins0x118::~FluffyGloomkins0x118()
2930
VTable0x18();
3031
}
3132

32-
// STUB: GOLDP 0x10017250
33-
undefined4* FluffyGloomkins0x118::VTable0x2c(undefined4)
33+
// FUNCTION: GOLDP 0x10017250
34+
MagentaRibbon0x20* FluffyGloomkins0x118::VTable0x2c(LegoU32 p_index)
3435
{
35-
// TODO
36-
STUB(0x10017250);
37-
return NULL;
36+
return &m_unk0xf0[p_index];
3837
}
3938

40-
// STUB: GOLDP 0x10017270
41-
undefined4* FluffyGloomkins0x118::VTable0x30(undefined4)
39+
// FUNCTION: GOLDP 0x10017270
40+
AmberHaze0x1c* FluffyGloomkins0x118::VTable0x30(LegoU32 p_index)
4241
{
43-
// TODO
44-
STUB(0x10017270);
45-
return NULL;
42+
return &m_unk0xf4[p_index];
4643
}
4744

4845
// STUB: GOLDP 0x10017290
49-
undefined4* FluffyGloomkins0x118::VTable0x34(undefined4)
46+
CmbModelPart0x34* FluffyGloomkins0x118::VTable0x34(LegoU32 p_index)
5047
{
51-
// TODO
52-
STUB(0x10017290);
53-
return NULL;
48+
return &m_unk0x10c[p_index];
5449
}
5550

5651
// STUB: GOLDP 0x100172b0
57-
undefined4* FluffyGloomkins0x118::VTable0x38(undefined4)
52+
undefined4* FluffyGloomkins0x118::VTable0x38(LegoU32 p_index)
5853
{
54+
#if 0
55+
return &m_unk0xf8[p_index];
56+
#else
5957
// TODO
6058
STUB(0x100172b0);
6159
return NULL;
60+
#endif
6261
}
6362

6463
// STUB: GOLDP 0x100172d0
65-
undefined4* FluffyGloomkins0x118::VTable0x3c(undefined4)
64+
undefined4* FluffyGloomkins0x118::VTable0x3c(LegoU32 p_index)
6665
{
66+
#if 0
67+
return &m_unk0x104[p_index];
68+
#else
6769
// TODO
6870
STUB(0x100172d0);
6971
return NULL;
72+
#endif
7073
}
7174

7275
// STUB: GOLDP 0x100172f0
73-
undefined4* FluffyGloomkins0x118::VTable0x40(undefined4)
76+
undefined4* FluffyGloomkins0x118::VTable0x40(LegoU32 p_index)
7477
{
78+
#if 0
79+
return &m_unk0xfc[p_index];
80+
#else
7581
// TODO
7682
STUB(0x100172f0);
7783
return NULL;
84+
#endif
7885
}
7986

80-
// STUB: GOLDP 0x10017310
81-
undefined4* FluffyGloomkins0x118::VTable0x44(undefined4)
87+
// FUNCTION: GOLDP 0x10017310
88+
BoundingShape0x2c* FluffyGloomkins0x118::VTable0x44(LegoU32 p_index)
8289
{
83-
// TODO
84-
STUB(0x10017310);
85-
return NULL;
90+
return &m_unk0x110[p_index];
8691
}
8792

8893
// STUB: GOLDP 0x10017330
89-
undefined4* FluffyGloomkins0x118::VTable0x48(undefined4)
94+
undefined4* FluffyGloomkins0x118::VTable0x48(LegoU32 p_index)
9095
{
96+
#if 0
97+
return &m_unk0x100[p_index];
98+
#else
9199
// TODO
92100
STUB(0x10017330);
93101
return NULL;
102+
#endif
94103
}
95104

96105
// STUB: GOLDP 0x10017350
97-
undefined4* FluffyGloomkins0x118::VTable0x4c(undefined4)
106+
undefined4* FluffyGloomkins0x118::VTable0x4c(LegoU32 p_index)
98107
{
108+
#if 0
109+
return &m_unk0x108[p_index];
110+
#else
99111
// TODO
100112
STUB(0x10017350);
101113
return NULL;
114+
#endif
102115
}
103116

104117
// STUB: GOLDP 0x10017370
105-
undefined4* FluffyGloomkins0x118::VTable0x50(undefined4)
118+
undefined4* FluffyGloomkins0x118::VTable0x50(LegoU32 p_index)
106119
{
120+
#if 0
121+
return &m_unk0x114[p_index];
122+
#else
107123
// TODO
108124
STUB(0x10017370);
109125
return NULL;
126+
#endif
110127
}
111128

112129
// STUB: GOLDP 0x10017390
113130
undefined4* FluffyGloomkins0x118::VTable0x08()
114131
{
115-
// ...
116-
117132
if (GetUnk0x0c() != 0) {
118133
m_unk0xf0 = new PurpleRibbon0x24[GetUnk0x0c()];
119134
if (m_unk0xf0 == NULL) {
@@ -128,6 +143,13 @@ undefined4* FluffyGloomkins0x118::VTable0x08()
128143
}
129144
}
130145

146+
if (GetUnk0x1c() != 0) {
147+
m_unk0x10c = new CmbModelPart0x34[GetUnk0x1c()];
148+
if (m_unk0xf4 == NULL) {
149+
GOL_FATALERROR(c_golErrorOutOfMemory);
150+
}
151+
}
152+
131153
// ...
132154

133155
if (GetUnk0x3c() != 0) {

LEGORacers/include/aquamarinespirit0x3c.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef AQUAMARINESPIRIT0X3C_H
22
#define AQUAMARINESPIRIT0X3C_H
33

4-
#include "cmbmodelpart0x34.h"
4+
#include "../../common/include/cmbmodelpart0x34.h"
55
#include "decomp.h"
66
#include "golnametable.h"
77
#include "goltxtparser.h"

LEGORacers/include/cmbmodelpart0x34.h

Lines changed: 0 additions & 28 deletions
This file was deleted.

LEGORacers/include/cmbmodelpartdata0x18.h

Lines changed: 0 additions & 23 deletions
This file was deleted.

LEGORacers/src/cmbmodelpart0x34.cpp

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)