Start optimizing memory usage

This commit is contained in:
Joshua Peisach 2025-08-06 10:21:03 -04:00
parent f2b6188d89
commit 41de1b8cf2
No known key found for this signature in database
GPG Key ID: 41C3D4189AFEDB5A
26 changed files with 19 additions and 45 deletions

View File

@ -84,7 +84,7 @@ MxU8 g_mousedown = FALSE;
MxU8 g_mousemoved = FALSE; MxU8 g_mousemoved = FALSE;
// GLOBAL: ISLE 0x41003c // GLOBAL: ISLE 0x41003c
MxS32 g_closed = FALSE; MxBool g_closed = FALSE;
// GLOBAL: ISLE 0x410050 // GLOBAL: ISLE 0x410050
MxS32 g_rmDisabled = FALSE; MxS32 g_rmDisabled = FALSE;

View File

@ -73,20 +73,20 @@ class IsleApp {
char* m_deviceId; // 0x08 char* m_deviceId; // 0x08
char* m_savePath; // 0x0c char* m_savePath; // 0x0c
MxBool m_fullScreen; // 0x10 MxBool m_fullScreen; // 0x10
MxS32 m_flipSurfaces; // 0x14 MxBool m_flipSurfaces; // 0x14
MxS32 m_backBuffersInVram; // 0x18 MxBool m_backBuffersInVram; // 0x18
MxS32 m_using8bit; // 0x1c MxBool m_using8bit; // 0x1c
MxS32 m_using16bit; // 0x20 MxBool m_using16bit; // 0x20
MxS32 m_hasLightSupport; // 0x24 MxBool m_hasLightSupport; // 0x24
MxS32 m_use3dSound; // 0x28 MxBool m_use3dSound; // 0x28
MxS32 m_useMusic; // 0x2c MxBool m_useMusic; // 0x2c
MxS32 m_wideViewAngle; // 0x38 MxBool m_wideViewAngle; // 0x38
MxS32 m_islandQuality; // 0x3c MxS32 m_islandQuality; // 0x3c
MxS32 m_islandTexture; // 0x40 MxS32 m_islandTexture; // 0x40
MxS32 m_gameStarted; // 0x44 MxS32 m_gameStarted; // 0x44
MxLong m_frameDelta; // 0x48 MxLong m_frameDelta; // 0x48
MxVideoParam m_videoParam; // 0x4c MxVideoParam m_videoParam; // 0x4c
MxS32 m_windowActive; // 0x70 MxBool m_windowActive; // 0x70
HWND m_windowHandle; // 0x74 HWND m_windowHandle; // 0x74
MxS32 m_drawCursor; // 0x78 MxS32 m_drawCursor; // 0x78
SDL_Cursor* m_cursorArrow; // 0x7c SDL_Cursor* m_cursorArrow; // 0x7c
@ -119,7 +119,7 @@ class IsleApp {
}; };
extern IsleApp* g_isle; extern IsleApp* g_isle;
extern MxS32 g_closed; extern MxBool g_closed;
extern IDirect3DRMMiniwinDevice* GetD3DRMMiniwinDevice(); extern IDirect3DRMMiniwinDevice* GetD3DRMMiniwinDevice();

View File

@ -49,7 +49,7 @@ class Act2Brick : public LegoPathActor {
undefined4 m_unk0x164; // 0x164 undefined4 m_unk0x164; // 0x164
Mx3DPointFloat m_unk0x168; // 0x168 Mx3DPointFloat m_unk0x168; // 0x168
Mx3DPointFloat m_unk0x17c; // 0x17c Mx3DPointFloat m_unk0x17c; // 0x17c
MxS32 m_unk0x190; // 0x190 MxU8 m_unk0x190; // 0x190
}; };
#endif // ACT2BRICK_H #endif // ACT2BRICK_H

View File

@ -96,7 +96,6 @@ class LegoVideoManager : public MxVideoManager {
LegoROI* m_viewROI; // 0x6c LegoROI* m_viewROI; // 0x6c
undefined4 m_unk0x70; // 0x70 undefined4 m_unk0x70; // 0x70
MxDirect3D* m_direct3d; // 0x74 MxDirect3D* m_direct3d; // 0x74
undefined4 m_unk0x78[27]; // 0x78
MxBool m_render3d; // 0xe4 MxBool m_render3d; // 0xe4
MxBool m_unk0xe5; // 0xe5 MxBool m_unk0xe5; // 0xe5
MxBool m_unk0xe6; // 0xe6 MxBool m_unk0xe6; // 0xe6

View File

@ -14,10 +14,10 @@ DECOMP_SIZE_ASSERT(LegoPathController::CtrlBoundary, 0x08)
DECOMP_SIZE_ASSERT(LegoPathController::CtrlEdge, 0x08) DECOMP_SIZE_ASSERT(LegoPathController::CtrlEdge, 0x08)
// GLOBAL: LEGO1 0x100d7cc8 // GLOBAL: LEGO1 0x100d7cc8
MxU32 g_unk0x100d7cc8[] = {2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0}; MxU8 g_unk0x100d7cc8[] = {2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0};
// GLOBAL: LEGO1 0x100d7d08 // GLOBAL: LEGO1 0x100d7d08
MxU32 g_unk0x100d7d08[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; MxU8 g_unk0x100d7d08[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// GLOBAL: LEGO1 0x100f42e8 // GLOBAL: LEGO1 0x100f42e8
// GLOBAL: BETA10 0x101f25f0 // GLOBAL: BETA10 0x101f25f0

View File

@ -1,6 +1,7 @@
#include "legoanimpresenter.h" #include "legoanimpresenter.h"
#include "3dmanager/lego3dmanager.h" #include "3dmanager/lego3dmanager.h"
#include "SDL3/SDL_log.h"
#include "anim/legoanim.h" #include "anim/legoanim.h"
#include "define.h" #include "define.h"
#include "legoanimactor.h" #include "legoanimactor.h"

View File

@ -36,8 +36,6 @@ LegoVideoManager::LegoVideoManager()
m_viewROI = NULL; m_viewROI = NULL;
m_direct3d = NULL; m_direct3d = NULL;
m_unk0xe6 = FALSE; m_unk0xe6 = FALSE;
memset(m_unk0x78, 0, sizeof(m_unk0x78));
m_unk0x78[0] = 0x6c;
m_phonemeRefList = NULL; m_phonemeRefList = NULL;
m_isFullscreenMovie = FALSE; m_isFullscreenMovie = FALSE;
m_palette = NULL; m_palette = NULL;

View File

@ -15,7 +15,6 @@ Lego3DView::Lego3DView()
{ {
m_pViewManager = 0; m_pViewManager = 0;
m_previousRenderTime = 0; m_previousRenderTime = 0;
m_unk0x98 = 0;
m_pPointOfView = 0; m_pPointOfView = 0;
} }
@ -50,7 +49,6 @@ BOOL Lego3DView::Create(const TglSurface::CreateStruct& rCreateStruct, Tgl::Rend
m_pViewManager->SetResolution(GetWidth(), GetHeight()); m_pViewManager->SetResolution(GetWidth(), GetHeight());
m_pViewManager->SetFrustrum(viewAngle, frontClippingDistance, backClippingDistance); m_pViewManager->SetFrustrum(viewAngle, frontClippingDistance, backClippingDistance);
m_previousRenderTime = 0; m_previousRenderTime = 0;
m_unk0x98 = 0;
// // NOTE: a derived class must inform view manager when it configures // // NOTE: a derived class must inform view manager when it configures
// // its (Tgl) view: calling Tgl::View::SetFrustrum() should be // // its (Tgl) view: calling Tgl::View::SetFrustrum() should be

View File

@ -35,7 +35,6 @@ class Lego3DView : public LegoView1 {
private: private:
ViewManager* m_pViewManager; // 0x88 ViewManager* m_pViewManager; // 0x88
double m_previousRenderTime; // 0x90 double m_previousRenderTime; // 0x90
double m_unk0x98; // 0x98
ViewROI* m_pPointOfView; // 0xa0 ViewROI* m_pPointOfView; // 0xa0
}; };

View File

@ -64,7 +64,6 @@ class MxDirect3D : public MxDirectDraw {
IDirect3D2* m_pDirect3d; // 0x884 IDirect3D2* m_pDirect3d; // 0x884
IDirect3DDevice2* m_pDirect3dDevice; // 0x888 IDirect3DDevice2* m_pDirect3dDevice; // 0x888
BOOL m_bTexturesDisabled; // 0x88c BOOL m_bTexturesDisabled; // 0x88c
undefined4 m_unk0x890; // 0x890
std::string m_deviceName; std::string m_deviceName;
std::string m_deviceDesc; std::string m_deviceDesc;
}; };

View File

@ -102,7 +102,6 @@ class MxDirectDraw {
BOOL m_bIgnoreWMSIZE; // 0x844 BOOL m_bIgnoreWMSIZE; // 0x844
BOOL m_bPrimaryPalettized; // 0x848 BOOL m_bPrimaryPalettized; // 0x848
BOOL m_bFullScreen; // 0x84c BOOL m_bFullScreen; // 0x84c
void* m_unk0x850; // 0x850
BOOL m_bOnlySystemMemory; // 0x854 BOOL m_bOnlySystemMemory; // 0x854
BOOL m_bIsOnPrimaryDevice; // 0x858 BOOL m_bIsOnPrimaryDevice; // 0x858
ErrorHandler m_pErrorHandler; // 0x85c ErrorHandler m_pErrorHandler; // 0x85c

View File

@ -28,10 +28,9 @@ struct DeviceModesInfo {
DeviceModesInfo(); DeviceModesInfo();
~DeviceModesInfo(); ~DeviceModesInfo();
GUID* m_guid; // 0x00 GUID* m_guid; // 0x00
int m_count; // 0x08 int m_count; // 0x08
DDCAPS m_ddcaps; // 0x0c DDCAPS m_ddcaps; // 0x0c
void* m_unk0x178; // 0x178
// SYNTHETIC: BETA10 0x1011c650 // SYNTHETIC: BETA10 0x1011c650
// DeviceModesInfo::`scalar deleting destructor' // DeviceModesInfo::`scalar deleting destructor'

View File

@ -129,7 +129,6 @@ class MxDSAction : public MxDSObject {
char* m_extraData; // 0x7c char* m_extraData; // 0x7c
MxU16 m_extraLength; // 0x80 MxU16 m_extraLength; // 0x80
MxCore* m_notificationObject; // 0x84 MxCore* m_notificationObject; // 0x84
undefined4 m_unk0x88; // 0x88
MxCore* m_origin; // 0x8c MxCore* m_origin; // 0x8c
MxLong m_timeStarted; // 0x90 MxLong m_timeStarted; // 0x90
}; };

View File

@ -100,7 +100,6 @@ class MxDSBuffer : public MxCore {
MxU8* m_pIntoBuffer; // 0x0c MxU8* m_pIntoBuffer; // 0x0c
MxU8* m_pIntoBuffer2; // 0x10 MxU8* m_pIntoBuffer2; // 0x10
undefined4 m_unk0x14; // 0x14 undefined4 m_unk0x14; // 0x14
undefined4 m_unk0x18; // 0x18
undefined4 m_unk0x1c; // 0x1c undefined4 m_unk0x1c; // 0x1c
MxU16 m_referenceCount; // 0x20 MxU16 m_referenceCount; // 0x20
Type m_mode; // 0x24 Type m_mode; // 0x24

View File

@ -77,7 +77,6 @@ class MxDSMediaAction : public MxDSAction {
MxS32 m_mediaFormat; // 0xa8 MxS32 m_mediaFormat; // 0xa8
MxS32 m_paletteManagement; // 0xac MxS32 m_paletteManagement; // 0xac
MxLong m_sustainTime; // 0xb0 MxLong m_sustainTime; // 0xb0
undefined4 m_unk0xb4; // 0xb4
}; };
#endif // MXDSMEDIAACTION_H #endif // MXDSMEDIAACTION_H

View File

@ -42,7 +42,6 @@ class MxDSSerialAction : public MxDSMultiAction {
private: private:
MxDSActionListCursor* m_cursor; // 0x9c MxDSActionListCursor* m_cursor; // 0x9c
undefined4 m_unk0xa0; // 0xa0 undefined4 m_unk0xa0; // 0xa0
undefined4 m_unk0xa4; // 0xa4
}; };
#endif // MXDSSERIALACTION_H #endif // MXDSSERIALACTION_H

View File

@ -71,7 +71,6 @@ class MxDSStreamingAction : public MxDSAction {
MxDSBuffer* m_unk0xa0; // 0xa0 MxDSBuffer* m_unk0xa0; // 0xa0
MxDSBuffer* m_unk0xa4; // 0xa4 MxDSBuffer* m_unk0xa4; // 0xa4
MxLong m_unk0xa8; // 0xa8 MxLong m_unk0xa8; // 0xa8
undefined2 m_unk0xac; // 0xac
MxDSAction* m_internalAction; // 0xb0 MxDSAction* m_internalAction; // 0xb0
}; };

View File

@ -31,7 +31,6 @@ class MxNotificationManager : public MxCore {
MxNotificationPtrList* m_queue; // 0x08 MxNotificationPtrList* m_queue; // 0x08
MxNotificationPtrList* m_sendList; // 0x0c MxNotificationPtrList* m_sendList; // 0x0c
MxCriticalSection m_lock; // 0x10 MxCriticalSection m_lock; // 0x10
MxS32 m_unk0x2c; // 0x2c
MxIdList m_listenerIds; // 0x30 MxIdList m_listenerIds; // 0x30
MxBool m_active; // 0x3c MxBool m_active; // 0x3c

View File

@ -64,7 +64,6 @@ class MxVideoParam {
MxPalette* m_palette; // 0x10 MxPalette* m_palette; // 0x10
MxU32 m_backBuffers; // 0x14 MxU32 m_backBuffers; // 0x14
MxVideoParamFlags m_flags; // 0x18 MxVideoParamFlags m_flags; // 0x18
int m_unk0x1c; // 0x1c
char* m_deviceId; // 0x20 char* m_deviceId; // 0x20
MxU32 m_msaaSamples; MxU32 m_msaaSamples;
MxFloat m_anisotropic; MxFloat m_anisotropic;

View File

@ -29,7 +29,6 @@ MxDSAction::MxDSAction()
m_direction.Fill(FLT_MAX); m_direction.Fill(FLT_MAX);
m_up.Fill(FLT_MAX); m_up.Fill(FLT_MAX);
m_notificationObject = NULL; m_notificationObject = NULL;
m_unk0x88 = 0;
m_origin = NULL; m_origin = NULL;
m_timeStarted = INT_MIN; m_timeStarted = INT_MIN;
} }
@ -90,7 +89,6 @@ void MxDSAction::CopyFrom(MxDSAction& p_dsAction)
m_up = p_dsAction.m_up; m_up = p_dsAction.m_up;
AppendExtra(p_dsAction.m_extraLength, p_dsAction.m_extraData); AppendExtra(p_dsAction.m_extraLength, p_dsAction.m_extraData);
m_notificationObject = p_dsAction.m_notificationObject; m_notificationObject = p_dsAction.m_notificationObject;
m_unk0x88 = p_dsAction.m_unk0x88;
m_origin = p_dsAction.m_origin; m_origin = p_dsAction.m_origin;
m_timeStarted = p_dsAction.m_timeStarted; m_timeStarted = p_dsAction.m_timeStarted;
} }

View File

@ -15,7 +15,6 @@ MxDSMediaAction::MxDSMediaAction()
m_unk0x9c.SetUnk0x04(0); m_unk0x9c.SetUnk0x04(0);
m_framesPerSecond = 0; m_framesPerSecond = 0;
m_mediaFormat = 0; m_mediaFormat = 0;
m_unk0xb4 = -1;
m_paletteManagement = 1; m_paletteManagement = 1;
m_sustainTime = 0; m_sustainTime = 0;
} }

View File

@ -55,7 +55,6 @@ void MxDSStreamingAction::Init()
m_unk0xa0 = NULL; m_unk0xa0 = NULL;
m_unk0xa4 = NULL; m_unk0xa4 = NULL;
m_unk0xa8 = 0; m_unk0xa8 = 0;
m_unk0xac = 2;
m_internalAction = NULL; m_internalAction = NULL;
} }
@ -69,7 +68,6 @@ MxDSStreamingAction* MxDSStreamingAction::CopyFrom(MxDSStreamingAction& p_dsStre
m_unk0x9c = p_dsStreamingAction.m_unk0x9c; m_unk0x9c = p_dsStreamingAction.m_unk0x9c;
m_unk0xa0 = NULL; m_unk0xa0 = NULL;
m_unk0xa4 = NULL; m_unk0xa4 = NULL;
m_unk0xac = p_dsStreamingAction.m_unk0xac;
m_unk0xa8 = p_dsStreamingAction.m_unk0xa8; m_unk0xa8 = p_dsStreamingAction.m_unk0xa8;
SetInternalAction(p_dsStreamingAction.m_internalAction ? p_dsStreamingAction.m_internalAction->Clone() : NULL); SetInternalAction(p_dsStreamingAction.m_internalAction ? p_dsStreamingAction.m_internalAction->Clone() : NULL);

View File

@ -14,7 +14,7 @@
DECOMP_SIZE_ASSERT(MxSoundManager, 0x3c); DECOMP_SIZE_ASSERT(MxSoundManager, 0x3c);
// GLOBAL LEGO1 0x10101420 // GLOBAL LEGO1 0x10101420
MxS32 g_volumeAttenuation[100] = {-6643, -5643, -5058, -4643, -4321, -4058, -3836, -3643, -3473, -3321, -3184, -3058, MxS16 g_volumeAttenuation[100] = {-6643, -5643, -5058, -4643, -4321, -4058, -3836, -3643, -3473, -3321, -3184, -3058,
-2943, -2836, -2736, -2643, -2556, -2473, -2395, -2321, -2251, -2184, -2120, -2058, -2943, -2836, -2736, -2643, -2556, -2473, -2395, -2321, -2251, -2184, -2120, -2058,
-2000, -1943, -1888, -1836, -1785, -1736, -1689, -1643, -1599, -1556, -1514, -1473, -2000, -1943, -1888, -1836, -1785, -1736, -1689, -1643, -1599, -1556, -1514, -1473,
-1434, -1395, -1358, -1321, -1286, -1251, -1217, -1184, -1152, -1120, -1089, -1058, -1434, -1395, -1358, -1321, -1286, -1251, -1217, -1184, -1152, -1120, -1089, -1058,

View File

@ -29,7 +29,6 @@ MxNotification::~MxNotification()
// FUNCTION: BETA10 0x10125805 // FUNCTION: BETA10 0x10125805
MxNotificationManager::MxNotificationManager() : MxCore(), m_lock(), m_listenerIds() MxNotificationManager::MxNotificationManager() : MxCore(), m_lock(), m_listenerIds()
{ {
m_unk0x2c = 0;
m_queue = NULL; m_queue = NULL;
m_active = TRUE; m_active = TRUE;
m_sendList = NULL; m_sendList = NULL;

View File

@ -22,7 +22,6 @@ MxDSBuffer::MxDSBuffer()
m_pIntoBuffer2 = NULL; m_pIntoBuffer2 = NULL;
m_referenceCount = 0; m_referenceCount = 0;
m_unk0x14 = 0; m_unk0x14 = 0;
m_unk0x18 = 0;
m_unk0x1c = 0; m_unk0x1c = 0;
m_writeOffset = 0; m_writeOffset = 0;
m_bytesRemaining = 0; m_bytesRemaining = 0;

View File

@ -14,7 +14,6 @@ MxVideoParam::MxVideoParam()
m_rect = MxRect32(0, 0, 640, 480); m_rect = MxRect32(0, 0, 640, 480);
m_palette = NULL; m_palette = NULL;
m_backBuffers = 0; m_backBuffers = 0;
m_unk0x1c = 0;
m_deviceId = NULL; m_deviceId = NULL;
} }
@ -26,7 +25,6 @@ MxVideoParam::MxVideoParam(MxRect32& p_rect, MxPalette* p_palette, MxULong p_bac
m_palette = p_palette; m_palette = p_palette;
m_backBuffers = p_backBuffers; m_backBuffers = p_backBuffers;
m_flags = p_flags; m_flags = p_flags;
m_unk0x1c = 0;
m_deviceId = NULL; m_deviceId = NULL;
m_msaaSamples = 0; m_msaaSamples = 0;
m_anisotropic = 0.0f; m_anisotropic = 0.0f;
@ -40,7 +38,6 @@ MxVideoParam::MxVideoParam(MxVideoParam& p_videoParam)
m_palette = p_videoParam.m_palette; m_palette = p_videoParam.m_palette;
m_backBuffers = p_videoParam.m_backBuffers; m_backBuffers = p_videoParam.m_backBuffers;
m_flags = p_videoParam.m_flags; m_flags = p_videoParam.m_flags;
m_unk0x1c = p_videoParam.m_unk0x1c;
m_deviceId = NULL; m_deviceId = NULL;
SetDeviceName(p_videoParam.m_deviceId); SetDeviceName(p_videoParam.m_deviceId);
m_msaaSamples = p_videoParam.m_msaaSamples; m_msaaSamples = p_videoParam.m_msaaSamples;
@ -84,7 +81,6 @@ MxVideoParam& MxVideoParam::operator=(const MxVideoParam& p_videoParam)
m_palette = p_videoParam.m_palette; m_palette = p_videoParam.m_palette;
m_backBuffers = p_videoParam.m_backBuffers; m_backBuffers = p_videoParam.m_backBuffers;
m_flags = p_videoParam.m_flags; m_flags = p_videoParam.m_flags;
m_unk0x1c = p_videoParam.m_unk0x1c;
SetDeviceName(p_videoParam.m_deviceId); SetDeviceName(p_videoParam.m_deviceId);
m_msaaSamples = p_videoParam.m_msaaSamples; m_msaaSamples = p_videoParam.m_msaaSamples;
m_anisotropic = p_videoParam.m_anisotropic; m_anisotropic = p_videoParam.m_anisotropic;