Fixed GBI Floats

This commit is contained in:
KiritoDv
2025-03-01 23:34:48 -06:00
parent 7598e2932c
commit 9d508fc94c
4 changed files with 16 additions and 4 deletions
+5
View File
@@ -1032,6 +1032,7 @@ void Companion::Process() {
this->gAssetPath = rom["path"].as<std::string>();
auto opath = cfg["output"];
auto gbi = cfg["gbi"];
auto gbi_floats = cfg["gbi_floats"];
auto modding_path = opath && opath["modding"] ? opath["modding"].as<std::string>() : "modding";
this->gConfig.moddingPath = modding_path;
@@ -1086,6 +1087,10 @@ void Companion::Process() {
SPDLOG_ERROR("Invalid GBI version");
return;
}
if(gbi_floats) {
this->gConfig.gbi.useFloats = gbi_floats.as<bool>();
}
}
if(auto sort = cfg["sort"]) {
+1
View File
@@ -76,6 +76,7 @@ struct WriteEntry {
struct GBIConfig {
GBIVersion version = GBIVersion::f3d;
GBIMinorVersion subversion = GBIMinorVersion::None;
bool useFloats = false;
};
struct TorchConfig {
+1 -1
View File
@@ -105,7 +105,7 @@ ExportResult MtxCodeExporter::Export(std::ostream &write, std::shared_ptr<IParse
ExportResult MtxBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
auto mtx = std::static_pointer_cast<MtxData>(raw);
auto writer = LUS::BinaryWriter();
auto floats = GetSafeNode(node, "floats", false);
auto floats = Companion::Instance->GetConfig().gbi.useFloats;
WriteHeader(writer, Torch::ResourceType::Matrix, 0);
+9 -3
View File
@@ -128,9 +128,15 @@ ExportResult VtxBinaryExporter::Export(std::ostream &write, std::shared_ptr<IPar
WriteHeader(writer, Torch::ResourceType::Vertex, 0);
writer.Write((uint32_t) vtx->mVtxs.size());
for(auto v : vtx->mVtxs) {
writer.Write(v.ob[0]);
writer.Write(v.ob[1]);
writer.Write(v.ob[2]);
if(Companion::Instance->GetConfig().gbi.useFloats){
writer.Write((float) v.ob[0]);
writer.Write((float) v.ob[1]);
writer.Write((float) v.ob[2]);
} else {
writer.Write((int16_t) v.ob[0]);
writer.Write((int16_t) v.ob[1]);
writer.Write((int16_t) v.ob[2]);
}
writer.Write(v.flag);
writer.Write(v.tc[0]);
writer.Write(v.tc[1]);