From 056c48eb41aed96f51da430051733ccf2ff9b637 Mon Sep 17 00:00:00 2001 From: Ramen2X <64166386+Ramen2X@users.noreply.github.com> Date: Tue, 17 Oct 2023 16:04:26 -0400 Subject: [PATCH] fix LegoState::VTable0x1C fake-match, implement LegoFileStream::FUN_10006030 --- LEGO1/legostate.cpp | 12 +++--------- LEGO1/legostate.h | 5 ++--- LEGO1/legostream.cpp | 12 ++++++++++++ LEGO1/legostream.h | 3 +++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/LEGO1/legostate.cpp b/LEGO1/legostate.cpp index 7b547ef4..e5aa042f 100644 --- a/LEGO1/legostate.cpp +++ b/LEGO1/legostate.cpp @@ -18,16 +18,10 @@ MxBool LegoState::VTable0x18() { } // OFFSET: LEGO1 0x10005fb0 -MxResult LegoState::VTable0x1C(LegoState *p_legoState) +MxResult LegoState::VTable0x1C(LegoFileStream *p_legoFileStream) { - if (p_legoState->VTable0x14()) { - p_legoState->FUN_10006030(this->ClassName()); + if (p_legoFileStream->IsWriteMode()) { + p_legoFileStream->FUN_10006030(this->ClassName()); } return SUCCESS; } - -// OFFSET: LEGO1 0x10006030 STUB -void LegoState::FUN_10006030(MxString p_str) -{ - // TODO -} diff --git a/LEGO1/legostate.h b/LEGO1/legostate.h index fc478745..457e7964 100644 --- a/LEGO1/legostate.h +++ b/LEGO1/legostate.h @@ -5,6 +5,7 @@ #include "mxcore.h" #include "mxstring.h" +#include "legostream.h" // VTABLE 0x100d46c0 class LegoState : public MxCore @@ -27,9 +28,7 @@ class LegoState : public MxCore virtual MxBool VTable0x14(); // vtable+0x14 virtual MxBool VTable0x18(); // vtable+0x18 - virtual MxResult VTable0x1C(LegoState *p_legoState); // vtable+0x1C - - void FUN_10006030(MxString p_str); + virtual MxResult VTable0x1C(LegoFileStream *p_legoFileStream); // vtable+0x1C }; #endif // LEGOSTATE_H diff --git a/LEGO1/legostream.cpp b/LEGO1/legostream.cpp index 0bc24db9..65a10c60 100644 --- a/LEGO1/legostream.cpp +++ b/LEGO1/legostream.cpp @@ -116,6 +116,18 @@ MxResult LegoFileStream::Open(const char* p_filename, OpenFlags p_mode) return (m_hFile = fopen(p_filename, modeString)) ? SUCCESS : FAILURE; } +// OFFSET: LEGO1 0x10006030 +LegoFileStream *LegoFileStream::FUN_10006030(MxString p_str) +{ + MxS16 strLength = strlen(p_str.GetData()); + const char *strData = p_str.GetData(); + + Write(&strLength, sizeof(strLength)); + Write(strData, strLength); + + return this; +} + // OFFSET: LEGO1 0x10099080 LegoMemoryStream::LegoMemoryStream(char* p_buffer) : LegoStream() diff --git a/LEGO1/legostream.h b/LEGO1/legostream.h index 220d1b6d..4041fb9b 100644 --- a/LEGO1/legostream.h +++ b/LEGO1/legostream.h @@ -4,6 +4,7 @@ #include "compat.h" #include "decomp.h" #include "mxtypes.h" +#include "mxstring.h" #include @@ -55,6 +56,8 @@ class LegoFileStream : public LegoStream MxResult Open(const char* p_filename, OpenFlags p_mode); + LegoFileStream *FUN_10006030(MxString p_str); + private: FILE *m_hFile; };