Explorar o código

convert to broken ascii for something that can actually be loaded

Paul %!s(int64=11) %!d(string=hai) anos
pai
achega
ec313cc140

+ 10 - 3
utilities/q-gears-launcher/src/ff7DataInstaller.cpp

@@ -398,7 +398,14 @@ static void FF7PcFieldToQGearsField(
         if (scriptFile.is_open())
         {
             scriptFile << decompiled.luaScript;
-            fieldTextWriter.Write(rawFieldData, field->getName());
+            try
+            {
+                fieldTextWriter.Write(rawFieldData, field->getName());
+            }
+            catch (const std::out_of_range&)
+            {
+                fnWriteOutputLine("Failed to read texts");
+            }
         }
         else
         {
@@ -905,7 +912,7 @@ void FF7DataInstaller::CollectionFieldSpawnAndScaleFactors()
     {
         auto resourceName = (*mFLevelFileList)[mIteratorCounter];
         // Exclude things that are not fields
-        if (IsAFieldFile(resourceName) && IsTestField(resourceName))
+        if (IsAFieldFile(resourceName) /*&& IsTestField(resourceName)*/)
         {
             mConversionStep++;
 
@@ -959,7 +966,7 @@ void FF7DataInstaller::ConvertFieldsIteration()
         {
             mIteratorCounter++;
 
-            if (IsTestField(resourceName) &&
+            if (/*IsTestField(resourceName) &&*/
                 !WillCrash(resourceName))
             {
                 mfnWriteOutputLine("Converting field " + resourceName);

+ 55 - 54
utilities/q-gears-launcher/src/ff7FieldTextWriter.cpp

@@ -161,12 +161,13 @@ void FF7FieldTextWriter::Begin(std::string fileName)
     mLogger = std::make_unique<Logger>(fileName);
 
     // Write BOM
+    /* FIX ME - need to write data as UTF8
     std::vector< unsigned char > bomBytes;
     bomBytes.push_back(0xFF);
     bomBytes.push_back(0xFE);
     mLogger->Log(bomBytes);
-
-    mLogger->LogW("<texts>\n");
+    */
+    mLogger->Log("<texts>\n");
 }
 
 u16 FF7FieldTextWriter::GetU16LE(u32 offset)
@@ -210,7 +211,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
 
         mLogger->Log(dialog);
         dialog.clear();
-        mLogger->LogW("<dialog name=\"" + fieldName + "_" + std::to_string(i) + "\">");
+        mLogger->Log("<dialog name=\"" + fieldName + "_" + std::to_string(i) + "\">");
 
         for (unsigned char temp = 0x00;; ++offset)
         {
@@ -222,130 +223,130 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
 
             if (temp == 0xE0 && english == true)
             {
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
             }
             else if (temp == 0xE1 && english == true)
             {
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
             }
             else if (temp == 0xE2 && english == true)
             {
-                dialog.push_back(english_chars[0x0C] >> 8); dialog.push_back(english_chars[0x0C] & 0xFF);
-                dialog.push_back(english_chars[0x00] >> 8); dialog.push_back(english_chars[0x00] & 0xFF);
+                dialog.push_back(english_chars[0x0C] >> 8); //dialog.push_back(english_chars[0x0C] & 0xFF);
+                dialog.push_back(english_chars[0x00] >> 8); //dialog.push_back(english_chars[0x00] & 0xFF);
             }
             else if (temp == 0xE8)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<next_page />");
+                mLogger->Log("<next_page />");
             }
             else if (temp == 0xEA)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<include name=\"char_cloud\" />");
+                mLogger->Log("<include name=\"char_cloud\" />");
             }
             else if (temp == 0xEB)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<include name=\"char_barret\" />");
+                mLogger->Log("<include name=\"char_barret\" />");
             }
             else if (temp == 0xEC)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"2\" />");
+                mLogger->Log("<character id=\"2\" />");
             }
             else if (temp == 0xED)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"3\" />");
+                mLogger->Log("<character id=\"3\" />");
             }
             else if (temp == 0xEE)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"4\" />");
+                mLogger->Log("<character id=\"4\" />");
             }
             else if (temp == 0xEF)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"5\" />");
+                mLogger->Log("<character id=\"5\" />");
             }
             else if (temp == 0xF0)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"6\" />");
+                mLogger->Log("<character id=\"6\" />");
             }
             else if (temp == 0xF1)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"7\" />");
+                mLogger->Log("<character id=\"7\" />");
             }
             else if (temp == 0xF2)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character id=\"8\" />");
+                mLogger->Log("<character id=\"8\" />");
             }
             else if (temp == 0xF3)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character party_id=\"0\" />");
+                mLogger->Log("<character party_id=\"0\" />");
             }
             else if (temp == 0xF4)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character party_id=\"1\" />");
+                mLogger->Log("<character party_id=\"1\" />");
             }
             else if (temp == 0xF5)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<character party_id=\"2\" />");
+                mLogger->Log("<character party_id=\"2\" />");
             }
             else if (temp == 0xF6)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<image sprite=\"ButtonCircle\" />");
+                mLogger->Log("<image sprite=\"ButtonCircle\" />");
             }
             else if (temp == 0xF7)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<image sprite=\"ButtonTriangle\" />");
+                mLogger->Log("<image sprite=\"ButtonTriangle\" />");
             }
             else if (temp == 0xF8)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<image sprite=\"ButtonSquare\" />");
+                mLogger->Log("<image sprite=\"ButtonSquare\" />");
             }
             else if (temp == 0xF9)
             {
                 mLogger->Log(dialog);
                 dialog.clear();
-                mLogger->LogW("<image sprite=\"ButtonCross\" />");
+                mLogger->Log("<image sprite=\"ButtonCross\" />");
             }
             else if ((temp == 0xFA || temp == 0xFB || temp == 0xFC || temp == 0xFD) && english == false)
             {
@@ -362,7 +363,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     {
                         mLogger->Log(dialog);
                         dialog.clear();
-                        mLogger->LogW("[MISSING 0xFA " + HexToString(temp2, 2, '0') + "]");
+                        mLogger->Log("[MISSING 0xFA " + HexToString(temp2, 2, '0') + "]");
                     }
                 }
                 else if (temp == 0xFB)
@@ -375,7 +376,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     {
                         mLogger->Log(dialog);
                         dialog.clear();
-                        mLogger->LogW("[MISSING 0xFB " + HexToString(temp2, 2, '0') + "]");
+                        mLogger->Log("[MISSING 0xFB " + HexToString(temp2, 2, '0') + "]");
                     }
                 }
                 else if (temp == 0xFC)
@@ -388,7 +389,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     {
                         mLogger->Log(dialog);
                         dialog.clear();
-                        mLogger->LogW("[MISSING 0xFC " + HexToString(temp2, 2, '0') + "]");
+                        mLogger->Log("[MISSING 0xFC " + HexToString(temp2, 2, '0') + "]");
                     }
                 }
                 else if (temp == 0xFD)
@@ -401,7 +402,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     {
                         mLogger->Log(dialog);
                         dialog.clear();
-                        mLogger->LogW("[MISSING 0xFD " + HexToString(temp2, 2, '0') + "]");
+                        mLogger->Log("[MISSING 0xFD " + HexToString(temp2, 2, '0') + "]");
                     }
                 }
             }
@@ -416,43 +417,43 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<colour value=\"red\">");
+                    mLogger->Log("<colour value=\"red\">");
                 }
                 else if (temp2 == 0xD5)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<colour value=\"purple\" >");
+                    mLogger->Log("<colour value=\"purple\" >");
                 }
                 else if (temp2 == 0xD6)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<colour value=\"green\" >");
+                    mLogger->Log("<colour value=\"green\" >");
                 }
                 else if (temp2 == 0xD7)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<colour value=\"cyan\" >");
+                    mLogger->Log("<colour value=\"cyan\" >");
                 }
                 else if (temp2 == 0xD8)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<colour value=\"yellow\">");
+                    mLogger->Log("<colour value=\"yellow\">");
                 }
                 else if (temp2 == 0xD9)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("</colour>");
+                    mLogger->Log("</colour>");
                 }
                 else if (temp2 == 0xDC)
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<pause_ok >");
+                    mLogger->Log("<pause_ok >");
                 }
                 else if (temp2 == 0xDD)
                 {
@@ -461,7 +462,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     ++offset;
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("<pause time=\"" + IntToString(wait) + "\" />");
+                    mLogger->Log("<pause time=\"" + IntToString(wait) + "\" />");
                 }
                 else
                 {
@@ -473,7 +474,7 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
                     {
                         mLogger->Log(dialog);
                         dialog.clear();
-                        mLogger->LogW("[MISSING 0xFE " + HexToString(temp2, 2, '0') + "]");
+                        mLogger->Log("[MISSING 0xFE " + HexToString(temp2, 2, '0') + "]");
                     }
                 }
             }
@@ -481,24 +482,24 @@ void FF7FieldTextWriter::Write(const std::vector<u8>& scriptSectionBuffer, std::
             {
                 if (japanese_chars[temp] != 0x0000 && english == false)
                 {
-                    dialog.push_back(japanese_chars[temp] >> 8); dialog.push_back(japanese_chars[temp] & 0xFF);
+                    dialog.push_back(japanese_chars[temp] >> 8);// dialog.push_back(japanese_chars[temp] & 0xFF);
                 }
                 else if (english_chars[temp] != 0x0000 && english == true)
                 {
-                    dialog.push_back(english_chars[temp] >> 8); dialog.push_back(english_chars[temp] & 0xFF);
+                    dialog.push_back(english_chars[temp] >> 8); //dialog.push_back(english_chars[temp] & 0xFF);
                 }
                 else
                 {
                     mLogger->Log(dialog);
                     dialog.clear();
-                    mLogger->LogW("[MISSING CHAR " + HexToString(temp, 2, '0') + "]");
+                    mLogger->Log("[MISSING CHAR " + HexToString(temp, 2, '0') + "]");
                 }
             }
         }
 
         mLogger->Log(dialog);
         dialog.clear();
-        mLogger->LogW("</dialog>\n\n");
+        mLogger->Log("</dialog>\n\n");
     }
 
 }
@@ -507,7 +508,7 @@ void FF7FieldTextWriter::End()
 {
     if (mLogger)
     {
-        mLogger->LogW("</texts>\n");
+        mLogger->Log("</texts>\n");
     }
     mLogger.reset();
 }