diff options
| author | louist103 <35883445+louist103@users.noreply.github.com> | 2024-01-09 21:04:29 -0500 |
|---|---|---|
| committer | Garrett Cox <garrettjcox@gmail.com> | 2024-05-22 09:04:57 -0500 |
| commit | d46b3bc2fa129c9acdce5c863a8708c73a9460d7 (patch) | |
| tree | 720142a3b40e09d0d46cb271e459ecc020a4e534 | |
| parent | 5e96bdeba5ed88ed8cb2d4dfdefe8f9314f7c46e (diff) | |
Fix splines
| m--------- | OTRExporter | 0 | ||||
| m--------- | ZAPDTR | 0 | ||||
| -rw-r--r-- | mm/2s2h/resource/importer/CutsceneFactory.cpp | 27 | ||||
| -rw-r--r-- | mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp | 3 |
4 files changed, 26 insertions, 4 deletions
diff --git a/OTRExporter b/OTRExporter -Subproject c38b0ac812e71600be11ad17451280bb7145d8f +Subproject 2f420e42dcaa7a24ceb429be1ef2047f7ebd91b diff --git a/ZAPDTR b/ZAPDTR -Subproject 01615a6c4c6f8e95149fd52ab85b1ae970167bc +Subproject f30b7de367aceb8d3d09d12f4880bf4bd75972d diff --git a/mm/2s2h/resource/importer/CutsceneFactory.cpp b/mm/2s2h/resource/importer/CutsceneFactory.cpp index 12498cf92..24a298b1c 100644 --- a/mm/2s2h/resource/importer/CutsceneFactory.cpp +++ b/mm/2s2h/resource/importer/CutsceneFactory.cpp @@ -745,9 +745,34 @@ void LUS::CutsceneFactoryV0::ParseFileBinaryMM(std::shared_ptr<BinaryReader> rea uint32_t size = reader->ReadUInt32(); cutscene->commands.push_back(size); - for (uint32_t i = 0; i < (size / 4); i++) { + while (1) { + // We need to store the first half of the header to get the number of entries. + uint32_t header1 = read_CMD_HH(reader); + + uint32_t numEntries = header1 & 0xFFFF; + + cutscene->commands.push_back(header1); + if (numEntries == 0xFFFF) { + break; //Last command is HH(0xFFFF, 0004) which was already read in and pushed into the vector + } cutscene->commands.push_back(read_CMD_HH(reader)); + + for (size_t j = 0; j < numEntries * 2; j++) { + cutscene->commands.push_back(read_CMD_BBH(reader)); + cutscene->commands.push_back(read_CMD_HH(reader)); + cutscene->commands.push_back(read_CMD_HH(reader)); + } + + for (size_t j = 0; j < numEntries; j++) { + cutscene->commands.push_back(read_CMD_HH(reader)); + cutscene->commands.push_back(read_CMD_HH(reader)); + } } + + //for (uint32_t i = 0; i < (size / 4); i++) { + + //cutscene->commands.push_back(read_CMD_HH(reader)); + //} break; } case CS_CMD_MISC: { diff --git a/mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp b/mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp index 01c88751b..51ceca4be 100644 --- a/mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp +++ b/mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp @@ -16,7 +16,6 @@ size_t SetCutscenes::GetPointerSize() { } CutsceneScriptEntry* SetCutscenesMM::GetPointer() { - // return nullptr; // BENTODO if (entries.size() == 0) { return nullptr; } @@ -24,8 +23,6 @@ CutsceneScriptEntry* SetCutscenesMM::GetPointer() { } size_t SetCutscenesMM::GetPointerSize() { - //return 0; - // BENTODO if (entries.size() == 0) { return 0; } |
