diff --git a/OTRExporter b/OTRExporter index c38b0ac81..2f420e42d 160000 --- a/OTRExporter +++ b/OTRExporter @@ -1 +1 @@ -Subproject commit c38b0ac812e71600be11ad17451280bb7145d8f4 +Subproject commit 2f420e42dcaa7a24ceb429be1ef2047f7ebd91bc diff --git a/ZAPDTR b/ZAPDTR index 01615a6c4..f30b7de36 160000 --- a/ZAPDTR +++ b/ZAPDTR @@ -1 +1 @@ -Subproject commit 01615a6c4c6f8e95149fd52ab85b1ae970167bc3 +Subproject commit f30b7de367aceb8d3d09d12f4880bf4bd75972dd 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 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; }