diff --git a/Sharpii/BNS.cs b/Sharpii/BNS.cs index 929d3dc..859ca7e 100644 --- a/Sharpii/BNS.cs +++ b/Sharpii/BNS.cs @@ -55,7 +55,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -64,15 +64,15 @@ namespace Sharpii { //Now convert it if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); Wave WavFile = libWiiSharp.BNS.BnsToWave(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 2) - System.Console.Write("Saving wav..."); + Console.Write("Saving wav..."); if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAV") output = output + ".wav"; @@ -80,16 +80,16 @@ namespace Sharpii WavFile.Save(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } @@ -104,7 +104,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -131,28 +131,28 @@ namespace Sharpii try { if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); BNS WavFile = new BNS(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (loop == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Applying loop"); + Console.WriteLine("Applying loop"); WavFile.SetLoop(1); } if (mono == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Converting to mono"); + Console.WriteLine("Converting to mono"); WavFile.StereoToMono = true; } if (Quiet.quiet > 2) - System.Console.Write("Saving BNS..."); + Console.Write("Saving BNS..."); WavFile.Convert(); @@ -162,42 +162,42 @@ namespace Sharpii WavFile.Save(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } public static void Wav2BNS_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - BNS - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii BNS [-to | -from] input.wav output.bns [-l/-loop] [-m/-mono]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -to Convert wav to bns"); - System.Console.WriteLine(" -from Create wav from bns"); - System.Console.WriteLine(" input.wav The input wave sound file"); - System.Console.WriteLine(" output.bns The output BNS sound file"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for converting to BNS:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -l | -loop Creates a looping BNS"); - System.Console.WriteLine(" -m | -mono Convert stereo sound to mono BNS"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - BNS - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii BNS [-to | -from] input.wav output.bns [-l/-loop] [-m/-mono]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -to Convert wav to bns"); + Console.WriteLine(" -from Create wav from bns"); + Console.WriteLine(" input.wav The input wave sound file"); + Console.WriteLine(" output.bns The output BNS sound file"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for converting to BNS:"); + Console.WriteLine(""); + Console.WriteLine(" -l | -loop Creates a looping BNS"); + Console.WriteLine(" -m | -mono Convert stereo sound to mono BNS"); } } } diff --git a/Sharpii/HBC.cs b/Sharpii/HBC.cs index dd99ea7..b7b87fb 100644 --- a/Sharpii/HBC.cs +++ b/Sharpii/HBC.cs @@ -41,6 +41,7 @@ namespace Sharpii string protocol = "JODI"; string arguments = ""; bool compress = true; + bool saveip = false; //Get parameters for (int i = 1; i < args.Length; i++) @@ -55,6 +56,9 @@ namespace Sharpii } ip = args[i + 1]; break; + case "-SAVEIP": + saveip = true; + break; case "-DOL": if (i + 1 >= args.Length) { @@ -65,7 +69,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -90,44 +94,58 @@ namespace Sharpii //Run main part, and check for exceptions try { + if (ip != "" && saveip == true) + { + if (Quiet.quiet > 2) + Console.WriteLine("Saving IP"); + Environment.SetEnvironmentVariable("SharpiiIP", ip, EnvironmentVariableTarget.User); + } + + if (ip == "") + { + if (Quiet.quiet > 2) + Console.WriteLine("No IP set, using {0}", Environment.GetEnvironmentVariable("SharpiiIP", EnvironmentVariableTarget.User)); + ip = Environment.GetEnvironmentVariable("SharpiiIP", EnvironmentVariableTarget.User); + } + libWiiSharp.Protocol proto = Protocol.JODI; if (Quiet.quiet > 2 && protocol == "HAXX") - System.Console.WriteLine("Using old protocol"); + Console.WriteLine("Using old protocol"); if (protocol == "HAXX") proto = Protocol.HAXX; if (Quiet.quiet > 2) - System.Console.Write("Loading File..."); + Console.Write("Loading File..."); HbcTransmitter file = new HbcTransmitter(proto, ip); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 2 && compress == true) - System.Console.Write("Compressing File..."); + Console.Write("Compressing File..."); file.Compress = compress; if (Quiet.quiet > 2 && compress == true) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.Write("Sending file..."); + Console.Write("Sending file..."); file.TransmitFile(Path.GetFileName(input) + arguments, File.ReadAllBytes(input)); if (Quiet.quiet > 1) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } @@ -150,9 +168,9 @@ namespace Sharpii if (!File.Exists("WadInstaller.dll")) { - System.Console.WriteLine("ERROR: WadInstaller.dll not found"); - System.Console.WriteLine("\n\nAttemp to download? [Y/N]"); - System.Console.Write("\n>>"); + Console.WriteLine("ERROR: WadInstaller.dll not found"); + Console.WriteLine("\n\nAttemp to download? [Y/N]"); + Console.Write("\n>>"); string ans = Console.ReadLine(); if (ans.ToUpper() == "Y") { @@ -164,7 +182,7 @@ namespace Sharpii Console.Write("Done!\n"); } catch (Exception ex) - { System.Console.WriteLine("An error occured: {0}", ex.Message); return false; } + { Console.WriteLine("An error occured: {0}", ex.Message); return false; } } else return false; @@ -179,6 +197,8 @@ namespace Sharpii string ip = ""; string ios = ""; string protocol = "JODI"; + bool ahb = false; + bool saveip = false; //Get parameters for (int i = 1; i < args.Length; i++) @@ -188,7 +208,7 @@ namespace Sharpii case "-IOS": if (i + 1 >= args.Length) { - Console.WriteLine("ERROR: No ip set"); + Console.WriteLine("ERROR: No ios set"); return; } ios = args[i + 1]; @@ -198,6 +218,9 @@ namespace Sharpii return; } break; + case "-AHB": + ahb = true; + break; case "-IP": if (i + 1 >= args.Length) { @@ -206,6 +229,9 @@ namespace Sharpii } ip = args[i + 1]; break; + case "-SAVEIP": + saveip = true; + break; case "-WAD": if (i + 1 >= args.Length) { @@ -216,7 +242,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } break; @@ -229,36 +255,57 @@ namespace Sharpii //Run main part, and check for exceptions try { + if (ip != "" && saveip == true) + { + if (Quiet.quiet > 2) + Console.WriteLine("Saving IP"); + Environment.SetEnvironmentVariable("SharpiiIP", ip, EnvironmentVariableTarget.User); + } + + if (ahb == true || ios == "") + { + if (Quiet.quiet > 2) + Console.WriteLine("Using AHBPROT"); + ios = "0"; + } + + if (ip == "") + { + if (Quiet.quiet > 2) + Console.WriteLine("No IP set, using {0}", Environment.GetEnvironmentVariable("SharpiiIP", EnvironmentVariableTarget.User)); + ip = Environment.GetEnvironmentVariable("SharpiiIP", EnvironmentVariableTarget.User); + } + libWiiSharp.Protocol proto = Protocol.JODI; if (Quiet.quiet > 2 && protocol == "HAXX") - System.Console.WriteLine("Using old protocol"); + Console.WriteLine("Using old protocol"); if (protocol == "HAXX") proto = Protocol.HAXX; if (Quiet.quiet > 2) - System.Console.Write("Loading File..."); + Console.Write("Loading File..."); HbcTransmitter file = new HbcTransmitter(proto, ip); byte[] Installer = WadInstaller.InstallerHelper.CreateInstaller(input, (byte)Convert.ToInt32(ios)).ToArray(); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.Write("Sending file..."); + Console.Write("Sending file..."); file.TransmitFile("WadInstaller.dol", Installer); if (Quiet.quiet > 1) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } @@ -268,47 +315,52 @@ namespace Sharpii private static void SendDol_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - SendDol - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe SendDol -ip ip_adress [-old] [-nocomp] -dol file [args]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -dol file The dol file to send"); - System.Console.WriteLine(" -ip ip_adress The IP address of your wii"); - System.Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC"); - System.Console.WriteLine(" -nocomp Disable compression"); - System.Console.WriteLine(" args Dol arguments"); - System.Console.WriteLine(""); - System.Console.WriteLine(" NOTE: Any arguments after '-dol file' will be sent as dol"); - System.Console.WriteLine(" arguments"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - SendDol - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe SendDol -ip ip_adress [-old] [-nocomp] [-saveip]"); + Console.WriteLine(" -dol file [args]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -dol file The dol file to send"); + Console.WriteLine(" -ip ip_adress The IP address of your wii"); + Console.WriteLine(" -saveip Save entered IP address for future use"); + Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC"); + Console.WriteLine(" -nocomp Disable compression"); + Console.WriteLine(" args Dol arguments"); + Console.WriteLine(""); + Console.WriteLine(" NOTE: Any arguments after '-dol file' will be sent as dol"); + Console.WriteLine(" arguments"); } public static void SendWad_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - SendWad - A tool by person66, using libWiiSharp.dll by leathl,", Version.version); - System.Console.WriteLine(" and CRAP's installer by WiiCrazy/I.R.on"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe SendWad -ip ip_adress -wad file -ios ios [-old] [-nocomp]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -dol file The dol file to send"); - System.Console.WriteLine(" -ip ip_adress The IP address of your wii"); - System.Console.WriteLine(" -ios ios The ios to use to install the wad"); - System.Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC"); - System.Console.WriteLine(" -nocomp Disable compression"); - System.Console.WriteLine(""); - System.Console.WriteLine(" NOTE: WAD files must be less than 8MB large"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - SendWad - A tool by person66, using libWiiSharp.dll by leathl,", Version.version); + Console.WriteLine(" and CRAP's installer by WiiCrazy/I.R.on"); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe SendWad -ip ip_adress -wad file [-ios IOS | -ahb] [-old]"); + Console.WriteLine(" [-nocomp] [-saveip]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -dol file The dol file to send"); + Console.WriteLine(" -ip ip_adress The IP address of your wii"); + Console.WriteLine(" -ios ios The ios to use to install the wad"); + Console.WriteLine(" -ahb Use HW_AHBPROT to install the wad"); + Console.WriteLine(" -saveip Save entered IP address for future use"); + Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC"); + Console.WriteLine(" -nocomp Disable compression"); + Console.WriteLine(""); + Console.WriteLine(" NOTE: WAD files must be less than 8MB large"); } } } \ No newline at end of file diff --git a/Sharpii/IOS.cs b/Sharpii/IOS.cs index c301071..8e0abd8 100644 --- a/Sharpii/IOS.cs +++ b/Sharpii/IOS.cs @@ -42,7 +42,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -132,12 +132,12 @@ namespace Sharpii ios.KeepOriginalFooter = true; if (Quiet.quiet > 2) - System.Console.Write("Loading File..."); + Console.Write("Loading File..."); ios.LoadFile(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); //Check if WAD is an IOS if ((ios.TitleID >> 32) != 1 || (ios.TitleID & 0xffffffff) > 255 || (ios.TitleID & 0xffffffff) < 3) @@ -154,28 +154,28 @@ namespace Sharpii if (fs == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Applying Fakesigning patch"); + Console.WriteLine("Applying Fakesigning patch"); patcher.PatchFakeSigning(); } if (es == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Applying ES_Identify patch"); + Console.WriteLine("Applying ES_Identify patch"); patcher.PatchEsIdentify(); } if (np == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Applying NAND permissions patch"); + Console.WriteLine("Applying NAND permissions patch"); patcher.PatchNandPermissions(); } if (vp == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Applying Version patch"); + Console.WriteLine("Applying Version patch"); patcher.PatchVP(); } @@ -185,14 +185,14 @@ namespace Sharpii if (slot > -1) { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing IOS slot to: {0}", slot); + Console.WriteLine("Changing IOS slot to: {0}", slot); ios.TitleID = (ulong)((1UL << 32) | (uint)slot); } if (version > -1) { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing title version to: {0}", version); + Console.WriteLine("Changing title version to: {0}", version); ios.TitleVersion = (ushort)version; } @@ -200,13 +200,13 @@ namespace Sharpii if (output != "") { if (Quiet.quiet > 2) - System.Console.WriteLine("Saving to file: {0}", output); + Console.WriteLine("Saving to file: {0}", output); ios.Save(output); } else { if (Quiet.quiet > 2) - System.Console.Write("Saving file..."); + Console.Write("Saving file..."); if (output != "") { @@ -217,16 +217,16 @@ namespace Sharpii ios.Save(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } @@ -236,26 +236,26 @@ namespace Sharpii public static void IOS_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - IOS - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(" Code based off PatchIOS by leathl"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe IOS input [-o output] [-fs] [-es] [-np] [-vp] [-s slot]"); - System.Console.WriteLine(" [-v version]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" input The input file"); - System.Console.WriteLine(" -o output The output file"); - System.Console.WriteLine(" -fs Patch Fakesigning"); - System.Console.WriteLine(" -es Patch ES_Identify"); - System.Console.WriteLine(" -np Patch NAND Permissions"); - System.Console.WriteLine(" -vp Add version patch"); - System.Console.WriteLine(" -s # Change IOS slot to #"); - System.Console.WriteLine(" -v # Change IOS version to #"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - IOS - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(" Code based off PatchIOS by leathl"); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe IOS input [-o output] [-fs] [-es] [-np] [-vp] [-s slot]"); + Console.WriteLine(" [-v version]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" input The input file"); + Console.WriteLine(" -o output The output file"); + Console.WriteLine(" -fs Patch Fakesigning"); + Console.WriteLine(" -es Patch ES_Identify"); + Console.WriteLine(" -np Patch NAND Permissions"); + Console.WriteLine(" -vp Add version patch"); + Console.WriteLine(" -s # Change IOS slot to #"); + Console.WriteLine(" -v # Change IOS version to #"); } } } \ No newline at end of file diff --git a/Sharpii/NUSD.cs b/Sharpii/NUSD.cs index f72d2ba..80886df 100644 --- a/Sharpii/NUSD.cs +++ b/Sharpii/NUSD.cs @@ -169,14 +169,14 @@ namespace Sharpii //Error checking & stuff if (id == "") { - System.Console.WriteLine("ERROR: No ID specified"); + Console.WriteLine("ERROR: No ID specified"); return; } if (version == "") { if (Quiet.quiet > 2) - System.Console.WriteLine("No version specified, using latest", version); + Console.WriteLine("No version specified, using latest", version); version = "LATEST"; } @@ -188,14 +188,14 @@ namespace Sharpii version = tmd.TitleVersion.ToString(); if (Quiet.quiet > 2) - System.Console.WriteLine("Found latest version: v{0}", version); + Console.WriteLine("Found latest version: v{0}", version); } if (entered == false) //Will only be false if no store type argument was given { store.Add(StoreType.All); if (Quiet.quiet > 2) - System.Console.WriteLine("No store type specified, using all"); + Console.WriteLine("No store type specified, using all"); } if (id.Length == 16 && Convert.ToInt32(id.Substring(14, 2), 16) >= 3 && Convert.ToInt32(id.Substring(14, 2), 16) <= 255 && id.Substring(0, 14) == "00000001000000") @@ -215,7 +215,7 @@ namespace Sharpii NoOut = true; output = ios == "" ? id + "v" + version : ios.Substring(0, ios.Length - 4); if (Quiet.quiet > 2) - System.Console.WriteLine("No output specified, using {0}", output); + Console.WriteLine("No output specified, using {0}", output); } //Main part, catches random/unexpected exceptions @@ -226,7 +226,7 @@ namespace Sharpii if (local == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Using local files if present..."); + Console.WriteLine("Using local files if present..."); nus.UseLocalFiles = true; } @@ -234,17 +234,17 @@ namespace Sharpii if (content != "") { if (Quiet.quiet > 1) - System.Console.Write("Downloading content..."); + Console.Write("Downloading content..."); nus.DownloadSingleContent(id, version, content, output); if (Quiet.quiet > 1) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } else { if (Quiet.quiet > 1) - System.Console.Write("Downloading title..."); + Console.Write("Downloading title..."); string realout = output; if (wad == true) @@ -255,17 +255,17 @@ namespace Sharpii WadIosNamingStuff(wad, temp, id, version, ios, NoOut, output, realout); if (Quiet.quiet > 1) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } @@ -279,7 +279,7 @@ namespace Sharpii { if (!File.Exists(temp + "\\" + id + "v" + version + ".wad")) { - System.Console.WriteLine("ERROR: Can't find WAD"); + Console.WriteLine("ERROR: Can't find WAD"); return; } if (ios != "" && NoOut == true) @@ -318,36 +318,36 @@ namespace Sharpii public static void NUS_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - NUSD - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe NUSD [-id titleID | -ios IOS] [-v version] [-o otput] [-all]"); - System.Console.WriteLine(" [-wad] [-decrypt] [-encrypt] [-local] [-s content]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -id titleID [required] The Title ID of the file you wish to download"); - System.Console.WriteLine(" -v version [required] The version of the file you wish to download"); - System.Console.WriteLine(" NOTE: Use 'latest' to get the latest version"); - System.Console.WriteLine(" -ios IOS The IOS you wish to download. This is an alternative to"); - System.Console.WriteLine(" '-id', use one or the other, but not both."); - System.Console.WriteLine(" -o output Folder to output the files to"); - System.Console.WriteLine(" -local Use local files if present"); - System.Console.WriteLine(" -s content Download a single content from the file"); - System.Console.WriteLine(" NOTE: When using this, output MUST have a path and a"); - System.Console.WriteLine(" filename. For current directory use '.\\[filename]'"); - System.Console.WriteLine(" -all Create and keep encrypted, decrypted, and WAD versions"); - System.Console.WriteLine(" of the file you wish to download"); - System.Console.WriteLine(" -wad Keep only the WAD version of the file you wish to"); - System.Console.WriteLine(" download"); - System.Console.WriteLine(" -decrypt Keep only the decrypted contents of the file you wish to"); - System.Console.WriteLine(" download"); - System.Console.WriteLine(" -encrypt Keep only the encrypted contents of the file you wish to"); - System.Console.WriteLine(" download"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - NUSD - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe NUSD [-id titleID | -ios IOS] [-v version] [-o otput] [-all]"); + Console.WriteLine(" [-wad] [-decrypt] [-encrypt] [-local] [-s content]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -id titleID [required] The Title ID of the file you wish to download"); + Console.WriteLine(" -v version [required] The version of the file you wish to download"); + Console.WriteLine(" NOTE: Use 'latest' to get the latest version"); + Console.WriteLine(" -ios IOS The IOS you wish to download. This is an alternative to"); + Console.WriteLine(" '-id', use one or the other, but not both."); + Console.WriteLine(" -o output Folder to output the files to"); + Console.WriteLine(" -local Use local files if present"); + Console.WriteLine(" -s content Download a single content from the file"); + Console.WriteLine(" NOTE: When using this, output MUST have a path and a"); + Console.WriteLine(" filename. For current directory use '.\\[filename]'"); + Console.WriteLine(" -all Create and keep encrypted, decrypted, and WAD versions"); + Console.WriteLine(" of the file you wish to download"); + Console.WriteLine(" -wad Keep only the WAD version of the file you wish to"); + Console.WriteLine(" download"); + Console.WriteLine(" -decrypt Keep only the decrypted contents of the file you wish to"); + Console.WriteLine(" download"); + Console.WriteLine(" -encrypt Keep only the encrypted contents of the file you wish to"); + Console.WriteLine(" download"); } } } \ No newline at end of file diff --git a/Sharpii/Program.cs b/Sharpii/Program.cs index 6e8f9da..11c07cf 100644 --- a/Sharpii/Program.cs +++ b/Sharpii/Program.cs @@ -34,9 +34,9 @@ namespace Sharpii if (!File.Exists("libWiiSharp.dll")) { - System.Console.WriteLine("ERROR: libWiiSharp.dll not found"); - System.Console.WriteLine("\n\nAttemp to download? [Y/N]"); - System.Console.Write("\n>>"); + Console.WriteLine("ERROR: libWiiSharp.dll not found"); + Console.WriteLine("\n\nAttemp to download? [Y/N]"); + Console.Write("\n>>"); string ans = Console.ReadLine(); if (ans.ToUpper() == "Y") { @@ -48,7 +48,7 @@ namespace Sharpii Console.Write("Done!\n"); } catch (Exception ex) - { System.Console.WriteLine("An error occured: {0}", ex.Message); Environment.Exit(0); } + { Console.WriteLine("An error occured: {0}", ex.Message); Environment.Exit(0); } } else Environment.Exit(0); @@ -70,70 +70,77 @@ namespace Sharpii } } - string Function = args[0]; + string Function = args[0].ToUpper(); bool gotSomewhere = false; - if (Function.ToUpper() == "-H" || Function.ToUpper() == "-HELP" || Function.ToUpper() == "H" || Function.ToUpper() == "HELP") + if (Function == "-H" || Function == "-HELP" || Function == "H" || Function == "HELP") { help(); gotSomewhere = true; } - if (Function.ToUpper() == "BNS") + if (Function == "BNS") { BNS_Stuff.BNS(args); gotSomewhere = true; } - if (Function.ToUpper() == "WAD") + if (Function == "WAD") { WAD_Stuff.WAD(args); gotSomewhere = true; } - if (Function.ToUpper() == "TPL") + if (Function == "TPL") { TPL_Stuff.TPL(args); gotSomewhere = true; } - if (Function.ToUpper() == "U8") + if (Function == "U8") { U8_Stuff.U8(args); gotSomewhere = true; } - if (Function.ToUpper() == "IOS") + if (Function == "IOS") { IOS_Stuff.IOS(args); gotSomewhere = true; } - if (Function.ToUpper() == "NUS" || Function.ToUpper() == "NUSD") + if (Function == "NUS" || Function == "NUSD") { NUS_Stuff.NUS(args); gotSomewhere = true; } - if (Function.ToUpper() == "SENDDOL" || Function.ToUpper() == "SENDOL") + if (Function == "SENDDOL" || Function == "SENDOL") { HBC_Stuff.SendDol(args); gotSomewhere = true; } - if (Function.ToUpper() == "SENDWAD") + if (Function == "SENDWAD") { bool cont = HBC_Stuff.SendWad_Check(args); if (cont == true) HBC_Stuff.SendWad(args); gotSomewhere = true; } + if (Function == "WHICH CAME FIRST" || Function == "WHICH CAME FIRST?" || + (Function == "WHICH" && args[1].ToUpper() == "CAME" && args[2].Substring(0,5).ToUpper() == "FIRST")) + { + InconspicuousNotEasterEggThingamajig(); + gotSomewhere = true; + } + if (gotSomewhere == false) { //If tuser gets here, they entered something wrong - System.Console.WriteLine("ERROR: The argument {0} is invalid", args[0]); + Console.WriteLine("ERROR: The argument {0} is invalid", args[0]); } string temp = Path.GetTempPath() + "Sharpii.tmp"; @@ -143,37 +150,58 @@ namespace Sharpii Environment.Exit(0); } + private static void InconspicuousNotEasterEggThingamajig() + { + WebClient egg = new WebClient(); string all = ""; + try { all = egg.DownloadString("http://sites.google.com/site/person66files/home/EASTEREGG.txt"); } + catch (Exception) { Console.WriteLine("\n Easter eggs are more fun if you has internetz"); return; } + int width = Console.WindowWidth; int height = Console.WindowHeight; int bwidth = Console.BufferWidth; int bheight = Console.BufferHeight; + ConsoleKeyInfo key; Console.Clear(); Console.CursorVisible = false; Console.SetWindowSize(75, 5); Console.SetBufferSize(75, 5); + Console.WriteLine("Complete the following: \n\n UP, __ , __ , __ , __ , __ , __ , __ , __ , __ , START"); key = Console.ReadKey(true); + if (key.Key.ToString() == "UpArrow") { Console.SetCursorPosition(7, 2); Console.Write("UP"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "DownArrow") { Console.SetCursorPosition(12, 2); Console.Write("DOWN , __ , __ , __ , __ , __ , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "DownArrow") { Console.SetCursorPosition(19, 2); Console.Write("DOWN , __ , __ , __ , __ , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "LeftArrow") { Console.SetCursorPosition(26, 2); Console.Write("LEFT , __ , __ , __ , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "RightArrow") { Console.SetCursorPosition(33, 2); Console.Write("RIGHT , __ , __ , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "LeftArrow") { Console.SetCursorPosition(41, 2); Console.Write("LEFT , __ , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "RightArrow") { Console.SetCursorPosition(48, 2); Console.Write("RIGHT , __ , __ , START"); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "B") { Console.SetCursorPosition(56, 2); Console.Write("B , __ , START "); } else { goto ByeBye; } + key = Console.ReadKey(true); if (key.Key.ToString() == "A") { Console.SetCursorPosition(60, 2); Console.Write("A , START "); } else { goto ByeBye; } + Console.SetBufferSize(95, 44); Console.SetWindowSize(95, 44); Console.SetCursorPosition(0, 0); Console.Clear(); Console.Write(all); Console.ReadKey(true); + ByeBye: Console.Clear(); Console.CursorVisible = true; Console.SetWindowSize(width, height); Console.SetBufferSize(bwidth, bheight); Environment.Exit(0); + } + private static void help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii [function] [parameters] [-quiet | -q | -lots]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Functions:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" BNS Convert a wav to bns, or vice versa"); - System.Console.WriteLine(" WAD Pack/Unpack/Edit a wad file"); - System.Console.WriteLine(" TPL Convert a image to a tpl, or vice versa"); - System.Console.WriteLine(" U8 Pack/Unpack a U8 archive"); - System.Console.WriteLine(" IOS Apply various patches to an IOS"); - System.Console.WriteLine(" NUSD Download files from NUS"); - System.Console.WriteLine(" SendDol Send a dol to the HBC over wifi"); - System.Console.WriteLine(" SendWad Send a wad to the HBC over wifi"); - System.Console.WriteLine(""); - System.Console.WriteLine(" NOTE: Too see more detailed descriptions of any of the above,"); - System.Console.WriteLine(" use 'Sharpii [function] -h'"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Global Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -quiet | -q Try not to display any output"); - System.Console.WriteLine(" -lots Display lots of output"); - System.Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii [function] [parameters] [-quiet | -q | -lots]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Functions:"); + Console.WriteLine(""); + Console.WriteLine(" BNS Convert a wav to bns, or vice versa"); + Console.WriteLine(" WAD Pack/Unpack/Edit a wad file"); + Console.WriteLine(" TPL Convert a image to a tpl, or vice versa"); + Console.WriteLine(" U8 Pack/Unpack a U8 archive"); + Console.WriteLine(" IOS Apply various patches to an IOS"); + Console.WriteLine(" NUSD Download files from NUS"); + Console.WriteLine(" SendDol Send a dol to the HBC over wifi"); + Console.WriteLine(" SendWad Send a wad to the HBC over wifi"); + Console.WriteLine(""); + Console.WriteLine(" NOTE: Too see more detailed descriptions of any of the above,"); + Console.WriteLine(" use 'Sharpii [function] -h'"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Global Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -quiet | -q Try not to display any output"); + Console.WriteLine(" -lots Display lots of output"); + Console.WriteLine(""); } @@ -213,5 +241,5 @@ namespace Sharpii } public class Version { - public static string version = "1.5"; + public static string version = "1.6"; } \ No newline at end of file diff --git a/Sharpii/Properties/AssemblyInfo.cs b/Sharpii/Properties/AssemblyInfo.cs index 7bfb214..97e3bdd 100644 --- a/Sharpii/Properties/AssemblyInfo.cs +++ b/Sharpii/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Sharpii")] -[assembly: AssemblyCopyright("2011 Person66")] +[assembly: AssemblyCopyright("2011 person66")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.6")] +[assembly: AssemblyFileVersion("1.6")] diff --git a/Sharpii/README.txt b/Sharpii/README.txt index 30f0e5f..f40a21e 100644 --- a/Sharpii/README.txt +++ b/Sharpii/README.txt @@ -1,5 +1,5 @@ /------------------------------------------------------------------------------> - Sharpii 1.5 + Sharpii 1.6 <----------------------------------------------------------------> An app by person66 libWiiSharp.dll by leathl (mod by scooby74029) @@ -82,6 +82,22 @@ help with. found online. If you are sending a zip file instead of a dol, it wont be compressed at all, no matter what. + If you do not wish to enter an IP every time you use SendDol, then you can add + the argument '-saveip' to the command. This will save the entered IP to the + environmental variable 'SharpiiIP', and then, in the future, if you do not enter + an ip, Sharpii will use the one saved there instead. (Also applies to SendWad) + + SendWad: +/------------------> + Since version 1.6, Sharpii has supported AHBPROT for installing WADs. This means + that as long as you have HBC 1.0.7 or above, you will be able to install the WAD + without a patched IOS. To use this feature, enter '-ahb' instead of '-ios IOS' + + If you do not wish to enter an IP every time you use SendDol, then you can add + the argument '-saveip' to the command. This will save the entered IP to the + environmental variable 'SharpiiIP', and then, in the future, if you do not enter + an ip, Sharpii will use the one saved there instead. (Also applies to SendDol) + /----SOURCE /------------------------------> @@ -100,7 +116,8 @@ libWiiSharp can be found at: libwiisharp.googlecode.com SendWad uses CRAP's installer by WiiCrazy/I.R.on, with any edits that leathl may have made when adding it to CustomizeMii (which is where I got the source -from) +from). Since version 1.6, the AHBPROT code it uses is just mostly stolen from +WiiMod by jskyboo. I would also like to thank XFlak and JoostinOnline for doing a bit of beta @@ -117,10 +134,16 @@ See "LICENSE.txt" for more information. /----CHANGELOG /------------------------------> +1.6 + - SendWad now supports AHBPROT (use '-ahb') + - IP can now be saved in an environmental variable (SharpiiIP) + for both SendWad and SendDol (manually or with '-saveip') + - Pointless aster eggs are fun! + - Code cleanup/bug fixes 1.5 - Added the ability to send WADs to the HBC using SendWad - You can now download an IOS with -ios # in NUSD - - Downloaded IOS wads are now namedlike so: IOS##-64-####.wad + - Downloaded IOS wads are now named like so: IOS##-64-####.wad - Under certain conditions, when downloading a wad with NUS, it will not be saved in a folder, just as the WAD (see ReadMe) - If missing dll's are detected (WadInstaller or libWiiSharp), diff --git a/Sharpii/Sharpii.csproj b/Sharpii/Sharpii.csproj index efb47ee..b64b150 100644 --- a/Sharpii/Sharpii.csproj +++ b/Sharpii/Sharpii.csproj @@ -91,8 +91,8 @@ - - + + diff --git a/Sharpii/TPL.cs b/Sharpii/TPL.cs index 942dd89..aa346ba 100644 --- a/Sharpii/TPL.cs +++ b/Sharpii/TPL.cs @@ -46,7 +46,7 @@ namespace Sharpii } //If tuser gets here, they entered something wrong - System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); + Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); return; } @@ -59,7 +59,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -68,30 +68,30 @@ namespace Sharpii { //Load tpl if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); TPL tplfile = libWiiSharp.TPL.Load(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); //save image if (Quiet.quiet > 2) - System.Console.Write("Extracting texture..."); + Console.Write("Extracting texture..."); tplfile.ExtractTexture(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } @@ -106,7 +106,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -137,7 +137,7 @@ namespace Sharpii //Check if valid format was entered if (tplFormat != "I4" & tplFormat != "I8" & tplFormat != "IA4" & tplFormat != "IA8" & tplFormat != "RGB565" & tplFormat != "RGB5A3" & tplFormat != "RGBA8") { - System.Console.WriteLine("ERROR: Unknown format type: {0}", tplFormat); + Console.WriteLine("ERROR: Unknown format type: {0}", tplFormat); return; } @@ -163,20 +163,20 @@ namespace Sharpii format = TPL_TextureFormat.RGBA8; if (Quiet.quiet > 2) - System.Console.WriteLine("Format set to: {0}", tplFormat); + Console.WriteLine("Format set to: {0}", tplFormat); //Make tpl if (Quiet.quiet > 2) - System.Console.Write("Creating tpl file..."); + Console.Write("Creating tpl file..."); TPL tplfile = libWiiSharp.TPL.FromImage(input, format); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); //save if (Quiet.quiet > 2) - System.Console.Write("Saving tpl file..."); + Console.Write("Saving tpl file..."); if (output.Substring(output.Length - 4, 4).ToUpper() != ".TPL") output = output + ".tpl"; @@ -184,53 +184,53 @@ namespace Sharpii tplfile.Save(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } public static void TPL_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - TPL - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe TPL [-to | -from] input output [arguments]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -to Convert image to tpl"); - System.Console.WriteLine(" -from Create image from tpl"); - System.Console.WriteLine(" input The input file/folder"); - System.Console.WriteLine(" output The output file/folder"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for Converting to TPL:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -format | -f The format of the tpl. Possible values are:"); - System.Console.WriteLine(" RGBA8 (High Quality with Alpha)"); - System.Console.WriteLine(" RGB565 (Medium Quality without Alpha)"); - System.Console.WriteLine(" RGB5A3 (Low Quality with Alpha)"); - System.Console.WriteLine(" IA8 (High quality B/W with Alpha)"); - System.Console.WriteLine(" IA4 (Low Quality B/W with Alpha)"); - System.Console.WriteLine(" I8 (High Quality B/W without Alpha)"); - System.Console.WriteLine(" I4 (Low Quality B/W without Alpha)"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Notes:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" If no format is specified when converting to TPL, RGB565 is used."); - System.Console.WriteLine(" When converting to an image, the image format is chosen based on the extension"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - TPL - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe TPL [-to | -from] input output [arguments]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" -to Convert image to tpl"); + Console.WriteLine(" -from Create image from tpl"); + Console.WriteLine(" input The input file/folder"); + Console.WriteLine(" output The output file/folder"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for Converting to TPL:"); + Console.WriteLine(""); + Console.WriteLine(" -format | -f The format of the tpl. Possible values are:"); + Console.WriteLine(" RGBA8 (High Quality with Alpha)"); + Console.WriteLine(" RGB565 (Medium Quality without Alpha)"); + Console.WriteLine(" RGB5A3 (Low Quality with Alpha)"); + Console.WriteLine(" IA8 (High quality B/W with Alpha)"); + Console.WriteLine(" IA4 (Low Quality B/W with Alpha)"); + Console.WriteLine(" I8 (High Quality B/W without Alpha)"); + Console.WriteLine(" I4 (Low Quality B/W without Alpha)"); + Console.WriteLine(""); + Console.WriteLine(" Notes:"); + Console.WriteLine(""); + Console.WriteLine(" If no format is specified when converting to TPL, RGB565 is used."); + Console.WriteLine(" When converting to an image, the image format is chosen based on the extension"); } } } \ No newline at end of file diff --git a/Sharpii/U8.cs b/Sharpii/U8.cs index a508a19..20c32ef 100644 --- a/Sharpii/U8.cs +++ b/Sharpii/U8.cs @@ -46,7 +46,7 @@ namespace Sharpii } //If tuser gets here, they entered something wrong - System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); + Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); return; } @@ -59,13 +59,13 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } //Check if file is U8 if (libWiiSharp.U8.IsU8(input) != true) { - System.Console.WriteLine("ERROR: File {0} is not a U8 archive", input); + Console.WriteLine("ERROR: File {0} is not a U8 archive", input); return; } @@ -76,29 +76,29 @@ namespace Sharpii U8 U8file = new U8(); if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); U8file.LoadFile(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 2) - System.Console.Write("Extracting file..."); + Console.Write("Extracting file..."); U8file.Extract(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } @@ -115,7 +115,7 @@ namespace Sharpii //Check if folder exists if (Directory.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open Folder: {0}", input); + Console.WriteLine("ERROR: Unable to open Folder: {0}", input); return; } @@ -142,7 +142,7 @@ namespace Sharpii if (imd5 == true && imet != "") { - System.Console.WriteLine("ERROR: Cannot use IMET and IMD5 at the same time."); + Console.WriteLine("ERROR: Cannot use IMET and IMD5 at the same time."); return; } @@ -152,24 +152,24 @@ namespace Sharpii U8 U8folder = new U8(); if (Quiet.quiet > 2) - System.Console.Write("Loading folder..."); + Console.Write("Loading folder..."); U8folder.CreateFromDirectory(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (imd5 == true) { if (Quiet.quiet > 2) - System.Console.WriteLine("Adding IMD5 Header"); + Console.WriteLine("Adding IMD5 Header"); U8folder.AddHeaderImd5(); } if (imet != "") { if (Quiet.quiet > 2) - System.Console.WriteLine("Adding IMET header with title: {0}", imet); + Console.WriteLine("Adding IMET header with title: {0}", imet); U8folder.AddHeaderImet(false, imet); } @@ -177,51 +177,51 @@ namespace Sharpii { //Yeah, I know this isnt where it actually compresses it if (Quiet.quiet > 2) - System.Console.WriteLine("Compressing U8 archive"); + Console.WriteLine("Compressing U8 archive"); U8folder.Lz77Compress = true; } if (Quiet.quiet > 2) - System.Console.WriteLine("Saving file"); + Console.WriteLine("Saving file"); U8folder.Save(output); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } public static void U8_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - U8 - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe U8 [-p | -u] input output [arguments]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" input The input file/folder"); - System.Console.WriteLine(" output The output file/folder"); - System.Console.WriteLine(" -p Pack"); - System.Console.WriteLine(" -u Unpack"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for Packing:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -imet [title] Pack with an IMET header (for 00000000.app)"); - System.Console.WriteLine(" You MUST enter a channel title"); - System.Console.WriteLine(" -imd5 Pack with an IMD5 header (for Banner/Icon.bin)"); - System.Console.WriteLine(" -lz77 Compress with lz77"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - U8 - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe U8 [-p | -u] input output [arguments]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" input The input file/folder"); + Console.WriteLine(" output The output file/folder"); + Console.WriteLine(" -p Pack"); + Console.WriteLine(" -u Unpack"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for Packing:"); + Console.WriteLine(""); + Console.WriteLine(" -imet [title] Pack with an IMET header (for 00000000.app)"); + Console.WriteLine(" You MUST enter a channel title"); + Console.WriteLine(" -imd5 Pack with an IMD5 header (for Banner/Icon.bin)"); + Console.WriteLine(" -lz77 Compress with lz77"); } } } \ No newline at end of file diff --git a/Sharpii/WAD.cs b/Sharpii/WAD.cs index 9ad3510..1ceb8ef 100644 --- a/Sharpii/WAD.cs +++ b/Sharpii/WAD.cs @@ -78,7 +78,7 @@ namespace Sharpii } //If tuser gets here, they entered something wrong - System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); + Console.WriteLine("ERROR: The argument {0} is invalid", args[1]); return; } @@ -92,7 +92,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -127,41 +127,41 @@ namespace Sharpii WAD wad = new WAD(); if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); wad.LoadFile(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1 && output == "") { - System.Console.WriteLine("WAD Info:"); - System.Console.WriteLine(""); + Console.WriteLine("WAD Info:"); + Console.WriteLine(""); if (titles == false) - System.Console.WriteLine("Title: {0}", wad.ChannelTitles[1]); + Console.WriteLine("Title: {0}", wad.ChannelTitles[1]); else { - System.Console.WriteLine("Titles:\n"); - System.Console.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]); - System.Console.WriteLine(" English: {0}", wad.ChannelTitles[1]); - System.Console.WriteLine(" German: {0}", wad.ChannelTitles[2]); - System.Console.WriteLine(" French: {0}", wad.ChannelTitles[3]); - System.Console.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]); - System.Console.WriteLine(" Italian: {0}", wad.ChannelTitles[5]); - System.Console.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]); - System.Console.WriteLine(" Korean: {0}\n", wad.ChannelTitles[7]); + Console.WriteLine("Titles:\n"); + Console.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]); + Console.WriteLine(" English: {0}", wad.ChannelTitles[1]); + Console.WriteLine(" German: {0}", wad.ChannelTitles[2]); + Console.WriteLine(" French: {0}", wad.ChannelTitles[3]); + Console.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]); + Console.WriteLine(" Italian: {0}", wad.ChannelTitles[5]); + Console.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]); + Console.WriteLine(" Korean: {0}\n", wad.ChannelTitles[7]); } - System.Console.WriteLine("Title ID: {0}", wad.UpperTitleID); - System.Console.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString()); - System.Console.WriteLine("Region: {0}", wad.Region); - System.Console.WriteLine("Version: {0}", wad.TitleVersion); - System.Console.WriteLine("Blocks: {0}", wad.NandBlocks); + Console.WriteLine("Title ID: {0}", wad.UpperTitleID); + Console.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString()); + Console.WriteLine("Region: {0}", wad.Region); + Console.WriteLine("Version: {0}", wad.TitleVersion); + Console.WriteLine("Blocks: {0}", wad.NandBlocks); } else { if (Quiet.quiet > 2) - System.Console.Write("Saving file..."); + Console.Write("Saving file..."); if (output.Substring(output.Length - 4, 4).ToUpper() != ".TXT") output = output + ".txt"; @@ -191,17 +191,17 @@ namespace Sharpii txt.Close(); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } @@ -225,13 +225,13 @@ namespace Sharpii if (edit == true) if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } if (edit == false) if (Directory.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open folder: {0}", input); + Console.WriteLine("ERROR: Unable to open folder: {0}", input); return; } @@ -251,7 +251,7 @@ namespace Sharpii id = args[i + 1]; if (id.Length < 4) { - System.Console.WriteLine("ERROR: ID too short"); + Console.WriteLine("ERROR: ID too short"); return; } id = id.Substring(0, 4); @@ -265,7 +265,7 @@ namespace Sharpii lwrid = args[i + 1]; if (args[i + 1].ToUpper() != "CHANNEL" && args[i + 1].ToUpper() != "DLC" && args[i + 1].ToUpper() != "GAMECHANNEL" && args[i + 1].ToUpper() != "HIDDENCHANNELS" && args[i + 1].ToUpper() != "SYSTEMCHANNELS" && args[i + 1].ToUpper() != "SYSTEMTITLES") { - System.Console.WriteLine("ERROR: Unknown WAD type: {0}", args[i + 1]); + Console.WriteLine("ERROR: Unknown WAD type: {0}", args[i + 1]); return; } break; @@ -357,18 +357,18 @@ namespace Sharpii if (edit == true) { if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); wad.LoadFile(input); } else { if (Quiet.quiet > 2) - System.Console.Write("Loading folder..."); + Console.Write("Loading folder..."); wad.CreateNew(input); } if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (sound != "" || banner != "" || icon != "" || app != "") { @@ -388,7 +388,7 @@ namespace Sharpii if (sound != "") { if (Quiet.quiet > 2) - System.Console.Write("Grabbing sound..."); + Console.Write("Grabbing sound..."); twad.LoadFile(sound); twad.Unpack(temp + "\\sound"); @@ -399,12 +399,12 @@ namespace Sharpii File.Copy(temp + "\\sound\\00000000\\meta\\sound.bin", temp + "\\main\\00000000\\meta\\sound.bin", true); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } if (banner != "") { if (Quiet.quiet > 2) - System.Console.Write("Grabbing banner..."); + Console.Write("Grabbing banner..."); twad.LoadFile(banner); twad.Unpack(temp + "\\banner"); @@ -415,12 +415,12 @@ namespace Sharpii File.Copy(temp + "\\banner\\00000000\\meta\\banner.bin", temp + "\\main\\00000000\\meta\\banner.bin", true); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } if (icon != "") { if (Quiet.quiet > 2) - System.Console.Write("Grabbing icon..."); + Console.Write("Grabbing icon..."); twad.LoadFile(icon); twad.Unpack(temp + "\\icon"); @@ -431,12 +431,12 @@ namespace Sharpii File.Copy(temp + "\\icon\\00000000\\meta\\icon.bin", temp + "\\main\\00000000\\meta\\icon.bin", true); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } if (app != "") { if (Quiet.quiet > 2) - System.Console.Write("Grabbing dol..."); + Console.Write("Grabbing dol..."); if (app.Substring(app.Length - 4, 4) == ".dol") { @@ -452,7 +452,7 @@ namespace Sharpii File.Copy(temp + "\\dol\\00000001.app", temp + "\\main\\00000001.app", true); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); } u.ReplaceFile(1, temp + "\\main\\00000000\\meta\\banner.bin"); u.ReplaceFile(2, temp + "\\main\\00000000\\meta\\icon.bin"); @@ -464,18 +464,18 @@ namespace Sharpii } if (Quiet.quiet > 2 && fake == true) - System.Console.WriteLine("FakeSigning WAD"); + Console.WriteLine("FakeSigning WAD"); wad.FakeSign = fake; if (id != "") { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing channel ID to: {0}", id); + Console.WriteLine("Changing channel ID to: {0}", id); if (lwrid != "") { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing channel type to: {0}", lwrid); + Console.WriteLine("Changing channel type to: {0}", lwrid); } else { @@ -498,18 +498,18 @@ namespace Sharpii if (ios > -1) { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing startup IOS to: {0}", ios); + Console.WriteLine("Changing startup IOS to: {0}", ios); wad.ChangeStartupIOS(ios); } if (title != "") { if (Quiet.quiet > 2) - System.Console.WriteLine("Changing channel title to: {0}", title); + Console.WriteLine("Changing channel title to: {0}", title); wad.ChangeChannelTitles(title); } if (Quiet.quiet > 2) - System.Console.Write("Saving file..."); + Console.Write("Saving file..."); if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD") output = output + ".wad"; @@ -517,16 +517,16 @@ namespace Sharpii wad.Save(output); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } @@ -541,7 +541,7 @@ namespace Sharpii //Check if file exists if (File.Exists(input) == false) { - System.Console.WriteLine("ERROR: Unable to open file: {0}", input); + Console.WriteLine("ERROR: Unable to open file: {0}", input); return; } @@ -562,78 +562,78 @@ namespace Sharpii WAD wad = new WAD(); if (Quiet.quiet > 2) - System.Console.Write("Loading file..."); + Console.Write("Loading file..."); wad.LoadFile(input); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 2) - System.Console.Write("Unpacking WAD..."); + Console.Write("Unpacking WAD..."); wad.Unpack(output, cid); if (Quiet.quiet > 2) - System.Console.Write("Done!\n"); + Console.Write("Done!\n"); if (Quiet.quiet > 1) - System.Console.WriteLine("Operation completed succesfully!"); + Console.WriteLine("Operation completed succesfully!"); } catch (Exception ex) { - System.Console.WriteLine("An unknown error occured, please try again"); - System.Console.WriteLine(""); - System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message); + Console.WriteLine("An unknown error occured, please try again"); + Console.WriteLine(""); + Console.WriteLine("ERROR DETAILS: {0}", ex.Message); return; } } public static void WAD_help() { - System.Console.WriteLine(""); - System.Console.WriteLine("Sharpii {0} - WAD - A tool by person66, using libWiiSharp.dll by leathl", Version.version); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Usage:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Sharpii.exe WAD [-p | -u | -e | -i] input output [arguments]"); - System.Console.WriteLine(""); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" input The input file/folder"); - System.Console.WriteLine(" output The output file/folder"); - System.Console.WriteLine(" -p Pack WAD"); - System.Console.WriteLine(" -u Unpack WAD"); - System.Console.WriteLine(" -e Edit WAD"); - System.Console.WriteLine(" -i Get WAD info"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for unpacking:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -cid Use Content ID as name"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for info:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -o output Output info to text file"); - System.Console.WriteLine(" -titles Display titles in all languages"); - System.Console.WriteLine(""); - System.Console.WriteLine(" Arguments for packing/editing:"); - System.Console.WriteLine(""); - System.Console.WriteLine(" -id [TitleID] Change the 4-character title id"); - System.Console.WriteLine(" -ios [IOS] Change the Startup IOS"); - System.Console.WriteLine(" -title [title] Change the Channel name/title."); - System.Console.WriteLine(" If there are spaces, surround in quotes"); - System.Console.WriteLine(" -f Fakesign the WAD"); - System.Console.WriteLine(" -type [type] Change the Channel type. Possible values are:"); - System.Console.WriteLine(" Channel, DLC, GameChannel, HiddenChannels,"); - System.Console.WriteLine(" SystemChannels, or SystemTitles"); - System.Console.WriteLine(" -sound [wad] Use the sound from 'wad'"); - System.Console.WriteLine(" -banner [wad] Use the banner from 'wad'"); - System.Console.WriteLine(" -icon [wad] Use the icon from 'wad'"); - System.Console.WriteLine(" -dol [wad] Use the dol from 'wad'"); - System.Console.WriteLine(" NOTE: you can also just enter the path to a"); - System.Console.WriteLine(" regular dol file, instead of a wad"); + Console.WriteLine(""); + Console.WriteLine("Sharpii {0} - WAD - A tool by person66, using libWiiSharp.dll by leathl", Version.version); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Usage:"); + Console.WriteLine(""); + Console.WriteLine(" Sharpii.exe WAD [-p | -u | -e | -i] input output [arguments]"); + Console.WriteLine(""); + Console.WriteLine(""); + Console.WriteLine(" Arguments:"); + Console.WriteLine(""); + Console.WriteLine(" input The input file/folder"); + Console.WriteLine(" output The output file/folder"); + Console.WriteLine(" -p Pack WAD"); + Console.WriteLine(" -u Unpack WAD"); + Console.WriteLine(" -e Edit WAD"); + Console.WriteLine(" -i Get WAD info"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for unpacking:"); + Console.WriteLine(""); + Console.WriteLine(" -cid Use Content ID as name"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for info:"); + Console.WriteLine(""); + Console.WriteLine(" -o output Output info to text file"); + Console.WriteLine(" -titles Display titles in all languages"); + Console.WriteLine(""); + Console.WriteLine(" Arguments for packing/editing:"); + Console.WriteLine(""); + Console.WriteLine(" -id [TitleID] Change the 4-character title id"); + Console.WriteLine(" -ios [IOS] Change the Startup IOS"); + Console.WriteLine(" -title [title] Change the Channel name/title."); + Console.WriteLine(" If there are spaces, surround in quotes"); + Console.WriteLine(" -f Fakesign the WAD"); + Console.WriteLine(" -type [type] Change the Channel type. Possible values are:"); + Console.WriteLine(" Channel, DLC, GameChannel, HiddenChannels,"); + Console.WriteLine(" SystemChannels, or SystemTitles"); + Console.WriteLine(" -sound [wad] Use the sound from 'wad'"); + Console.WriteLine(" -banner [wad] Use the banner from 'wad'"); + Console.WriteLine(" -icon [wad] Use the icon from 'wad'"); + Console.WriteLine(" -dol [wad] Use the dol from 'wad'"); + Console.WriteLine(" NOTE: you can also just enter the path to a"); + Console.WriteLine(" regular dol file, instead of a wad"); } } } \ No newline at end of file diff --git a/WadInstaller/InstallerHelper.cs b/WadInstaller/InstallerHelper.cs index a87a1fc..4408a7f 100644 --- a/WadInstaller/InstallerHelper.cs +++ b/WadInstaller/InstallerHelper.cs @@ -41,7 +41,7 @@ namespace WadInstaller public static MemoryStream CreateInstaller(byte[] wadFileBytes, byte iosToUse) { - const int injectionPosition = 0x6A698; + const int injectionPosition = 0x665FC; const int maxAllowedSizeForWads = 8 * 1024 * 1024 - 32; //(Max 4MB-32bytes ) //0. Read length of the wad to ensure it has an allowed size diff --git a/WadInstaller/Resources/WadInstaller.dol.z b/WadInstaller/Resources/WadInstaller.dol.z index 7c83498..48a90a7 100644 Binary files a/WadInstaller/Resources/WadInstaller.dol.z and b/WadInstaller/Resources/WadInstaller.dol.z differ diff --git a/WadInstaller_Source/source/ahbprot.c b/WadInstaller_Source/source/ahbprot.c new file mode 100644 index 0000000..6aaa52a --- /dev/null +++ b/WadInstaller_Source/source/ahbprot.c @@ -0,0 +1,91 @@ +#include +#include +#include +#include +#include + +#include "ahbprot.h" + +#define MEM_PROT 0xD8B420A + + +const u8 identify_check[] = { 0x28, 0x03, 0xD1, 0x23 }; +const u8 identify_patch[] = { 0x00, 0x00 }; +const u8 addticket_vers_check[] = { 0xD2, 0x01, 0x4E, 0x56 }; +const u8 setuid_check[] = { 0xD1, 0x2A, 0x1C, 0x39 }; +const u8 setuid_patch[] = { 0x46, 0xC0 }; +const u8 isfs_perms_check[] = { 0x42, 0x8B, 0xD0, 0x01, 0x25, 0x66 }; +const u8 e0_patch[] = { 0xE0 }; +const u8 es_set_ahbprot_check[] = { 0x68, 0x5B, 0x22, 0xEC, 0x00, 0x52, 0x18, 0x9B, 0x68, 0x1B, 0x46, 0x98, 0x07, 0xDB }; +const u8 es_set_ahbprot_patch[] = { 0x01 }; + +const u32 identify_check_size = sizeof(identify_check); +const u32 identify_patch_size = sizeof(identify_patch); +const u32 addticket_vers_check_size = sizeof(addticket_vers_check); +const u32 setuid_check_size = sizeof(setuid_check); +const u32 setuid_patch_size = sizeof(setuid_patch); +const u32 isfs_perms_check_size = sizeof(isfs_perms_check); +const u32 e0_patch_size = sizeof(e0_patch); +const u32 es_set_ahbprot_check_size = sizeof(es_set_ahbprot_check); +const u32 es_set_ahbprot_patch_size = sizeof(es_set_ahbprot_patch); + +static u8 certs[0xA00] ATTRIBUTE_ALIGN(32); +static const char certs_fs[] ATTRIBUTE_ALIGN(32) = "/sys/cert.sys"; + +const u8 hash_old[] = { 0x20, 0x07, 0x4B, 0x0B }; +const u8 hash_patch[] = { 0x00 }; + +int get_certs(void) { + int fd, ret; + fd = IOS_Open(certs_fs, 1); + ret = IOS_Read(fd, certs, sizeof(certs)); + if (ret < sizeof(certs)) { + ret = -1; + } else { + IOS_Close(fd); + } + return ret; +} + +u32 apply_patch2(const char *name, const u8 *old, u32 old_size, const u8 *patch, u32 patch_size, u32 patch_offset) { + u32 * end = (u32 *) 0x80003134; + u8 *ptr = (u8 *) *end; + u32 i, found = 0; + u8 *start; + + while ((u32) ptr < (0x94000000 - old_size)) { + if (!memcmp(ptr, old, old_size)) { + found++; + start = ptr + patch_offset; + for (i = 0; i < patch_size; i++) { + *(start + i) = patch[i]; + } + ptr += patch_size; + DCFlushRange((u8 *) (((u32) start) >> 5 << 5), (patch_size >> 5 << 5) + 64); + ICInvalidateRange((u8 *)(((u32)start) >> 5 << 5), (patch_size >> 5 << 5) + 64); + break; + } + ptr++; + } + return found; +} + +u32 patchSetAHBPROT() { + u32 count = 0; + write16(MEM_PROT, 0); + count += apply_patch2("Set AHBPROT patch", es_set_ahbprot_check, es_set_ahbprot_check_size, es_set_ahbprot_patch, es_set_ahbprot_patch_size, 25); + write16(MEM_PROT, 1); + return count; +} + +u32 runtimePatchApply() { + u32 count = 0; + write16(MEM_PROT, 0); + count += apply_patch2("New Trucha (may fail)", hash_old, sizeof(hash_old), hash_patch, sizeof(hash_patch), 1); + count += apply_patch2("ES_Identify", identify_check, identify_check_size, identify_patch, identify_patch_size, 2); + count += apply_patch2("NAND Permissions", isfs_perms_check, isfs_perms_check_size, e0_patch, e0_patch_size, 2); + count += apply_patch2("Add ticket patch", addticket_vers_check, addticket_vers_check_size, e0_patch, e0_patch_size, 0); + count += apply_patch2("ES_SetUID", setuid_check, setuid_check_size, setuid_patch, setuid_patch_size, 0); + write16(MEM_PROT, 1); + return count; +} \ No newline at end of file diff --git a/WadInstaller_Source/source/ahbprot.h b/WadInstaller_Source/source/ahbprot.h new file mode 100644 index 0000000..0e2937f --- /dev/null +++ b/WadInstaller_Source/source/ahbprot.h @@ -0,0 +1,44 @@ +#ifndef _RUNTIMEIOSPATCH_H_ +#define _RUNTIMEIOSPATCH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define HAVE_AHBPROT ((*(vu32*)0xcd800064 == 0xFFFFFFFF) ? 1 : 0) + + +int get_certs(void); +int check_fakesig(void); + +extern const u8 identify_check[]; +extern const u8 identify_patch[]; +extern const u8 addticket_vers_check[]; +extern const u8 setuid_check[]; +extern const u8 setuid_patch[]; +extern const u8 isfs_perms_check[]; +extern const u8 e0_patch[]; +extern const u8 es_set_ahbprot_check[]; +extern const u8 es_set_ahbprot_patch[]; + +extern const u32 identify_check_size; +extern const u32 identify_patch_size; +extern const u32 addticket_vers_check_size; +extern const u32 setuid_check_size; +extern const u32 setuid_patch_size; +extern const u32 isfs_perms_check_size; +extern const u32 e0_patch_size; +extern const u32 es_set_ahbprot_check_size; +extern const u32 es_set_ahbprot_patch_size; + +u32 patchSetAHBPROT(); +u32 runtimePatchApply(); + +u32 PrintResult(u32 successful); +void ApplyingPatch(const char* which); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/WadInstaller_Source/source/menu.c b/WadInstaller_Source/source/menu.c index 313506c..b839d04 100644 --- a/WadInstaller_Source/source/menu.c +++ b/WadInstaller_Source/source/menu.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "fat.h" #include "restart.h" @@ -11,19 +12,35 @@ #include "video.h" #include "wad.h" #include "wpad.h" +#include "ahbprot.h" /* Constants */ #define CIOS_VERSION 249 + void LoadSelectedIOS() { u8 selectedIOS = Wad_SelectIOS(); - s32 ret; + + if (selectedIOS == 0) { + if (HAVE_AHBPROT) { + ret = patchSetAHBPROT(); + if (ret > 0) { + ret = runtimePatchApply(); + if (ret > 0) { + printf("\nUsing AHBPROT\n"); + return; + } + } + printf("\nAHBPROT FAILED!\n"); + } + } + ret = IOS_ReloadIOS(selectedIOS); if (ret<0) { - printf("\nUsing default IOS"); + printf("\nUsing default IOS\n"); } else { printf("\nUsing selected IOS %d\n", selectedIOS); diff --git a/WadInstaller_Source/source/wad.c b/WadInstaller_Source/source/wad.c index 76b7151..5e17020 100644 --- a/WadInstaller_Source/source/wad.c +++ b/WadInstaller_Source/source/wad.c @@ -81,6 +81,32 @@ int mread(void * buf, int size, int count) //-------------------------- INSTALL FROM MEMORY ------------------------------- +void __Wad_FixTicket(signed_blob *p_tik) { + u8 *data = (u8 *) p_tik; + u8 *ckey = data + 0x1F1; + + if (*ckey > 1) { + /* Set common key */ + *ckey = 0; + + /* Fakesign ticket */ + brute_tik((tik *) p_tik); + } +} + +s32 brute_tik(tik *p_tik) { + u16 fill; + for (fill = 0; fill < 65535; fill++) { + p_tik->padding = fill; + sha1 hash; + // gprintf("SHA1(%p, %x, %p)\n", p_tmd, TMD_SIZE(p_tmd), hash); + SHA1((u8 *) p_tik, sizeof(tik), hash); + if (hash[0] == 0) return 1; + } + printf("Unable to fix tik :(\n"); + return -1; +} + s32 __Wad_ReadFile(void *outbuf, u32 offset, u32 len) { s32 ret; @@ -192,8 +218,12 @@ s32 __Wad_Install() ret = __Wad_ReadAlloc((void *)&p_tik, offset, header->tik_len); if (ret < 0) goto err; - else + else { offset += round_up(header->tik_len, 64); + + // Fix ticket (This is what caused me the headaches when adding AHBPROT -person66) + __Wad_FixTicket(p_tik); + } /* WAD TMD */ ret = __Wad_ReadAlloc((void *)&p_tmd, offset, header->tmd_len); diff --git a/WadInstaller_Source/source/wad.h b/WadInstaller_Source/source/wad.h index 1471fdf..db23a86 100644 --- a/WadInstaller_Source/source/wad.h +++ b/WadInstaller_Source/source/wad.h @@ -4,5 +4,6 @@ /* Prototypes */ s32 Wad_InstallFromMemory(); u8 Wad_SelectIOS(void); +s32 brute_tik(tik *p_tik); #endif