Skip to content

Commit 43f304a

Browse files
committed
Introduce IPalette0x4
1 parent 96a7652 commit 43f304a

11 files changed

Lines changed: 67 additions & 34 deletions

GolDP/include/bronzedune0x4c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class BronzeDune0x4c : public GoldDune0x38 {
1111
public:
1212
BronzeDune0x4c();
1313
~BronzeDune0x4c() override; // vtable+0x00
14+
IPalette0x4* GetPalette() override; // vtable+0x1c
1415
void VTable0x30(undefined4*, undefined4*) override; // vtable+0x30
1516
void VTable0x34() override; // vtable+0x34
1617
void VTable0x38() override; // vtable+0x38

GolDP/include/bronzedunebag0xc.h

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

44
#include "compat.h"
55
#include "golddune0x38.h"
6+
#include "ipalette0x4.h"
67

78
// VTABLE: GOLDP 0x10057554
8-
class BronzeDuneBag0xc {
9+
class BronzeDuneBag0xc : public IPalette0x4 {
910
public:
1011
BronzeDuneBag0xc();
11-
virtual void VTable0x00(undefined4*, undefined4, undefined4); // vtable+0x
12-
virtual void VTable0x04(undefined4*); // vtable+0x
13-
virtual void VTable0x08(undefined4*, undefined4, undefined4); // vtable+0x
14-
virtual void VTable0x0c(undefined4*, undefined4); // vtable+0x
15-
virtual void VTable0x10(undefined4*); // vtable+0x
16-
virtual undefined4 VTable0x14(); // vtable+0x
17-
virtual undefined4 VTable0x18(); // vtable+0x
18-
virtual undefined4 VTable0x1c(); // vtable+0x
19-
virtual ~BronzeDuneBag0xc(); // vtable+0x00
12+
void GetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) override; // vtable+0x
13+
void CopyEntriesFrom(IPalette0x4* p_source) override; // vtable+0x
14+
void SetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) override; // vtable+0x
15+
void GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index) override; // vtable+0x
16+
LegoS32 FindEntry(PALETTEENTRY* p_entry) override; // vtable+0x
17+
LegoU32 GetFirstEntry() override; // vtable+0x
18+
LegoU32 GetEntryCount() override; // vtable+0x
19+
LegoU32 GetPaletteSize() override; // vtable+0x
20+
virtual ~BronzeDuneBag0xc(); // vtable+0x00
2021

2122
void FUN_1002a120(undefined4);
2223
void FUN_1002a1b0();

GolDP/include/ipalette0x4.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef IPALETTE0x4_H
2+
#define IPALETTE0x4_H
3+
4+
#include "types.h"
5+
6+
#include <windows.h>
7+
8+
class IPalette0x4 {
9+
public:
10+
virtual void GetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) = 0; // vtable+0x00
11+
virtual void CopyEntriesFrom(IPalette0x4* p_source) = 0; // vtable+0x04
12+
virtual void SetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) = 0; // vtable+0x08
13+
virtual void GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index) = 0; // vtable+0x0c
14+
virtual LegoS32 FindEntry(PALETTEENTRY* p_entry) = 0; // vtable+0x10
15+
virtual LegoU32 GetFirstEntry() = 0; // vtable+0x14
16+
virtual LegoU32 GetEntryCount() = 0; // vtable+0x18
17+
virtual LegoU32 GetPaletteSize() = 0; // vtable+0x1c
18+
};
19+
20+
#endif // IPALETTE0x4_H
21+

GolDP/include/pearldew0x0c.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
#ifndef GOLDP_PEARLDEW0X0C_H
22
#define GOLDP_PEARLDEW0X0C_H
33

4+
#include "compat.h"
45
#include "decomp.h"
6+
#include "ipalette0x4.h"
57
#include "types.h"
68

79
#include <ddraw.h>
810

911
// VTABLE: GOLDP 0x10056520
1012
// SIZE 0x0c
11-
class PearlDew0x0c {
13+
class PearlDew0x0c : public IPalette0x4 {
1214
public:
1315
enum {
1416
c_errorBufferSize = 128,
@@ -32,14 +34,14 @@ class PearlDew0x0c {
3234
void Release();
3335
void Set332PaletteEntries();
3436

35-
virtual void GetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count); // vtable+0x00
36-
virtual void CopyEntriesFrom(PearlDew0x0c* p_source); // vtable+0x04
37-
virtual void SetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count); // vtable+0x08
38-
virtual void GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index); // vtable+0x0c
39-
virtual LegoS32 FindEntry(PALETTEENTRY* p_entry); // vtable+0x10
40-
virtual LegoU32 GetFirstEntry(); // vtable+0x14
41-
virtual LegoU32 GetEntryCount(); // vtable+0x18
42-
virtual LegoU32 GetPaletteSize(); // vtable+0x1c
37+
void GetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) override; // vtable+0x00
38+
void CopyEntriesFrom(IPalette0x4* p_source) override; // vtable+0x04
39+
void SetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count) override; // vtable+0x08
40+
void GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index) override; // vtable+0x0c
41+
LegoS32 FindEntry(PALETTEENTRY* p_entry) override; // vtable+0x10
42+
LegoU32 GetFirstEntry() override; // vtable+0x14
43+
LegoU32 GetEntryCount() override; // vtable+0x18
44+
LegoU32 GetPaletteSize() override; // vtable+0x1c
4345

4446
LPDIRECTDRAWPALETTE GetPalette() const { return m_palette; }
4547

GolDP/include/silverdune0x30.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "types.h"
66

77
class PearlDew0x0c;
8+
class IPalette0x4;
89

910
// VTABLE: GOLDP 0x10056d3c
1011
// SIZE 0x30
@@ -36,7 +37,7 @@ class SilverDune0x30 {
3637
virtual void UnlockAuxPixels(); // vtable+0x10
3738
virtual void VTable0x14(undefined4*); // vtable+0x14
3839
virtual void VTable0x18(); // vtable+0x18
39-
virtual PearlDew0x0c* GetPalette(); // vtable+0x1c
40+
virtual IPalette0x4* GetPalette(); // vtable+0x1c
4041
virtual void Fill(LegoU32 p_color); // vtable+0x20
4142
virtual void Blit(LegoU32 p_x, LegoU32 p_y, SilverDune0x30* p_source, Rect* p_sourceRect); // vtable+0x24
4243
virtual void VTable0x28(undefined4, undefined4, undefined4*); // vtable+0x28

GolDP/include/slatepeak0x58.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class SlatePeak0x58 : public AzureRidge0x38 {
2929
void UnlockAuxPixels() override; // vtable+0x10
3030
void VTable0x14(undefined4*) override; // vtable+0x14
3131
void VTable0x18() override; // vtable+0x18
32-
PearlDew0x0c* GetPalette() override; // vtable+0x1c
32+
IPalette0x4* GetPalette() override; // vtable+0x1c
3333
void Fill(LegoU32 p_color) override; // vtable+0x20
3434
void VTable0x28(undefined4, undefined4, undefined4*) override; // vtable+0x28
3535
void VTable0x2c() override; // vtable+0x2c

GolDP/src/bronzedune0x4c.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ void BronzeDune0x4c::VTable0x38()
3333
STUB(0x1002a470);
3434
}
3535

36+
// FUNCTION: GOLDP 0x1002a4a0
37+
IPalette0x4* BronzeDune0x4c::GetPalette()
38+
{
39+
return &m_unk0x40;
40+
}
41+
3642
// STUB: GOLDP 0x10004f80
3743
void BronzeDune0x4c::VTable0x30(undefined4*, undefined4*)
3844
{

GolDP/src/bronzedunebag0xc.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,55 +34,56 @@ void BronzeDuneBag0xc::FUN_1002a1b0()
3434
}
3535

3636
// STUB: GOLDP 0x1002a1e0
37-
void BronzeDuneBag0xc::VTable0x00(undefined4*, undefined4, undefined4)
37+
void BronzeDuneBag0xc::GetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count)
3838
{
3939
// TODO
4040
STUB(0x1002a1e0);
4141
}
4242

4343
// STUB: GOLDP 0x1002a230
44-
void BronzeDuneBag0xc::VTable0x08(undefined4*, undefined4, undefined4)
44+
void BronzeDuneBag0xc::SetEntries(PALETTEENTRY* p_entries, LegoU32 p_start, LegoU32 p_count)
4545
{
4646
// TODO
4747
STUB(0x1002a230);
4848
}
4949

5050
// STUB: GOLDP 0x1002a290
51-
void BronzeDuneBag0xc::VTable0x0c(undefined4*, undefined4)
51+
void BronzeDuneBag0xc::GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index)
5252
{
5353
// TODO
5454
STUB(0x1002a290);
5555
}
5656

5757
// STUB: GOLDP 0x1002a2d0
58-
void BronzeDuneBag0xc::VTable0x04(undefined4*)
58+
void BronzeDuneBag0xc::CopyEntriesFrom(IPalette0x4* p_source)
5959
{
6060
// TODO
6161
STUB(0x1002a2d0);
6262
}
6363

6464
// STUB: GOLDP 0x1002a300
65-
void BronzeDuneBag0xc::VTable0x10(undefined4*)
65+
LegoS32 BronzeDuneBag0xc::FindEntry(PALETTEENTRY* p_entry)
6666
{
6767
// TODO
6868
STUB(0x1002a300);
69+
return 0;
6970
}
7071

7172
// STUB: GOLDP 0x100016f0 FOLDED
72-
undefined4 BronzeDuneBag0xc::VTable0x14()
73+
LegoU32 BronzeDuneBag0xc::GetFirstEntry()
7374
{
7475
MATCHING(0x100016f0);
7576
return 0;
7677
}
7778

7879
// STUB: GOLDP 0x1002a350 FOLDED
79-
undefined4 BronzeDuneBag0xc::VTable0x18()
80+
LegoU32 BronzeDuneBag0xc::GetEntryCount()
8081
{
8182
return m_unk0x8;
8283
}
8384

8485
// STUB: GOLDP 0x1002a350 FOLDED
85-
undefined4 BronzeDuneBag0xc::VTable0x1c()
86+
LegoU32 BronzeDuneBag0xc::GetPaletteSize()
8687
{
8788
return m_unk0x8;
8889
}

GolDP/src/pearldew0x0c.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ void PearlDew0x0c::GetEntry(PALETTEENTRY* p_entry, LegoU32 p_index)
116116
}
117117

118118
// FUNCTION: GOLDP 0x10007620
119-
void PearlDew0x0c::CopyEntriesFrom(PearlDew0x0c* p_source)
119+
void PearlDew0x0c::CopyEntriesFrom(IPalette0x4* p_source)
120120
{
121121
PALETTEENTRY entry;
122122
LegoChar buffer[c_errorBufferSize];

GolDP/src/silverdune0x30.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ void SilverDune0x30::VTable0x18()
8181
}
8282

8383
// STUB: GOLDP 0x100016f0 FOLDED
84-
PearlDew0x0c* SilverDune0x30::GetPalette()
84+
IPalette0x4* SilverDune0x30::GetPalette()
8585
{
8686
MATCHING(0x100016f0);
87-
return 0;
87+
return NULL;
8888
}
8989

9090
// FUNCTION: GOLDP 0x1001d030
@@ -229,7 +229,7 @@ void SilverDune0x30::Blit(LegoU32 p_x, LegoU32 p_y, SilverDune0x30* p_source, Re
229229
}
230230

231231
if (destSurface->m_usesPalette) {
232-
PearlDew0x0c* palette = destSurface->GetPalette();
232+
IPalette0x4* palette = destSurface->GetPalette();
233233
palette->CopyEntriesFrom(p_source->GetPalette());
234234
}
235235

0 commit comments

Comments
 (0)