From af4f7becf0832ddd87958f7fbb305c5d1bc539e6 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sat, 28 Oct 2023 15:41:01 -0400 Subject: [PATCH] commit code --- LEGO1/legoomni.cpp | 9 ++++++++- LEGO1/mxdiskstreamprovider.cpp | 34 +++++++++++++++++++++++++++++++--- LEGO1/mxdiskstreamprovider.h | 2 +- LEGO1/mxdsfile.h | 2 ++ LEGO1/mxramstreamprovider.cpp | 2 +- LEGO1/mxramstreamprovider.h | 2 +- LEGO1/mxstreamprovider.cpp | 2 +- LEGO1/mxstreamprovider.h | 6 ++++-- 8 files changed, 49 insertions(+), 10 deletions(-) diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index 8786145e..458f9164 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -244,7 +244,14 @@ const char *GetNoCD_SourceName() // OFFSET: LEGO1 0x1005b5f0 MxLong LegoOmni::Notify(MxParam &p) { - // FIXME: Stub + MxResult result; + MxBool videoOver; + + // check if nocd video is over, if so exit + if (((MxNotificationParam&) p).GetType() == MXSTREAMER_UNKNOWN) + { + + } return 0; } diff --git a/LEGO1/mxdiskstreamprovider.cpp b/LEGO1/mxdiskstreamprovider.cpp index 9555a8cf..37a5375f 100644 --- a/LEGO1/mxdiskstreamprovider.cpp +++ b/LEGO1/mxdiskstreamprovider.cpp @@ -1,6 +1,9 @@ #include "mxdiskstreamprovider.h" #include "mxthread.h" +#include "mxomni.h" +#include "mxstring.h" +#include "mxstreamcontroller.h" DECOMP_SIZE_ASSERT(MxDiskStreamProvider, 0x60); @@ -47,10 +50,35 @@ void MxDiskStreamProvider::PerformWork() // TODO } -// OFFSET: LEGO1 0x100d13d0 STUB -MxResult MxDiskStreamProvider::SetResourceToGet(void* p_resource) +// OFFSET: LEGO1 0x100d13d0 +MxResult MxDiskStreamProvider::SetResourceToGet(MxStreamController* p_resource) { - // TODO + m_pLookup = p_resource; + MxString path = MxString(MxOmni::GetHD()) + p_resource->GetAtom().GetInternal() + ".si"; + + MxDSFile* file = new MxDSFile(path.GetData(), 0); + m_pFile = file; + if (file != NULL) + { + if (file->Open(0) != 0) + { + path = MxString(MxOmni::GetCD()) + p_resource->GetAtom().GetInternal() + ".si"; + file->SetFileName(path); + if (file->Open(0) != 0) + { + return FAILURE; + } + } + + m_remainingWork = 1; + MxResult success = m_busySemaphore.Init(0, 100); + //m_thread.Start(); + + if (success == SUCCESS && p_resource != NULL) + { + return SUCCESS; + } + } return FAILURE; } diff --git a/LEGO1/mxdiskstreamprovider.h b/LEGO1/mxdiskstreamprovider.h index de807e3d..5db6d1de 100644 --- a/LEGO1/mxdiskstreamprovider.h +++ b/LEGO1/mxdiskstreamprovider.h @@ -49,7 +49,7 @@ class MxDiskStreamProvider : public MxStreamProvider void PerformWork(); - virtual MxResult SetResourceToGet(void* p_resource) override; //vtable+0x14 + virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; //vtable+0x14 virtual MxU32 GetFileSize() override; //vtable+0x18 virtual MxU32 GetStreamBuffersNum() override; //vtable+0x1c virtual void vtable0x20(undefined4 p_unknown1) override; //vtable+0x20 diff --git a/LEGO1/mxdsfile.h b/LEGO1/mxdsfile.h index d46a6153..29940f65 100644 --- a/LEGO1/mxdsfile.h +++ b/LEGO1/mxdsfile.h @@ -32,6 +32,8 @@ class MxDSFile : public MxDSSource __declspec(dllexport) virtual MxLong Seek(MxLong,int); // vtable+0x24 __declspec(dllexport) virtual MxULong GetBufferSize(); // vtable+0x28 __declspec(dllexport) virtual MxULong GetStreamBuffersNum(); // vtable+0x2c + + inline void SetFileName(MxString p_filename) { m_filename = p_filename; } private: MxLong ReadChunks(); struct ChunkHeader { diff --git a/LEGO1/mxramstreamprovider.cpp b/LEGO1/mxramstreamprovider.cpp index 1b44d84f..40ee4776 100644 --- a/LEGO1/mxramstreamprovider.cpp +++ b/LEGO1/mxramstreamprovider.cpp @@ -29,7 +29,7 @@ MxRAMStreamProvider::~MxRAMStreamProvider() } // OFFSET: LEGO1 0x100d0ae0 STUB -MxResult MxRAMStreamProvider::SetResourceToGet(void* p_resource) +MxResult MxRAMStreamProvider::SetResourceToGet(MxStreamController* p_resource) { return FAILURE; } diff --git a/LEGO1/mxramstreamprovider.h b/LEGO1/mxramstreamprovider.h index adf8102f..e1e7a9a6 100644 --- a/LEGO1/mxramstreamprovider.h +++ b/LEGO1/mxramstreamprovider.h @@ -10,7 +10,7 @@ class MxRAMStreamProvider : public MxStreamProvider MxRAMStreamProvider(); virtual ~MxRAMStreamProvider() override; - virtual MxResult SetResourceToGet(void* p_resource) override; //vtable+0x14 + virtual MxResult SetResourceToGet(MxStreamController* p_resource) override; //vtable+0x14 virtual MxU32 GetFileSize() override; //vtable+0x18 virtual MxU32 GetStreamBuffersNum() override; //vtable+0x1c virtual MxU32 GetLengthInDWords() override; //vtable+0x24 diff --git a/LEGO1/mxstreamprovider.cpp b/LEGO1/mxstreamprovider.cpp index c9dab949..d558149b 100644 --- a/LEGO1/mxstreamprovider.cpp +++ b/LEGO1/mxstreamprovider.cpp @@ -4,7 +4,7 @@ DECOMP_SIZE_ASSERT(MxStreamProvider, 0x10); // OFFSET: LEGO1 0x100d07c0 -MxResult MxStreamProvider::SetResourceToGet(void* p_resource) +MxResult MxStreamProvider::SetResourceToGet(MxStreamController* p_resource) { m_pLookup = p_resource; return SUCCESS; diff --git a/LEGO1/mxstreamprovider.h b/LEGO1/mxstreamprovider.h index fb210f80..dba88091 100644 --- a/LEGO1/mxstreamprovider.h +++ b/LEGO1/mxstreamprovider.h @@ -5,6 +5,8 @@ #include "mxcore.h" #include "mxdsfile.h" +class MxStreamController; + // VTABLE 0x100dd100 // SIZE 0x10 class MxStreamProvider : public MxCore @@ -24,7 +26,7 @@ class MxStreamProvider : public MxCore return !strcmp(name, MxStreamProvider::ClassName()) || MxCore::IsA(name); } - virtual MxResult SetResourceToGet(void* p_resource); //vtable+0x14 + virtual MxResult SetResourceToGet(MxStreamController* p_resource); //vtable+0x14 virtual MxU32 GetFileSize() = 0; //vtable+0x18 virtual MxU32 GetStreamBuffersNum() = 0; //vtable+0x1c virtual void vtable0x20(undefined4 p_unknown1); //vtable+0x20 @@ -32,7 +34,7 @@ class MxStreamProvider : public MxCore virtual MxU32* GetBufferForDWords() = 0; //vtable+0x28 protected: - void *m_pLookup; + MxStreamController *m_pLookup; MxDSFile* m_pFile; };