diff options
| author | inspectredc <78732756+inspectredc@users.noreply.github.com> | 2025-09-29 18:32:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-29 11:32:20 -0600 |
| commit | 0d6ee079991605b41056cece077bcc051872edb0 (patch) | |
| tree | ba34d4cb1da369a3dabe60c0492e5f4a2557f187 | |
| parent | f3febeb691b7a55c190f8fcfc4d8b4dc71574d51 (diff) | |
Fix Course Extraction and Support BGM field (#198)
* fix courses
* unk_1F -> bgm
| -rw-r--r-- | src/factories/fzerox/CourseFactory.cpp | 35 | ||||
| -rw-r--r-- | src/factories/fzerox/CourseFactory.h | 12 |
2 files changed, 13 insertions, 34 deletions
diff --git a/src/factories/fzerox/CourseFactory.cpp b/src/factories/fzerox/CourseFactory.cpp index ca7abee..5d22814 100644 --- a/src/factories/fzerox/CourseFactory.cpp +++ b/src/factories/fzerox/CourseFactory.cpp @@ -78,7 +78,7 @@ ExportResult FZX::CourseCodeExporter::Export(std::ostream &write, std::shared_pt write << fourSpaceTab << "{ "; - for (size_t i = 0; i < 13; i++) { + for (size_t i = 0; i < 22; i++) { if (i != 0) { write << ", "; } @@ -92,7 +92,7 @@ ExportResult FZX::CourseCodeExporter::Export(std::ostream &write, std::shared_pt write << std::dec << " }, /* File Name */\n"; - write << fourSpaceTab << (int32_t)course->unk_16 << ", " << (int32_t)course->unk_17 << ", " << course->unk_18 << ", " << course->unk_1C << ",\n"; + write << fourSpaceTab << (int32_t)course->mBgm << ",\n"; write << fourSpaceTab << "{ /* Control Points */\n"; @@ -449,7 +449,7 @@ ExportResult FZX::CourseBinaryExporter::Export(std::ostream &write, std::shared_ writer.Write(nameChar); } - writer.Write(course->unk_16); + writer.Write(course->mBgm); for (const auto& controlPointInfo : course->mControlPointInfos) { writer.Write(controlPointInfo.controlPoint.pos.x); writer.Write(controlPointInfo.controlPoint.pos.y); @@ -507,17 +507,8 @@ ExportResult FZX::CourseModdingExporter::Export(std::ostream &write, std::shared } out << YAML::EndSeq << YAML::Block << YAML::Dec; - out << YAML::Key << "unk_16"; - out << YAML::Value << course->unk_16; - - out << YAML::Key << "unk_17"; - out << YAML::Value << course->unk_17; - - out << YAML::Key << "unk_18"; - out << YAML::Value << course->unk_18; - - out << YAML::Key << "unk_1C"; - out << YAML::Value << course->unk_1C; + out << YAML::Key << "BGM"; + out << YAML::Value << course->mBgm; out << YAML::Key << "ControlPoints"; out << YAML::Value << YAML::BeginSeq; @@ -613,14 +604,11 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse(std::vecto int8_t flag = reader.ReadInt8(); std::vector<char> fileName; - for (int32_t i = 0; i < 13; i++) { + for (int32_t i = 0; i < 22; i++) { fileName.push_back(reader.ReadInt8()); } - int8_t unk_16 = reader.ReadInt8(); - int8_t unk_17 = reader.ReadInt8(); - int32_t unk_18 = reader.ReadInt32(); - int32_t unk_1C = reader.ReadInt32(); + int8_t bgm = reader.ReadInt8(); std::vector<ControlPointInfo> controlPointInfos; @@ -657,7 +645,7 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse(std::vecto controlPointInfos.push_back(controlPointInfo); } - return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, unk_16, unk_17, unk_18, unk_1C, controlPointInfos); + return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, bgm, controlPointInfos); } std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse_modding(std::vector<uint8_t>& buffer, YAML::Node& node) { @@ -689,10 +677,7 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse_modding(st } } - int8_t unk_16 = info["unk_16"].as<int8_t>(); - int8_t unk_17 = info["unk_17"].as<int8_t>(); - int32_t unk_18 = info["unk_18"].as<int32_t>(); - int32_t unk_1C = info["unk_1C"].as<int32_t>(); + int8_t bgm = info["BGM"].as<int8_t>(); std::vector<ControlPointInfo> controlPointInfos; @@ -767,5 +752,5 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse_modding(st controlPointInfos.push_back(controlPointInfo); } - return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, unk_16, unk_17, unk_18, unk_1C, controlPointInfos); + return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, bgm, controlPointInfos); } diff --git a/src/factories/fzerox/CourseFactory.h b/src/factories/fzerox/CourseFactory.h index 90ae89e..28b0ab4 100644 --- a/src/factories/fzerox/CourseFactory.h +++ b/src/factories/fzerox/CourseFactory.h @@ -59,22 +59,16 @@ public: int8_t mSkybox; int8_t mFlag; std::vector<char> mFileName; - int8_t unk_16; - int8_t unk_17; - int32_t unk_18; - int32_t unk_1C; + int8_t mBgm; std::vector<ControlPointInfo> mControlPointInfos; - CourseData(int8_t creatorId, int8_t venue, int8_t skybox, int8_t flag, std::vector<char> fileName, int8_t unk_16, int8_t unk_17, int32_t unk_18, int32_t unk_1C, std::vector<ControlPointInfo> controlPointInfos) : + CourseData(int8_t creatorId, int8_t venue, int8_t skybox, int8_t flag, std::vector<char> fileName, int8_t bgm, std::vector<ControlPointInfo> controlPointInfos) : mCreatorId(creatorId), mVenue(venue), mSkybox(skybox), mFlag(flag), mFileName(std::move(fileName)), - unk_16(unk_16), - unk_17(unk_17), - unk_18(unk_18), - unk_1C(unk_1C), + mBgm(bgm), mControlPointInfos(std::move(controlPointInfos)) {} uint32_t CalculateChecksum(void); |
