Skip to content

Commit 4ea2b55

Browse files
committed
Implement FloatyCanoe0x90
1 parent edef18f commit 4ea2b55

15 files changed

Lines changed: 387 additions & 68 deletions

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ add_library(goldp SHARED
217217
GolDP/src/boundingvolume0x64.cpp
218218
GolDP/src/floatybuoy0x58.cpp
219219
GolDP/src/floatykajak0x64.cpp
220+
GolDP/src/floatycanoe0x90.cpp
220221
util/decomp.cpp
221222
$<TARGET_OBJECTS:common_goldp>
222223
)

GolDP/include/bronzefalcon0xc8770.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,10 @@ class BronzeFalcon0xc8770 : public WhiteFalcon0x140 {
131131
void VTable0x88(undefined4, undefined4, undefined4) override; // vtable+0x88
132132
void VTable0x8c(undefined4, undefined4, undefined4) override; // vtable+0x8c
133133
void VTable0x90() override; // vtable+0x90
134-
void VTable0x94(undefined4) override; // vtable+0x94
134+
void VTable0x94(FloatyBoat0x28*) override; // vtable+0x94
135135
void VTable0x98(undefined4, undefined4, undefined4) override; // vtable+0x98
136136
void VTable0x9c(undefined4, undefined4, undefined4) override; // vtable+0x9c
137-
void VTable0xa8(undefined4, undefined4, undefined4) override; // vtable+0xa8
137+
void VTable0xa8(FloatyBoat0x28*, LegoFloat, LegoFloat) override; // vtable+0xa8
138138
void VTable0xac(undefined4, undefined4) override; // vtable+0xac
139139
void VTable0xb0(undefined4, undefined4) override; // vtable+0xb0
140140
void VTable0xb4(FloatyPontoon0x4c&) override; // vtable+0xb4

GolDP/include/floatyboat0x28.h

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,30 @@ class FloatyBoat0x28 {
1212
public:
1313
FloatyBoat0x28();
1414

15-
virtual void VTable0x00(); // vtable+0x00
16-
virtual void VTable0x04(GolVec3* p_v) const; // vtable+0x04
17-
virtual void VTable0x08(const GolVec3& p_v); // vtable+0x08
18-
virtual void VTable0x0c(LegoFloat p_v); // vtable+0x0c
19-
virtual void VTable0x10(LegoS32); // vtable+0x10
20-
virtual void VTable0x14(GolVec3* p_arg1, undefined4*); // vtable+0x14
21-
virtual LegoS32 VTable0x18(); // vtable+0x18
22-
virtual void VTable0x1c(WhiteFalcon0x140*); // vtable+0x1c
23-
virtual undefined4 VTable0x20(); // vtable+0x20
24-
virtual void VTable0x24(undefined4*); // vtable+0x24
25-
virtual void VTable0x28(); // vtable+0x28
26-
virtual void VTable0x2c(const GolVec3& p_add, GolVec3* p_dest) const; // vtable+0x2c
27-
virtual void VTable0x30(const GolVec3& p_src, GolVec3* p_dest) const; // vtable+0x30
28-
virtual void VTable0x34(const GolVec3& p_src, GolVec3* p_dest); // vtable+0x34
29-
virtual void VTable0x38(const GolVec3& p_src, GolVec3* p_dest) const; // vtable+0x38
30-
virtual void VTable0x3c(const GolMatrix34&); // vtable+0x3c
31-
virtual void VTable0x40(const GolVec3& p_v1, const GolVec3& p_v2); // vtable+0x40
32-
virtual void VTable0x44(GolMatrix3*) const; // vtable+0x44
33-
virtual void VTable0x48(GolVec3* p_v1, GolVec3* p_v2) const; // vtable+0x48
15+
struct ResultStruct {
16+
undefined4 m_unk0x00; // 0x00
17+
undefined4 m_unk0x04; // 0x04
18+
};
19+
20+
virtual void VTable0x00(); // vtable+0x00
21+
virtual void VTable0x04(GolVec3* p_v) const; // vtable+0x04
22+
virtual void VTable0x08(const GolVec3& p_v); // vtable+0x08
23+
virtual void VTable0x0c(LegoFloat p_v); // vtable+0x0c
24+
virtual void VTable0x10(LegoS32); // vtable+0x10
25+
virtual void VTable0x14(const GolVec3& p_vector, ResultStruct* p_result); // vtable+0x14
26+
virtual LegoS32 VTable0x18(); // vtable+0x18
27+
virtual void VTable0x1c(WhiteFalcon0x140&); // vtable+0x1c
28+
virtual undefined4 VTable0x20(); // vtable+0x20
29+
virtual void VTable0x24(undefined4*); // vtable+0x24
30+
virtual void VTable0x28(); // vtable+0x28
31+
virtual void VTable0x2c(const GolVec3& p_add, GolVec3* p_dest) const; // vtable+0x2c
32+
virtual void VTable0x30(const GolVec3& p_src, GolVec3* p_dest) const; // vtable+0x30
33+
virtual void VTable0x34(const GolVec3& p_src, GolVec3* p_dest); // vtable+0x34
34+
virtual void VTable0x38(const GolVec3& p_src, GolVec3* p_dest) const; // vtable+0x38
35+
virtual void VTable0x3c(const GolMatrix34&); // vtable+0x3c
36+
virtual void VTable0x40(const GolVec3& p_v1, const GolVec3& p_v2); // vtable+0x40
37+
virtual void VTable0x44(GolMatrix3*) const; // vtable+0x44
38+
virtual void VTable0x48(GolVec3* p_v1, GolVec3* p_v2) const; // vtable+0x48
3439

3540
void FUN_100286d0(GolVec3* p_v);
3641
LegoFloat FUN_10028710();

GolDP/include/floatycanoe0x90.h

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#ifndef FLOATYCANOE0x90
2+
#define FLOATYCANOE0x90
3+
4+
#include "compat.h"
5+
#include "decomp.h"
6+
#include "floatybuoy0x58.h"
7+
8+
// VTABLE: GOLDP 0x10057270
9+
// SIZE 0x90
10+
class FloatyCanoe0x90 : public FloatyBuoy0x58 {
11+
public:
12+
FloatyCanoe0x90();
13+
14+
void VTable0x00() override; // vtable0x00
15+
void VTable0x10(LegoS32 p_v) override; // vtable+0x10
16+
void VTable0x14(const GolVec3& p_vector, ResultStruct* p_result) override; // vtable+0x14
17+
void VTable0x1c(WhiteFalcon0x140&) override; // vtable+0x1c
18+
undefined4 VTable0x20() override; // vtable+0x20
19+
void VTable0x24(undefined4*) override; // vtable+0x24
20+
void VTable0x28() override; // vtable+0x28
21+
virtual void VTable0x4c(LegoU32 p_index); // vtable+0x4c
22+
virtual void VTable0x50(undefined4* p_value, LegoFloat p_scalar); // vtable+0x4c
23+
virtual void VTable0x54(); // vtable+0x4c
24+
virtual undefined4 VTable0x58(undefined4); // vtable+0x4c
25+
virtual void VTable0x5c(undefined4); // vtable+0x4c
26+
27+
void FUN_10027c50(undefined4* p_value, LegoFloat p_scalar);
28+
void FUN_10027cc0(const GolVec3& p_vector, ResultStruct* p_result);
29+
void FUN_10027e70(GolMatrix4* p_dest, LegoU32 p_index);
30+
void FUN_10027fe0(undefined4 p_arg1, GolVec3* p_destVec, LegoFloat* p_destScalar);
31+
void FUN_10028110(LegoFloat p_arg);
32+
void FUN_10028140(LegoFloat p_arg);
33+
34+
protected:
35+
enum {
36+
c_flagBit0 = 0x1 << 0,
37+
c_flagBit2 = 0x1 << 2,
38+
c_flagBit3 = 0x1 << 3,
39+
};
40+
41+
LegoFloat m_unk0x58; // 0x58
42+
LegoU32 m_flags; // 0x5c
43+
undefined2 m_unk0x60; // 0x60
44+
undefined2 m_unk0x62; // 0x62
45+
undefined4 m_unk0x64; // 0x64
46+
undefined4 m_unk0x68; // 0x68
47+
LegoFloat m_unk0x6c[3]; // 0x6c
48+
undefined4* m_unk0x78[3]; // 0x78
49+
LegoFloat m_unk0x84[3]; // 0x84
50+
};
51+
#endif // FLOATYCANOE0x90

GolDP/include/floatypontoon0x4c.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ class FloatyPontoon0x4c : public FloatyBoat0x28 {
2727

2828
// FUNCTION: GOLDP 0x100156c0
2929
void VTable0x08(const GolVec3& p_v) override { FloatyBoat0x28::VTable0x08(p_v); } // vtable+0x08
30-
void VTable0x14(GolVec3* p_arg1, undefined4*) override; // vtable+0x14
31-
void VTable0x1c(WhiteFalcon0x140*) override; // vtable+0x1c
30+
void VTable0x14(const GolVec3& p_arg1, ResultStruct*) override; // vtable+0x14
31+
void VTable0x1c(WhiteFalcon0x140&) override; // vtable+0x1c
3232
undefined4 VTable0x20() override; // vtable+0x20
3333
virtual void VTable0x4c(
3434
undefined4* p_position,

GolDP/include/whitefalcon0x140.h

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class AmberLens0x344;
1313
class BronzeFalcon0xc8770;
1414
class CinderBasin0x28;
1515
class DuskwindBananaRelic0x24;
16+
class FloatyBoat0x28;
1617
class GolSurfaceFormat;
1718
class GolFont0xa0;
1819
class GolFontBase0x40;
@@ -171,41 +172,41 @@ class WhiteFalcon0x140 {
171172
const TexturedVertex* p_vertex2,
172173
DuskwindBananaRelic0x24* p_material,
173174
undefined4 p_flags
174-
) = 0; // vtable+0x84
175-
virtual void VTable0x88(undefined4, undefined4, undefined4); // vtable+0x88
176-
virtual void VTable0x8c(undefined4, undefined4, undefined4); // vtable+0x8c
177-
virtual void VTable0x90() = 0; // vtable+0x90
178-
virtual void VTable0x94(undefined4) = 0; // vtable+0x94
179-
virtual void VTable0x98(undefined4, undefined4, undefined4); // vtable+0x98
180-
virtual void VTable0x9c(undefined4, undefined4, undefined4); // vtable+0x9c
181-
virtual void VTable0xa0(); // vtable+0xa0
182-
virtual void VTable0xa4(); // vtable+0xa4
183-
virtual void VTable0xa8(undefined4 p_param1, undefined4 p_param2, undefined4 p_param3); // vtable+0xa8
184-
virtual void VTable0xac(undefined4, undefined4); // vtable+0xac
185-
virtual void VTable0xb0(undefined4, undefined4); // vtable+0xb0
186-
virtual void VTable0xb4(FloatyPontoon0x4c&) = 0; // vtable+0xb4
187-
virtual void SetAlphaOverride(undefined4 p_alpha, undefined4 p_flags); // vtable+0xb8
188-
virtual void ClearAlphaOverride(); // vtable+0xbc
189-
virtual void VTable0xc0(const ColorRGBA& p_param); // vtable+0xc0
190-
virtual void VTable0xc4(); // vtable+0xc4
191-
virtual void VTable0xc8(); // vtable+0xc8
192-
virtual void VTable0xcc(); // vtable+0xcc
193-
virtual void VTable0xd0() = 0; // vtable+0xd0
194-
virtual void VTable0xd4() = 0; // vtable+0xd4
195-
virtual void VTable0xd8() = 0; // vtable+0xd8
196-
virtual void VTable0xdc() = 0; // vtable+0xdc
197-
virtual void VTable0xe0() = 0; // vtable+0xe0
198-
virtual void VTable0xe4() = 0; // vtable+0xe4
199-
virtual void VTable0xe8(LegoBool32 p_arg) = 0; // vtable+0xe8
200-
virtual void VTable0xec(undefined4); // vtable+0xec
201-
virtual void VTable0xf0() = 0; // vtable+0xf0
202-
virtual void VTable0xf4(); // vtable+0xf4
203-
virtual LegoU32 GetMinimumTextureWidth(undefined4) const = 0; // vtable+0xf8
204-
virtual LegoU32 GetMaximumTextureWidth(undefined4) const = 0; // vtable+0xfc
205-
virtual LegoU32 GetMinimumTextureHeight(undefined4) const = 0; // vtable+0x100
206-
virtual LegoU32 GetMaximumTextureHeight(undefined4) const = 0; // vtable+0x104
207-
virtual LegoBool32 TexturesMustBeSquare() const = 0; // vtable+0x108
208-
virtual LegoBool32 TextureSizesMustBePowersOfTwo() const = 0; // vtable+0x10c
175+
) = 0; // vtable+0x84
176+
virtual void VTable0x88(undefined4, undefined4, undefined4); // vtable+0x88
177+
virtual void VTable0x8c(undefined4, undefined4, undefined4); // vtable+0x8c
178+
virtual void VTable0x90() = 0; // vtable+0x90
179+
virtual void VTable0x94(FloatyBoat0x28*) = 0; // vtable+0x94
180+
virtual void VTable0x98(undefined4, undefined4, undefined4); // vtable+0x98
181+
virtual void VTable0x9c(undefined4, undefined4, undefined4); // vtable+0x9c
182+
virtual void VTable0xa0(); // vtable+0xa0
183+
virtual void VTable0xa4(FloatyBoat0x28*); // vtable+0xa4
184+
virtual void VTable0xa8(FloatyBoat0x28* p_param1, LegoFloat p_param2, LegoFloat p_param3); // vtable+0xa8
185+
virtual void VTable0xac(undefined4, undefined4); // vtable+0xac
186+
virtual void VTable0xb0(undefined4, undefined4); // vtable+0xb0
187+
virtual void VTable0xb4(FloatyPontoon0x4c&) = 0; // vtable+0xb4
188+
virtual void SetAlphaOverride(undefined4 p_alpha, undefined4 p_flags); // vtable+0xb8
189+
virtual void ClearAlphaOverride(); // vtable+0xbc
190+
virtual void VTable0xc0(const ColorRGBA& p_param); // vtable+0xc0
191+
virtual void VTable0xc4(); // vtable+0xc4
192+
virtual void VTable0xc8(); // vtable+0xc8
193+
virtual void VTable0xcc(); // vtable+0xcc
194+
virtual void VTable0xd0() = 0; // vtable+0xd0
195+
virtual void VTable0xd4() = 0; // vtable+0xd4
196+
virtual void VTable0xd8() = 0; // vtable+0xd8
197+
virtual void VTable0xdc() = 0; // vtable+0xdc
198+
virtual void VTable0xe0() = 0; // vtable+0xe0
199+
virtual void VTable0xe4() = 0; // vtable+0xe4
200+
virtual void VTable0xe8(LegoBool32 p_arg) = 0; // vtable+0xe8
201+
virtual void VTable0xec(undefined4); // vtable+0xec
202+
virtual void VTable0xf0() = 0; // vtable+0xf0
203+
virtual void VTable0xf4(); // vtable+0xf4
204+
virtual LegoU32 GetMinimumTextureWidth(undefined4) const = 0; // vtable+0xf8
205+
virtual LegoU32 GetMaximumTextureWidth(undefined4) const = 0; // vtable+0xfc
206+
virtual LegoU32 GetMinimumTextureHeight(undefined4) const = 0; // vtable+0x100
207+
virtual LegoU32 GetMaximumTextureHeight(undefined4) const = 0; // vtable+0x104
208+
virtual LegoBool32 TexturesMustBeSquare() const = 0; // vtable+0x108
209+
virtual LegoBool32 TextureSizesMustBePowersOfTwo() const = 0; // vtable+0x10c
209210
virtual LegoBool32 VTable0x110() const;
210211

211212
void Destroy();

GolDP/include/zoweeblubberworth0xf0.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class BoundingVolume0x64;
1414
class CmbModelPart0x34;
1515
class GolFileParser;
1616
class FloatyBoat0x28;
17+
class FloatyCanoe0x90;
1718
class FloatyKajak0x64;
1819
class IGdbModel0x40;
1920
class MabMaterialAnimation0x14;
@@ -206,7 +207,7 @@ class ZoweeBlubberworth0xf0 {
206207
WdbLight0x10* m_unk0x90; // 0x90
207208
LegoFloat m_unk0x94; // 0x94
208209
BoundingVolume0x64* m_unk0x98; // 0x98
209-
undefined4 m_unk0x9c; // 0x9c
210+
FloatyCanoe0x90* m_unk0x9c; // 0x9c
210211
undefined4 m_unk0xa0; // 0xa0
211212
LegoChar* m_unk0xa4; // 0xa4
212213
FloatyKajak0x64* m_unk0xa8; // 0xa8

GolDP/library_msvc.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
// LIBRARY: GOLDP 0x1004b7fe
3737
// __purecall
3838

39+
// LIBRARY: GOLDP 0x1004b808
40+
// __ftol
41+
3942
// LIBRARY: GOLDP 0x1004b830
4043
// _strncpy
4144

GolDP/src/bronzefalcon0xc8770.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ void BronzeFalcon0xc8770::VTable0x5c()
642642
}
643643

644644
// STUB: GOLDP 0x10008910
645-
void BronzeFalcon0xc8770::VTable0x94(undefined4)
645+
void BronzeFalcon0xc8770::VTable0x94(FloatyBoat0x28*)
646646
{
647647
STUB(0x10008910);
648648
}
@@ -666,7 +666,7 @@ void BronzeFalcon0xc8770::VTable0x8c(undefined4, undefined4, undefined4)
666666
}
667667

668668
// STUB: GOLDP 0x10008f70
669-
void BronzeFalcon0xc8770::VTable0xa8(undefined4, undefined4, undefined4)
669+
void BronzeFalcon0xc8770::VTable0xa8(FloatyBoat0x28*, LegoFloat, LegoFloat)
670670
{
671671
STUB(0x10008f70);
672672
}

GolDP/src/floatyboat0x28.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void FloatyBoat0x28::VTable0x0c(LegoFloat p_v)
5353
}
5454

5555
// STUB: GOLDP 0x100285d0
56-
void FloatyBoat0x28::VTable0x14(GolVec3* p_arg1, undefined4*)
56+
void FloatyBoat0x28::VTable0x14(const GolVec3& p_arg1, ResultStruct*)
5757
{
5858
if (m_v1.m_x < 0.0f) {
5959
VTable0x00();
@@ -192,7 +192,7 @@ void FloatyBoat0x28::VTable0x40(const GolVec3& p_v1, const GolVec3& p_v2)
192192
}
193193

194194
// FUNCTION: GOLDP 0x1002c020 FOLDED
195-
void FloatyBoat0x28::VTable0x1c(WhiteFalcon0x140*)
195+
void FloatyBoat0x28::VTable0x1c(WhiteFalcon0x140&)
196196
{
197197
// empty
198198
}

0 commit comments

Comments
 (0)