Skip to content

Commit 27d3285

Browse files
committed
Add GolDPState class and parents
1 parent 71f95e3 commit 27d3285

15 files changed

Lines changed: 916 additions & 105 deletions

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ set(COMMON_SOURCES
7171

7272
# --- GolDP.dll target ---
7373
add_library(goldp SHARED
74+
GolDP/src/goldrawdpstate.cpp
7475
util/decomp.cpp
7576
${COMMON_SOURCES}
7677
GolDP/src/adapter.cpp
7778
GolDP/src/goldpexport.cpp
79+
GolDP/src/goldrawstate.cpp
80+
GolDP/src/golcommondrawstate.cpp
7881
GolDP/src/main.cpp
7982
)
8083
reccmp_add_target(goldp ID GOLDP)
@@ -129,6 +132,7 @@ target_include_directories(legoracers PRIVATE
129132
"${PROJECT_SOURCE_DIR}/LEGORacers"
130133
"${PROJECT_SOURCE_DIR}/common/include"
131134
"${PROJECT_SOURCE_DIR}/util"
135+
"${PROJECT_SOURCE_DIR}/GolDP/include"
132136
)
133137

134138
target_link_libraries(legoracers PRIVATE

GolDP/include/gol.h

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define GOLDP_GOL_H
33

44
#include "decomp.h"
5+
#include "goldrawstate.h"
56
#include "types.h"
67

78
#include <windows.h>
@@ -23,38 +24,40 @@ struct GolImport {
2324
// VTABLE: GOLDP 0x100564b0
2425
// SIZE 0x4
2526
class GolExport {
26-
public:
2727
// SYNTHETIC: GOLDP 0x10007170
2828
// GolExport::`scalar deleting destructor'
2929

30-
virtual ~GolExport() {}
31-
virtual undefined4* VTable0x04() = 0;
32-
virtual undefined4* VTable0x08() = 0;
33-
virtual undefined4* VTable0x0c() = 0;
34-
virtual undefined4* VTable0x10() = 0;
35-
virtual undefined4* VTable0x14() = 0;
36-
virtual undefined4* VTable0x18() = 0;
37-
virtual undefined4* VTable0x1c() = 0;
38-
virtual undefined4* VTable0x20() = 0;
39-
virtual undefined4 VTable0x24() = 0;
40-
virtual undefined4* VTable0x28() = 0;
41-
virtual undefined4* VTable0x2c() = 0;
42-
virtual undefined4* VTable0x30() = 0;
43-
virtual undefined4* VTable0x34() = 0;
44-
virtual undefined4* VTable0x38() = 0;
45-
virtual void VTable0x3c(undefined4*) = 0;
46-
virtual void VTable0x40(undefined4*) = 0;
47-
virtual void VTable0x44(undefined4*) = 0;
48-
virtual void VTable0x48(undefined4*) = 0;
49-
virtual void VTable0x4c(undefined4*) = 0;
50-
virtual void VTable0x50(undefined4*) = 0;
51-
virtual void VTable0x54(undefined4*) = 0;
52-
virtual void VTable0x58(undefined4*) = 0;
53-
virtual void VTable0x5c(undefined4*) = 0;
54-
virtual void VTable0x60(undefined4*) = 0;
55-
virtual void VTable0x64(undefined4*) = 0;
56-
virtual void VTable0x68(undefined4*) = 0;
57-
virtual void VTable0x6c(undefined4*) = 0;
30+
protected:
31+
virtual ~GolExport() {} // vtable+0x00
32+
33+
public:
34+
virtual GolDrawState* VTable0x04() = 0; // vtable+0x04
35+
virtual undefined4* VTable0x08() = 0; // vtable+0x08
36+
virtual undefined4* VTable0x0c() = 0; // vtable+0x0c
37+
virtual undefined4* VTable0x10() = 0; // vtable+0x10
38+
virtual undefined4* VTable0x14() = 0; // vtable+0x14
39+
virtual undefined4* VTable0x18() = 0; // vtable+0x18
40+
virtual undefined4* VTable0x1c() = 0; // vtable+0x1c
41+
virtual undefined4* VTable0x20() = 0; // vtable+0x20
42+
virtual undefined4 VTable0x24() = 0; // vtable+0x24
43+
virtual undefined4* VTable0x28() = 0; // vtable+0x28
44+
virtual undefined4* VTable0x2c() = 0; // vtable+0x2c
45+
virtual undefined4* VTable0x30() = 0; // vtable+0x30
46+
virtual undefined4* VTable0x34() = 0; // vtable+0x34
47+
virtual undefined4* VTable0x38() = 0; // vtable+0x38
48+
virtual void VTable0x3c(undefined4*) = 0; // vtable+0x3c
49+
virtual void VTable0x40(undefined4*) = 0; // vtable+0x40
50+
virtual void VTable0x44(undefined4*) = 0; // vtable+0x44
51+
virtual void VTable0x48(undefined4*) = 0; // vtable+0x48
52+
virtual void VTable0x4c(undefined4*) = 0; // vtable+0x4c
53+
virtual void VTable0x50(undefined4*) = 0; // vtable+0x50
54+
virtual void VTable0x54(undefined4*) = 0; // vtable+0x54
55+
virtual void VTable0x58(undefined4*) = 0; // vtable+0x58
56+
virtual void VTable0x5c(undefined4*) = 0; // vtable+0x5c
57+
virtual void VTable0x60(undefined4*) = 0; // vtable+0x60
58+
virtual void VTable0x64(undefined4*) = 0; // vtable+0x64
59+
virtual void VTable0x68(undefined4*) = 0; // vtable+0x68
60+
virtual void VTable0x6c(undefined4*) = 0; // vtable+0x6c
5861
};
5962

6063
typedef GolExport* GolEntryCBFN(GolImport*);

GolDP/include/golcommondrawstate.h

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#ifndef GOLDP_GOLCOMMONSTATE_H
2+
#define GOLDP_GOLCOMMONSTATE_H
3+
4+
#include "compat.h"
5+
#include "decomp.h"
6+
#include "goldrawstate.h"
7+
8+
// VTABLE: GOLDP 0x10056994
9+
// SIZE 0x20
10+
class GolCommonDrawState : public GolDrawState {
11+
protected:
12+
GolCommonDrawState();
13+
14+
public:
15+
~GolCommonDrawState() override; // vtable+0x04
16+
17+
// SYNTHETIC: GOLDP 0x100184c0
18+
// GolCommonDrawState::`scalar deleting destructor'
19+
20+
undefined4 VTable0x44(
21+
undefined4 p_width,
22+
undefined4 p_height,
23+
undefined4 p_bpp,
24+
undefined4 p_flags
25+
) override; // vtable+0x44
26+
void VTable0x48() override; // vtable+0x48
27+
void VTable0x50() override; // vtable+0x50
28+
void VTable0x54(undefined4, undefined4, undefined4, undefined4) override; // vtable+0x54
29+
virtual undefined4 VTable0x58() = 0; // vtable+0x58
30+
virtual undefined4 VTable0x5c(); // vtable+0x5c
31+
virtual undefined4 VTable0x60(); // vtable+0x60
32+
virtual undefined4 VTable0x64(); // vtable+0x64
33+
virtual undefined4 VTable0x68(); // vtable+0x68
34+
virtual undefined4 VTable0x6c(); // vtable+0x6c
35+
virtual undefined4 VTable0x70(); // vtable+0x70
36+
virtual undefined4 VTable0x74(); // vtable+0x74
37+
virtual undefined4 VTable0x78(); // vtable+0x78
38+
virtual undefined4 VTable0x7c(); // vtable+0x7c
39+
virtual undefined4 VTable0x80(); // vtable+0x80
40+
virtual undefined4 VTable0x84(); // vtable+0x84
41+
virtual undefined4 VTable0x88(); // vtable+0x88
42+
virtual undefined4 VTable0x8c(); // vtable+0x8c
43+
virtual undefined4 VTable0x90(); // vtable+0x90
44+
virtual undefined4 VTable0x94(); // vtable+0x94
45+
virtual undefined4 VTable0x98(); // vtable+0x98
46+
virtual undefined4 VTable0x9c(); // vtable+0x9c
47+
virtual undefined4 VTable0xa0(); // vtable+0xa0
48+
virtual undefined4 VTable0xa4(); // vtable+0xa4
49+
virtual undefined4 VTable0xa8(); // vtable+0xa8
50+
virtual undefined4 VTable0xac(); // vtable+0xac
51+
virtual undefined4 VTable0xb0(); // vtable+0xb0
52+
virtual undefined4 VTable0xb4(); // vtable+0xb4
53+
54+
private:
55+
undefined4 m_unk0x18; // 0x18
56+
undefined4 m_unk0x1c; // 0x1c
57+
};
58+
59+
#endif // GOLDP_GOLCOMMONSTATE_H

GolDP/include/goldpexport.h

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "compat.h"
55
#include "decomp.h"
66
#include "gol.h"
7+
#include "goldrawdpstate.h"
78

89
// VTABLE: GOLDP 0x10056440
910
// SIZE 0xc8ac8
@@ -14,36 +15,36 @@ class GolDPExport : public GolExport {
1415
// SYNTHETIC: GOLDP 0x10007040
1516
// GolDPExport::`scalar deleting destructor'
1617

17-
undefined4* VTable0x04() override;
18-
undefined4* VTable0x08() override;
19-
undefined4* VTable0x0c() override;
20-
undefined4* VTable0x10() override;
21-
undefined4* VTable0x14() override;
22-
undefined4* VTable0x18() override;
23-
undefined4* VTable0x1c() override;
24-
undefined4* VTable0x20() override;
25-
undefined4 VTable0x24() override;
26-
undefined4* VTable0x28() override;
27-
undefined4* VTable0x2c() override;
28-
undefined4* VTable0x30() override;
29-
undefined4* VTable0x34() override;
30-
undefined4* VTable0x38() override;
31-
void VTable0x3c(undefined4*) override;
32-
void VTable0x40(undefined4*) override;
33-
void VTable0x44(undefined4*) override;
34-
void VTable0x48(undefined4*) override;
35-
void VTable0x4c(undefined4*) override;
36-
void VTable0x50(undefined4*) override;
37-
void VTable0x54(undefined4*) override;
38-
void VTable0x58(undefined4*) override;
39-
void VTable0x5c(undefined4*) override;
40-
void VTable0x60(undefined4*) override;
41-
void VTable0x64(undefined4*) override;
42-
void VTable0x68(undefined4*) override;
43-
void VTable0x6c(undefined4*) override;
18+
GolDrawState* VTable0x04() override; // vtable+0x04
19+
undefined4* VTable0x08() override; // vtable+0x08
20+
undefined4* VTable0x0c() override; // vtable+0x0c
21+
undefined4* VTable0x10() override; // vtable+0x10
22+
undefined4* VTable0x14() override; // vtable+0x14
23+
undefined4* VTable0x18() override; // vtable+0x18
24+
undefined4* VTable0x1c() override; // vtable+0x1c
25+
undefined4* VTable0x20() override; // vtable+0x20
26+
undefined4 VTable0x24() override; // vtable+0x24
27+
undefined4* VTable0x28() override; // vtable+0x28
28+
undefined4* VTable0x2c() override; // vtable+0x2c
29+
undefined4* VTable0x30() override; // vtable+0x30
30+
undefined4* VTable0x34() override; // vtable+0x34
31+
undefined4* VTable0x38() override; // vtable+0x38
32+
void VTable0x3c(undefined4*) override; // vtable+0x3c
33+
void VTable0x40(undefined4*) override; // vtable+0x40
34+
void VTable0x44(undefined4*) override; // vtable+0x44
35+
void VTable0x48(undefined4*) override; // vtable+0x48
36+
void VTable0x4c(undefined4*) override; // vtable+0x4c
37+
void VTable0x50(undefined4*) override; // vtable+0x50
38+
void VTable0x54(undefined4*) override; // vtable+0x54
39+
void VTable0x58(undefined4*) override; // vtable+0x58
40+
void VTable0x5c(undefined4*) override; // vtable+0x5c
41+
void VTable0x60(undefined4*) override; // vtable+0x60
42+
void VTable0x64(undefined4*) override; // vtable+0x64
43+
void VTable0x68(undefined4*) override; // vtable+0x68
44+
void VTable0x6c(undefined4*) override; // vtable+0x6c
4445

4546
private:
46-
undefined m_unk0x04[0xc8ac8 - 0x4]; // 0x04
47+
GolDrawDPState m_state; // 0x04
4748
};
4849

4950
#endif // GolDPExport_H

GolDP/include/goldrawdpstate.h

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#ifndef GOLDP_GOLDPSTATE_H
2+
#define GOLDP_GOLDPSTATE_H
3+
4+
#include "golcommondrawstate.h"
5+
6+
// VTABLE: GOLDP 0x10056140
7+
// SIZE 0xc8ac4
8+
class GolDrawDPState : public GolCommonDrawState {
9+
public:
10+
GolDrawDPState();
11+
~GolDrawDPState() override;
12+
13+
int VTable0x00() override;
14+
void VTable0x08(HWND p_hWnd) override; // vtable+0x08
15+
void VTable0x0c(undefined4, undefined4) override; // vtable+0x0c
16+
undefined4 VTable0x10() override; // vtable+0x10
17+
undefined4 VTable0x14(undefined4) override; // vtable+0x14
18+
undefined4 VTable0x18(undefined4) override; // vtable+0x18
19+
undefined4 VTable0x1c(undefined4) override; // vtable+0x1c
20+
undefined4 VTable0x20(undefined4, undefined4) override; // vtable+0x20
21+
undefined4 VTable0x24(undefined4, undefined4) override; // vtable+0x24
22+
undefined4 VTable0x28(undefined4, undefined4) override; // vtable+0x28
23+
void VTable0x2c(undefined4, undefined4*, undefined4*) override; // vtable+0x2c
24+
void VTable0x30(undefined4, undefined4*) override; // vtable+0x30
25+
void VTable0x34(undefined4, undefined4, undefined4*) override; // vtable+0x34
26+
undefined4 VTable0x38() override; // vtable+0x38
27+
28+
void VTable0x48() override; // vtable+0x4c
29+
void VTable0x50() override; // vtable+0x48
30+
undefined4 VTable0x58() override; // vtable+0x58
31+
undefined4 VTable0x5c() override; // vtable+0x5c
32+
undefined4 VTable0x60() override; // vtable+0x60
33+
undefined4 VTable0x64() override; // vtable+0x64
34+
undefined4 VTable0x68() override; // vtable+0x68
35+
undefined4 VTable0x6c() override; // vtable+0x6c
36+
undefined4 VTable0x70() override; // vtable+0x70
37+
undefined4 VTable0x74() override; // vtable+0x74
38+
undefined4 VTable0x78() override; // vtable+0x78
39+
undefined4 VTable0x7c() override; // vtable+0x7c
40+
undefined4 VTable0x80() override; // vtable+0x80
41+
undefined4 VTable0x84() override; // vtable+0x84
42+
undefined4 VTable0x88() override; // vtable+0x88
43+
undefined4 VTable0x8c() override; // vtable+0x8c
44+
undefined4 VTable0x90() override; // vtable+0x90
45+
undefined4 VTable0x94() override; // vtable+0x94
46+
undefined4 VTable0x98() override; // vtable+0x98
47+
undefined4 VTable0x9c() override; // vtable+0x9c
48+
undefined4 VTable0xa0() override; // vtable+0xa0
49+
undefined4 VTable0xa4() override; // vtable+0xa4
50+
undefined4 VTable0xa8() override; // vtable+0xa8
51+
undefined4 VTable0xac() override; // vtable+0xac
52+
undefined4 VTable0xb0() override; // vtable+0xb0
53+
undefined4 VTable0xb4() override; // vtable+0xb4
54+
55+
// SYNTHETIC: GOLDP 0x100010e0
56+
// GolDrawDPState::`scalar deleting destructor'
57+
58+
private:
59+
undefined m_unk0x20[0x2c - 0x20]; // 0x20
60+
HWND m_hWnd; // 0x2c
61+
undefined m_unk0x30[0xc8ac4 - 0x30]; // 0x30
62+
};
63+
64+
#endif // GOLDP_GOLDPSTATE_H

GolDP/include/goldrawstate.h

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#ifndef GOLDP_GOLSTATE_H
2+
#define GOLDP_GOLSTATE_H
3+
4+
#include "compat.h"
5+
#include "decomp.h"
6+
7+
#include <windows.h>
8+
9+
// VTABLE: GOLDP 0x10056d6c
10+
// SIZE 0x18
11+
class GolDrawState {
12+
protected:
13+
GolDrawState();
14+
15+
public:
16+
virtual int VTable0x00() = 0; // vtable+0x00
17+
virtual ~GolDrawState() {} // vtable+04
18+
virtual void VTable0x08(HWND p_hWnd) = 0; // vtable+08
19+
virtual void VTable0x0c(undefined4, undefined4); // vtable+0c
20+
virtual undefined4 VTable0x10(); // vtable+10
21+
virtual undefined4 VTable0x14(undefined4); // vtable+14
22+
virtual undefined4 VTable0x18(undefined4); // vtable+18
23+
virtual undefined4 VTable0x1c(undefined4); // vtable+1c
24+
virtual undefined4 VTable0x20(undefined4, undefined4); // vtable+20
25+
virtual undefined4 VTable0x24(undefined4, undefined4); // vtable+24
26+
virtual undefined4 VTable0x28(undefined4, undefined4); // vtable+28
27+
virtual void VTable0x2c(undefined4, undefined4*, undefined4*); // vtable+2c
28+
virtual void VTable0x30(undefined4, undefined4*); // vtable+30
29+
virtual void VTable0x34(undefined4, undefined4, undefined4*); // vtable+34
30+
virtual undefined4 VTable0x38(); // vtable+38
31+
virtual void VTable0x3c(); // vtable+3c
32+
virtual void VTable0x40(); // vtable+40
33+
virtual undefined4 VTable0x44(
34+
undefined4 p_width,
35+
undefined4 p_height,
36+
undefined4 p_bpp,
37+
undefined4 p_flags
38+
); // vtable+44
39+
virtual void VTable0x48(); // vtable+48
40+
virtual void VTable0x4c(); // vtable+4c
41+
virtual void VTable0x50(); // vtable+50
42+
virtual void VTable0x54(undefined4, undefined4, undefined4, undefined4); // vtable+54
43+
44+
// SYNTHETIC: GOLDP 0x1001d590
45+
// GolDrawState::`scalar deleting destructor'
46+
47+
private:
48+
undefined4 m_width; // 0x04
49+
undefined4 m_height; // 0x08
50+
undefined4 m_bpp; // 0x0c
51+
undefined4 m_flags; // 0x10
52+
undefined4 m_unk0x14; // 0x14
53+
};
54+
55+
#endif // GOLDP_GOLSTATE_H

GolDP/src/adapter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ char g_cpuManufacturer[13];
3030
// STUB: GOLDP 0x10032b80
3131
void SetGolImport(GolImport* p_import)
3232
{
33+
STUB(0x10032b80)
3334
// TODO
3435
}
3536

@@ -49,7 +50,7 @@ void ReleaseGlobalMutex()
4950
}
5051
}
5152

52-
#if defined(_M_IX86) && defined(_M_IX86)
53+
#if defined(_MSC_VER) && defined(_M_IX86)
5354
#define NAKED __declspec(naked)
5455
#else
5556
#define NAKED

0 commit comments

Comments
 (0)