summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouist103 <35883445+louist103@users.noreply.github.com>2024-01-09 21:04:29 -0500
committerGarrett Cox <garrettjcox@gmail.com>2024-05-22 09:04:57 -0500
commitd46b3bc2fa129c9acdce5c863a8708c73a9460d7 (patch)
tree720142a3b40e09d0d46cb271e459ecc020a4e534
parent5e96bdeba5ed88ed8cb2d4dfdefe8f9314f7c46e (diff)
Fix splines
m---------OTRExporter0
m---------ZAPDTR0
-rw-r--r--mm/2s2h/resource/importer/CutsceneFactory.cpp27
-rw-r--r--mm/2s2h/resource/type/scenecommand/SetCutscenes.cpp3
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;
}