From 6d72f4b5b08b9a39411c028521252202b8de4775 Mon Sep 17 00:00:00 2001 From: Li Date: Wed, 7 Sep 2022 19:17:43 +1200 Subject: [PATCH] Fix GimConv downloader --- CXMLCli/GimConv.cs | 140 +++++++++++++++-------------- CXMLCli/Properties/AssemblyInfo.cs | 10 +-- 2 files changed, 76 insertions(+), 74 deletions(-) diff --git a/CXMLCli/GimConv.cs b/CXMLCli/GimConv.cs index 542a069..b546280 100644 --- a/CXMLCli/GimConv.cs +++ b/CXMLCli/GimConv.cs @@ -1,20 +1,20 @@ -using Ionic.Zip; -using System; +using Ionic.Zip; +using System; using System.Diagnostics; -using System.IO; -using System.Net; +using System.IO; +using System.Net; using System.Reflection; -namespace CXMLDecompiler -{ - class GimConv +namespace CXMLDecompiler +{ + class GimConv { - public static string GIMCONV_FOLDER = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "GimConv"); - - static WebClient wc = new WebClient(); - static bool DownloadCompleted = true; - + public static string GIMCONV_FOLDER = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "GimConv"); + + static WebClient wc = new WebClient(); + static bool DownloadCompleted = true; + public static void ConvertGimToPng(string inputGim, string outputGim) { if (HasGimConv()) @@ -36,63 +36,65 @@ namespace CXMLDecompiler Proc.WaitForExit(); Console.Write(Proc.StandardOutput.ReadToEnd()); } - } + } public static bool HasGimConv() { return File.Exists(Path.Combine(GIMCONV_FOLDER, "GimConv.exe")); - } - public static void DownloadGimConv() - { - wc.DownloadProgressChanged += Wc_DownloadProgressChanged; - wc.DownloadDataCompleted += Wc_DownloadDataCompleted; - wc.DownloadDataAsync(new Uri("http://e1.dl.playstation.net/e1/downloads/ps3/themes/370/PS3_Custom_Theme_v200.zip")); // Thanks Sony :3 - while (wc.IsBusy || !DownloadCompleted) { }; - } - - private static void Wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) - { - if (e.Error != null) - return; - Console.Write("\r\n"); - MemoryStream zipStream = new MemoryStream(e.Result); - ZipFile zip = ZipFile.Read(zipStream); - foreach(ZipEntry zEntry in zip.Entries) // Read downloaded zip and extract stuff relating to GimConv . - { - string filename = Path.GetFileName(zEntry.FileName); - if (filename == "msvcp71.dll" || filename == "msvcr71.dll" || zEntry.FileName.Contains("GimConv")) // if it is a required DLL or inside the GimConv folder - { - string outputFilename = zEntry.FileName; - if (outputFilename.Contains("GimConv")) // if the filename is inside the GimConv folder - outputFilename = outputFilename.Substring(outputFilename.IndexOf("GimConv") + "GimConv".Length); // Extract filename after the "GimConv/" part - - outputFilename = outputFilename.Replace("/", "\\"); - outputFilename = Path.Combine(GIMCONV_FOLDER, outputFilename); // set output path to GimConv folder - Console.WriteLine("Extracting: " + outputFilename); - - // If folder is directory, create it - if (zEntry.IsDirectory) - { - Directory.CreateDirectory(outputFilename); - continue; - } - - // Extract the file to output path - FileStream fs = File.Open(outputFilename, FileMode.CreateNew, FileAccess.ReadWrite); - zEntry.Extract(fs); - fs.Close(); - } - } - zip.Dispose(); - zipStream.Dispose(); - - File.AppendAllText(Path.Combine(GIMCONV_FOLDER, "GimConv.cfg"), "option -psvrgba8888 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = rgba8888\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}\r\noption -psvindex4 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = index4\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}\r\noption -psvindex8 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = index8\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}"); - DownloadCompleted = true; - } - - private static void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) - { - DownloadCompleted = false; - Console.Write("\rDownloading GimConv Directly from Sony " + e.BytesReceived + "/" + e.TotalBytesToReceive + " - " + e.ProgressPercentage.ToString() + "%"); - } - } -} + } + public static void DownloadGimConv() + { + wc.DownloadProgressChanged += Wc_DownloadProgressChanged; + wc.DownloadDataCompleted += Wc_DownloadDataCompleted; + wc.DownloadDataAsync(new Uri("http://e1.dl.playstation.net/e1/downloads/ps3/themes/370/PS3_Custom_Theme_v200.zip")); // Thanks Sony :3 + while (wc.IsBusy || !DownloadCompleted) { }; + } + + private static void Wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) + { + if (e.Error != null) + return; + Console.Write("\r\n"); + MemoryStream zipStream = new MemoryStream(e.Result); + ZipFile zip = ZipFile.Read(zipStream); + foreach(ZipEntry zEntry in zip.Entries) // Read downloaded zip and extract stuff relating to GimConv . + { + string filename = Path.GetFileName(zEntry.FileName); + if (filename == "msvcp71.dll" || filename == "msvcr71.dll" || zEntry.FileName.Contains("GimConv")) // if it is a required DLL or inside the GimConv folder + { + string outputFilename = zEntry.FileName; + if (outputFilename.Contains("GimConv")) // if the filename is inside the GimConv folder + outputFilename = outputFilename.Substring(outputFilename.IndexOf("GimConv") + "GimConv".Length + 1); // Extract filename after the "GimConv/" part + else + outputFilename = Path.GetFileName(outputFilename); + + outputFilename = outputFilename.Replace("/", "\\"); + outputFilename = Path.Combine(GIMCONV_FOLDER, outputFilename); // set output path to GimConv folder + Console.WriteLine("Extracting: " + outputFilename); + + // If folder is directory, create it + if (zEntry.IsDirectory) + { + Directory.CreateDirectory(outputFilename); + continue; + } + + // Extract the file to output path + FileStream fs = File.Open(outputFilename, FileMode.CreateNew, FileAccess.ReadWrite); + zEntry.Extract(fs); + fs.Close(); + } + } + zip.Dispose(); + zipStream.Dispose(); + + File.AppendAllText(Path.Combine(GIMCONV_FOLDER, "GimConv.cfg"), "option -psvrgba8888 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = rgba8888\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}\r\noption -psvindex4 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = index4\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}\r\noption -psvindex8 {\r\n format_endian = little\r\n format_style = psp\r\n image_format = index8\r\n pixel_order = normal\r\n pixel_channel = rgba\r\n limit_image_width = 4096\r\n limit_image_height = 4096\r\n}"); + DownloadCompleted = true; + } + + private static void Wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + DownloadCompleted = false; + Console.Write("\rDownloading GimConv Directly from Sony " + e.BytesReceived + "/" + e.TotalBytesToReceive + " - " + e.ProgressPercentage.ToString() + "%"); + } + } +} diff --git a/CXMLCli/Properties/AssemblyInfo.cs b/CXMLCli/Properties/AssemblyInfo.cs index 0bcf651..2516219 100644 --- a/CXMLCli/Properties/AssemblyInfo.cs +++ b/CXMLCli/Properties/AssemblyInfo.cs @@ -8,10 +8,10 @@ using System.Runtime.InteropServices; [assembly: AssemblyTitle("CXML Decompiler")] [assembly: AssemblyDescription("CXML Decompiler & Compiler")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("SilicaAndPina Inc")] +[assembly: AssemblyCompany("Li")] [assembly: AssemblyProduct("CXML Decompiler")] -[assembly: AssemblyCopyright("Public Domain © 2021")] -[assembly: AssemblyTrademark("CXML Decompiler is not a trademark of SilicaAndPina Inc")] +[assembly: AssemblyCopyright("Public Domain © 2022")] +[assembly: AssemblyTrademark("CXML Decompiler is not a trademark of Li Inc")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.1.0.0")] +[assembly: AssemblyFileVersion("1.1.0.0")]