From 6c979e385e96d5a44d0ededec0d999e5e0a1be8a Mon Sep 17 00:00:00 2001 From: leathl Date: Tue, 12 Jan 2010 17:03:46 +0000 Subject: [PATCH] Implemented CustomizeMiiInstaler, Project Cleanup, etc... --- CustomizeMii.sln | 24 +- CustomizeMii/CustomizeMii.csproj | 36 +- .../CustomizeMii_BackgroundWorkers.cs | 225 +++++++- CustomizeMii/CustomizeMii_DragDrop.cs | 19 +- CustomizeMii/CustomizeMii_Main.Designer.cs | 87 +++- CustomizeMii/CustomizeMii_Main.cs | 480 +++++------------- CustomizeMii/CustomizeMii_PrivateFunctions.cs | 349 ++++++++++++- CustomizeMii/CustomizeMii_Structs.cs | 22 +- .../CustomizeMii_Transmit.Designer.cs | 168 ++++++ CustomizeMii/CustomizeMii_Transmit.cs | 91 ++++ CustomizeMii/CustomizeMii_Transmit.resx | 120 +++++ CustomizeMii/CustomizeMii_zlib.cs | 59 +++ CustomizeMii/Properties/Resources.Designer.cs | 19 +- CustomizeMii/Properties/Settings.Designer.cs | 64 ++- CustomizeMii/Properties/Settings.settings | 20 +- CustomizeMii/Readme.txt | 7 +- CustomizeMii/Wii.cs | 157 +++--- CustomizeMii/app.config | 21 + CustomizeMii/zlib1.dll | Bin 0 -> 59904 bytes .../CustomizeMiiInstaller.csproj | 5 +- .../InstallerHelper.cs | 22 +- .../Properties/AssemblyInfo.cs | 23 +- .../Resources/CustomizeMiiInstaller.dol.z | Bin .../LICENSE.txt | 0 .../Makefile | 0 .../README.Orig.es.txt | 0 .../README.Orig.txt | 0 .../README.txt | 0 .../data/background | Bin .../installer.pnproj | 0 .../installer.pnps | 0 .../source/fat.c | 0 .../source/fat.h | 0 .../source/gui.c | 0 .../source/gui.h | 0 .../source/install.h | 0 .../source/libpng/png.h | 0 .../source/libpng/pngconf.h | 0 .../source/libpng/pngu/pngu.c | 0 .../source/libpng/pngu/pngu.h | 0 .../source/menu.c | 0 .../source/menu.h | 0 .../source/restart.c | 0 .../source/restart.h | 0 .../source/sha1.c | 0 .../source/sha1.h | 0 .../source/stub.S | 0 .../source/sys.c | 0 .../source/sys.h | 0 .../source/title.c | 0 .../source/title.h | 0 .../source/utils.h | 0 .../source/video.c | 0 .../source/video.h | 0 .../source/wad-manager.c | 0 .../source/wad.c | 0 .../source/wad.h | 0 .../source/wpad.c | 0 .../source/wpad.h | 0 .../ForwardMii.cs | 0 .../ForwardMii.csproj | 16 + .../ForwardMii_BaseEdit.cs | 0 .../ForwardMii_GX.cs | 0 .../ForwardMii_SDSDHC.cs | 0 {ForwardMii-Plugin => ForwardMii}/License.txt | 0 .../Properties/AssemblyInfo.cs | 0 .../Readme_ForwardMii.txt | 0 .../Resources/GX/Makefile | 0 .../Resources/GX/dolloader.c | 0 .../Resources/GX/dolloader.h | 0 .../Resources/GX/elf_abi.h | 0 .../Resources/GX/elfloader.c | 0 .../Resources/GX/elfloader.h | 0 .../Resources/GX/fatmounter.c | 0 .../Resources/GX/fatmounter.h | 0 .../Resources/GX/filelist.h | 0 .../Resources/GX/main.cpp | 0 .../Resources/GX/video.cpp | 0 .../Resources/GX/video.h | 0 .../Resources/SDSDHC/10CharsTail.bin | Bin .../Resources/SDSDHC/11CharsTail.bin | Bin .../Resources/SDSDHC/12CharsTail.bin | Bin .../Resources/SDSDHC/13CharsTail.bin | Bin .../Resources/SDSDHC/14CharsTail.bin | Bin .../Resources/SDSDHC/15CharsTail.bin | Bin .../Resources/SDSDHC/16CharsTail.bin | Bin .../Resources/SDSDHC/17CharsBase.bin | Bin .../Resources/SDSDHC/17CharsTail.bin | Bin .../Resources/SDSDHC/18CharsTail.bin | Bin .../Resources/SDSDHC/3CharsBase.bin | Bin .../Resources/SDSDHC/3CharsTail.bin | Bin .../Resources/SDSDHC/4CharsTail.bin | Bin .../Resources/SDSDHC/5CharsTail.bin | Bin .../Resources/SDSDHC/6CharsBase.bin | Bin .../Resources/SDSDHC/6CharsTail.bin | Bin .../Resources/SDSDHC/7CharsTail.bin | Bin .../Resources/SDSDHC/8CharsTail.bin | Bin .../Resources/SDSDHC/9CharsTail.bin | Bin Tester/Program.cs | 88 ---- Tester/Properties/AssemblyInfo.cs | 36 -- Tester/Tester.csproj | 56 -- 101 files changed, 1542 insertions(+), 672 deletions(-) create mode 100644 CustomizeMii/CustomizeMii_Transmit.Designer.cs create mode 100644 CustomizeMii/CustomizeMii_Transmit.cs create mode 100644 CustomizeMii/CustomizeMii_Transmit.resx create mode 100644 CustomizeMii/CustomizeMii_zlib.cs create mode 100644 CustomizeMii/app.config create mode 100644 CustomizeMii/zlib1.dll rename Helpers/Helpers.csproj => CustomizeMiiInstaller/CustomizeMiiInstaller.csproj (91%) rename {Helpers => CustomizeMiiInstaller}/InstallerHelper.cs (79%) rename {Helpers => CustomizeMiiInstaller}/Properties/AssemblyInfo.cs (58%) rename {Helpers => CustomizeMiiInstaller}/Resources/CustomizeMiiInstaller.dol.z (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/LICENSE.txt (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/Makefile (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/README.Orig.es.txt (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/README.Orig.txt (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/README.txt (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/data/background (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/installer.pnproj (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/installer.pnps (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/fat.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/fat.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/gui.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/gui.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/install.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/libpng/png.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/libpng/pngconf.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/libpng/pngu/pngu.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/libpng/pngu/pngu.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/menu.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/menu.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/restart.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/restart.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/sha1.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/sha1.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/stub.S (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/sys.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/sys.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/title.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/title.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/utils.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/video.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/video.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/wad-manager.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/wad.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/wad.h (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/wpad.c (100%) rename {CustomizeMiiInstaller => CustomizeMiiInstaller_Source}/source/wpad.h (100%) rename {ForwardMii-Plugin => ForwardMii}/ForwardMii.cs (100%) rename ForwardMii-Plugin/ForwardMii-Plugin.csproj => ForwardMii/ForwardMii.csproj (84%) rename {ForwardMii-Plugin => ForwardMii}/ForwardMii_BaseEdit.cs (100%) rename {ForwardMii-Plugin => ForwardMii}/ForwardMii_GX.cs (100%) rename {ForwardMii-Plugin => ForwardMii}/ForwardMii_SDSDHC.cs (100%) rename {ForwardMii-Plugin => ForwardMii}/License.txt (100%) rename {ForwardMii-Plugin => ForwardMii}/Properties/AssemblyInfo.cs (100%) rename {ForwardMii-Plugin => ForwardMii}/Readme_ForwardMii.txt (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/Makefile (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/dolloader.c (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/dolloader.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/elf_abi.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/elfloader.c (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/elfloader.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/fatmounter.c (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/fatmounter.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/filelist.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/main.cpp (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/video.cpp (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/GX/video.h (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/10CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/11CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/12CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/13CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/14CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/15CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/16CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/17CharsBase.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/17CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/18CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/3CharsBase.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/3CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/4CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/5CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/6CharsBase.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/6CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/7CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/8CharsTail.bin (100%) rename {ForwardMii-Plugin => ForwardMii}/Resources/SDSDHC/9CharsTail.bin (100%) delete mode 100644 Tester/Program.cs delete mode 100644 Tester/Properties/AssemblyInfo.cs delete mode 100644 Tester/Tester.csproj diff --git a/CustomizeMii.sln b/CustomizeMii.sln index 68d9614..ff06a49 100644 --- a/CustomizeMii.sln +++ b/CustomizeMii.sln @@ -1,36 +1,42 @@  Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 +# Visual C# Express 2008 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomizeMii", "CustomizeMii\CustomizeMii.csproj", "{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForwardMii-Plugin", "ForwardMii-Plugin\ForwardMii-Plugin.csproj", "{20CB2CA7-6767-4758-97FA-97395F47CD6B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForwardMii", "ForwardMii\ForwardMii.csproj", "{20CB2CA7-6767-4758-97FA-97395F47CD6B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Helpers", "Helpers\Helpers.csproj", "{475F3ADF-B529-449F-89DA-BA5E8BE15DD5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tester", "Tester\Tester.csproj", "{C020DE3A-F72B-47AD-A451-17B7586E4D21}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomizeMiiInstaller", "CustomizeMiiInstaller\CustomizeMiiInstaller.csproj", "{475F3ADF-B529-449F-89DA-BA5E8BE15DD5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|x86.ActiveCfg = Debug|x86 + {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|x86.Build.0 = Debug|x86 {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.ActiveCfg = Release|Any CPU {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.Build.0 = Release|Any CPU + {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|x86.ActiveCfg = Release|x86 + {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|x86.Build.0 = Release|x86 {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|x86.ActiveCfg = Debug|x86 + {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|x86.Build.0 = Debug|x86 {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|Any CPU.ActiveCfg = Release|Any CPU {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|Any CPU.Build.0 = Release|Any CPU + {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|x86.ActiveCfg = Release|x86 + {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|x86.Build.0 = Release|x86 {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Debug|x86.ActiveCfg = Debug|Any CPU {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Release|Any CPU.ActiveCfg = Release|Any CPU {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Release|Any CPU.Build.0 = Release|Any CPU - {C020DE3A-F72B-47AD-A451-17B7586E4D21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C020DE3A-F72B-47AD-A451-17B7586E4D21}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C020DE3A-F72B-47AD-A451-17B7586E4D21}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C020DE3A-F72B-47AD-A451-17B7586E4D21}.Release|Any CPU.Build.0 = Release|Any CPU + {475F3ADF-B529-449F-89DA-BA5E8BE15DD5}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/CustomizeMii/CustomizeMii.csproj b/CustomizeMii/CustomizeMii.csproj index 0c2048e..98a744a 100644 --- a/CustomizeMii/CustomizeMii.csproj +++ b/CustomizeMii/CustomizeMii.csproj @@ -48,12 +48,31 @@ prompt 4 + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + + + False + ..\CustomizeMiiInstaller\bin\Debug\CustomizeMiiInstaller.dll + - @@ -91,6 +110,13 @@ Form + + Form + + + CustomizeMii_Transmit.cs + + @@ -106,6 +132,9 @@ CustomizeMii_Main.cs + + CustomizeMii_Transmit.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -144,6 +173,7 @@ + @@ -177,9 +207,9 @@ - + {20CB2CA7-6767-4758-97FA-97395F47CD6B} - ForwardMii-Plugin + ForwardMii diff --git a/CustomizeMii/CustomizeMii_BackgroundWorkers.cs b/CustomizeMii/CustomizeMii_BackgroundWorkers.cs index 6e3edc3..fc5453c 100644 --- a/CustomizeMii/CustomizeMii_BackgroundWorkers.cs +++ b/CustomizeMii/CustomizeMii_BackgroundWorkers.cs @@ -20,14 +20,19 @@ using System.ComponentModel; using System.Diagnostics; using System.IO; using BNS; +using System.Net.Sockets; namespace CustomizeMii { partial class CustomizeMii_Main { + private Stopwatch CreationTimer = new Stopwatch(); + private Stopwatch TransmitTimer = new Stopwatch(); + private TransmitInfo transmitInfo; public int sendWadReady = 0; private bool sendToWii = false; private bool internalSound; + private WadCreationInfo wadCreationInfo; void bwBannerReplace_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { @@ -529,7 +534,7 @@ namespace CustomizeMii } } - void bwCreateWad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + void bwTransmit_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { EventHandler EnableControls = new EventHandler(this.EnableControls); EventHandler Initialize = new EventHandler(this.Initialize); @@ -537,6 +542,219 @@ namespace CustomizeMii lbStatusText.Text = string.Empty; this.Invoke(EnableControls); this.Invoke(Initialize); + + if (transmitInfo.timeElapsed > 0) + { + System.Windows.Forms.DialogResult dlg; + + if (transmitInfo.usedCompression) + dlg = System.Windows.Forms.MessageBox.Show( + string.Format("Transmitted {0} kB in {1} milliseconds...\nCompression Ratio: {2}%\n\nDo you want to save the wad file?", + transmitInfo.transmittedLength, transmitInfo.timeElapsed, transmitInfo.compressionRatio), + "Save File?", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question); + else + dlg = System.Windows.Forms.MessageBox.Show( + string.Format("Transmitted {0} kB in {1} milliseconds...\n\nDo you want to save the wad file?", + transmitInfo.transmittedLength, transmitInfo.timeElapsed), + "Save File?", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question); + + if (dlg == System.Windows.Forms.DialogResult.Yes) + { + System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog(); + sfd.Filter = "Wii Channels|*.wad"; + + if (!string.IsNullOrEmpty(tbAllLanguages.Text)) + sfd.FileName = tbAllLanguages.Text + " - " + tbTitleID.Text.ToUpper() + ".wad"; + else + sfd.FileName = tbEnglish.Text + " - " + tbTitleID.Text.ToUpper() + ".wad"; + + if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) + File.Copy(TempPath + "SendToWii.wad", sfd.FileName, true); + } + } + + try { File.Delete(TempPath + "SendToWii.wad"); } + catch { } + } + + void bwTransmit_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + currentProgress.progressValue = e.ProgressPercentage; + currentProgress.progressState = (string)e.UserState; + + this.Invoke(ProgressUpdate); + } + + void bwTransmit_DoWork(object sender, DoWorkEventArgs e) + { + try + { + BackgroundWorker bwTransmit = sender as BackgroundWorker; + + //Insert wad into stub dol + string fileName = "CMiiInstaller.dol"; + byte[] fileData = CustomizeMiiInstaller.InstallerHelper.CreateInstaller(TempPath + "SendToWii.wad", (byte)wadCreationInfo.transmitIos).ToArray(); + + //Transmit installer + transmitInfo.timeElapsed = 0; TransmitTimer.Reset(); TransmitTimer.Start(); + bool compress = File.Exists(System.Windows.Forms.Application.StartupPath + "\\zlib1.dll"); + + if (!Environment.OSVersion.ToString().Contains("Windows")) + compress = false; + + if ((int)(wadCreationInfo.transmitProtocol) == 1) compress = false; + + TcpClient theClient = new TcpClient(); + + byte[] compFileData; + int Blocksize = 4 * 1024; + if (wadCreationInfo.transmitProtocol != TransmitProtocol.JODI) Blocksize = 16 * 1024; + byte[] buffer = new byte[4]; + string theIP = wadCreationInfo.transmitIp; + + bwTransmit.ReportProgress(0, "Connecting..."); + //StatusUpdate("Connecting..."); + try { theClient.Connect(theIP, 4299); } + catch (Exception ex) { theClient.Close(); throw new Exception("Connection Failed:\n" + ex.Message); } + NetworkStream theStream = theClient.GetStream(); + + bwTransmit.ReportProgress(0, "Connected... Sending Magic..."); + //StatusUpdate("Connected... Sending Magic..."); + buffer[0] = (byte)'H'; + buffer[1] = (byte)'A'; + buffer[2] = (byte)'X'; + buffer[3] = (byte)'X'; + try { theStream.Write(buffer, 0, 4); } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending Magic:\n" + ex.Message); } + + bwTransmit.ReportProgress(0, "Magic Sent... Sending Version Info..."); + //StatusUpdate("Magic Sent... Sending Version Info..."); + buffer[0] = 0; + buffer[1] = wadCreationInfo.transmitProtocol == TransmitProtocol.JODI ? (byte)5 : (byte)4; + buffer[2] = (byte)(((fileName.Length + 2) >> 8) & 0xff); + buffer[3] = (byte)((fileName.Length + 2) & 0xff); + + try { theStream.Write(buffer, 0, 4); } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending Version Info:\n" + ex.Message); } + + if (compress) + { + bwTransmit.ReportProgress(0, "Version Info Sent... Compressing File..."); + //StatusUpdate("Version Info Sent... Compressing File..."); + try { compFileData = TransmitMii.zlib.Compress(fileData); } + catch (Exception ex) + { + ErrorBox(ex.Message); + //Compression failed, let's continue without compression + compFileData = fileData; + fileData = new byte[0]; + } + + bwTransmit.ReportProgress(0, "Compressed File... Sending Filesize..."); + //StatusUpdate("Compressed File... Sending Filesize..."); + } + else + { + compFileData = fileData; + fileData = new byte[0]; + + bwTransmit.ReportProgress(0, "Version Info Sent... Sending Filesize..."); + //StatusUpdate("Version Info Sent... Sending Filesize..."); + } + + //First compressed filesize, then uncompressed filesize + buffer[0] = (byte)((compFileData.Length >> 24) & 0xff); + buffer[1] = (byte)((compFileData.Length >> 16) & 0xff); + buffer[2] = (byte)((compFileData.Length >> 8) & 0xff); + buffer[3] = (byte)(compFileData.Length & 0xff); + try { theStream.Write(buffer, 0, 4); } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending Filesize:\n" + ex.Message); } + + if (wadCreationInfo.transmitProtocol != TransmitProtocol.HAXX) + { + buffer[0] = (byte)((fileData.Length >> 24) & 0xff); + buffer[1] = (byte)((fileData.Length >> 16) & 0xff); + buffer[2] = (byte)((fileData.Length >> 8) & 0xff); + buffer[3] = (byte)(fileData.Length & 0xff); + try { theStream.Write(buffer, 0, 4); } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending Filesize:\n" + ex.Message); } + } + + bwTransmit.ReportProgress(0, "Filesize Sent... Sending File..."); + //StatusUpdate("Filesize Sent... Sending File..."); + int off = 0; + int cur = 0; + int count = compFileData.Length / Blocksize; + int left = compFileData.Length % Blocksize; + + try + { + do + { + bwTransmit.ReportProgress((cur + 1) * 100 / count, "Sending File..."); + //StatusUpdate("Sending File: " + ((cur + 1) * 100 / count).ToString() + "%"); + theStream.Write(compFileData, off, Blocksize); + off += Blocksize; + cur++; + } while (cur < count); + + if (left > 0) + { + theStream.Write(compFileData, off, compFileData.Length - off); + } + } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending File:\n" + ex.Message); } + + bwTransmit.ReportProgress(0, "File Sent... Sending Arguments..."); + //StatusUpdate("File Sent... Sending Arguments..."); + byte[] theArgs = new byte[fileName.Length + 2]; + for (int i = 0; i < fileName.Length; i++) { theArgs[i] = (byte)fileName.ToCharArray()[i]; } + try { theStream.Write(theArgs, 0, theArgs.Length); } + catch (Exception ex) { theStream.Close(); theClient.Close(); throw new Exception("Error sending Arguments:\n" + ex.Message); } + + theStream.Close(); + theClient.Close(); + + bwTransmit.ReportProgress(0, string.Empty); + //StatusUpdate(string.Empty); + + TransmitTimer.Stop(); + transmitInfo.timeElapsed = (int)TransmitTimer.ElapsedMilliseconds; + transmitInfo.usedCompression = compress; + transmitInfo.transmittedLength = Math.Round(compFileData.Length * 0.0009765625, 2); + if (compress && fileData.Length != 0) + transmitInfo.compressionRatio = (compFileData.Length * 100) / fileData.Length; + } + catch (Exception ex) + { + ErrorBox(ex.Message); + } + } + + void bwCreateWad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (!this.sendToWii) + { + EventHandler EnableControls = new EventHandler(this.EnableControls); + EventHandler Initialize = new EventHandler(this.Initialize); + pbProgress.Value = 100; + lbStatusText.Text = string.Empty; + this.Invoke(EnableControls); + this.Invoke(Initialize); + } + else + { + if (sendWadReady == 1) + { + //Start new BackgroundWorker to Transmit + BackgroundWorker bwTransmit = new BackgroundWorker(); + bwTransmit.WorkerReportsProgress = true; + bwTransmit.DoWork += new DoWorkEventHandler(bwTransmit_DoWork); + bwTransmit.ProgressChanged += new ProgressChangedEventHandler(bwTransmit_ProgressChanged); + bwTransmit.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwTransmit_RunWorkerCompleted); + bwTransmit.RunWorkerAsync(); + } + } } void bwCreateWad_ProgressChanged(object sender, ProgressChangedEventArgs e) @@ -563,6 +781,9 @@ namespace CustomizeMii MakeBannerTplsTransparent(); MakeIconTplsTransparent(); + bwCreateWad.ReportProgress(3, "Fixing TPL Filters..."); + FixTpls(); + bwCreateWad.ReportProgress(5, "Packing icon.bin..."); byte[] iconbin; @@ -751,6 +972,8 @@ namespace CustomizeMii InfoBox(string.Format("Successfully created custom channel!\nTime elapsed: {0} ms\nFilesize: {1} MB\nApprox. Blocks: {2}", CreationTimer.ElapsedMilliseconds, fileSize, Wii.WadInfo.GetNandBlocks(wadInfo.outFile))); } else sendWadReady = 1; + + wadCreationInfo = wadInfo; } catch (Exception ex) { diff --git a/CustomizeMii/CustomizeMii_DragDrop.cs b/CustomizeMii/CustomizeMii_DragDrop.cs index 81e62aa..95e3faa 100644 --- a/CustomizeMii/CustomizeMii_DragDrop.cs +++ b/CustomizeMii/CustomizeMii_DragDrop.cs @@ -1,4 +1,21 @@ -using System; +/* This file is part of CustomizeMii + * Copyright (C) 2009 Leathl + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using System; using System.ComponentModel; using System.IO; using System.Windows.Forms; diff --git a/CustomizeMii/CustomizeMii_Main.Designer.cs b/CustomizeMii/CustomizeMii_Main.Designer.cs index 5b1273b..5e9c36d 100644 --- a/CustomizeMii/CustomizeMii_Main.Designer.cs +++ b/CustomizeMii/CustomizeMii_Main.Designer.cs @@ -63,6 +63,7 @@ namespace CustomizeMii this.tbSourceWad = new System.Windows.Forms.TextBox(); this.lbSource = new System.Windows.Forms.Label(); this.tabTitle = new System.Windows.Forms.TabPage(); + this.llbTranslateChannel = new System.Windows.Forms.LinkLabel(); this.tbItalian = new System.Windows.Forms.TextBox(); this.tbFrench = new System.Windows.Forms.TextBox(); this.tbJapanese = new System.Windows.Forms.TextBox(); @@ -140,6 +141,7 @@ namespace CustomizeMii this.tabInstructions = new System.Windows.Forms.TabPage(); this.rtbInstructions = new System.Windows.Forms.RichTextBox(); this.tabCredits = new System.Windows.Forms.TabPage(); + this.label1 = new System.Windows.Forms.Label(); this.lbForwardMiiVersion = new System.Windows.Forms.Label(); this.panCredits = new System.Windows.Forms.Panel(); this.lbCreditThanks = new System.Windows.Forms.Label(); @@ -164,6 +166,10 @@ namespace CustomizeMii this.cmExtractBannerImages = new System.Windows.Forms.ToolStripMenuItem(); this.cmExtractIconImages = new System.Windows.Forms.ToolStripMenuItem(); this.cmExtractBothImages = new System.Windows.Forms.ToolStripMenuItem(); + this.tsExtractBrl = new System.Windows.Forms.ToolStripMenuItem(); + this.cmExtractBrlyt = new System.Windows.Forms.ToolStripMenuItem(); + this.cmExtractBrlan = new System.Windows.Forms.ToolStripMenuItem(); + this.cmExtractBothBrl = new System.Windows.Forms.ToolStripMenuItem(); this.cmSound = new System.Windows.Forms.ContextMenuStrip(this.components); this.cmLoadAudioFile = new System.Windows.Forms.ToolStripMenuItem(); this.cmConvertToBns = new System.Windows.Forms.ToolStripMenuItem(); @@ -377,6 +383,7 @@ namespace CustomizeMii // // tabTitle // + this.tabTitle.Controls.Add(this.llbTranslateChannel); this.tabTitle.Controls.Add(this.tbItalian); this.tabTitle.Controls.Add(this.tbFrench); this.tabTitle.Controls.Add(this.tbJapanese); @@ -402,6 +409,17 @@ namespace CustomizeMii this.tabTitle.Text = "Title"; this.tabTitle.UseVisualStyleBackColor = true; // + // llbTranslateChannel + // + this.llbTranslateChannel.AutoSize = true; + this.llbTranslateChannel.Location = new System.Drawing.Point(322, 42); + this.llbTranslateChannel.Name = "llbTranslateChannel"; + this.llbTranslateChannel.Size = new System.Drawing.Size(103, 13); + this.llbTranslateChannel.TabIndex = 17; + this.llbTranslateChannel.TabStop = true; + this.llbTranslateChannel.Text = "Translate \"Channel\""; + this.llbTranslateChannel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llbTranslateChannel_LinkClicked); + // // tbItalian // this.tbItalian.Location = new System.Drawing.Point(301, 143); @@ -1213,6 +1231,7 @@ namespace CustomizeMii // // tabCredits // + this.tabCredits.Controls.Add(this.label1); this.tabCredits.Controls.Add(this.lbForwardMiiVersion); this.tabCredits.Controls.Add(this.panCredits); this.tabCredits.Controls.Add(this.llbUpdateAvailabe); @@ -1227,9 +1246,18 @@ namespace CustomizeMii this.tabCredits.Text = "About"; this.tabCredits.UseVisualStyleBackColor = true; // + // label1 + // + this.label1.Location = new System.Drawing.Point(0, 28); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(443, 13); + this.label1.TabIndex = 7; + this.label1.Text = "CustomizeMii Installer by WiiCrazy / I.R.on"; + this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // // lbForwardMiiVersion // - this.lbForwardMiiVersion.Location = new System.Drawing.Point(0, 62); + this.lbForwardMiiVersion.Location = new System.Drawing.Point(0, 68); this.lbForwardMiiVersion.Name = "lbForwardMiiVersion"; this.lbForwardMiiVersion.Size = new System.Drawing.Size(443, 13); this.lbForwardMiiVersion.TabIndex = 6; @@ -1258,7 +1286,7 @@ namespace CustomizeMii // llbUpdateAvailabe // this.llbUpdateAvailabe.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.llbUpdateAvailabe.Location = new System.Drawing.Point(0, 62); + this.llbUpdateAvailabe.Location = new System.Drawing.Point(0, 67); this.llbUpdateAvailabe.Name = "llbUpdateAvailabe"; this.llbUpdateAvailabe.Size = new System.Drawing.Size(443, 13); this.llbUpdateAvailabe.TabIndex = 4; @@ -1270,18 +1298,19 @@ namespace CustomizeMii // // llbSite // - this.llbSite.Location = new System.Drawing.Point(0, 35); + this.llbSite.Location = new System.Drawing.Point(0, 47); this.llbSite.Name = "llbSite"; this.llbSite.Size = new System.Drawing.Size(443, 13); this.llbSite.TabIndex = 3; this.llbSite.TabStop = true; + this.llbSite.Tag = "Independent"; this.llbSite.Text = "http://customizemii.googlecode.com"; this.llbSite.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.llbSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llbSite_LinkClicked); // // lbCreditVersion // - this.lbCreditVersion.Location = new System.Drawing.Point(0, 13); + this.lbCreditVersion.Location = new System.Drawing.Point(0, 10); this.lbCreditVersion.Name = "lbCreditVersion"; this.lbCreditVersion.Size = new System.Drawing.Size(443, 13); this.lbCreditVersion.TabIndex = 1; @@ -1360,21 +1389,22 @@ namespace CustomizeMii this.cmExtractWad, this.cmExtractDol, this.tsExtractSound, - this.tsExtractImages}); + this.tsExtractImages, + this.tsExtractBrl}); this.cmOptionsExtract.Name = "cmOptionsExtract"; - this.cmOptionsExtract.Size = new System.Drawing.Size(153, 92); + this.cmOptionsExtract.Size = new System.Drawing.Size(183, 114); // // cmExtractWad // this.cmExtractWad.Name = "cmExtractWad"; - this.cmExtractWad.Size = new System.Drawing.Size(152, 22); + this.cmExtractWad.Size = new System.Drawing.Size(182, 22); this.cmExtractWad.Text = "WAD Contents"; this.cmExtractWad.Click += new System.EventHandler(this.cmExtractWad_Click); // // cmExtractDol // this.cmExtractDol.Name = "cmExtractDol"; - this.cmExtractDol.Size = new System.Drawing.Size(152, 22); + this.cmExtractDol.Size = new System.Drawing.Size(182, 22); this.cmExtractDol.Text = "DOL"; this.cmExtractDol.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick); // @@ -1384,7 +1414,7 @@ namespace CustomizeMii this.cmExtractSoundAsBin, this.cmExtractSoundAsAudio}); this.tsExtractSound.Name = "tsExtractSound"; - this.tsExtractSound.Size = new System.Drawing.Size(152, 22); + this.tsExtractSound.Size = new System.Drawing.Size(182, 22); this.tsExtractSound.Text = "Sound"; // // cmExtractSoundAsBin @@ -1408,7 +1438,7 @@ namespace CustomizeMii this.cmExtractIconImages, this.cmExtractBothImages}); this.tsExtractImages.Name = "tsExtractImages"; - this.tsExtractImages.Size = new System.Drawing.Size(152, 22); + this.tsExtractImages.Size = new System.Drawing.Size(182, 22); this.tsExtractImages.Text = "Images"; // // cmExtractBannerImages @@ -1432,6 +1462,37 @@ namespace CustomizeMii this.cmExtractBothImages.Text = "Both"; this.cmExtractBothImages.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick); // + // tsExtractBrl + // + this.tsExtractBrl.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cmExtractBrlyt, + this.cmExtractBrlan, + this.cmExtractBothBrl}); + this.tsExtractBrl.Name = "tsExtractBrl"; + this.tsExtractBrl.Size = new System.Drawing.Size(182, 22); + this.tsExtractBrl.Text = "Layout && Animation"; + // + // cmExtractBrlyt + // + this.cmExtractBrlyt.Name = "cmExtractBrlyt"; + this.cmExtractBrlyt.Size = new System.Drawing.Size(109, 22); + this.cmExtractBrlyt.Text = "brlyt\'s"; + this.cmExtractBrlyt.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick); + // + // cmExtractBrlan + // + this.cmExtractBrlan.Name = "cmExtractBrlan"; + this.cmExtractBrlan.Size = new System.Drawing.Size(109, 22); + this.cmExtractBrlan.Text = "brlan\'s"; + this.cmExtractBrlan.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick); + // + // cmExtractBothBrl + // + this.cmExtractBothBrl.Name = "cmExtractBothBrl"; + this.cmExtractBothBrl.Size = new System.Drawing.Size(109, 22); + this.cmExtractBothBrl.Text = "Both"; + this.cmExtractBothBrl.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick); + // // cmSound // this.cmSound.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -1648,6 +1709,12 @@ namespace CustomizeMii private System.Windows.Forms.Label lbForwardMiiVersion; private System.Windows.Forms.Label lbCreated; private System.Windows.Forms.Label lbCreatedValue; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ToolStripMenuItem tsExtractBrl; + private System.Windows.Forms.ToolStripMenuItem cmExtractBrlyt; + private System.Windows.Forms.ToolStripMenuItem cmExtractBrlan; + private System.Windows.Forms.ToolStripMenuItem cmExtractBothBrl; + private System.Windows.Forms.LinkLabel llbTranslateChannel; } } diff --git a/CustomizeMii/CustomizeMii_Main.cs b/CustomizeMii/CustomizeMii_Main.cs index 9681c67..040cffb 100644 --- a/CustomizeMii/CustomizeMii_Main.cs +++ b/CustomizeMii/CustomizeMii_Main.cs @@ -45,7 +45,7 @@ namespace CustomizeMii #endregion #region Variables - public bool Mono = false; + public static bool Mono = false; public static string TempPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\"; public static string TempWadPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\TempWad.wad"; public static string TempUnpackPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\"; @@ -80,7 +80,6 @@ namespace CustomizeMii private Progress currentProgress; private EventHandler ProgressUpdate; private int UnpackFolderErrorCount = 0; - private Stopwatch CreationTimer = new Stopwatch(); private List BannerTransparents = new List(); private List IconTransparents = new List(); private string Mp3Path; @@ -311,7 +310,9 @@ namespace CustomizeMii tTip.SetToolTip(btnBrlanExtract, "Extract the selected brlan file..."); tTip.SetToolTip(btnOptionsExtract, "Extract contents of the WAD..."); tTip.SetToolTip(btnForwarder, "Create a forwarder that will be inserted as a DOL..."); - + + tTip.SetToolTip(llbTranslateChannel, "Translates the word \"Channel\" to each language..."); + tTip.SetToolTip(cbLz77, "Use Lz77 compression for the banner.bin and icon.bin...\nIf the created WAD does not work, try it without compression first..."); tTip.SetToolTip(cbFailureChecks, "Turn off the security checks...\nNot recommended, you may get a bricking WAD..."); } @@ -324,7 +325,7 @@ namespace CustomizeMii return false; } - void rtbInstructions_LinkClicked(object sender, LinkClickedEventArgs e) + private void rtbInstructions_LinkClicked(object sender, LinkClickedEventArgs e) { try { @@ -385,10 +386,6 @@ namespace CustomizeMii gImg.DrawLine(Pens.Gray, new Point((int)separatorBtn, 0), new Point((int)separatorBtn, btnCreateWad.Height)); - //gImg.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; - //gImg.DrawString("Send", btnCreateWad.Font, Brushes.Black, new PointF(95, 10)); - //gImg.DrawString("Save", btnCreateWad.Font, Brushes.Black, new PointF(320, 10)); - Image tmpCreate = Properties.Resources.btnCreate; Image tmpSend = Properties.Resources.btnSend; gImg.DrawImage(ResizeImage(tmpCreate, tmpCreate.Width, tmpCreate.Height), new Point(280, 0)); @@ -398,33 +395,11 @@ namespace CustomizeMii } } - private void ErrorBox(string message) - { - BoxInvoker invoker = new BoxInvoker(this.errorBox); - this.Invoke(invoker, new object[] { message }); - } - - private void errorBox(string message) - { - MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - - private void InfoBox(string message) - { - BoxInvoker invoker = new BoxInvoker(this.infoBox); - this.Invoke(invoker, new object[] { message }); - } - - private void infoBox(string message) - { - MessageBox.Show(message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool CheckInet() { try { - System.Net.IPHostEntry IpHost = System.Net.Dns.GetHostEntry("www.google.com"); + System.Net.IPHostEntry ipHost = System.Net.Dns.GetHostEntry("www.google.com"); return true; } catch @@ -444,220 +419,6 @@ namespace CustomizeMii } } - private void AddBannerTpls(object sender, EventArgs e) - { - try - { - string[] BannerTpls; - if (string.IsNullOrEmpty(BannerReplace)) - BannerTpls = Directory.GetFiles(TempUnpackBannerTplPath); - else - BannerTpls = Directory.GetFiles(TempBannerPath + "arc\\timg"); - - AddBannerTpls(BannerTpls); - } - catch { } - } - - private void AddIconTpls(object sender, EventArgs e) - { - try - { - string[] IconTpls; - if (string.IsNullOrEmpty(IconReplace)) - IconTpls = Directory.GetFiles(TempUnpackIconTplPath); - else - IconTpls = Directory.GetFiles(TempIconPath + "arc\\timg"); - - AddIconTpls(IconTpls); - } - catch { } - } - - private void AddBannerTpls(string[] tpls) - { - if (tpls.Length > 0) - { - lbxBannerTpls.Items.Clear(); - BannerTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < tpls.Length; i++) - { - if (BannerTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1))) - lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)"); - else - lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)); - } - } - } - - private void AddIconTpls(string[] tpls) - { - if (tpls.Length > 0) - { - lbxIconTpls.Items.Clear(); - IconTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < tpls.Length; i++) - { - if (IconTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1))) - lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)"); - else - lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)); - } - } - } - - private void AddBrlyts(object sender, EventArgs e) - { - try - { - string[] BannerBrlyt; - if (string.IsNullOrEmpty(BannerReplace)) - BannerBrlyt = Directory.GetFiles(TempUnpackBannerBrlytPath); - else - BannerBrlyt = Directory.GetFiles(TempBannerPath + "arc\\blyt"); - - string[] IconBrlyt; - if (string.IsNullOrEmpty(IconReplace)) - IconBrlyt = Directory.GetFiles(TempUnpackIconBrlytPath); - else - IconBrlyt = Directory.GetFiles(TempIconPath + "arc\\blyt"); - - AddBannerBrlyt(BannerBrlyt); - AddIconBrlyt(IconBrlyt); - - if (lbxBrlytBanner.SelectedIndex == -1 && lbxBrlytIcon.SelectedIndex == -1) - { - if (lbxBrlytBanner.Items.Count > 0) lbxBrlytBanner.SelectedIndex = 0; - else if (lbxBrlytIcon.Items.Count > 0) lbxBrlytIcon.SelectedIndex = 0; - } - } - catch { } - } - - private void AddBrlans(object sender, EventArgs e) - { - try - { - string[] BannerBrlan; - if (string.IsNullOrEmpty(BannerReplace)) - BannerBrlan = Directory.GetFiles(TempUnpackBannerBrlanPath); - else - BannerBrlan = Directory.GetFiles(TempBannerPath + "arc\\anim"); - - string[] IconBrlan; - if (string.IsNullOrEmpty(IconReplace)) - IconBrlan = Directory.GetFiles(TempUnpackIconBrlanPath); - else - IconBrlan = Directory.GetFiles(TempIconPath + "arc\\anim"); - - AddBannerBrlan(BannerBrlan); - AddIconBrlan(IconBrlan); - - if (lbxBrlanBanner.SelectedIndex == -1 && lbxBrlanIcon.SelectedIndex == -1) - { - if (lbxBrlanBanner.Items.Count > 0) lbxBrlanBanner.SelectedIndex = 0; - else if (lbxBrlanIcon.Items.Count > 0) lbxBrlanIcon.SelectedIndex = 0; - } - } - catch { } - } - - private void AddBannerBrlyt(string[] brlyt) - { - if (brlyt.Length > 0) - { - lbxBrlytBanner.Items.Clear(); - BannerBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < brlyt.Length; i++) - { - lbxBrlytBanner.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1)); - } - } - } - - private void AddIconBrlyt(string[] brlyt) - { - if (brlyt.Length > 0) - { - lbxBrlytIcon.Items.Clear(); - IconBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < brlyt.Length; i++) - { - lbxBrlytIcon.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1)); - } - } - } - - private void AddBannerBrlan(string[] brlan) - { - if (brlan.Length > 0) - { - lbxBrlanBanner.Items.Clear(); - BannerBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < brlan.Length; i++) - { - lbxBrlanBanner.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1)); - } - } - } - - private void AddIconBrlan(string[] brlan) - { - if (brlan.Length > 0) - { - lbxBrlanIcon.Items.Clear(); - IconBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1); - - for (int i = 0; i < brlan.Length; i++) - { - lbxBrlanIcon.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1)); - } - } - } - - private void SetText(TextBox tb, string text) - { - SetTextInvoker invoker = new SetTextInvoker(this.SetText); - this.Invoke(invoker, text, tb); - } - - private void SetText(string text, TextBox tb) - { - tb.Text = text; - } - - private void SetLabel(Label lb, string text) - { - SetLabelInvoker invoker = new SetLabelInvoker(this.SetLabel); - this.Invoke(invoker, text, lb); - } - - private void SetLabel(string text, Label lb) - { - lb.Text = text; - } - - private string GetCurBannerPath() - { - if (string.IsNullOrEmpty(BannerReplace)) - return TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\"; - else - return TempBannerPath + "arc\\"; - } - - private string GetCurIconPath() - { - if (string.IsNullOrEmpty(IconReplace)) - return TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\"; - else - return TempIconPath + "arc\\"; - } - private void SetSourceWad(object sender, EventArgs e) { tbSourceWad.Text = SourceWad; @@ -756,7 +517,7 @@ namespace CustomizeMii } } - void tmrCredits_Tick(object sender, EventArgs e) + private void tmrCredits_Tick(object sender, EventArgs e) { if (lbCreditThanks.Location.Y == -130) lbCreditThanks.Location = new Point(lbCreditThanks.Location.X, panCredits.Height); lbCreditThanks.Location = new Point(lbCreditThanks.Location.X, lbCreditThanks.Location.Y - 1); @@ -839,84 +600,6 @@ namespace CustomizeMii } } - private Image ResizeImage(Image img, int x, int y) - { - Image newimage = new Bitmap(x, y); - using (Graphics gfx = Graphics.FromImage(newimage)) - { - gfx.DrawImage(img, 0, 0, x, y); - } - return newimage; - } - - private void MakeBannerTplsTransparent() - { - foreach (string thisTpl in lbxBannerTpls.Items) - { - if (thisTpl.EndsWith("(Transparent)")) - { - string Tpl = BannerTplPath + thisTpl.Replace(" (Transparent)", string.Empty); - byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl); - int Width = Wii.TPL.GetTextureWidth(TplArray); - int Height = Wii.TPL.GetTextureHeight(TplArray); - - Image Img = new Bitmap(Width, Height); - Wii.TPL.ConvertToTPL(Img, Tpl, 5); - } - } - } - - private void MakeIconTplsTransparent() - { - foreach (string thisTpl in lbxIconTpls.Items) - { - if (thisTpl.EndsWith("(Transparent)")) - { - string Tpl = IconTplPath + thisTpl.Replace(" (Transparent)", string.Empty); - byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl); - int Width = Wii.TPL.GetTextureWidth(TplArray); - int Height = Wii.TPL.GetTextureHeight(TplArray); - - Image Img = new Bitmap(Width, Height); - Wii.TPL.ConvertToTPL(Img, Tpl, 5); - } - } - } - - private void EnableControls(object sender, EventArgs e) - { - for (int i = 0; i < tabControl.TabCount; i++) - { - if (tabControl.TabPages[i] != tabSource) - { - foreach (Control Ctrl in tabControl.TabPages[i].Controls) - { - if (Ctrl is Button) Ctrl.Enabled = true; - else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = true; - else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = true; - else if (Ctrl is ComboBox) Ctrl.Enabled = true; - } - } - } - } - - private void DisableControls(object sender, EventArgs e) - { - for (int i = 0; i < tabControl.TabCount; i++) - { - if (tabControl.TabPages[i] != tabSource) - { - foreach (Control Ctrl in tabControl.TabPages[i].Controls) - { - if (Ctrl is Button) Ctrl.Enabled = false; - else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = false; - else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = false; - else if (Ctrl is ComboBox) Ctrl.Enabled = false; - } - } - } - } - private void UpdateCheck() { if (CheckInet() == true) @@ -1012,9 +695,9 @@ namespace CustomizeMii { if (lbxBaseWads.SelectedIndex != -1) { - if (CheckInet() == true) + if (pbProgress.Value == 100) { - if (pbProgress.Value == 100) + if (CheckInet() == true) { #if Mono CommonKeyCheck(); @@ -1043,11 +726,10 @@ namespace CustomizeMii } } } - - } - else - { - ErrorBox("You're not connected to the Internet!"); + else + { + ErrorBox("You're not connected to the Internet!"); + } } } } @@ -2187,32 +1869,40 @@ namespace CustomizeMii { if (!string.IsNullOrEmpty(tbSourceWad.Text)) { - if (cbFailureChecks.Checked == true || FailureCheck() == true) + if (!File.Exists(Application.StartupPath + "\\CustomizeMiiInstaller.dll")) { - try + ErrorBox("The CustomizeMiiInstaller.dll wasn't found!"); + } + else + { + if (cbFailureChecks.Checked == true || FailureCheck() == true) { - WadCreationInfo wadInfo = new WadCreationInfo(); - wadInfo.outFile = TempPath + "SendToWii.wad"; - wadInfo.nandLoader = (WadCreationInfo.NandLoader)cmbNandLoader.SelectedIndex; - wadInfo.sendToWii = true; + CustomizeMii_Transmit cmt = new CustomizeMii_Transmit(); - BackgroundWorker bwCreateWad = new BackgroundWorker(); - bwCreateWad.DoWork += new DoWorkEventHandler(bwCreateWad_DoWork); - bwCreateWad.ProgressChanged += new ProgressChangedEventHandler(bwCreateWad_ProgressChanged); - bwCreateWad.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwCreateWad_RunWorkerCompleted); - bwCreateWad.WorkerReportsProgress = true; - bwCreateWad.RunWorkerAsync(wadInfo); + if (cmt.ShowDialog() == DialogResult.OK) + { + try + { + WadCreationInfo wadInfo = new WadCreationInfo(); + wadInfo.outFile = TempPath + "SendToWii.wad"; + wadInfo.nandLoader = (WadCreationInfo.NandLoader)cmbNandLoader.SelectedIndex; + wadInfo.sendToWii = true; + wadInfo.transmitProtocol = (TransmitProtocol)cmt.Protocol; + wadInfo.transmitIp = cmt.IPAddress; + wadInfo.transmitIos = int.Parse(cmt.IOS); - // @WiiCrazy: The WAD will be saved to >> TempTempPath + "SendToWii.wad" << - // here. Now a loop that waits for the BackgroundWorker to finish and then opens - // a new window (wiiload - window or whatever) ?! - // If it finishes successfully, the variable >> sendWadReady << will turn into 1, - // if it errors, it will turn into -1, as long as it's running it is 0. - - } - catch (Exception ex) - { - ErrorBox(ex.Message); + BackgroundWorker bwCreateWad = new BackgroundWorker(); + bwCreateWad.DoWork += new DoWorkEventHandler(bwCreateWad_DoWork); + bwCreateWad.ProgressChanged += new ProgressChangedEventHandler(bwCreateWad_ProgressChanged); + bwCreateWad.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwCreateWad_RunWorkerCompleted); + bwCreateWad.WorkerReportsProgress = true; + bwCreateWad.RunWorkerAsync(wadInfo); + } + catch (Exception ex) + { + ErrorBox(ex.Message); + } + } } } } @@ -2934,6 +2624,46 @@ namespace CustomizeMii } catch (Exception ex) { ErrorBox(ex.Message); } } + else if (cmSender.OwnerItem == tsExtractBrl) + { + try + { + FolderBrowserDialog fbd = new FolderBrowserDialog(); + fbd.Description = "Select the path where the files will be extracted to."; + + if (fbd.ShowDialog() == DialogResult.OK) + { + if (cmSender == cmExtractBrlyt || cmSender == cmExtractBothBrl) + { + //Extract brlyts + string[] bannerFiles = Directory.GetFiles(GetCurBannerPath() + "blyt", "*.brlyt"); + string[] iconFiles = Directory.GetFiles(GetCurIconPath() + "blyt", "*.brlyt"); + + foreach (string thisFile in bannerFiles) + File.Copy(thisFile, fbd.SelectedPath + "\\" + Path.GetFileName(thisFile),true); + + foreach (string thisFile in iconFiles) + File.Copy(thisFile, fbd.SelectedPath + "\\" + Path.GetFileName(thisFile), true); + } + + if (cmSender == cmExtractBothBrl || cmSender == cmExtractBrlan) + { + //Extract brlans + string[] bannerFiles = Directory.GetFiles(GetCurBannerPath() + "anim", "*.brlan"); + string[] iconFiles = Directory.GetFiles(GetCurIconPath() + "anim", "*.brlan"); + + foreach (string thisFile in bannerFiles) + File.Copy(thisFile, fbd.SelectedPath + "\\" + Path.GetFileName(thisFile), true); + + foreach (string thisFile in iconFiles) + File.Copy(thisFile, fbd.SelectedPath + "\\" + Path.GetFileName(thisFile), true); + } + + InfoBox("Extracted files successfully!"); + } + } + catch (Exception ex) { ErrorBox(ex.Message); } + } else //DOL { try @@ -3163,5 +2893,49 @@ namespace CustomizeMii ErrorBox(ex.Message); } } + + private void llbTranslateChannel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (!tbAllLanguages.Text.ToLower().Contains("channel")) + { + tbAllLanguages.Focus(); + tbAllLanguages.SelectAll(); + return; + } + + string tempText = tbAllLanguages.Text; + int startIndex = tempText.ToLower().IndexOf("channel"); + + try + { + tbEnglish.Text = tempText.Remove(startIndex, 7).Insert(startIndex, "Channel"); + tbJapanese.Text = tempText.Remove(startIndex, 7).Insert(startIndex, "チャンネル"); + tbGerman.Text = tempText.Remove(startIndex, 7).Insert(startIndex, "Kanal"); + tbDutch.Text = tempText.Remove(startIndex, 7).Insert(startIndex, "Kanaal"); + + if (tempText[startIndex - 1] != ' ') tbFrench.Text = tempText.Remove(startIndex, 7).Insert(0, "Chaîne "); + else tbFrench.Text = tempText.Remove(startIndex - 1, 8).Insert(0, "Chaîne "); + if (tempText[startIndex - 1] != ' ') tbSpanish.Text = tempText.Remove(startIndex, 7).Insert(0, "Canal "); + else tbSpanish.Text = tempText.Remove(startIndex - 1, 8).Insert(0, "Canal "); + if (tempText[startIndex - 1] != ' ') tbItalian.Text = tempText.Remove(startIndex, 7).Insert(0, "Canale "); + else tbItalian.Text = tempText.Remove(startIndex - 1, 8).Insert(0, "Canale "); + + tbAllLanguages.Text = string.Empty; + } + catch (Exception ex) + { + tbAllLanguages.Text = tempText; + + tbEnglish.Text = string.Empty; + tbJapanese.Text = string.Empty; + tbGerman.Text = string.Empty; + tbFrench.Text = string.Empty; + tbSpanish.Text = string.Empty; + tbItalian.Text = string.Empty; + tbDutch.Text = string.Empty; + + ErrorBox(ex.Message); + } + } } } diff --git a/CustomizeMii/CustomizeMii_PrivateFunctions.cs b/CustomizeMii/CustomizeMii_PrivateFunctions.cs index 9977b09..1110d4d 100644 --- a/CustomizeMii/CustomizeMii_PrivateFunctions.cs +++ b/CustomizeMii/CustomizeMii_PrivateFunctions.cs @@ -1,4 +1,21 @@ -using System; +/* This file is part of CustomizeMii + * Copyright (C) 2009 Leathl + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using System; using System.Windows.Forms; using System.ComponentModel; using System.IO; @@ -8,6 +25,334 @@ namespace CustomizeMii { partial class CustomizeMii_Main { + private void FixTpls() + { + string[] bannerTpls = Directory.GetFiles(GetCurBannerPath() + "timg\\", "*.tpl"); + string[] iconTpls = Directory.GetFiles(GetCurIconPath() + "timg\\", "*.tpl"); + + foreach (string thisTpl in bannerTpls) + Wii.TPL.FixFilter(thisTpl); + + foreach (string thisTpl in iconTpls) + Wii.TPL.FixFilter(thisTpl); + } + + private void EnableControls(object sender, EventArgs e) + { + for (int i = 0; i < tabControl.TabCount; i++) + { + if (tabControl.TabPages[i] != tabSource) + { + foreach (Control Ctrl in tabControl.TabPages[i].Controls) + { + if (Ctrl is Button) Ctrl.Enabled = true; + else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = true; + else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = true; + else if (Ctrl is ComboBox) Ctrl.Enabled = true; + else if (Ctrl is LinkLabel && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = true; + } + } + } + } + + private void DisableControls(object sender, EventArgs e) + { + for (int i = 0; i < tabControl.TabCount; i++) + { + if (tabControl.TabPages[i] != tabSource) + { + foreach (Control Ctrl in tabControl.TabPages[i].Controls) + { + if (Ctrl is Button) Ctrl.Enabled = false; + else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = false; + else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = false; + else if (Ctrl is ComboBox) Ctrl.Enabled = false; + else if (Ctrl is LinkLabel && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = false; + } + } + } + } + + private Image ResizeImage(Image img, int x, int y) + { + Image newimage = new Bitmap(x, y); + using (Graphics gfx = Graphics.FromImage(newimage)) + { + gfx.DrawImage(img, 0, 0, x, y); + } + return newimage; + } + + private string GetCurBannerPath() + { + if (string.IsNullOrEmpty(BannerReplace)) + return TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\"; + else + return TempBannerPath + "arc\\"; + } + + private string GetCurIconPath() + { + if (string.IsNullOrEmpty(IconReplace)) + return TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\"; + else + return TempIconPath + "arc\\"; + } + + private void SetText(TextBox tb, string text) + { + SetTextInvoker invoker = new SetTextInvoker(this.SetText); + this.Invoke(invoker, text, tb); + } + + private void SetText(string text, TextBox tb) + { + tb.Text = text; + } + + private void SetLabel(Label lb, string text) + { + SetLabelInvoker invoker = new SetLabelInvoker(this.SetLabel); + this.Invoke(invoker, text, lb); + } + + private void SetLabel(string text, Label lb) + { + lb.Text = text; + } + + private void AddBannerTpls(object sender, EventArgs e) + { + try + { + string[] BannerTpls; + if (string.IsNullOrEmpty(BannerReplace)) + BannerTpls = Directory.GetFiles(TempUnpackBannerTplPath); + else + BannerTpls = Directory.GetFiles(TempBannerPath + "arc\\timg"); + + AddBannerTpls(BannerTpls); + } + catch { } + } + + private void AddIconTpls(object sender, EventArgs e) + { + try + { + string[] IconTpls; + if (string.IsNullOrEmpty(IconReplace)) + IconTpls = Directory.GetFiles(TempUnpackIconTplPath); + else + IconTpls = Directory.GetFiles(TempIconPath + "arc\\timg"); + + AddIconTpls(IconTpls); + } + catch { } + } + + private void AddBannerTpls(string[] tpls) + { + if (tpls.Length > 0) + { + lbxBannerTpls.Items.Clear(); + BannerTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < tpls.Length; i++) + { + if (BannerTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1))) + lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)"); + else + lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)); + } + } + } + + private void AddIconTpls(string[] tpls) + { + if (tpls.Length > 0) + { + lbxIconTpls.Items.Clear(); + IconTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < tpls.Length; i++) + { + if (IconTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1))) + lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)"); + else + lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)); + } + } + } + + private void AddBrlyts(object sender, EventArgs e) + { + try + { + string[] BannerBrlyt; + if (string.IsNullOrEmpty(BannerReplace)) + BannerBrlyt = Directory.GetFiles(TempUnpackBannerBrlytPath); + else + BannerBrlyt = Directory.GetFiles(TempBannerPath + "arc\\blyt"); + + string[] IconBrlyt; + if (string.IsNullOrEmpty(IconReplace)) + IconBrlyt = Directory.GetFiles(TempUnpackIconBrlytPath); + else + IconBrlyt = Directory.GetFiles(TempIconPath + "arc\\blyt"); + + AddBannerBrlyt(BannerBrlyt); + AddIconBrlyt(IconBrlyt); + + if (lbxBrlytBanner.SelectedIndex == -1 && lbxBrlytIcon.SelectedIndex == -1) + { + if (lbxBrlytBanner.Items.Count > 0) lbxBrlytBanner.SelectedIndex = 0; + else if (lbxBrlytIcon.Items.Count > 0) lbxBrlytIcon.SelectedIndex = 0; + } + } + catch { } + } + + private void AddBrlans(object sender, EventArgs e) + { + try + { + string[] BannerBrlan; + if (string.IsNullOrEmpty(BannerReplace)) + BannerBrlan = Directory.GetFiles(TempUnpackBannerBrlanPath); + else + BannerBrlan = Directory.GetFiles(TempBannerPath + "arc\\anim"); + + string[] IconBrlan; + if (string.IsNullOrEmpty(IconReplace)) + IconBrlan = Directory.GetFiles(TempUnpackIconBrlanPath); + else + IconBrlan = Directory.GetFiles(TempIconPath + "arc\\anim"); + + AddBannerBrlan(BannerBrlan); + AddIconBrlan(IconBrlan); + + if (lbxBrlanBanner.SelectedIndex == -1 && lbxBrlanIcon.SelectedIndex == -1) + { + if (lbxBrlanBanner.Items.Count > 0) lbxBrlanBanner.SelectedIndex = 0; + else if (lbxBrlanIcon.Items.Count > 0) lbxBrlanIcon.SelectedIndex = 0; + } + } + catch { } + } + + private void AddBannerBrlyt(string[] brlyt) + { + if (brlyt.Length > 0) + { + lbxBrlytBanner.Items.Clear(); + BannerBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < brlyt.Length; i++) + { + lbxBrlytBanner.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1)); + } + } + } + + private void AddIconBrlyt(string[] brlyt) + { + if (brlyt.Length > 0) + { + lbxBrlytIcon.Items.Clear(); + IconBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < brlyt.Length; i++) + { + lbxBrlytIcon.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1)); + } + } + } + + private void AddBannerBrlan(string[] brlan) + { + if (brlan.Length > 0) + { + lbxBrlanBanner.Items.Clear(); + BannerBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < brlan.Length; i++) + { + lbxBrlanBanner.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1)); + } + } + } + + private void AddIconBrlan(string[] brlan) + { + if (brlan.Length > 0) + { + lbxBrlanIcon.Items.Clear(); + IconBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1); + + for (int i = 0; i < brlan.Length; i++) + { + lbxBrlanIcon.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1)); + } + } + } + + private void ErrorBox(string message) + { + BoxInvoker invoker = new BoxInvoker(this.errorBox); + this.Invoke(invoker, new object[] { message }); + } + + private void errorBox(string message) + { + MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + private void InfoBox(string message) + { + BoxInvoker invoker = new BoxInvoker(this.infoBox); + this.Invoke(invoker, new object[] { message }); + } + + private void infoBox(string message) + { + MessageBox.Show(message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + private void MakeBannerTplsTransparent() + { + foreach (string thisTpl in lbxBannerTpls.Items) + { + if (thisTpl.EndsWith("(Transparent)")) + { + string Tpl = GetCurBannerPath() + "timg\\" + thisTpl.Replace(" (Transparent)", string.Empty); + byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl); + int Width = Wii.TPL.GetTextureWidth(TplArray); + int Height = Wii.TPL.GetTextureHeight(TplArray); + + Image Img = new Bitmap(Width, Height); + Wii.TPL.ConvertToTPL(Img, Tpl, 5); + } + } + } + + private void MakeIconTplsTransparent() + { + foreach (string thisTpl in lbxIconTpls.Items) + { + if (thisTpl.EndsWith("(Transparent)")) + { + string Tpl = GetCurIconPath() + "timg\\" + thisTpl.Replace(" (Transparent)", string.Empty); + byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl); + int Width = Wii.TPL.GetTextureWidth(TplArray); + int Height = Wii.TPL.GetTextureHeight(TplArray); + + Image Img = new Bitmap(Width, Height); + Wii.TPL.ConvertToTPL(Img, Tpl, 5); + } + } + } + private void AddTpl(ListBox lbx) { AddTpl(lbx, null); @@ -92,7 +437,7 @@ namespace CustomizeMii private void LoadChannel(string inputFile) { - if (this.Mono) CommonKeyCheck(); + if (Mono) CommonKeyCheck(); if (pbProgress.Value == 100) { diff --git a/CustomizeMii/CustomizeMii_Structs.cs b/CustomizeMii/CustomizeMii_Structs.cs index d4775e7..24946ba 100644 --- a/CustomizeMii/CustomizeMii_Structs.cs +++ b/CustomizeMii/CustomizeMii_Structs.cs @@ -14,9 +14,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - - namespace CustomizeMii + +namespace CustomizeMii { + public struct TransmitInfo + { + public bool usedCompression; + public double compressionRatio; + public double transmittedLength; + public int timeElapsed; + } + + public enum TransmitProtocol : int + { + JODI = 0, + HAXX = 1 + } + public struct BnsConversionInfo { public enum LoopType @@ -43,6 +57,10 @@ public string outFile; public NandLoader nandLoader; public bool sendToWii; + public TransmitProtocol transmitProtocol; + public string transmitIp; + public int transmitIos; + public bool saveAfterTransmit; } public struct Progress diff --git a/CustomizeMii/CustomizeMii_Transmit.Designer.cs b/CustomizeMii/CustomizeMii_Transmit.Designer.cs new file mode 100644 index 0000000..f399f19 --- /dev/null +++ b/CustomizeMii/CustomizeMii_Transmit.Designer.cs @@ -0,0 +1,168 @@ +/* This file is part of CustomizeMii + * Copyright (C) 2009 Leathl + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +namespace CustomizeMii +{ + partial class CustomizeMii_Transmit + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.lbProtocol = new System.Windows.Forms.Label(); + this.cmbProtocol = new System.Windows.Forms.ComboBox(); + this.lbIP = new System.Windows.Forms.Label(); + this.tbIP = new System.Windows.Forms.TextBox(); + this.lbIOS = new System.Windows.Forms.Label(); + this.tbIOS = new System.Windows.Forms.TextBox(); + this.btnTransmit = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lbProtocol + // + this.lbProtocol.AutoSize = true; + this.lbProtocol.Location = new System.Drawing.Point(12, 16); + this.lbProtocol.Name = "lbProtocol"; + this.lbProtocol.Size = new System.Drawing.Size(49, 13); + this.lbProtocol.TabIndex = 0; + this.lbProtocol.Text = "Protocol:"; + // + // cmbProtocol + // + this.cmbProtocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbProtocol.FormattingEnabled = true; + this.cmbProtocol.Items.AddRange(new object[] { + "Homebrewchannel 1.0.5+ (JODI)", + "Homebrewchannel -1.0.4 (HAXX)"}); + this.cmbProtocol.Location = new System.Drawing.Point(67, 13); + this.cmbProtocol.Name = "cmbProtocol"; + this.cmbProtocol.Size = new System.Drawing.Size(194, 21); + this.cmbProtocol.TabIndex = 1; + // + // lbIP + // + this.lbIP.AutoSize = true; + this.lbIP.Location = new System.Drawing.Point(12, 48); + this.lbIP.Name = "lbIP"; + this.lbIP.Size = new System.Drawing.Size(61, 13); + this.lbIP.TabIndex = 2; + this.lbIP.Text = "IP Address:"; + // + // tbIP + // + this.tbIP.Location = new System.Drawing.Point(79, 45); + this.tbIP.Name = "tbIP"; + this.tbIP.Size = new System.Drawing.Size(182, 20); + this.tbIP.TabIndex = 3; + // + // lbIOS + // + this.lbIOS.AutoSize = true; + this.lbIOS.Location = new System.Drawing.Point(12, 78); + this.lbIOS.Name = "lbIOS"; + this.lbIOS.Size = new System.Drawing.Size(127, 13); + this.lbIOS.TabIndex = 4; + this.lbIOS.Text = "IOS to use for installation:"; + // + // tbIOS + // + this.tbIOS.Location = new System.Drawing.Point(145, 75); + this.tbIOS.Name = "tbIOS"; + this.tbIOS.Size = new System.Drawing.Size(116, 20); + this.tbIOS.TabIndex = 5; + this.tbIOS.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbIOS_KeyPress); + // + // btnTransmit + // + this.btnTransmit.Location = new System.Drawing.Point(15, 109); + this.btnTransmit.Name = "btnTransmit"; + this.btnTransmit.Size = new System.Drawing.Size(120, 23); + this.btnTransmit.TabIndex = 6; + this.btnTransmit.Text = "Transmit"; + this.btnTransmit.UseVisualStyleBackColor = true; + this.btnTransmit.Click += new System.EventHandler(this.btnTransmit_Click); + // + // btnCancel + // + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(141, 109); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(120, 23); + this.btnCancel.TabIndex = 6; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // CustomizeMii_Transmit + // + this.AcceptButton = this.btnTransmit; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(273, 145); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnTransmit); + this.Controls.Add(this.tbIOS); + this.Controls.Add(this.lbIOS); + this.Controls.Add(this.tbIP); + this.Controls.Add(this.lbIP); + this.Controls.Add(this.cmbProtocol); + this.Controls.Add(this.lbProtocol); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "CustomizeMii_Transmit"; + this.Text = "CustomizeMii_Transmit"; + this.Load += new System.EventHandler(this.CustomizeMii_Transmit_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lbProtocol; + private System.Windows.Forms.ComboBox cmbProtocol; + private System.Windows.Forms.Label lbIP; + private System.Windows.Forms.TextBox tbIP; + private System.Windows.Forms.Label lbIOS; + private System.Windows.Forms.TextBox tbIOS; + private System.Windows.Forms.Button btnTransmit; + private System.Windows.Forms.Button btnCancel; + } +} \ No newline at end of file diff --git a/CustomizeMii/CustomizeMii_Transmit.cs b/CustomizeMii/CustomizeMii_Transmit.cs new file mode 100644 index 0000000..57afe0d --- /dev/null +++ b/CustomizeMii/CustomizeMii_Transmit.cs @@ -0,0 +1,91 @@ +/* This file is part of CustomizeMii + * Copyright (C) 2009 Leathl + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using System.Text.RegularExpressions; +using System.Windows.Forms; + +namespace CustomizeMii +{ + public partial class CustomizeMii_Transmit : Form + { + public int Protocol { get { return cmbProtocol.SelectedIndex; } set { cmbProtocol.SelectedIndex = value; } } + public string IPAddress { get { return tbIP.Text; } set { tbIP.Text = value; } } + public string IOS { get { return tbIOS.Text; } set { tbIOS.Text = value; } } + + public CustomizeMii_Transmit() + { + InitializeComponent(); + this.CenterToParent(); + } + + private void CustomizeMii_Transmit_Load(object sender, System.EventArgs e) + { + try + { + cmbProtocol.SelectedIndex = Properties.Settings.Default.Protocol; + tbIP.Text = Properties.Settings.Default.IP; + tbIOS.Text = Properties.Settings.Default.IOS; + } + catch { } + } + + private void btnCancel_Click(object sender, System.EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + + private void btnTransmit_Click(object sender, System.EventArgs e) + { + string IpPattern = @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + + @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + + @"([01]?\d\d?|2[0-4]\d|25[0-5])\." + + @"([01]?\d\d?|2[0-4]\d|25[0-5])"; + Regex IpAdress = new Regex(IpPattern); + + if (IpAdress.IsMatch(tbIP.Text)) + { + int tmp = int.Parse(tbIOS.Text); + if (tmp > 0 && tmp < 255) + { + Properties.Settings.Default.Protocol = cmbProtocol.SelectedIndex; + Properties.Settings.Default.IP = tbIP.Text; + Properties.Settings.Default.IOS = tbIOS.Text; + Properties.Settings.Default.Save(); + + this.DialogResult = DialogResult.OK; + this.Close(); + } + else + { + tbIOS.Focus(); + tbIOS.SelectAll(); + } + } + else + { + tbIP.Focus(); + tbIP.SelectAll(); + } + } + + private void tbIOS_KeyPress(object sender, KeyPressEventArgs e) + { + e.Handled = !char.IsDigit(e.KeyChar) && e.KeyChar != '\b'; + } + } +} diff --git a/CustomizeMii/CustomizeMii_Transmit.resx b/CustomizeMii/CustomizeMii_Transmit.resx new file mode 100644 index 0000000..ff31a6d --- /dev/null +++ b/CustomizeMii/CustomizeMii_Transmit.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CustomizeMii/CustomizeMii_zlib.cs b/CustomizeMii/CustomizeMii_zlib.cs new file mode 100644 index 0000000..4bf2508 --- /dev/null +++ b/CustomizeMii/CustomizeMii_zlib.cs @@ -0,0 +1,59 @@ +/* This file is part of TransmitMii + * Copyright (C) 2009 Leathl + * + * TransmitMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * TransmitMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +using System; +using System.IO; +using System.Runtime.InteropServices; + +namespace TransmitMii +{ + public static class zlib + { + public enum ZLibError : int + { + Z_OK = 0, + Z_STREAM_END = 1, + Z_NEED_DICT = 2, + Z_ERRNO = (-1), + Z_STREAM_ERROR = (-2), + Z_DATA_ERROR = (-3), + Z_MEM_ERROR = (-4), + Z_BUF_ERROR = (-5), + Z_VERSION_ERROR = (-6) + } + + [DllImport("zlib1.dll")] + private static extern ZLibError compress2(byte[] dest, ref int destLength, byte[] source, int sourceLength, int level); + + public static byte[] Compress(byte[] inFile) + { + ZLibError err; + byte[] outFile = new byte[inFile.Length]; + int outLength = -1; + + err = compress2(outFile, ref outLength, inFile, inFile.Length, 6); + + if (err == ZLibError.Z_OK && outLength > -1) + { + Array.Resize(ref outFile, outLength); + return outFile; + } + else + throw new Exception("An error occured while compressing! Code: " + err.ToString()); + } + } +} diff --git a/CustomizeMii/Properties/Resources.Designer.cs b/CustomizeMii/Properties/Resources.Designer.cs index b220131..2e3a4cb 100644 --- a/CustomizeMii/Properties/Resources.Designer.cs +++ b/CustomizeMii/Properties/Resources.Designer.cs @@ -1,4 +1,21 @@ -//------------------------------------------------------------------------------ +/* This file is part of CustomizeMii + * Copyright (C) 2009 Leathl + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +//------------------------------------------------------------------------------ // // Dieser Code wurde von einem Tool generiert. // Laufzeitversion:2.0.50727.4927 diff --git a/CustomizeMii/Properties/Settings.Designer.cs b/CustomizeMii/Properties/Settings.Designer.cs index c26659c..85009d5 100644 --- a/CustomizeMii/Properties/Settings.Designer.cs +++ b/CustomizeMii/Properties/Settings.Designer.cs @@ -17,31 +17,63 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:2.0.50727.4927 +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:2.0.50727.4927 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. // //------------------------------------------------------------------------------ -namespace CustomizeMii.Properties -{ - - +namespace CustomizeMii.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int Protocol { + get { + return ((int)(this["Protocol"])); + } + set { + this["Protocol"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string IP { + get { + return ((string)(this["IP"])); + } + set { + this["IP"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string IOS { + get { + return ((string)(this["IOS"])); + } + set { + this["IOS"] = value; + } + } } } diff --git a/CustomizeMii/Properties/Settings.settings b/CustomizeMii/Properties/Settings.settings index abf36c5..a5ec023 100644 --- a/CustomizeMii/Properties/Settings.settings +++ b/CustomizeMii/Properties/Settings.settings @@ -1,7 +1,15 @@  - - - - - - + + + + + 0 + + + + + + + + + \ No newline at end of file diff --git a/CustomizeMii/Readme.txt b/CustomizeMii/Readme.txt index 8aa5eed..dac638b 100644 --- a/CustomizeMii/Readme.txt +++ b/CustomizeMii/Readme.txt @@ -10,12 +10,14 @@ Thanks to icefire / Xuzz for the basic idea of this Application! Changelog: Version 2.1 + - Added CustomizeMii Installer (by WiiCrazy / I.R.on) + - Fixed rough edges (artifacts) on images (will be fixed automatically) - Replaced the TPL preview window with the one from ShowMiiWads for easier handling - Added loop prelistening to the BNS conversion window (only for wave files) - Added drag & drop ability cause the file dialogs kept bothering me - Improvement in startup speed (thanks shadow1643) - - Added Unix timestamp as footer (interesting to know when channels were created, huh?) - - Little improvements + - Added creation/last edited time (only for CustomizeMii 2.1+ channels) + - Little improvements and fixes Version 2.01 - Base WAD downloading works again @@ -69,6 +71,7 @@ The author can't be held responsible for any damages arising from the use of it. ----------------------------------------------------------------------------------------- Thanks: +WiiCrazy / I.R.on for CustomizeMii Installer Xuzz for his idea and hard work Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py SquidMan for Zetsubou diff --git a/CustomizeMii/Wii.cs b/CustomizeMii/Wii.cs index 6b65b12..81532f4 100644 --- a/CustomizeMii/Wii.cs +++ b/CustomizeMii/Wii.cs @@ -683,49 +683,6 @@ namespace Wii { string[] titles = new string[7]; - //Detection from footer is turned off, cause the footer - //can be easily edited and thus the titles in it could be simply wrong - - //int footer = GetFooterSize(wadfile); - //if (footer > 0) - //{ - // int footerpos = wadfile.Length - footer; - // int count = 0; - // int imetpos = 0; - - // if ((wadfile.Length - (wadfile.Length - footer)) < 250) return new string[7]; - - // for (int z = 0; z < 250; z++) - // { - // if (Convert.ToChar(wadfile[footerpos + z]) == 'I') - // if (Convert.ToChar(wadfile[footerpos + z + 1]) == 'M') - // if (Convert.ToChar(wadfile[footerpos + z + 2]) == 'E') - // if (Convert.ToChar(wadfile[footerpos + z + 3]) == 'T') - // { - // imetpos = footerpos + z; - // break; - // } - // } - - // int jappos = imetpos + 29; - - // for (int i = jappos; i < jappos + 588; i += 84) - // { - // for (int j = 0; j < 40; j += 2) - // { - // if (wadfile[i + j] != 0x00) - // { - // char temp = Convert.ToChar(wadfile[i + j]); - // titles[count] += temp; - // } - // } - - // count++; - // } - - // return titles; - //} - string[,] conts = GetContentInfo(wadfile); byte[] titlekey = GetTitleKey(wadfile); int nullapp = 0; @@ -741,36 +698,56 @@ namespace Wii if (contenthandle.Length < 400) return new string[7]; - for (int z = 0; z < 400; z++) + if (!channeltype.Contains("Downloaded")) { - if (Convert.ToChar(contenthandle[z]) == 'I') - if (Convert.ToChar(contenthandle[z + 1]) == 'M') - if (Convert.ToChar(contenthandle[z + 2]) == 'E') - if (Convert.ToChar(contenthandle[z + 3]) == 'T') - { - imetpos = z; - break; - } - } - - int jappos = imetpos + 29; - int count = 0; - - for (int i = jappos; i < jappos + 588; i += 84) - { - for (int j = 0; j < 40; j += 2) + for (int z = 0; z < 400; z++) { - if (contenthandle[i + j] != 0x00) + if (Convert.ToChar(contenthandle[z]) == 'I') + if (Convert.ToChar(contenthandle[z + 1]) == 'M') + if (Convert.ToChar(contenthandle[z + 2]) == 'E') + if (Convert.ToChar(contenthandle[z + 3]) == 'T') + { + imetpos = z; + break; + } + } + + int jappos = imetpos + 29; + int count = 0; + + for (int i = jappos; i < jappos + 588; i += 84) + { + for (int j = 0; j < 40; j += 2) { - char temp = BitConverter.ToChar(new byte[] { contenthandle[i + j], contenthandle[i + j - 1] }, 0); - titles[count] += temp; + if (contenthandle[i + j] != 0x00) + { + char temp = BitConverter.ToChar(new byte[] { contenthandle[i + j], contenthandle[i + j - 1] }, 0); + titles[count] += temp; + } + } + + count++; + } + + return titles; + } + else + { + //DLC's + for (int j = 97; j < 97 + 40; j += 2) + { + if (contenthandle[j] != 0x00) + { + char temp = BitConverter.ToChar(new byte[] { contenthandle[j], contenthandle[j - 1] }, 0); + titles[0] += temp; } } - count++; - } + for (int i = 1; i < 7; i++) + titles[i] = titles[0]; - return titles; + return titles; + } } else return new string[7]; } @@ -1557,45 +1534,45 @@ namespace Wii if (japchars.Length > count) { contenthandle[x + 29] = BitConverter.GetBytes(japchars[count])[0]; - contenthandle[x + 30] = BitConverter.GetBytes(japchars[count])[1]; + contenthandle[x + 28] = BitConverter.GetBytes(japchars[count])[1]; } - else { contenthandle[x + 29] = 0x00; } + else { contenthandle[x + 29] = 0x00; contenthandle[x + 28] = 0x00; } if (engchars.Length > count) { contenthandle[x + 29 + 84] = BitConverter.GetBytes(engchars[count])[0]; contenthandle[x + 29 + 84 - 1] = BitConverter.GetBytes(engchars[count])[1]; } - else { contenthandle[x + 29 + 84] = 0x00; } + else { contenthandle[x + 29 + 84] = 0x00; contenthandle[x + 29 + 84 - 1] = 0x00; } if (gerchars.Length > count) { contenthandle[x + 29 + 84 * 2] = BitConverter.GetBytes(gerchars[count])[0]; contenthandle[x + 29 + 84 * 2 - 1] = BitConverter.GetBytes(gerchars[count])[1]; } - else { contenthandle[x + 29 + 84 * 2] = 0x00; } + else { contenthandle[x + 29 + 84 * 2] = 0x00; contenthandle[x + 29 + 84 * 2 - 1] = 0x00; } if (frachars.Length > count) { contenthandle[x + 29 + 84 * 3] = BitConverter.GetBytes(frachars[count])[0]; contenthandle[x + 29 + 84 * 3 - 1] = BitConverter.GetBytes(frachars[count])[1]; } - else { contenthandle[x + 29 + 84 * 3] = 0x00; } + else { contenthandle[x + 29 + 84 * 3] = 0x00; contenthandle[x + 29 + 84 * 3 - 1] = 0x00; } if (spachars.Length > count) { contenthandle[x + 29 + 84 * 4] = BitConverter.GetBytes(spachars[count])[0]; contenthandle[x + 29 + 84 * 4 - 1] = BitConverter.GetBytes(spachars[count])[1]; } - else { contenthandle[x + 29 + 84 * 4] = 0x00; } + else { contenthandle[x + 29 + 84 * 4] = 0x00; contenthandle[x + 29 + 84 * 4 - 1] = 0x00; } if (itachars.Length > count) { contenthandle[x + 29 + 84 * 5] = BitConverter.GetBytes(itachars[count])[0]; contenthandle[x + 29 + 84 * 5 - 1] = BitConverter.GetBytes(itachars[count])[1]; } - else { contenthandle[x + 29 + 84 * 5] = 0x00; } + else { contenthandle[x + 29 + 84 * 5] = 0x00; contenthandle[x + 29 + 84 * 5 - 1] = 0x00; } if (dutchars.Length > count) { contenthandle[x + 29 + 84 * 6] = BitConverter.GetBytes(dutchars[count])[0]; contenthandle[x + 29 + 84 * 6 - 1] = BitConverter.GetBytes(dutchars[count])[1]; } - else { contenthandle[x + 29 + 84 * 6] = 0x00; } + else { contenthandle[x + 29 + 84 * 6] = 0x00; contenthandle[x + 29 + 84 * 6 - 1] = 0x00; } count++; } @@ -4232,6 +4209,30 @@ namespace Wii public class TPL { + /// + /// Fixes rough edges (artifacts), if necessary + /// + /// + public static void FixFilter(string tplFile) + { + using (FileStream fs = new FileStream(tplFile, FileMode.Open)) + { + fs.Seek(41, SeekOrigin.Begin); + if (fs.ReadByte() == 0x01) + { + fs.Seek(-1, SeekOrigin.Current); + fs.Write(new byte[] { 0x00, 0x00, 0x01 }, 0, 3); + } + + fs.Seek(45, SeekOrigin.Begin); + if (fs.ReadByte() == 0x01) + { + fs.Seek(-1, SeekOrigin.Current); + fs.Write(new byte[] { 0x00, 0x00, 0x01 }, 0, 3); + } + } + } + /// /// Converts a Tpl to a Bitmap /// @@ -4956,7 +4957,7 @@ namespace Wii UInt16 texwidth = (UInt16)img.Width; UInt32 texformat; UInt32 texdataoffset = 0x40; - byte[] rest = new byte[] { 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 }; + byte[] rest = new byte[] { 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 }; //This should do it for our needs.. rest includes padding switch (format) @@ -5648,9 +5649,13 @@ namespace Wii { string wonum = tpls[i].Remove(tpls[i].LastIndexOf('.') - 1) + "00.tpl"; string wonum2 = tpls[i].Remove(tpls[i].LastIndexOf('.') - 2) + "00.tpl"; + string wonum3 = tpls[i].Remove(tpls[i].LastIndexOf('.') - 1) + "01.tpl"; + string wonum4 = tpls[i].Remove(tpls[i].LastIndexOf('.') - 2) + "01.tpl"; if (Tools.StringExistsInStringArray(wonum, brlytTpls) == false && - Tools.StringExistsInStringArray(wonum2, brlytTpls) == false) + Tools.StringExistsInStringArray(wonum2, brlytTpls) == false && + Tools.StringExistsInStringArray(wonum3, brlytTpls) == false && + Tools.StringExistsInStringArray(wonum4, brlytTpls) == false) { unuseds.Add(tpls[i]); missing = true; diff --git a/CustomizeMii/app.config b/CustomizeMii/app.config new file mode 100644 index 0000000..385be22 --- /dev/null +++ b/CustomizeMii/app.config @@ -0,0 +1,21 @@ + + + + +
+ + + + + + 0 + + + + + + + + + + \ No newline at end of file diff --git a/CustomizeMii/zlib1.dll b/CustomizeMii/zlib1.dll new file mode 100644 index 0000000000000000000000000000000000000000..1cf8a476e5a1c6df7632d973b02bb5199f7c4698 GIT binary patch literal 59904 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�h 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 literal 0 HcmV?d00001 diff --git a/Helpers/Helpers.csproj b/CustomizeMiiInstaller/CustomizeMiiInstaller.csproj similarity index 91% rename from Helpers/Helpers.csproj rename to CustomizeMiiInstaller/CustomizeMiiInstaller.csproj index 65a6475..9f787c2 100644 --- a/Helpers/Helpers.csproj +++ b/CustomizeMiiInstaller/CustomizeMiiInstaller.csproj @@ -8,8 +8,8 @@ {475F3ADF-B529-449F-89DA-BA5E8BE15DD5} Library Properties - Helpers - Helpers + CustomizeMiiInstaller + CustomizeMiiInstaller v2.0 512 @@ -33,7 +33,6 @@ - diff --git a/Helpers/InstallerHelper.cs b/CustomizeMiiInstaller/InstallerHelper.cs similarity index 79% rename from Helpers/InstallerHelper.cs rename to CustomizeMiiInstaller/InstallerHelper.cs index 5d7fc79..df1f01d 100644 --- a/Helpers/InstallerHelper.cs +++ b/CustomizeMiiInstaller/InstallerHelper.cs @@ -1,11 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Text; +/* This file is part of CustomizeMii + * Copyright (C) 2009 WiiCrazy / I.R.on + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + using System.IO; using System.IO.Compression; using System.Security.Cryptography; -namespace Helpers +namespace CustomizeMiiInstaller { public class InstallerHelper { diff --git a/Helpers/Properties/AssemblyInfo.cs b/CustomizeMiiInstaller/Properties/AssemblyInfo.cs similarity index 58% rename from Helpers/Properties/AssemblyInfo.cs rename to CustomizeMiiInstaller/Properties/AssemblyInfo.cs index c6bff99..b214ada 100644 --- a/Helpers/Properties/AssemblyInfo.cs +++ b/CustomizeMiiInstaller/Properties/AssemblyInfo.cs @@ -1,15 +1,32 @@ -using System.Reflection; +/* This file is part of CustomizeMii + * Copyright (C) 2009 WiiCrazy / I.R.on + * + * CustomizeMii is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CustomizeMii is distributed in the hope that it will be + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Helpers")] +[assembly: AssemblyTitle("CustomizeMiiInstaller")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Irduco")] -[assembly: AssemblyProduct("Helpers")] +[assembly: AssemblyProduct("CustomizeMiiInstaller")] [assembly: AssemblyCopyright("Copyright © Irduco 2010")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Helpers/Resources/CustomizeMiiInstaller.dol.z b/CustomizeMiiInstaller/Resources/CustomizeMiiInstaller.dol.z similarity index 100% rename from Helpers/Resources/CustomizeMiiInstaller.dol.z rename to CustomizeMiiInstaller/Resources/CustomizeMiiInstaller.dol.z diff --git a/CustomizeMiiInstaller/LICENSE.txt b/CustomizeMiiInstaller_Source/LICENSE.txt similarity index 100% rename from CustomizeMiiInstaller/LICENSE.txt rename to CustomizeMiiInstaller_Source/LICENSE.txt diff --git a/CustomizeMiiInstaller/Makefile b/CustomizeMiiInstaller_Source/Makefile similarity index 100% rename from CustomizeMiiInstaller/Makefile rename to CustomizeMiiInstaller_Source/Makefile diff --git a/CustomizeMiiInstaller/README.Orig.es.txt b/CustomizeMiiInstaller_Source/README.Orig.es.txt similarity index 100% rename from CustomizeMiiInstaller/README.Orig.es.txt rename to CustomizeMiiInstaller_Source/README.Orig.es.txt diff --git a/CustomizeMiiInstaller/README.Orig.txt b/CustomizeMiiInstaller_Source/README.Orig.txt similarity index 100% rename from CustomizeMiiInstaller/README.Orig.txt rename to CustomizeMiiInstaller_Source/README.Orig.txt diff --git a/CustomizeMiiInstaller/README.txt b/CustomizeMiiInstaller_Source/README.txt similarity index 100% rename from CustomizeMiiInstaller/README.txt rename to CustomizeMiiInstaller_Source/README.txt diff --git a/CustomizeMiiInstaller/data/background b/CustomizeMiiInstaller_Source/data/background similarity index 100% rename from CustomizeMiiInstaller/data/background rename to CustomizeMiiInstaller_Source/data/background diff --git a/CustomizeMiiInstaller/installer.pnproj b/CustomizeMiiInstaller_Source/installer.pnproj similarity index 100% rename from CustomizeMiiInstaller/installer.pnproj rename to CustomizeMiiInstaller_Source/installer.pnproj diff --git a/CustomizeMiiInstaller/installer.pnps b/CustomizeMiiInstaller_Source/installer.pnps similarity index 100% rename from CustomizeMiiInstaller/installer.pnps rename to CustomizeMiiInstaller_Source/installer.pnps diff --git a/CustomizeMiiInstaller/source/fat.c b/CustomizeMiiInstaller_Source/source/fat.c similarity index 100% rename from CustomizeMiiInstaller/source/fat.c rename to CustomizeMiiInstaller_Source/source/fat.c diff --git a/CustomizeMiiInstaller/source/fat.h b/CustomizeMiiInstaller_Source/source/fat.h similarity index 100% rename from CustomizeMiiInstaller/source/fat.h rename to CustomizeMiiInstaller_Source/source/fat.h diff --git a/CustomizeMiiInstaller/source/gui.c b/CustomizeMiiInstaller_Source/source/gui.c similarity index 100% rename from CustomizeMiiInstaller/source/gui.c rename to CustomizeMiiInstaller_Source/source/gui.c diff --git a/CustomizeMiiInstaller/source/gui.h b/CustomizeMiiInstaller_Source/source/gui.h similarity index 100% rename from CustomizeMiiInstaller/source/gui.h rename to CustomizeMiiInstaller_Source/source/gui.h diff --git a/CustomizeMiiInstaller/source/install.h b/CustomizeMiiInstaller_Source/source/install.h similarity index 100% rename from CustomizeMiiInstaller/source/install.h rename to CustomizeMiiInstaller_Source/source/install.h diff --git a/CustomizeMiiInstaller/source/libpng/png.h b/CustomizeMiiInstaller_Source/source/libpng/png.h similarity index 100% rename from CustomizeMiiInstaller/source/libpng/png.h rename to CustomizeMiiInstaller_Source/source/libpng/png.h diff --git a/CustomizeMiiInstaller/source/libpng/pngconf.h b/CustomizeMiiInstaller_Source/source/libpng/pngconf.h similarity index 100% rename from CustomizeMiiInstaller/source/libpng/pngconf.h rename to CustomizeMiiInstaller_Source/source/libpng/pngconf.h diff --git a/CustomizeMiiInstaller/source/libpng/pngu/pngu.c b/CustomizeMiiInstaller_Source/source/libpng/pngu/pngu.c similarity index 100% rename from CustomizeMiiInstaller/source/libpng/pngu/pngu.c rename to CustomizeMiiInstaller_Source/source/libpng/pngu/pngu.c diff --git a/CustomizeMiiInstaller/source/libpng/pngu/pngu.h b/CustomizeMiiInstaller_Source/source/libpng/pngu/pngu.h similarity index 100% rename from CustomizeMiiInstaller/source/libpng/pngu/pngu.h rename to CustomizeMiiInstaller_Source/source/libpng/pngu/pngu.h diff --git a/CustomizeMiiInstaller/source/menu.c b/CustomizeMiiInstaller_Source/source/menu.c similarity index 100% rename from CustomizeMiiInstaller/source/menu.c rename to CustomizeMiiInstaller_Source/source/menu.c diff --git a/CustomizeMiiInstaller/source/menu.h b/CustomizeMiiInstaller_Source/source/menu.h similarity index 100% rename from CustomizeMiiInstaller/source/menu.h rename to CustomizeMiiInstaller_Source/source/menu.h diff --git a/CustomizeMiiInstaller/source/restart.c b/CustomizeMiiInstaller_Source/source/restart.c similarity index 100% rename from CustomizeMiiInstaller/source/restart.c rename to CustomizeMiiInstaller_Source/source/restart.c diff --git a/CustomizeMiiInstaller/source/restart.h b/CustomizeMiiInstaller_Source/source/restart.h similarity index 100% rename from CustomizeMiiInstaller/source/restart.h rename to CustomizeMiiInstaller_Source/source/restart.h diff --git a/CustomizeMiiInstaller/source/sha1.c b/CustomizeMiiInstaller_Source/source/sha1.c similarity index 100% rename from CustomizeMiiInstaller/source/sha1.c rename to CustomizeMiiInstaller_Source/source/sha1.c diff --git a/CustomizeMiiInstaller/source/sha1.h b/CustomizeMiiInstaller_Source/source/sha1.h similarity index 100% rename from CustomizeMiiInstaller/source/sha1.h rename to CustomizeMiiInstaller_Source/source/sha1.h diff --git a/CustomizeMiiInstaller/source/stub.S b/CustomizeMiiInstaller_Source/source/stub.S similarity index 100% rename from CustomizeMiiInstaller/source/stub.S rename to CustomizeMiiInstaller_Source/source/stub.S diff --git a/CustomizeMiiInstaller/source/sys.c b/CustomizeMiiInstaller_Source/source/sys.c similarity index 100% rename from CustomizeMiiInstaller/source/sys.c rename to CustomizeMiiInstaller_Source/source/sys.c diff --git a/CustomizeMiiInstaller/source/sys.h b/CustomizeMiiInstaller_Source/source/sys.h similarity index 100% rename from CustomizeMiiInstaller/source/sys.h rename to CustomizeMiiInstaller_Source/source/sys.h diff --git a/CustomizeMiiInstaller/source/title.c b/CustomizeMiiInstaller_Source/source/title.c similarity index 100% rename from CustomizeMiiInstaller/source/title.c rename to CustomizeMiiInstaller_Source/source/title.c diff --git a/CustomizeMiiInstaller/source/title.h b/CustomizeMiiInstaller_Source/source/title.h similarity index 100% rename from CustomizeMiiInstaller/source/title.h rename to CustomizeMiiInstaller_Source/source/title.h diff --git a/CustomizeMiiInstaller/source/utils.h b/CustomizeMiiInstaller_Source/source/utils.h similarity index 100% rename from CustomizeMiiInstaller/source/utils.h rename to CustomizeMiiInstaller_Source/source/utils.h diff --git a/CustomizeMiiInstaller/source/video.c b/CustomizeMiiInstaller_Source/source/video.c similarity index 100% rename from CustomizeMiiInstaller/source/video.c rename to CustomizeMiiInstaller_Source/source/video.c diff --git a/CustomizeMiiInstaller/source/video.h b/CustomizeMiiInstaller_Source/source/video.h similarity index 100% rename from CustomizeMiiInstaller/source/video.h rename to CustomizeMiiInstaller_Source/source/video.h diff --git a/CustomizeMiiInstaller/source/wad-manager.c b/CustomizeMiiInstaller_Source/source/wad-manager.c similarity index 100% rename from CustomizeMiiInstaller/source/wad-manager.c rename to CustomizeMiiInstaller_Source/source/wad-manager.c diff --git a/CustomizeMiiInstaller/source/wad.c b/CustomizeMiiInstaller_Source/source/wad.c similarity index 100% rename from CustomizeMiiInstaller/source/wad.c rename to CustomizeMiiInstaller_Source/source/wad.c diff --git a/CustomizeMiiInstaller/source/wad.h b/CustomizeMiiInstaller_Source/source/wad.h similarity index 100% rename from CustomizeMiiInstaller/source/wad.h rename to CustomizeMiiInstaller_Source/source/wad.h diff --git a/CustomizeMiiInstaller/source/wpad.c b/CustomizeMiiInstaller_Source/source/wpad.c similarity index 100% rename from CustomizeMiiInstaller/source/wpad.c rename to CustomizeMiiInstaller_Source/source/wpad.c diff --git a/CustomizeMiiInstaller/source/wpad.h b/CustomizeMiiInstaller_Source/source/wpad.h similarity index 100% rename from CustomizeMiiInstaller/source/wpad.h rename to CustomizeMiiInstaller_Source/source/wpad.h diff --git a/ForwardMii-Plugin/ForwardMii.cs b/ForwardMii/ForwardMii.cs similarity index 100% rename from ForwardMii-Plugin/ForwardMii.cs rename to ForwardMii/ForwardMii.cs diff --git a/ForwardMii-Plugin/ForwardMii-Plugin.csproj b/ForwardMii/ForwardMii.csproj similarity index 84% rename from ForwardMii-Plugin/ForwardMii-Plugin.csproj rename to ForwardMii/ForwardMii.csproj index c1cf5fa..c79a5b8 100644 --- a/ForwardMii-Plugin/ForwardMii-Plugin.csproj +++ b/ForwardMii/ForwardMii.csproj @@ -32,6 +32,22 @@ prompt 4 + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + diff --git a/ForwardMii-Plugin/ForwardMii_BaseEdit.cs b/ForwardMii/ForwardMii_BaseEdit.cs similarity index 100% rename from ForwardMii-Plugin/ForwardMii_BaseEdit.cs rename to ForwardMii/ForwardMii_BaseEdit.cs diff --git a/ForwardMii-Plugin/ForwardMii_GX.cs b/ForwardMii/ForwardMii_GX.cs similarity index 100% rename from ForwardMii-Plugin/ForwardMii_GX.cs rename to ForwardMii/ForwardMii_GX.cs diff --git a/ForwardMii-Plugin/ForwardMii_SDSDHC.cs b/ForwardMii/ForwardMii_SDSDHC.cs similarity index 100% rename from ForwardMii-Plugin/ForwardMii_SDSDHC.cs rename to ForwardMii/ForwardMii_SDSDHC.cs diff --git a/ForwardMii-Plugin/License.txt b/ForwardMii/License.txt similarity index 100% rename from ForwardMii-Plugin/License.txt rename to ForwardMii/License.txt diff --git a/ForwardMii-Plugin/Properties/AssemblyInfo.cs b/ForwardMii/Properties/AssemblyInfo.cs similarity index 100% rename from ForwardMii-Plugin/Properties/AssemblyInfo.cs rename to ForwardMii/Properties/AssemblyInfo.cs diff --git a/ForwardMii-Plugin/Readme_ForwardMii.txt b/ForwardMii/Readme_ForwardMii.txt similarity index 100% rename from ForwardMii-Plugin/Readme_ForwardMii.txt rename to ForwardMii/Readme_ForwardMii.txt diff --git a/ForwardMii-Plugin/Resources/GX/Makefile b/ForwardMii/Resources/GX/Makefile similarity index 100% rename from ForwardMii-Plugin/Resources/GX/Makefile rename to ForwardMii/Resources/GX/Makefile diff --git a/ForwardMii-Plugin/Resources/GX/dolloader.c b/ForwardMii/Resources/GX/dolloader.c similarity index 100% rename from ForwardMii-Plugin/Resources/GX/dolloader.c rename to ForwardMii/Resources/GX/dolloader.c diff --git a/ForwardMii-Plugin/Resources/GX/dolloader.h b/ForwardMii/Resources/GX/dolloader.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/dolloader.h rename to ForwardMii/Resources/GX/dolloader.h diff --git a/ForwardMii-Plugin/Resources/GX/elf_abi.h b/ForwardMii/Resources/GX/elf_abi.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/elf_abi.h rename to ForwardMii/Resources/GX/elf_abi.h diff --git a/ForwardMii-Plugin/Resources/GX/elfloader.c b/ForwardMii/Resources/GX/elfloader.c similarity index 100% rename from ForwardMii-Plugin/Resources/GX/elfloader.c rename to ForwardMii/Resources/GX/elfloader.c diff --git a/ForwardMii-Plugin/Resources/GX/elfloader.h b/ForwardMii/Resources/GX/elfloader.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/elfloader.h rename to ForwardMii/Resources/GX/elfloader.h diff --git a/ForwardMii-Plugin/Resources/GX/fatmounter.c b/ForwardMii/Resources/GX/fatmounter.c similarity index 100% rename from ForwardMii-Plugin/Resources/GX/fatmounter.c rename to ForwardMii/Resources/GX/fatmounter.c diff --git a/ForwardMii-Plugin/Resources/GX/fatmounter.h b/ForwardMii/Resources/GX/fatmounter.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/fatmounter.h rename to ForwardMii/Resources/GX/fatmounter.h diff --git a/ForwardMii-Plugin/Resources/GX/filelist.h b/ForwardMii/Resources/GX/filelist.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/filelist.h rename to ForwardMii/Resources/GX/filelist.h diff --git a/ForwardMii-Plugin/Resources/GX/main.cpp b/ForwardMii/Resources/GX/main.cpp similarity index 100% rename from ForwardMii-Plugin/Resources/GX/main.cpp rename to ForwardMii/Resources/GX/main.cpp diff --git a/ForwardMii-Plugin/Resources/GX/video.cpp b/ForwardMii/Resources/GX/video.cpp similarity index 100% rename from ForwardMii-Plugin/Resources/GX/video.cpp rename to ForwardMii/Resources/GX/video.cpp diff --git a/ForwardMii-Plugin/Resources/GX/video.h b/ForwardMii/Resources/GX/video.h similarity index 100% rename from ForwardMii-Plugin/Resources/GX/video.h rename to ForwardMii/Resources/GX/video.h diff --git a/ForwardMii-Plugin/Resources/SDSDHC/10CharsTail.bin b/ForwardMii/Resources/SDSDHC/10CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/10CharsTail.bin rename to ForwardMii/Resources/SDSDHC/10CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/11CharsTail.bin b/ForwardMii/Resources/SDSDHC/11CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/11CharsTail.bin rename to ForwardMii/Resources/SDSDHC/11CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/12CharsTail.bin b/ForwardMii/Resources/SDSDHC/12CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/12CharsTail.bin rename to ForwardMii/Resources/SDSDHC/12CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/13CharsTail.bin b/ForwardMii/Resources/SDSDHC/13CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/13CharsTail.bin rename to ForwardMii/Resources/SDSDHC/13CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/14CharsTail.bin b/ForwardMii/Resources/SDSDHC/14CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/14CharsTail.bin rename to ForwardMii/Resources/SDSDHC/14CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/15CharsTail.bin b/ForwardMii/Resources/SDSDHC/15CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/15CharsTail.bin rename to ForwardMii/Resources/SDSDHC/15CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/16CharsTail.bin b/ForwardMii/Resources/SDSDHC/16CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/16CharsTail.bin rename to ForwardMii/Resources/SDSDHC/16CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/17CharsBase.bin b/ForwardMii/Resources/SDSDHC/17CharsBase.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/17CharsBase.bin rename to ForwardMii/Resources/SDSDHC/17CharsBase.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/17CharsTail.bin b/ForwardMii/Resources/SDSDHC/17CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/17CharsTail.bin rename to ForwardMii/Resources/SDSDHC/17CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/18CharsTail.bin b/ForwardMii/Resources/SDSDHC/18CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/18CharsTail.bin rename to ForwardMii/Resources/SDSDHC/18CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/3CharsBase.bin b/ForwardMii/Resources/SDSDHC/3CharsBase.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/3CharsBase.bin rename to ForwardMii/Resources/SDSDHC/3CharsBase.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/3CharsTail.bin b/ForwardMii/Resources/SDSDHC/3CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/3CharsTail.bin rename to ForwardMii/Resources/SDSDHC/3CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/4CharsTail.bin b/ForwardMii/Resources/SDSDHC/4CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/4CharsTail.bin rename to ForwardMii/Resources/SDSDHC/4CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/5CharsTail.bin b/ForwardMii/Resources/SDSDHC/5CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/5CharsTail.bin rename to ForwardMii/Resources/SDSDHC/5CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/6CharsBase.bin b/ForwardMii/Resources/SDSDHC/6CharsBase.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/6CharsBase.bin rename to ForwardMii/Resources/SDSDHC/6CharsBase.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/6CharsTail.bin b/ForwardMii/Resources/SDSDHC/6CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/6CharsTail.bin rename to ForwardMii/Resources/SDSDHC/6CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/7CharsTail.bin b/ForwardMii/Resources/SDSDHC/7CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/7CharsTail.bin rename to ForwardMii/Resources/SDSDHC/7CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/8CharsTail.bin b/ForwardMii/Resources/SDSDHC/8CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/8CharsTail.bin rename to ForwardMii/Resources/SDSDHC/8CharsTail.bin diff --git a/ForwardMii-Plugin/Resources/SDSDHC/9CharsTail.bin b/ForwardMii/Resources/SDSDHC/9CharsTail.bin similarity index 100% rename from ForwardMii-Plugin/Resources/SDSDHC/9CharsTail.bin rename to ForwardMii/Resources/SDSDHC/9CharsTail.bin diff --git a/Tester/Program.cs b/Tester/Program.cs deleted file mode 100644 index 4261480..0000000 --- a/Tester/Program.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Helpers; -using System.IO; -using System.IO.Compression; - -namespace Tester -{ - class Program - { - static void Main(string[] args) - { - string command = args[0]; - - if (command == "CSTUB") - { - Console.Out.WriteLine("Stub Compression>>"); - CompressStub(args[1], args[2]); - } - else if (command == "DSTUB") - { - Console.Out.WriteLine("Stub Decompression>>"); - DecompressStub(args[1], args[2]); - } - else if (command == "LOADC") - { - Console.Out.WriteLine("Installer creation>>"); - CreateInstaller(args[1], args[2]); - } - } - - static void CompressStub(string installerDol, string zippedResourceFileName) - { - using (FileStream fs = new FileStream(installerDol, FileMode.Open)) - { - using (FileStream fsOut = new FileStream(zippedResourceFileName, FileMode.Create)) - { - using (GZipStream gzip = new GZipStream(fsOut, CompressionMode.Compress)) - { - // Copy the source file into the compression stream. - byte[] buffer = new byte[4096]; - int numRead; - while ((numRead = fs.Read(buffer, 0, buffer.Length)) != 0) - { - gzip.Write(buffer, 0, numRead); - } - } - } - } - } - - public static void DecompressStub(string compressedInstallerDol, string decompressedInstallerDol) - { - // Get the stream of the source file. - using (FileStream inFile = new FileStream(compressedInstallerDol, FileMode.Open)) - { - //Create the decompressed file. - using (FileStream outFile = File.Create(decompressedInstallerDol)) - { - using (GZipStream Decompress = new GZipStream(inFile,CompressionMode.Decompress)) - { - //Copy the decompression stream into the output file. - byte[] buffer = new byte[4096]; - int numRead; - while ((numRead = Decompress.Read(buffer, 0, buffer.Length)) != 0) - { - outFile.Write(buffer, 0, numRead); - } - } - } - } - } - - static void CreateInstaller(string inWadFilename, string outDolFileName) - { - using (MemoryStream ms = InstallerHelper.CreateInstaller(inWadFilename, 249)) - { - using (FileStream fs = new FileStream(outDolFileName, FileMode.Create)) - { - ms.WriteTo(fs); - fs.Close(); - } - } - } - - } -} diff --git a/Tester/Properties/AssemblyInfo.cs b/Tester/Properties/AssemblyInfo.cs deleted file mode 100644 index 111c3ba..0000000 --- a/Tester/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tester")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Irduco")] -[assembly: AssemblyProduct("Tester")] -[assembly: AssemblyCopyright("Copyright © Irduco 2010")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("891f8670-dc92-4f81-b010-62634af8b756")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// 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")] diff --git a/Tester/Tester.csproj b/Tester/Tester.csproj deleted file mode 100644 index a17ff9b..0000000 --- a/Tester/Tester.csproj +++ /dev/null @@ -1,56 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {C020DE3A-F72B-47AD-A451-17B7586E4D21} - Exe - Properties - Tester - Tester - v2.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - {475F3ADF-B529-449F-89DA-BA5E8BE15DD5} - Helpers - - - - - \ No newline at end of file