Starting list of beta addrs

This commit is contained in:
disinvite 2024-05-27 17:07:18 -04:00
parent 7eacf4d7b3
commit d59495f02e
2 changed files with 30 additions and 0 deletions

View File

@ -34,6 +34,7 @@ struct MxBITMAPINFO {
// SIZE 0x20
// VTABLE: LEGO1 0x100dc7b0
// VTABLE: BETA10 0x101c21f8
class MxBitmap : public MxCore {
public:
MxBitmap();
@ -46,6 +47,7 @@ class MxBitmap : public MxCore {
virtual MxLong Read(const char* p_filename); // vtable+24
// FUNCTION: LEGO1 0x1004e0d0
// FUNCTION: BETA10 0x10060fc0
virtual int VTable0x28(int) { return -1; } // vtable+28
virtual void BitBlt(
@ -82,20 +84,32 @@ class MxBitmap : public MxCore {
// Bit mask trick to round up to the nearest multiple of four.
// Pixel data may be stored with padding.
// https://learn.microsoft.com/en-us/windows/win32/medfound/image-stride
// FUNCTION: BETA10 0x1002c510
inline MxLong AlignToFourByte(MxLong p_value) const { return (p_value + 3) & -4; }
// Same as the one from legoutils.h, but flipped the other way
// TODO: While it's not outside the realm of possibility that they
// reimplemented Abs for only this file, that seems odd, right?
// FUNCTION: BETA10 0x1002c690
inline MxLong AbsFlipped(MxLong p_value) const { return p_value > 0 ? p_value : -p_value; }
inline BITMAPINFOHEADER* GetBmiHeader() const { return m_bmiHeader; }
// FUNCTION: BETA10 0x1002c440
inline MxLong GetBmiWidth() const { return m_bmiHeader->biWidth; }
inline MxLong GetBmiStride() const { return ((m_bmiHeader->biWidth + 3) & -4); }
inline MxLong GetBmiHeight() const { return m_bmiHeader->biHeight; }
// FUNCTION: BETA10 0x1002c470
inline MxLong GetBmiHeightAbs() const { return AbsFlipped(m_bmiHeader->biHeight); }
// FUNCTION: BETA10 0x10083900
inline MxU8* GetImage() const { return m_data; }
// FUNCTION: BETA10 0x100838d0
inline MxBITMAPINFO* GetBitmapInfo() const { return m_info; }
// FUNCTION: BETA10 0x100982b0
inline MxLong GetDataSize() const
{
MxLong absHeight = GetBmiHeightAbs();
@ -138,6 +152,7 @@ class MxBitmap : public MxCore {
}
// SYNTHETIC: LEGO1 0x100bc9f0
// SYNTHETIC: BETA10 0x1013dcd0
// MxBitmap::`scalar deleting destructor'
private:

View File

@ -8,9 +8,11 @@ DECOMP_SIZE_ASSERT(MxBitmap, 0x20);
DECOMP_SIZE_ASSERT(MxBITMAPINFO, 0x428);
// GLOBAL: LEGO1 0x10102184
// GLOBAL: BETA10 0x10203030
MxU16 g_bitmapSignature = TWOCC('B', 'M');
// FUNCTION: LEGO1 0x100bc980
// FUNCTION: BETA10 0x1013cab0
MxBitmap::MxBitmap()
{
m_info = NULL;
@ -22,6 +24,7 @@ MxBitmap::MxBitmap()
}
// FUNCTION: LEGO1 0x100bca10
// FUNCTION: BETA10 0x1013cb58
MxBitmap::~MxBitmap()
{
if (m_info) {
@ -36,6 +39,7 @@ MxBitmap::~MxBitmap()
}
// FUNCTION: LEGO1 0x100bcaa0
// FUNCTION: BETA10 0x1013cc47
MxResult MxBitmap::SetSize(MxS32 p_width, MxS32 p_height, MxPalette* p_palette, MxBool p_isHighColor)
{
MxResult ret = FAILURE;
@ -81,6 +85,7 @@ MxResult MxBitmap::SetSize(MxS32 p_width, MxS32 p_height, MxPalette* p_palette,
}
// FUNCTION: LEGO1 0x100bcba0
// FUNCTION: BETA10 0x1013ce25
MxResult MxBitmap::ImportBitmapInfo(MxBITMAPINFO* p_info)
{
MxResult result = FAILURE;
@ -115,6 +120,7 @@ MxResult MxBitmap::ImportBitmapInfo(MxBITMAPINFO* p_info)
}
// FUNCTION: LEGO1 0x100bcc40
// FUNCTION: BETA10 0x1013cf6d
MxResult MxBitmap::ImportBitmap(MxBitmap* p_bitmap)
{
MxResult result = FAILURE;
@ -148,6 +154,7 @@ MxResult MxBitmap::ImportBitmap(MxBitmap* p_bitmap)
}
// FUNCTION: LEGO1 0x100bcd10
// FUNCTION: BETA10 0x1013d0c7
MxLong MxBitmap::Read(const char* p_filename)
{
MxResult result = FAILURE;
@ -166,6 +173,7 @@ MxLong MxBitmap::Read(const char* p_filename)
}
// FUNCTION: LEGO1 0x100bcd60
// FUNCTION: BETA10 0x1013d169
MxResult MxBitmap::LoadFile(HANDLE p_handle)
{
MxResult result = FAILURE;
@ -212,6 +220,7 @@ MxResult MxBitmap::LoadFile(HANDLE p_handle)
}
// FUNCTION: LEGO1 0x100bce70
// FUNCTION: BETA10 0x1013d399
void MxBitmap::BitBlt(
MxBitmap* p_src,
MxS32 p_srcLeft,
@ -251,6 +260,7 @@ void MxBitmap::BitBlt(
}
// FUNCTION: LEGO1 0x100bd020
// FUNCTION: BETA10 0x1013d4ea
void MxBitmap::BitBltTransparent(
MxBitmap* p_src,
MxS32 p_srcLeft,
@ -297,6 +307,7 @@ void MxBitmap::BitBltTransparent(
}
// FUNCTION: LEGO1 0x100bd1c0
// FUNCTION: BETA10 0x1013d684
MxPalette* MxBitmap::CreatePalette()
{
MxBool success = FALSE;
@ -335,6 +346,7 @@ MxPalette* MxBitmap::CreatePalette()
}
// FUNCTION: LEGO1 0x100bd280
// FUNCTION: BETA10 0x1013d80e
void MxBitmap::ImportPalette(MxPalette* p_palette)
{
// Odd to use a switch on a boolean, but it matches.
@ -353,6 +365,7 @@ void MxBitmap::ImportPalette(MxPalette* p_palette)
}
// FUNCTION: LEGO1 0x100bd2d0
// FUNCTION: BETA10 0x1013d8a9
MxResult MxBitmap::SetBitDepth(MxBool p_isHighColor)
{
MxResult ret = FAILURE;
@ -408,6 +421,7 @@ MxResult MxBitmap::SetBitDepth(MxBool p_isHighColor)
}
// FUNCTION: LEGO1 0x100bd3e0
// FUNCTION: BETA10 0x1013dad2
MxResult MxBitmap::StretchBits(
HDC p_hdc,
MxS32 p_xSrc,
@ -441,6 +455,7 @@ MxResult MxBitmap::StretchBits(
}
// FUNCTION: LEGO1 0x100bd450
// FUNCTION: BETA10 0x1013db55
MxResult MxBitmap::ImportColorsToPalette(RGBQUAD* p_rgbquad, MxPalette* p_palette)
{
MxResult ret = FAILURE;