Skip to content

Commit 56b27f8

Browse files
authored
IronFlame0x944 - more implementation (isledecomp#24)
1 parent 94f479c commit 56b27f8

7 files changed

Lines changed: 218 additions & 27 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ add_executable(legoracers WIN32
101101
LEGORacers/src/emberdust0x28.cpp
102102
LEGORacers/src/cobaltmist0x30.cpp
103103
LEGORacers/src/tealpulse0x24.cpp
104+
LEGORacers/src/crimsonforge0x800.cpp
105+
LEGORacers/src/opalvault0xf0.cpp
104106
LEGORacers/src/silvernode0x50.cpp
105107
LEGORacers/racers.rc
106108
)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#ifndef CRIMSONFORGE0X800_H
2+
#define CRIMSONFORGE0X800_H
3+
4+
#include "decomp.h"
5+
#include "tealpulse0x24.h"
6+
#include "types.h"
7+
8+
// VTABLE: LEGORACERS 0x4af9a8
9+
// SIZE 0x800
10+
class CrimsonForge0x800 {
11+
public:
12+
CrimsonForge0x800();
13+
virtual void VTable0x00() = 0; // vtable+0x00
14+
virtual ~CrimsonForge0x800(); // vtable+0x04
15+
virtual void VTable0x08(); // vtable+0x08
16+
virtual void VTable0x0c(LegoChar*, LegoChar*) = 0; // vtable+0x0c
17+
virtual void VTable0x10() = 0; // vtable+0x10
18+
virtual void VTable0x14() = 0; // vtable+0x14
19+
virtual void VTable0x18() = 0; // vtable+0x18
20+
virtual void VTable0x1c() = 0; // vtable+0x1c
21+
virtual void VTable0x20() = 0; // vtable+0x20
22+
virtual void VTable0x24() = 0; // vtable+0x24
23+
virtual void VTable0x28(); // vtable+0x28
24+
virtual void VTable0x2c() = 0; // vtable+0x2c
25+
virtual void VTable0x30() = 0; // vtable+0x30
26+
virtual void VTable0x34() = 0; // vtable+0x34
27+
28+
// SYNTHETIC: LEGORACERS 0x4163b0
29+
// CrimsonForge0x800::`scalar deleting destructor'
30+
31+
LegoU8 GetUnk0x04() { return m_unk0x04; }
32+
TealPulse0x24& GetUnk0x7dc() { return m_unk0x7dc; }
33+
34+
protected:
35+
LegoU8 m_unk0x04; // 0x04
36+
undefined m_unk0x05[0x7dc - 0x05]; // 0x05
37+
TealPulse0x24 m_unk0x7dc; // 0x7dc
38+
};
39+
40+
#endif // CRIMSONFORGE0X800_H
Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,50 @@
11
#ifndef IRONFLAME0X944_H
22
#define IRONFLAME0X944_H
33

4+
#include "compat.h"
5+
#include "crimsonforge0x800.h"
46
#include "decomp.h"
5-
#include "tealpulse0x24.h"
7+
#include "opalvault0xf0.h"
68
#include "types.h"
79

810
// VTABLE: LEGORACERS 0x4af9f4
911
// SIZE 0x944
10-
class IronFlame0x944 {
12+
class IronFlame0x944 : public CrimsonForge0x800 {
1113
public:
12-
virtual void VTable0x00(); // vtable+0x00
13-
virtual ~IronFlame0x944(); // vtable+0x04
14-
virtual void VTable0x08(); // vtable+0x08
15-
virtual void VTable0x0c(LegoChar*, LegoChar*); // vtable+0x0c
16-
virtual void VTable0x10(); // vtable+0x10
17-
virtual void VTable0x14(); // vtable+0x14
18-
virtual void VTable0x18(); // vtable+0x18
19-
virtual void VTable0x1c(); // vtable+0x1c
20-
virtual void VTable0x20(); // vtable+0x20
21-
virtual void VTable0x24(); // vtable+0x24
22-
virtual void VTable0x28(); // vtable+0x28
23-
virtual void VTable0x2c(); // vtable+0x2c
14+
IronFlame0x944();
15+
void VTable0x00() override; // vtable+0x00
16+
~IronFlame0x944() override; // vtable+0x04
17+
void VTable0x0c(LegoChar*, LegoChar*) override; // vtable+0x0c
18+
void VTable0x10() override; // vtable+0x10
19+
void VTable0x14() override; // vtable+0x14
20+
void VTable0x18() override; // vtable+0x18
21+
void VTable0x1c() override; // vtable+0x1c
22+
void VTable0x20() override; // vtable+0x20
23+
void VTable0x24() override; // vtable+0x24
24+
void VTable0x28() override; // vtable+0x28
25+
void VTable0x2c() override; // vtable+0x2c
26+
void VTable0x30() override; // vtable+0x30
27+
void VTable0x34() override; // vtable+0x34
2428

2529
// SYNTHETIC: LEGORACERS 0x416560
2630
// IronFlame0x944::`scalar deleting destructor'
2731

28-
LegoU8 GetUnk0x04() { return m_unk0x04; }
29-
TealPulse0x24& GetUnk0x7dc() { return m_unk0x7dc; }
3032
undefined4 GetUnk0x928() { return m_unk0x928; }
31-
3233
void SetUnk0x928(undefined4 p_unk0x928) { m_unk0x928 = p_unk0x928; }
3334

3435
private:
35-
LegoU8 m_unk0x04; // 0x04
36-
undefined m_unk0x05[0x7dc - 0x05]; // 0x05
37-
TealPulse0x24 m_unk0x7dc; // 0x7dc
38-
undefined m_unk0x800[0x928 - 0x800]; // 0x800
36+
undefined4 m_unk0x800; // 0x800
37+
undefined m_unk0x804[0x830 - 0x804]; // 0x804
38+
undefined4 m_unk0x830; // 0x830
39+
OpalVault0xf0 m_unk0x834; // 0x834
40+
undefined4 m_unk0x924; // 0x924
3941
undefined4 m_unk0x928; // 0x928
40-
undefined m_unk0x92c[0x944 - 0x92c]; // 0x92c
42+
undefined4 m_unk0x92c; // 0x92c
43+
undefined4 m_unk0x930; // 0x930
44+
undefined4 m_unk0x934; // 0x934
45+
undefined4 m_unk0x938; // 0x938
46+
undefined4 m_unk0x93c; // 0x93c
47+
undefined4 m_unk0x940; // 0x940
4148
};
4249

4350
#endif // IRONFLAME0X944_H

LEGORacers/include/opalvault0xf0.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef OPALVAULT0XF0_H
2+
#define OPALVAULT0XF0_H
3+
4+
#include "decomp.h"
5+
#include "types.h"
6+
7+
// VTABLE: LEGORACERS 0x4b1224
8+
// SIZE 0xf0
9+
class OpalVault0xf0 {
10+
public:
11+
OpalVault0xf0();
12+
virtual void VTable0x00(); // vtable+0x00
13+
virtual ~OpalVault0xf0(); // vtable+0x04
14+
virtual void VTable0x08(); // vtable+0x08
15+
virtual void VTable0x0c(); // vtable+0x0c
16+
virtual void VTable0x10(); // vtable+0x10
17+
virtual void VTable0x14(); // vtable+0x14
18+
virtual void VTable0x18(); // vtable+0x18
19+
virtual void VTable0x1c(); // vtable+0x1c
20+
21+
// SYNTHETIC: LEGORACERS 0x450350
22+
// OpalVault0xf0::`scalar deleting destructor'
23+
24+
private:
25+
undefined m_unk0x04[0xf0 - 0x04]; // 0x04
26+
};
27+
28+
#endif // OPALVAULT0XF0_H
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include "crimsonforge0x800.h"
2+
3+
DECOMP_SIZE_ASSERT(CrimsonForge0x800, 0x800)
4+
5+
// STUB: LEGORACERS 0x416320
6+
CrimsonForge0x800::CrimsonForge0x800()
7+
{
8+
STUB(0x416320);
9+
}
10+
11+
// STUB: LEGORACERS 0x4163d0
12+
CrimsonForge0x800::~CrimsonForge0x800()
13+
{
14+
}
15+
16+
// STUB: LEGORACERS 0x416450
17+
void CrimsonForge0x800::VTable0x08()
18+
{
19+
// TODO
20+
STUB(0x416450);
21+
}
22+
23+
// STUB: LEGORACERS 0x416470
24+
void CrimsonForge0x800::VTable0x28()
25+
{
26+
// TODO
27+
STUB(0x416470);
28+
}

LEGORacers/src/ironflame0x944.cpp

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,25 @@
22

33
DECOMP_SIZE_ASSERT(IronFlame0x944, 0x944)
44

5-
// STUB: LEGORACERS 0x416450
6-
void IronFlame0x944::VTable0x08()
5+
// FUNCTION: LEGORACERS 0x4164d0
6+
IronFlame0x944::IronFlame0x944()
77
{
8-
// TODO
9-
STUB(0x416450);
8+
m_unk0x830 = 0;
9+
m_unk0x800 = 0;
10+
m_unk0x924 = 0;
11+
m_unk0x928 = 0;
12+
m_unk0x92c = 0;
13+
m_unk0x934 = 0;
14+
m_unk0x93c = 0;
15+
m_unk0x940 = 0;
16+
m_unk0x930 = 0;
17+
m_unk0x938 = 1;
1018
}
1119

12-
// STUB: LEGORACERS 0x416580
20+
// FUNCTION: LEGORACERS 0x416580
1321
IronFlame0x944::~IronFlame0x944()
1422
{
23+
VTable0x10();
1524
}
1625

1726
// STUB: LEGORACERS 0x4165e0
@@ -77,6 +86,20 @@ void IronFlame0x944::VTable0x24()
7786
STUB(0x416b00);
7887
}
7988

89+
// STUB: LEGORACERS 0x416cd0
90+
void IronFlame0x944::VTable0x30()
91+
{
92+
// TODO
93+
STUB(0x416cd0);
94+
}
95+
96+
// STUB: LEGORACERS 0x416ef0
97+
void IronFlame0x944::VTable0x34()
98+
{
99+
// TODO
100+
STUB(0x416ef0);
101+
}
102+
80103
// STUB: LEGORACERS 0x417900
81104
void IronFlame0x944::VTable0x00()
82105
{

LEGORacers/src/opalvault0xf0.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include "opalvault0xf0.h"
2+
3+
DECOMP_SIZE_ASSERT(OpalVault0xf0, 0xf0)
4+
5+
// STUB: LEGORACERS 0x450300
6+
OpalVault0xf0::OpalVault0xf0()
7+
{
8+
STUB(0x450300);
9+
}
10+
11+
// STUB: LEGORACERS 0x450370
12+
OpalVault0xf0::~OpalVault0xf0()
13+
{
14+
}
15+
16+
// STUB: LEGORACERS 0x4503c0
17+
void OpalVault0xf0::VTable0x00()
18+
{
19+
// TODO
20+
STUB(0x4503c0);
21+
}
22+
23+
// STUB: LEGORACERS 0x450460
24+
void OpalVault0xf0::VTable0x08()
25+
{
26+
// TODO
27+
STUB(0x450460);
28+
}
29+
30+
// STUB: LEGORACERS 0x450490
31+
void OpalVault0xf0::VTable0x0c()
32+
{
33+
// TODO
34+
STUB(0x450490);
35+
}
36+
37+
// STUB: LEGORACERS 0x4506a0
38+
void OpalVault0xf0::VTable0x18()
39+
{
40+
// TODO
41+
STUB(0x4506a0);
42+
}
43+
44+
// STUB: LEGORACERS 0x450790
45+
void OpalVault0xf0::VTable0x1c()
46+
{
47+
// TODO
48+
STUB(0x450790);
49+
}
50+
51+
// STUB: LEGORACERS 0x450990
52+
void OpalVault0xf0::VTable0x10()
53+
{
54+
// TODO
55+
STUB(0x450990);
56+
}
57+
58+
// STUB: LEGORACERS 0x450a20
59+
void OpalVault0xf0::VTable0x14()
60+
{
61+
// TODO
62+
STUB(0x450a20);
63+
}

0 commit comments

Comments
 (0)