diff options
| author | louist103 <35883445+louist103@users.noreply.github.com> | 2023-05-07 19:58:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-07 19:58:50 -0400 |
| commit | a7b0db104180a0b4c87ecf536b5f7ff90307101a (patch) | |
| tree | d3a94e882e1791ae9b77448a849b3867e2b2ce9f | |
| parent | bbdbcae5d2d2830e48d8d5c7b965768c755923fa (diff) | |
ZAPD Update (#2851)
* git subrepo clone --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/
subrepo:
subdir: "ZAPDTR"
merged: "6aa54a551"
upstream:
origin: "C:/ZeldaStuff/ZAPDTR"
branch: "rebase2"
commit: "6aa54a551"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* git subrepo clone --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/
subrepo:
subdir: "ZAPDTR"
merged: "88b012240"
upstream:
origin: "C:/ZeldaStuff/ZAPDTR"
branch: "rebase2"
commit: "88b012240"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* Update (its broken)
* fix the enum
* git subrepo push --remote=C:/ZeldaStuff/ZAPDTR/ ZAPDTR
subrepo:
subdir: "ZAPDTR"
merged: "b7b6e1c82"
upstream:
origin: "C:/ZeldaStuff/ZAPDTR/"
branch: "rebase2"
commit: "b7b6e1c82"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* New names for LUS actions
* git subrepo push --remote=C:/ZeldaStuff/ZAPDTR/ ZAPDTR
subrepo:
subdir: "ZAPDTR"
merged: "c5cfebeee"
upstream:
origin: "C:/ZeldaStuff/ZAPDTR/"
branch: "rebase2"
commit: "c5cfebeee"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* git subrepo clone (merge) --force --branch=rebase2 C:/ZeldaStuff/ZAPDTR ZAPDTR/
subrepo:
subdir: "ZAPDTR"
merged: "d5f4769b8"
upstream:
origin: "C:/ZeldaStuff/ZAPDTR"
branch: "rebase2"
commit: "d5f4769b8"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* Fix missing commands in the exporter.
* Cleanups.
* git subrepo pull --force --remote=https://github.com/harbourmasters/ZAPDTR --branch=master ZAPDTR
subrepo:
subdir: "ZAPDTR"
merged: "d4c35b90a"
upstream:
origin: "https://github.com/harbourmasters/ZAPDTR"
branch: "master"
commit: "d4c35b90a"
git-subrepo:
version: "0.4.3"
origin: "???"
commit: "???"
* Add unordered_map include to fix MacOS
* fix string_view
* Update Main.cpp
* fix string view
* So close I can almost taste it
* So close
* Fix missed git marker.
* Fix surface types and
* Update ZFile.cpp
* Delete Jenkinsfile
---------
Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
| -rw-r--r-- | OTRExporter/CollisionExporter.cpp | 16 | ||||
| -rw-r--r-- | OTRExporter/CutsceneExporter.cpp | 239 | ||||
| -rw-r--r-- | OTRExporter/RoomExporter.cpp | 14 | ||||
| -rw-r--r-- | OTRExporter/SkeletonExporter.cpp | 10 |
4 files changed, 146 insertions, 133 deletions
diff --git a/OTRExporter/CollisionExporter.cpp b/OTRExporter/CollisionExporter.cpp index 21e4cc4..f773741 100644 --- a/OTRExporter/CollisionExporter.cpp +++ b/OTRExporter/CollisionExporter.cpp @@ -32,16 +32,18 @@ void OTRExporter_Collision::Save(ZResource* res, const fs::path& outPath, Binary writer->Write(col->polygons[i].vtxA); writer->Write(col->polygons[i].vtxB); writer->Write(col->polygons[i].vtxC); - writer->Write(col->polygons[i].a); - writer->Write(col->polygons[i].b); - writer->Write(col->polygons[i].c); - writer->Write(col->polygons[i].d); + writer->Write(col->polygons[i].normX); + writer->Write(col->polygons[i].normY); + writer->Write(col->polygons[i].normZ); + writer->Write(col->polygons[i].dist); } - writer->Write((uint32_t)col->polygonTypes.size()); + writer->Write((uint32_t)col->PolygonTypes.size()); - for (uint16_t i = 0; i < col->polygonTypes.size(); i++) - writer->Write(col->polygonTypes[i]); + for (uint16_t i = 0; i < col->PolygonTypes.size(); i++) { + writer->Write(col->PolygonTypes[i].data[0]); + writer->Write(col->PolygonTypes[i].data[1]); + } writer->Write((uint32_t)col->camData->entries.size()); diff --git a/OTRExporter/CutsceneExporter.cpp b/OTRExporter/CutsceneExporter.cpp index d08ff6c..8b53637 100644 --- a/OTRExporter/CutsceneExporter.cpp +++ b/OTRExporter/CutsceneExporter.cpp @@ -7,10 +7,9 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW WriteHeader(cs, outPath, writer, Ship::ResourceType::SOH_Cutscene); - //writer->Write((uint32_t)cs->commands.size() + 2 + 2); writer->Write((uint32_t)0); - int currentStream = writer->GetBaseAddress(); + const auto currentStream = writer->GetBaseAddress(); writer->Write(CS_BEGIN_CUTSCENE(cs->numCommands, cs->endFrame)); @@ -26,12 +25,13 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame)); writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000)); - for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame)); - writer->Write(e->viewAngle); - writer->Write(CMD_HH(e->posX, e->posY)); - writer->Write(CMD_HH(e->posZ, e->unused)); + CutsceneCameraPoint* point = (CutsceneCameraPoint*)e; + writer->Write(CMD_BBH(point->continueFlag, point->cameraRoll, point->nextPointFrame)); + writer->Write(point->viewAngle); + writer->Write(CMD_HH(point->posX, point->posY)); + writer->Write(CMD_HH(point->posZ, point->unused)); } } break; @@ -43,51 +43,54 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_HH(0x0001, cmdCamPos->startFrame)); writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000)); - for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame)); - writer->Write(e->viewAngle); - writer->Write(CMD_HH(e->posX, e->posY)); - writer->Write(CMD_HH(e->posZ, e->unused)); + CutsceneCameraPoint* point = (CutsceneCameraPoint*)e; + writer->Write(CMD_BBH(point->continueFlag, point->cameraRoll, point->nextPointFrame)); + writer->Write(point->viewAngle); + writer->Write(CMD_HH(point->posX, point->posY)); + writer->Write(CMD_HH(point->posZ, point->unused)); } break; } - case (uint32_t)CutsceneCommands::SpecialAction: + case (uint32_t)CutsceneCommands::Misc: { writer->Write(CS_CMD_MISC); - writer->Write((uint32_t)CMD_W(((CutsceneCommandSpecialAction*)cs->commands[i])->entries.size())); - for (auto& e : ((CutsceneCommandSpecialAction*)cs->commands[i])->entries) //All in OOT seem to only have 1 entry + writer->Write((uint32_t)CMD_W((cs->commands[i])->entries.size())); + for (const auto& e : cs->commands[i]->entries) //All in OOT seem to only have 1 entry { - writer->Write(CMD_HH(e->base, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->unused0)); - writer->Write(CMD_W(e->unused1)); - writer->Write(CMD_W(e->unused2)); - writer->Write(CMD_W(e->unused3)); - writer->Write(CMD_W(e->unused4)); - writer->Write(CMD_W(e->unused5)); - writer->Write(CMD_W(e->unused6)); - writer->Write(CMD_W(e->unused7)); - writer->Write(CMD_W(e->unused8)); - writer->Write(CMD_W(e->unused9)); - writer->Write(CMD_W(e->unused10)); + CutsceneSubCommandEntry_GenericCmd* cmd = (CutsceneSubCommandEntry_GenericCmd*)e; + writer->Write(CMD_HH(cmd->base, cmd->startFrame)); + writer->Write(CMD_HH(cmd->endFrame, cmd->pad)); + writer->Write(CMD_W(cmd->unused1)); + writer->Write(CMD_W(cmd->unused2)); + writer->Write(CMD_W(cmd->unused3)); + writer->Write(CMD_W(cmd->unused4)); + writer->Write(CMD_W(cmd->unused5)); + writer->Write(CMD_W(cmd->unused6)); + writer->Write(CMD_W(cmd->unused7)); + writer->Write(CMD_W(cmd->unused8)); + writer->Write(CMD_W(cmd->unused9)); + writer->Write(CMD_W(cmd->unused10)); } break; } case (uint32_t)CutsceneCommands::SetLighting: { writer->Write(CS_CMD_SET_LIGHTING); - writer->Write((uint32_t)CMD_W(((CutsceneCommandEnvLighting*)cs->commands[i])->entries.size())); - for (auto& e : ((CutsceneCommandEnvLighting*)cs->commands[i])->entries) + writer->Write((uint32_t)CMD_W((cs->commands[i])->entries.size())); + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->setting, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->unused0)); - writer->Write(CMD_W(e->unused1)); - writer->Write(CMD_W(e->unused2)); - writer->Write(CMD_W(e->unused3)); - writer->Write(CMD_W(e->unused4)); - writer->Write(CMD_W(e->unused5)); - writer->Write(CMD_W(e->unused6)); - writer->Write(CMD_W(e->unused7)); + CutsceneSubCommandEntry_GenericCmd* cmd = (CutsceneSubCommandEntry_GenericCmd*)e; + writer->Write(CMD_HH(cmd->base, cmd->startFrame)); + writer->Write(CMD_HH(cmd->endFrame, cmd->pad)); + writer->Write(CMD_W(cmd->unused1)); + writer->Write(CMD_W(cmd->unused2)); + writer->Write(CMD_W(cmd->unused3)); + writer->Write(CMD_W(cmd->unused4)); + writer->Write(CMD_W(cmd->unused5)); + writer->Write(CMD_W(cmd->unused6)); + writer->Write(CMD_W(cmd->unused7)); writer->Write((uint32_t)0x0); writer->Write((uint32_t)0x0); writer->Write((uint32_t)0x0); @@ -102,12 +105,13 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame)); writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000)); - for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame)); - writer->Write(e->viewAngle); - writer->Write(CMD_HH(e->posX, e->posY)); - writer->Write(CMD_HH(e->posZ, e->unused)); + CutsceneCameraPoint* point = (CutsceneCameraPoint*)e; + writer->Write(CMD_BBH(point->continueFlag, point->cameraRoll, point->nextPointFrame)); + writer->Write(point->viewAngle); + writer->Write(CMD_HH(point->posX, point->posY)); + writer->Write(CMD_HH(point->posZ, point->unused)); } break; } @@ -119,12 +123,13 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_HH(0x0001, ((CutsceneCommandSetCameraPos*)cs->commands[i])->startFrame)); writer->Write(CMD_HH(cmdCamPos->endFrame, 0x0000)); - for (auto& e : ((CutsceneCommandSetCameraPos*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_BBH(e->continueFlag, e->cameraRoll, e->nextPointFrame)); - writer->Write(e->viewAngle); - writer->Write(CMD_HH(e->posX, e->posY)); - writer->Write(CMD_HH(e->posZ, e->unused)); + CutsceneCameraPoint* point = (CutsceneCameraPoint*)e; + writer->Write(CMD_BBH(point->continueFlag, point->cameraRoll, point->nextPointFrame)); + writer->Write(point->viewAngle); + writer->Write(CMD_HH(point->posX, point->posY)); + writer->Write(CMD_HH(point->posZ, point->unused)); } break; } @@ -137,24 +142,26 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW case (uint32_t)CutsceneCommands::Cmd09: { writer->Write(CS_CMD_09); - writer->Write((uint32_t)CMD_W(((CutsceneCommandUnknown9*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(((CutsceneCommand_Rumble*)cs->commands[i])->entries.size())); - for (auto& e : ((CutsceneCommandUnknown9*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->base, e->startFrame)); - writer->Write(CMD_HBB(e->endFrame, e->unk2, e->unk3)); - writer->Write(CMD_BBH(e->unk4, e->unused0, e->unused1)); + CutsceneSubCommandEntry_Rumble* r = (CutsceneSubCommandEntry_Rumble*)e; + writer->Write(CMD_HH(r->base, r->startFrame)); + writer->Write(CMD_HBB(e->endFrame, r->unk_06, r->unk_07)); + writer->Write(CMD_BBH(r->unk_08, r->unk_09, r->unk_0A)); } break; } - case 0x15: - case (uint32_t)CutsceneCommands::Unknown: + case 0x15://Both unused in OoT + case 0x1A://(uint32_t)CutsceneCommands::Unknown: { +#if 0 CutsceneCommandUnknown* cmdUnk = (CutsceneCommandUnknown*)cs->commands[i]; writer->Write((uint32_t)cs->commands[i]->commandID); writer->Write((uint32_t)cmdUnk->entries.size()); - for (auto e : cmdUnk->entries) + for (const auto e : cmdUnk->entries) { writer->Write(CMD_W(e->unused0)); writer->Write(CMD_W(e->unused1)); @@ -169,31 +176,33 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_W(e->unused10)); writer->Write(CMD_W(e->unused11)); } +#endif } break; case (uint32_t)CutsceneCommands::Textbox: { writer->Write(CS_CMD_TEXTBOX); - writer->Write((uint32_t)CMD_W(((CutsceneCommandTextbox*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W((cs->commands[i])->entries.size())); - for (auto& e : ((CutsceneCommandTextbox*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - if (e->base == 0xFFFF) // CS_TEXT_NONE + CutsceneSubCommandEntry_TextBox* textBox = (CutsceneSubCommandEntry_TextBox*)e; + if (textBox->base == 0xFFFF) // CS_TEXT_NONE { - writer->Write(CMD_HH(0xFFFF, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, 0xFFFF)); + writer->Write(CMD_HH(0xFFFF, textBox->startFrame)); + writer->Write(CMD_HH(textBox->endFrame, 0xFFFF)); writer->Write(CMD_HH(0xFFFF, 0xFFFF)); } else // CS_TEXT_DISPLAY_TEXTBOX { - writer->Write(CMD_HH(e->base, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->type)); - writer->Write(CMD_HH(e->textID1, e->textID2)); + writer->Write(CMD_HH(textBox->base, textBox->startFrame)); + writer->Write(CMD_HH(textBox->endFrame, textBox->type)); + writer->Write(CMD_HH(textBox->textId1, textBox->textId2)); } } break; } - case (uint32_t)CutsceneCommands::SetActorAction0: + case 10: //ActorAction0 case (uint32_t)CutsceneCommands::SetActorAction1: case 17: case 18: @@ -292,11 +301,12 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW case (uint32_t)CutsceneCommands::SetActorAction10: { writer->Write((uint32_t)(CutsceneCommands)cs->commands[i]->commandID); - writer->Write((uint32_t)CMD_W(((CutsceneCommandActorAction*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(cs->commands[i]->entries.size())); - for (auto& actorAct : ((CutsceneCommandActorAction*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(actorAct->action, actorAct->startFrame)); + CutsceneSubCommandEntry_ActorAction* actorAct = (CutsceneSubCommandEntry_ActorAction*)e; + writer->Write(CMD_HH(actorAct->base, actorAct->startFrame)); writer->Write(CMD_HH(actorAct->endFrame, actorAct->rotX)); writer->Write(CMD_HH(actorAct->rotY, actorAct->rotZ)); writer->Write(CMD_W(actorAct->startPosX)); @@ -322,24 +332,23 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(CMD_HH((((CutsceneCommandSceneTransFX*)cs->commands[i])->endFrame), ((CutsceneCommandSceneTransFX*)cs->commands[i])->endFrame)); break; } - case (uint32_t)CutsceneCommands::Nop: //Not used in OOT - break; case (uint32_t)CutsceneCommands::PlayBGM: { writer->Write(CS_CMD_PLAYBGM); - writer->Write((uint32_t)CMD_W(((CutsceneCommandPlayBGM*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(cs->commands[i]->entries.size())); - for (auto& e : ((CutsceneCommandPlayBGM*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->sequence, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->unknown0)); - writer->Write(CMD_W(e->unknown1)); - writer->Write(CMD_W(e->unknown2)); - writer->Write(CMD_W(e->unknown3)); - writer->Write(CMD_W(e->unknown4)); - writer->Write(CMD_W(e->unknown5)); - writer->Write(CMD_W(e->unknown6)); - writer->Write(CMD_W(e->unknown7)); + CutsceneSubCommandEntry_GenericCmd* cmd = (CutsceneSubCommandEntry_GenericCmd*)e; + writer->Write(CMD_HH(cmd->base, cmd->startFrame)); + writer->Write(CMD_HH(cmd->endFrame, cmd->pad)); + writer->Write(CMD_W(cmd->unused1)); + writer->Write(CMD_W(cmd->unused2)); + writer->Write(CMD_W(cmd->unused3)); + writer->Write(CMD_W(cmd->unused4)); + writer->Write(CMD_W(cmd->unused5)); + writer->Write(CMD_W(cmd->unused6)); + writer->Write(CMD_W(cmd->unused7)); writer->Write((uint32_t)0); writer->Write((uint32_t)0); writer->Write((uint32_t)0); @@ -349,19 +358,20 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW case (uint32_t)CutsceneCommands::StopBGM: { writer->Write(CS_CMD_STOPBGM); - writer->Write((uint32_t)CMD_W(((CutsceneCommandStopBGM*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(cs->commands[i]->entries.size())); - for (auto& e : ((CutsceneCommandStopBGM*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->sequence, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->unknown0)); - writer->Write(CMD_W(e->unknown1)); - writer->Write(CMD_W(e->unknown2)); - writer->Write(CMD_W(e->unknown3)); - writer->Write(CMD_W(e->unknown4)); - writer->Write(CMD_W(e->unknown5)); - writer->Write(CMD_W(e->unknown6)); - writer->Write(CMD_W(e->unknown7)); + CutsceneSubCommandEntry_GenericCmd* cmd = (CutsceneSubCommandEntry_GenericCmd*)e; + writer->Write(CMD_HH(cmd->base, cmd->startFrame)); + writer->Write(CMD_HH(cmd->endFrame, cmd->pad)); + writer->Write(CMD_W(cmd->unused1)); + writer->Write(CMD_W(cmd->unused2)); + writer->Write(CMD_W(cmd->unused3)); + writer->Write(CMD_W(cmd->unused4)); + writer->Write(CMD_W(cmd->unused5)); + writer->Write(CMD_W(cmd->unused6)); + writer->Write(CMD_W(cmd->unused7)); writer->Write((uint32_t)0); writer->Write((uint32_t)0); writer->Write((uint32_t)0); @@ -371,19 +381,20 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW case (uint32_t)CutsceneCommands::FadeBGM: { writer->Write(CS_CMD_FADEBGM); - writer->Write((uint32_t)CMD_W(((CutsceneCommandFadeBGM*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(cs->commands[i]->entries.size())); - for (auto& e : ((CutsceneCommandFadeBGM*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->base, e->startFrame)); - writer->Write(CMD_HH(e->endFrame, e->unknown0)); - writer->Write(CMD_W(e->unknown1)); - writer->Write(CMD_W(e->unknown2)); - writer->Write(CMD_W(e->unknown3)); - writer->Write(CMD_W(e->unknown4)); - writer->Write(CMD_W(e->unknown5)); - writer->Write(CMD_W(e->unknown6)); - writer->Write(CMD_W(e->unknown7)); + CutsceneSubCommandEntry_GenericCmd* cmd = (CutsceneSubCommandEntry_GenericCmd*)e; + writer->Write(CMD_HH(cmd->base, cmd->startFrame)); + writer->Write(CMD_HH(cmd->endFrame, cmd->pad)); + writer->Write(CMD_W(cmd->unused1)); + writer->Write(CMD_W(cmd->unused2)); + writer->Write(CMD_W(cmd->unused3)); + writer->Write(CMD_W(cmd->unused4)); + writer->Write(CMD_W(cmd->unused5)); + writer->Write(CMD_W(cmd->unused6)); + writer->Write(CMD_W(cmd->unused7)); writer->Write((uint32_t)0); writer->Write((uint32_t)0); writer->Write((uint32_t)0); @@ -393,22 +404,24 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW case (uint32_t)CutsceneCommands::SetTime: { writer->Write(CS_CMD_SETTIME); - writer->Write((uint32_t)CMD_W(((CutsceneCommandDayTime*)cs->commands[i])->entries.size())); + writer->Write((uint32_t)CMD_W(cs->commands[i]->entries.size())); - for (auto& e : ((CutsceneCommandDayTime*)cs->commands[i])->entries) + for (const auto& e : cs->commands[i]->entries) { - writer->Write(CMD_HH(e->base, e->startFrame)); - writer->Write(CMD_HBB(e->endFrame, e->hour, e->minute)); - writer->Write((uint32_t)CMD_W(e->unused)); + CutsceneSubCommandEntry_SetTime* t = (CutsceneSubCommandEntry_SetTime*)e; + writer->Write(CMD_HH(t->base, t->startFrame)); + writer->Write(CMD_HBB(t->endFrame, t->hour, t->minute)); + writer->Write((uint32_t)CMD_W(t->unk_08)); } break; } case (uint32_t)CutsceneCommands::Terminator: { + CutsceneCommand_Terminator* t = (CutsceneCommand_Terminator*)cs->commands[i]; writer->Write(CS_CMD_TERMINATOR); writer->Write((uint32_t)1); - writer->Write(CMD_HH(((CutsceneCommandTerminator*)cs->commands[i])->base, ((CutsceneCommandTerminator*)cs->commands[i])->startFrame)); - writer->Write(CMD_HH(((CutsceneCommandTerminator*)cs->commands[i])->endFrame, ((CutsceneCommandTerminator*)cs->commands[i])->endFrame)); + writer->Write(CMD_HH(t->base, t->startFrame)); + writer->Write(CMD_HH(t->endFrame, t->endFrame)); break; } default: @@ -424,8 +437,8 @@ void OTRExporter_Cutscene::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write(0xFFFFFFFF); writer->Write((uint32_t)0); - int endStream = writer->GetBaseAddress(); - writer->Seek(currentStream - 4, SeekOffsetType::Start); + const auto endStream = writer->GetBaseAddress(); + writer->Seek((uint32_t)currentStream - 4, SeekOffsetType::Start); writer->Write((uint32_t)((endStream - currentStream) / 4)); - writer->Seek(endStream, SeekOffsetType::Start); + writer->Seek((uint32_t)endStream, SeekOffsetType::Start); }
\ No newline at end of file diff --git a/OTRExporter/RoomExporter.cpp b/OTRExporter/RoomExporter.cpp index 83bd3bb..00650aa 100644 --- a/OTRExporter/RoomExporter.cpp +++ b/OTRExporter/RoomExporter.cpp @@ -80,10 +80,8 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite // This can cause issues if we export actors with garbage data, so let's trust the command size writer->Write((uint32_t)cmdSetActorList->numActors); - for (int i = 0; i < cmdSetActorList->numActors; i++) + for (const auto& entry : cmdSetActorList->actorList->actors) { - const ActorSpawnEntry& entry = cmdSetActorList->actors[i]; - writer->Write(entry.actorNum); writer->Write(entry.posX); writer->Write(entry.posY); @@ -91,7 +89,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite writer->Write(entry.rotX); writer->Write(entry.rotY); writer->Write(entry.rotZ); - writer->Write(entry.initVar); + writer->Write(entry.params); } } break; @@ -393,7 +391,7 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite writer->Write(entry.rotX); writer->Write(entry.rotY); writer->Write(entry.rotZ); - writer->Write(entry.initVar); + writer->Write(entry.params); } } break; @@ -441,18 +439,18 @@ void OTRExporter_Room::Save(ZResource* res, const fs::path& outPath, BinaryWrite case RoomCommand::SetCutscenes: { SetCutscenes* cmdSetCutscenes = (SetCutscenes*)cmd; - + std::string listName; Globals::Instance->GetSegmentedPtrName(cmdSetCutscenes->cmdArg2, room->parent, "CutsceneData", listName, res->parent->workerID); std::string fName = OTRExporter_DisplayList::GetPathToRes(room, listName); //std::string fName = StringHelper::Sprintf("%s\\%s", OTRExporter_DisplayList::GetParentFolderName(room).c_str(), listName.c_str()); writer->Write(fName); - + MemoryStream* csStream = new MemoryStream(); BinaryWriter csWriter = BinaryWriter(csStream); OTRExporter_Cutscene cs; cs.Save(cmdSetCutscenes->cutscenes[0], "", &csWriter); - + AddFile(fName, csStream->ToVector()); } break; diff --git a/OTRExporter/SkeletonExporter.cpp b/OTRExporter/SkeletonExporter.cpp index f5e3ada..1a8947a 100644 --- a/OTRExporter/SkeletonExporter.cpp +++ b/OTRExporter/SkeletonExporter.cpp @@ -15,15 +15,15 @@ void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryW writer->Write((uint32_t)skel->limbCount); writer->Write((uint32_t)skel->dListCount); - writer->Write((uint8_t)skel->limbsTable.limbType); - writer->Write((uint32_t)skel->limbsTable.count); + writer->Write((uint8_t)skel->limbsTable->limbType); + writer->Write((uint32_t)skel->limbsTable->count); - for (size_t i = 0; i < skel->limbsTable.count; i++) + for (size_t i = 0; i < skel->limbsTable->count; i++) { - Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable.limbsAddresses[i])); + Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable->limbsAddresses[i])); std::string name; - bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name, res->parent->workerID); + bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable->limbsAddresses[i], skel->parent, "", name, res->parent->workerID); if (foundDecl) { if (name.at(0) == '&') |
