mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
Merge pull request #3 from ktkaufman03/matching/mxpalette-tmp-july3
MxPalette changes
This commit is contained in:
commit
09f1933ac3
@ -35,16 +35,13 @@ void MxPalette::ApplySystemEntriesToPalette(LPPALETTEENTRY p_entries)
|
|||||||
// FIXME: we get g_defaultPalette here, we need to define that, then we cna do the memcpy's
|
// FIXME: we get g_defaultPalette here, we need to define that, then we cna do the memcpy's
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 100bf0b0
|
// OFFSET: LEGO1 0x100bf0b0
|
||||||
MxPalette* MxPalette::Clone()
|
MxPalette& MxPalette::Clone()
|
||||||
{
|
{
|
||||||
// FIXME: doesnt match
|
MxPalette *result = new MxPalette;
|
||||||
MxPalette *pal = (MxPalette *) malloc(0x414);
|
this->GetEntries(result->m_entries);
|
||||||
if(pal != NULL) {
|
result->m_overrideSkyColor = this->m_overrideSkyColor;
|
||||||
GetEntries(pal->m_entries);
|
return *result;
|
||||||
pal->m_overrideSkyColor = m_overrideSkyColor;
|
|
||||||
}
|
|
||||||
return pal;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100beed0
|
// OFFSET: LEGO1 0x100beed0
|
||||||
@ -66,15 +63,21 @@ MxResult MxPalette::GetEntries(LPPALETTEENTRY p_entries)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100bf2d0
|
// OFFSET: LEGO1 0x100bf2d0
|
||||||
MxResult MxPalette::SetSkyColor(LPPALETTEENTRY p_entries)
|
MxResult MxPalette::SetSkyColor(LPPALETTEENTRY p_sky_color)
|
||||||
{
|
{
|
||||||
// FIXME: doesnt match
|
int status = 0;
|
||||||
MxResult ret = SUCCESS;
|
LPDIRECTDRAWPALETTE palette = this->m_palette;
|
||||||
this->m_entries[141].peRed = p_entries->peRed;
|
if ( palette )
|
||||||
this->m_entries[141].peGreen = p_entries->peGreen;
|
{
|
||||||
this->m_entries[141].peBlue = p_entries->peBlue;
|
this->m_entries[141].peRed = p_sky_color->peRed;
|
||||||
|
this->m_entries[141].peGreen = p_sky_color->peGreen;
|
||||||
|
this->m_entries[141].peBlue = p_sky_color->peBlue;
|
||||||
this->m_skyColor = this->m_entries[141];
|
this->m_skyColor = this->m_entries[141];
|
||||||
return ret;
|
|
||||||
|
if ( palette->SetEntries(0, 141, 1, &this->m_skyColor) )
|
||||||
|
status = -1;
|
||||||
|
}
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100bf420
|
// OFFSET: LEGO1 0x100bf420
|
||||||
@ -100,23 +103,18 @@ void MxPalette::GetDefaultPalette(LPPALETTEENTRY p_entries)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100bf340
|
// OFFSET: LEGO1 0x100bf340
|
||||||
MxBool MxPalette::operator==(MxPalette *p_palette)
|
MxBool MxPalette::operator==(MxPalette &other)
|
||||||
{
|
{
|
||||||
// FIXME: ok, idk what is happening here: trying memcpy in different ways showed 0.00% match. Here is literally what it does.
|
int i;
|
||||||
// My guess is that memcpy doesn't break its loop when something is incorrect, and this function is only intended to check
|
for (i = 0; i < 256; i++)
|
||||||
// the RGB and memcpy does everything? The paramater 'rhs' in ghidra suggests it was likely some memcmp. For now,
|
{
|
||||||
// this is literally down to instruction swap.
|
if (this->m_entries[i].peRed != other.m_entries[i].peRed)
|
||||||
int i = 0;
|
return FALSE;
|
||||||
PALETTEENTRY *our = this->m_entries;
|
if (this->m_entries[i].peGreen != other.m_entries[i].peGreen)
|
||||||
PALETTEENTRY *their = p_palette->m_entries;
|
return FALSE;
|
||||||
do {
|
if (this->m_entries[i].peBlue != other.m_entries[i].peBlue)
|
||||||
if(our->peRed != their->peRed) return FALSE;
|
return FALSE;
|
||||||
if(our->peGreen != their->peGreen) return FALSE;
|
}
|
||||||
if(our->peBlue != their->peBlue) return FALSE;
|
|
||||||
their += 1;
|
|
||||||
our += 1;
|
|
||||||
i += 1;
|
|
||||||
} while (i < 256);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,18 +11,18 @@
|
|||||||
class MxPalette : public MxCore
|
class MxPalette : public MxCore
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
__declspec(dllexport) MxBool operator==(MxPalette *p_palette);
|
__declspec(dllexport) MxBool operator==(MxPalette &);
|
||||||
__declspec(dllexport) void Detach();
|
__declspec(dllexport) void Detach();
|
||||||
|
|
||||||
MxPalette();
|
MxPalette();
|
||||||
virtual ~MxPalette();
|
virtual ~MxPalette();
|
||||||
|
|
||||||
void ApplySystemEntriesToPalette(LPPALETTEENTRY p_entries);
|
void ApplySystemEntriesToPalette(LPPALETTEENTRY p_entries);
|
||||||
MxPalette* Clone();
|
MxPalette& Clone();
|
||||||
MxPalette* FromBitmapPalette(RGBQUAD* p_bmp);
|
MxPalette* FromBitmapPalette(RGBQUAD* p_bmp);
|
||||||
void GetDefaultPalette(LPPALETTEENTRY p_entries);
|
void GetDefaultPalette(LPPALETTEENTRY p_entries);
|
||||||
MxResult GetEntries(LPPALETTEENTRY p_entries);
|
MxResult GetEntries(LPPALETTEENTRY p_entries);
|
||||||
MxResult SetSkyColor(LPPALETTEENTRY p_entries);
|
MxResult SetSkyColor(LPPALETTEENTRY p_sky_color);
|
||||||
private:
|
private:
|
||||||
LPDIRECTDRAWPALETTE m_palette;
|
LPDIRECTDRAWPALETTE m_palette;
|
||||||
PALETTEENTRY m_entries[256];
|
PALETTEENTRY m_entries[256];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user