Implement chunk parsing (#362)

* partial parsechunk implementation

* fix format

* param name fix

* rename functions

* match MxStreamController::RemoveSubscriber

* implement rest of MxDSBuffer

* Fixes and better matches

* Matche ParseChunk 100%

* Match MxDiskStreamProvider::VTable0x20

* Match MxDSBuffer::CalcBytesRemaining

* Minor stuff

* Minor improvements

* Refactor functions

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha
2023-12-26 16:27:54 -05:00
committed by GitHub
parent 17522b98d4
commit e824e321e8
10 changed files with 265 additions and 22 deletions

View File

@@ -2,8 +2,10 @@
#define MXSTREAMCHUNK_H
#include "mxdschunk.h"
#include "mxdsobject.h"
class MxDSBuffer;
class MxStreamListMxDSSubscriber;
// VTABLE: LEGO1 0x100dc2a8
// SIZE 0x20
@@ -29,8 +31,14 @@ public:
MxResult ReadChunk(MxDSBuffer* p_buffer, MxU8* p_chunkData);
MxU32 ReadChunkHeader(MxU8* p_chunkData);
MxResult SendChunk(MxStreamListMxDSSubscriber& p_subscriberList, MxBool p_append, MxS16 p_obj24val);
void SetBuffer(MxDSBuffer* p_buffer);
static MxU16* IntoFlags(MxU8* p_buffer);
static MxU32* IntoPlus0x12(MxU8* p_buffer);
static MxU32* IntoPlus0xa(MxU8* p_buffer);
static MxU32* IntoPlus0xe(MxU8* p_buffer);
private:
MxDSBuffer* m_buffer; // 0x1c
};