mirror of
https://github.com/mogzol/sharpii.git
synced 2024-11-22 02:09:17 +01:00
Updated to 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
This commit is contained in:
parent
bc65416cf7
commit
a6d7600859
@ -55,7 +55,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,15 +64,15 @@ namespace Sharpii
|
|||||||
{
|
{
|
||||||
//Now convert it
|
//Now convert it
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
Wave WavFile = libWiiSharp.BNS.BnsToWave(input);
|
Wave WavFile = libWiiSharp.BNS.BnsToWave(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving wav...");
|
Console.Write("Saving wav...");
|
||||||
|
|
||||||
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAV")
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAV")
|
||||||
output = output + ".wav";
|
output = output + ".wav";
|
||||||
@ -80,16 +80,16 @@ namespace Sharpii
|
|||||||
WavFile.Save(output);
|
WavFile.Save(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,28 +131,28 @@ namespace Sharpii
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
BNS WavFile = new BNS(input);
|
BNS WavFile = new BNS(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (loop == true)
|
if (loop == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Applying loop");
|
Console.WriteLine("Applying loop");
|
||||||
WavFile.SetLoop(1);
|
WavFile.SetLoop(1);
|
||||||
}
|
}
|
||||||
if (mono == true)
|
if (mono == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Converting to mono");
|
Console.WriteLine("Converting to mono");
|
||||||
WavFile.StereoToMono = true;
|
WavFile.StereoToMono = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving BNS...");
|
Console.Write("Saving BNS...");
|
||||||
|
|
||||||
WavFile.Convert();
|
WavFile.Convert();
|
||||||
|
|
||||||
@ -162,42 +162,42 @@ namespace Sharpii
|
|||||||
WavFile.Save(output);
|
WavFile.Save(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Wav2BNS_help()
|
public static void Wav2BNS_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - BNS - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - BNS - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii BNS [-to | -from] input.wav output.bns [-l/-loop] [-m/-mono]");
|
Console.WriteLine(" Sharpii BNS [-to | -from] input.wav output.bns [-l/-loop] [-m/-mono]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -to Convert wav to bns");
|
Console.WriteLine(" -to Convert wav to bns");
|
||||||
System.Console.WriteLine(" -from Create wav from bns");
|
Console.WriteLine(" -from Create wav from bns");
|
||||||
System.Console.WriteLine(" input.wav The input wave sound file");
|
Console.WriteLine(" input.wav The input wave sound file");
|
||||||
System.Console.WriteLine(" output.bns The output BNS sound file");
|
Console.WriteLine(" output.bns The output BNS sound file");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for converting to BNS:");
|
Console.WriteLine(" Arguments for converting to BNS:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -l | -loop Creates a looping BNS");
|
Console.WriteLine(" -l | -loop Creates a looping BNS");
|
||||||
System.Console.WriteLine(" -m | -mono Convert stereo sound to mono BNS");
|
Console.WriteLine(" -m | -mono Convert stereo sound to mono BNS");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
176
Sharpii/HBC.cs
176
Sharpii/HBC.cs
@ -41,6 +41,7 @@ namespace Sharpii
|
|||||||
string protocol = "JODI";
|
string protocol = "JODI";
|
||||||
string arguments = "";
|
string arguments = "";
|
||||||
bool compress = true;
|
bool compress = true;
|
||||||
|
bool saveip = false;
|
||||||
|
|
||||||
//Get parameters
|
//Get parameters
|
||||||
for (int i = 1; i < args.Length; i++)
|
for (int i = 1; i < args.Length; i++)
|
||||||
@ -55,6 +56,9 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
ip = args[i + 1];
|
ip = args[i + 1];
|
||||||
break;
|
break;
|
||||||
|
case "-SAVEIP":
|
||||||
|
saveip = true;
|
||||||
|
break;
|
||||||
case "-DOL":
|
case "-DOL":
|
||||||
if (i + 1 >= args.Length)
|
if (i + 1 >= args.Length)
|
||||||
{
|
{
|
||||||
@ -65,7 +69,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,44 +94,58 @@ namespace Sharpii
|
|||||||
//Run main part, and check for exceptions
|
//Run main part, and check for exceptions
|
||||||
try
|
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;
|
libWiiSharp.Protocol proto = Protocol.JODI;
|
||||||
|
|
||||||
if (Quiet.quiet > 2 && protocol == "HAXX")
|
if (Quiet.quiet > 2 && protocol == "HAXX")
|
||||||
System.Console.WriteLine("Using old protocol");
|
Console.WriteLine("Using old protocol");
|
||||||
|
|
||||||
if (protocol == "HAXX")
|
if (protocol == "HAXX")
|
||||||
proto = Protocol.HAXX;
|
proto = Protocol.HAXX;
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading File...");
|
Console.Write("Loading File...");
|
||||||
|
|
||||||
HbcTransmitter file = new HbcTransmitter(proto, ip);
|
HbcTransmitter file = new HbcTransmitter(proto, ip);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
|
|
||||||
if (Quiet.quiet > 2 && compress == true)
|
if (Quiet.quiet > 2 && compress == true)
|
||||||
System.Console.Write("Compressing File...");
|
Console.Write("Compressing File...");
|
||||||
|
|
||||||
file.Compress = compress;
|
file.Compress = compress;
|
||||||
|
|
||||||
if (Quiet.quiet > 2 && compress == true)
|
if (Quiet.quiet > 2 && compress == true)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Sending file...");
|
Console.Write("Sending file...");
|
||||||
|
|
||||||
file.TransmitFile(Path.GetFileName(input) + arguments, File.ReadAllBytes(input));
|
file.TransmitFile(Path.GetFileName(input) + arguments, File.ReadAllBytes(input));
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,9 +168,9 @@ namespace Sharpii
|
|||||||
|
|
||||||
if (!File.Exists("WadInstaller.dll"))
|
if (!File.Exists("WadInstaller.dll"))
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("ERROR: WadInstaller.dll not found");
|
Console.WriteLine("ERROR: WadInstaller.dll not found");
|
||||||
System.Console.WriteLine("\n\nAttemp to download? [Y/N]");
|
Console.WriteLine("\n\nAttemp to download? [Y/N]");
|
||||||
System.Console.Write("\n>>");
|
Console.Write("\n>>");
|
||||||
string ans = Console.ReadLine();
|
string ans = Console.ReadLine();
|
||||||
if (ans.ToUpper() == "Y")
|
if (ans.ToUpper() == "Y")
|
||||||
{
|
{
|
||||||
@ -164,7 +182,7 @@ namespace Sharpii
|
|||||||
Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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
|
else
|
||||||
return false;
|
return false;
|
||||||
@ -179,6 +197,8 @@ namespace Sharpii
|
|||||||
string ip = "";
|
string ip = "";
|
||||||
string ios = "";
|
string ios = "";
|
||||||
string protocol = "JODI";
|
string protocol = "JODI";
|
||||||
|
bool ahb = false;
|
||||||
|
bool saveip = false;
|
||||||
|
|
||||||
//Get parameters
|
//Get parameters
|
||||||
for (int i = 1; i < args.Length; i++)
|
for (int i = 1; i < args.Length; i++)
|
||||||
@ -188,7 +208,7 @@ namespace Sharpii
|
|||||||
case "-IOS":
|
case "-IOS":
|
||||||
if (i + 1 >= args.Length)
|
if (i + 1 >= args.Length)
|
||||||
{
|
{
|
||||||
Console.WriteLine("ERROR: No ip set");
|
Console.WriteLine("ERROR: No ios set");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ios = args[i + 1];
|
ios = args[i + 1];
|
||||||
@ -198,6 +218,9 @@ namespace Sharpii
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "-AHB":
|
||||||
|
ahb = true;
|
||||||
|
break;
|
||||||
case "-IP":
|
case "-IP":
|
||||||
if (i + 1 >= args.Length)
|
if (i + 1 >= args.Length)
|
||||||
{
|
{
|
||||||
@ -206,6 +229,9 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
ip = args[i + 1];
|
ip = args[i + 1];
|
||||||
break;
|
break;
|
||||||
|
case "-SAVEIP":
|
||||||
|
saveip = true;
|
||||||
|
break;
|
||||||
case "-WAD":
|
case "-WAD":
|
||||||
if (i + 1 >= args.Length)
|
if (i + 1 >= args.Length)
|
||||||
{
|
{
|
||||||
@ -216,7 +242,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -229,36 +255,57 @@ namespace Sharpii
|
|||||||
//Run main part, and check for exceptions
|
//Run main part, and check for exceptions
|
||||||
try
|
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;
|
libWiiSharp.Protocol proto = Protocol.JODI;
|
||||||
|
|
||||||
if (Quiet.quiet > 2 && protocol == "HAXX")
|
if (Quiet.quiet > 2 && protocol == "HAXX")
|
||||||
System.Console.WriteLine("Using old protocol");
|
Console.WriteLine("Using old protocol");
|
||||||
|
|
||||||
if (protocol == "HAXX")
|
if (protocol == "HAXX")
|
||||||
proto = Protocol.HAXX;
|
proto = Protocol.HAXX;
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading File...");
|
Console.Write("Loading File...");
|
||||||
|
|
||||||
HbcTransmitter file = new HbcTransmitter(proto, ip);
|
HbcTransmitter file = new HbcTransmitter(proto, ip);
|
||||||
byte[] Installer = WadInstaller.InstallerHelper.CreateInstaller(input, (byte)Convert.ToInt32(ios)).ToArray();
|
byte[] Installer = WadInstaller.InstallerHelper.CreateInstaller(input, (byte)Convert.ToInt32(ios)).ToArray();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Sending file...");
|
Console.Write("Sending file...");
|
||||||
|
|
||||||
file.TransmitFile("WadInstaller.dol", Installer);
|
file.TransmitFile("WadInstaller.dol", Installer);
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,47 +315,52 @@ namespace Sharpii
|
|||||||
|
|
||||||
private static void SendDol_help()
|
private static void SendDol_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - SendDol - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - SendDol - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe SendDol -ip ip_adress [-old] [-nocomp] -dol file [args]");
|
Console.WriteLine(" Sharpii.exe SendDol -ip ip_adress [-old] [-nocomp] [-saveip]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" -dol file [args]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine(" -dol file The dol file to send");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -ip ip_adress The IP address of your wii");
|
Console.WriteLine(" -dol file The dol file to send");
|
||||||
System.Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC");
|
Console.WriteLine(" -ip ip_adress The IP address of your wii");
|
||||||
System.Console.WriteLine(" -nocomp Disable compression");
|
Console.WriteLine(" -saveip Save entered IP address for future use");
|
||||||
System.Console.WriteLine(" args Dol arguments");
|
Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" -nocomp Disable compression");
|
||||||
System.Console.WriteLine(" NOTE: Any arguments after '-dol file' will be sent as dol");
|
Console.WriteLine(" args Dol arguments");
|
||||||
System.Console.WriteLine(" arguments");
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine(" NOTE: Any arguments after '-dol file' will be sent as dol");
|
||||||
|
Console.WriteLine(" arguments");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SendWad_help()
|
public static void SendWad_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - SendWad - A tool by person66, using libWiiSharp.dll by leathl,", Version.version);
|
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");
|
Console.WriteLine(" and CRAP's installer by WiiCrazy/I.R.on");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe SendWad -ip ip_adress -wad file -ios ios [-old] [-nocomp]");
|
Console.WriteLine(" Sharpii.exe SendWad -ip ip_adress -wad file [-ios IOS | -ahb] [-old]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" [-nocomp] [-saveip]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine(" -dol file The dol file to send");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -ip ip_adress The IP address of your wii");
|
Console.WriteLine(" -dol file The dol file to send");
|
||||||
System.Console.WriteLine(" -ios ios The ios to use to install the wad");
|
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");
|
Console.WriteLine(" -ios ios The ios to use to install the wad");
|
||||||
System.Console.WriteLine(" -nocomp Disable compression");
|
Console.WriteLine(" -ahb Use HW_AHBPROT to install the wad");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine(" -saveip Save entered IP address for future use");
|
||||||
System.Console.WriteLine(" NOTE: WAD files must be less than 8MB large");
|
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -42,7 +42,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,12 +132,12 @@ namespace Sharpii
|
|||||||
ios.KeepOriginalFooter = true;
|
ios.KeepOriginalFooter = true;
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading File...");
|
Console.Write("Loading File...");
|
||||||
|
|
||||||
ios.LoadFile(input);
|
ios.LoadFile(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
//Check if WAD is an IOS
|
//Check if WAD is an IOS
|
||||||
if ((ios.TitleID >> 32) != 1 || (ios.TitleID & 0xffffffff) > 255 || (ios.TitleID & 0xffffffff) < 3)
|
if ((ios.TitleID >> 32) != 1 || (ios.TitleID & 0xffffffff) > 255 || (ios.TitleID & 0xffffffff) < 3)
|
||||||
@ -154,28 +154,28 @@ namespace Sharpii
|
|||||||
if (fs == true)
|
if (fs == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Applying Fakesigning patch");
|
Console.WriteLine("Applying Fakesigning patch");
|
||||||
patcher.PatchFakeSigning();
|
patcher.PatchFakeSigning();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (es == true)
|
if (es == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Applying ES_Identify patch");
|
Console.WriteLine("Applying ES_Identify patch");
|
||||||
patcher.PatchEsIdentify();
|
patcher.PatchEsIdentify();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (np == true)
|
if (np == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Applying NAND permissions patch");
|
Console.WriteLine("Applying NAND permissions patch");
|
||||||
patcher.PatchNandPermissions();
|
patcher.PatchNandPermissions();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vp == true)
|
if (vp == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Applying Version patch");
|
Console.WriteLine("Applying Version patch");
|
||||||
patcher.PatchVP();
|
patcher.PatchVP();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,14 +185,14 @@ namespace Sharpii
|
|||||||
if (slot > -1)
|
if (slot > -1)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
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);
|
ios.TitleID = (ulong)((1UL << 32) | (uint)slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version > -1)
|
if (version > -1)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
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;
|
ios.TitleVersion = (ushort)version;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,13 +200,13 @@ namespace Sharpii
|
|||||||
if (output != "")
|
if (output != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Saving to file: {0}", output);
|
Console.WriteLine("Saving to file: {0}", output);
|
||||||
ios.Save(output);
|
ios.Save(output);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving file...");
|
Console.Write("Saving file...");
|
||||||
|
|
||||||
if (output != "")
|
if (output != "")
|
||||||
{
|
{
|
||||||
@ -217,16 +217,16 @@ namespace Sharpii
|
|||||||
ios.Save(input);
|
ios.Save(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,26 +236,26 @@ namespace Sharpii
|
|||||||
|
|
||||||
public static void IOS_help()
|
public static void IOS_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - IOS - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
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");
|
Console.WriteLine(" Code based off PatchIOS by leathl");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe IOS input [-o output] [-fs] [-es] [-np] [-vp] [-s slot]");
|
Console.WriteLine(" Sharpii.exe IOS input [-o output] [-fs] [-es] [-np] [-vp] [-s slot]");
|
||||||
System.Console.WriteLine(" [-v version]");
|
Console.WriteLine(" [-v version]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" input The input file");
|
Console.WriteLine(" input The input file");
|
||||||
System.Console.WriteLine(" -o output The output file");
|
Console.WriteLine(" -o output The output file");
|
||||||
System.Console.WriteLine(" -fs Patch Fakesigning");
|
Console.WriteLine(" -fs Patch Fakesigning");
|
||||||
System.Console.WriteLine(" -es Patch ES_Identify");
|
Console.WriteLine(" -es Patch ES_Identify");
|
||||||
System.Console.WriteLine(" -np Patch NAND Permissions");
|
Console.WriteLine(" -np Patch NAND Permissions");
|
||||||
System.Console.WriteLine(" -vp Add version patch");
|
Console.WriteLine(" -vp Add version patch");
|
||||||
System.Console.WriteLine(" -s # Change IOS slot to #");
|
Console.WriteLine(" -s # Change IOS slot to #");
|
||||||
System.Console.WriteLine(" -v # Change IOS version to #");
|
Console.WriteLine(" -v # Change IOS version to #");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -169,14 +169,14 @@ namespace Sharpii
|
|||||||
//Error checking & stuff
|
//Error checking & stuff
|
||||||
if (id == "")
|
if (id == "")
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("ERROR: No ID specified");
|
Console.WriteLine("ERROR: No ID specified");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version == "")
|
if (version == "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("No version specified, using latest", version);
|
Console.WriteLine("No version specified, using latest", version);
|
||||||
version = "LATEST";
|
version = "LATEST";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,14 +188,14 @@ namespace Sharpii
|
|||||||
version = tmd.TitleVersion.ToString();
|
version = tmd.TitleVersion.ToString();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
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
|
if (entered == false) //Will only be false if no store type argument was given
|
||||||
{
|
{
|
||||||
store.Add(StoreType.All);
|
store.Add(StoreType.All);
|
||||||
if (Quiet.quiet > 2)
|
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")
|
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;
|
NoOut = true;
|
||||||
output = ios == "" ? id + "v" + version : ios.Substring(0, ios.Length - 4);
|
output = ios == "" ? id + "v" + version : ios.Substring(0, ios.Length - 4);
|
||||||
if (Quiet.quiet > 2)
|
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
|
//Main part, catches random/unexpected exceptions
|
||||||
@ -226,7 +226,7 @@ namespace Sharpii
|
|||||||
if (local == true)
|
if (local == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Using local files if present...");
|
Console.WriteLine("Using local files if present...");
|
||||||
nus.UseLocalFiles = true;
|
nus.UseLocalFiles = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,17 +234,17 @@ namespace Sharpii
|
|||||||
if (content != "")
|
if (content != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Downloading content...");
|
Console.Write("Downloading content...");
|
||||||
|
|
||||||
nus.DownloadSingleContent(id, version, content, output);
|
nus.DownloadSingleContent(id, version, content, output);
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Downloading title...");
|
Console.Write("Downloading title...");
|
||||||
|
|
||||||
string realout = output;
|
string realout = output;
|
||||||
if (wad == true)
|
if (wad == true)
|
||||||
@ -255,17 +255,17 @@ namespace Sharpii
|
|||||||
WadIosNamingStuff(wad, temp, id, version, ios, NoOut, output, realout);
|
WadIosNamingStuff(wad, temp, id, version, ios, NoOut, output, realout);
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +279,7 @@ namespace Sharpii
|
|||||||
{
|
{
|
||||||
if (!File.Exists(temp + "\\" + id + "v" + version + ".wad"))
|
if (!File.Exists(temp + "\\" + id + "v" + version + ".wad"))
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("ERROR: Can't find WAD");
|
Console.WriteLine("ERROR: Can't find WAD");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ios != "" && NoOut == true)
|
if (ios != "" && NoOut == true)
|
||||||
@ -318,36 +318,36 @@ namespace Sharpii
|
|||||||
|
|
||||||
public static void NUS_help()
|
public static void NUS_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - NUSD - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - NUSD - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe NUSD [-id titleID | -ios IOS] [-v version] [-o otput] [-all]");
|
Console.WriteLine(" Sharpii.exe NUSD [-id titleID | -ios IOS] [-v version] [-o otput] [-all]");
|
||||||
System.Console.WriteLine(" [-wad] [-decrypt] [-encrypt] [-local] [-s content]");
|
Console.WriteLine(" [-wad] [-decrypt] [-encrypt] [-local] [-s content]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -id titleID [required] The Title ID of the file you wish to download");
|
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");
|
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");
|
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");
|
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.");
|
Console.WriteLine(" '-id', use one or the other, but not both.");
|
||||||
System.Console.WriteLine(" -o output Folder to output the files to");
|
Console.WriteLine(" -o output Folder to output the files to");
|
||||||
System.Console.WriteLine(" -local Use local files if present");
|
Console.WriteLine(" -local Use local files if present");
|
||||||
System.Console.WriteLine(" -s content Download a single content from the file");
|
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");
|
Console.WriteLine(" NOTE: When using this, output MUST have a path and a");
|
||||||
System.Console.WriteLine(" filename. For current directory use '.\\[filename]'");
|
Console.WriteLine(" filename. For current directory use '.\\[filename]'");
|
||||||
System.Console.WriteLine(" -all Create and keep encrypted, decrypted, and WAD versions");
|
Console.WriteLine(" -all Create and keep encrypted, decrypted, and WAD versions");
|
||||||
System.Console.WriteLine(" of the file you wish to download");
|
Console.WriteLine(" of the file you wish to download");
|
||||||
System.Console.WriteLine(" -wad Keep only the WAD version of the file you wish to");
|
Console.WriteLine(" -wad Keep only the WAD version of the file you wish to");
|
||||||
System.Console.WriteLine(" download");
|
Console.WriteLine(" download");
|
||||||
System.Console.WriteLine(" -decrypt Keep only the decrypted contents of the file you wish to");
|
Console.WriteLine(" -decrypt Keep only the decrypted contents of the file you wish to");
|
||||||
System.Console.WriteLine(" download");
|
Console.WriteLine(" download");
|
||||||
System.Console.WriteLine(" -encrypt Keep only the encrypted contents of the file you wish to");
|
Console.WriteLine(" -encrypt Keep only the encrypted contents of the file you wish to");
|
||||||
System.Console.WriteLine(" download");
|
Console.WriteLine(" download");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -34,9 +34,9 @@ namespace Sharpii
|
|||||||
|
|
||||||
if (!File.Exists("libWiiSharp.dll"))
|
if (!File.Exists("libWiiSharp.dll"))
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("ERROR: libWiiSharp.dll not found");
|
Console.WriteLine("ERROR: libWiiSharp.dll not found");
|
||||||
System.Console.WriteLine("\n\nAttemp to download? [Y/N]");
|
Console.WriteLine("\n\nAttemp to download? [Y/N]");
|
||||||
System.Console.Write("\n>>");
|
Console.Write("\n>>");
|
||||||
string ans = Console.ReadLine();
|
string ans = Console.ReadLine();
|
||||||
if (ans.ToUpper() == "Y")
|
if (ans.ToUpper() == "Y")
|
||||||
{
|
{
|
||||||
@ -48,7 +48,7 @@ namespace Sharpii
|
|||||||
Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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
|
else
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
@ -70,70 +70,77 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string Function = args[0];
|
string Function = args[0].ToUpper();
|
||||||
bool gotSomewhere = false;
|
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();
|
help();
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "BNS")
|
if (Function == "BNS")
|
||||||
{
|
{
|
||||||
BNS_Stuff.BNS(args);
|
BNS_Stuff.BNS(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "WAD")
|
if (Function == "WAD")
|
||||||
{
|
{
|
||||||
WAD_Stuff.WAD(args);
|
WAD_Stuff.WAD(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "TPL")
|
if (Function == "TPL")
|
||||||
{
|
{
|
||||||
TPL_Stuff.TPL(args);
|
TPL_Stuff.TPL(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "U8")
|
if (Function == "U8")
|
||||||
{
|
{
|
||||||
U8_Stuff.U8(args);
|
U8_Stuff.U8(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "IOS")
|
if (Function == "IOS")
|
||||||
{
|
{
|
||||||
IOS_Stuff.IOS(args);
|
IOS_Stuff.IOS(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "NUS" || Function.ToUpper() == "NUSD")
|
if (Function == "NUS" || Function == "NUSD")
|
||||||
{
|
{
|
||||||
NUS_Stuff.NUS(args);
|
NUS_Stuff.NUS(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "SENDDOL" || Function.ToUpper() == "SENDOL")
|
if (Function == "SENDDOL" || Function == "SENDOL")
|
||||||
{
|
{
|
||||||
HBC_Stuff.SendDol(args);
|
HBC_Stuff.SendDol(args);
|
||||||
gotSomewhere = true;
|
gotSomewhere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Function.ToUpper() == "SENDWAD")
|
if (Function == "SENDWAD")
|
||||||
{
|
{
|
||||||
bool cont = HBC_Stuff.SendWad_Check(args);
|
bool cont = HBC_Stuff.SendWad_Check(args);
|
||||||
if (cont == true) HBC_Stuff.SendWad(args);
|
if (cont == true) HBC_Stuff.SendWad(args);
|
||||||
gotSomewhere = true;
|
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 (gotSomewhere == false)
|
||||||
{
|
{
|
||||||
//If tuser gets here, they entered something wrong
|
//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";
|
string temp = Path.GetTempPath() + "Sharpii.tmp";
|
||||||
@ -143,37 +150,58 @@ namespace Sharpii
|
|||||||
Environment.Exit(0);
|
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()
|
private static void help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii [function] [parameters] [-quiet | -q | -lots]");
|
Console.WriteLine(" Sharpii [function] [parameters] [-quiet | -q | -lots]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Functions:");
|
Console.WriteLine(" Functions:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" BNS Convert a wav to bns, or vice versa");
|
Console.WriteLine(" BNS Convert a wav to bns, or vice versa");
|
||||||
System.Console.WriteLine(" WAD Pack/Unpack/Edit a wad file");
|
Console.WriteLine(" WAD Pack/Unpack/Edit a wad file");
|
||||||
System.Console.WriteLine(" TPL Convert a image to a tpl, or vice versa");
|
Console.WriteLine(" TPL Convert a image to a tpl, or vice versa");
|
||||||
System.Console.WriteLine(" U8 Pack/Unpack a U8 archive");
|
Console.WriteLine(" U8 Pack/Unpack a U8 archive");
|
||||||
System.Console.WriteLine(" IOS Apply various patches to an IOS");
|
Console.WriteLine(" IOS Apply various patches to an IOS");
|
||||||
System.Console.WriteLine(" NUSD Download files from NUS");
|
Console.WriteLine(" NUSD Download files from NUS");
|
||||||
System.Console.WriteLine(" SendDol Send a dol to the HBC over wifi");
|
Console.WriteLine(" SendDol Send a dol to the HBC over wifi");
|
||||||
System.Console.WriteLine(" SendWad Send a wad to the HBC over wifi");
|
Console.WriteLine(" SendWad Send a wad to the HBC over wifi");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" NOTE: Too see more detailed descriptions of any of the above,");
|
Console.WriteLine(" NOTE: Too see more detailed descriptions of any of the above,");
|
||||||
System.Console.WriteLine(" use 'Sharpii [function] -h'");
|
Console.WriteLine(" use 'Sharpii [function] -h'");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Global Arguments:");
|
Console.WriteLine(" Global Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -quiet | -q Try not to display any output");
|
Console.WriteLine(" -quiet | -q Try not to display any output");
|
||||||
System.Console.WriteLine(" -lots Display lots of output");
|
Console.WriteLine(" -lots Display lots of output");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -213,5 +241,5 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
public class Version
|
public class Version
|
||||||
{
|
{
|
||||||
public static string version = "1.5";
|
public static string version = "1.6";
|
||||||
}
|
}
|
@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
|||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("Sharpii")]
|
[assembly: AssemblyProduct("Sharpii")]
|
||||||
[assembly: AssemblyCopyright("2011 Person66")]
|
[assembly: AssemblyCopyright("2011 person66")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[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
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.6")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
[assembly: AssemblyFileVersion("1.6")]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/------------------------------------------------------------------------------>
|
/------------------------------------------------------------------------------>
|
||||||
Sharpii 1.5
|
Sharpii 1.6
|
||||||
<---------------------------------------------------------------->
|
<---------------------------------------------------------------->
|
||||||
An app by person66
|
An app by person66
|
||||||
libWiiSharp.dll by leathl (mod by scooby74029)
|
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
|
found online. If you are sending a zip file instead of a dol, it wont be
|
||||||
compressed at all, no matter what.
|
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
|
/----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
|
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
|
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
|
I would also like to thank XFlak and JoostinOnline for doing a bit of beta
|
||||||
@ -117,6 +134,12 @@ See "LICENSE.txt" for more information.
|
|||||||
/----CHANGELOG
|
/----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
|
1.5
|
||||||
- Added the ability to send WADs to the HBC using SendWad
|
- Added the ability to send WADs to the HBC using SendWad
|
||||||
- You can now download an IOS with -ios # in NUSD
|
- You can now download an IOS with -ios # in NUSD
|
||||||
|
@ -91,8 +91,8 @@
|
|||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="LICENSE.txt" />
|
<None Include="LICENSE.txt" />
|
||||||
<Content Include="README.txt" />
|
<None Include="README.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\WadInstaller\WadInstaller.csproj">
|
<ProjectReference Include="..\WadInstaller\WadInstaller.csproj">
|
||||||
|
104
Sharpii/TPL.cs
104
Sharpii/TPL.cs
@ -46,7 +46,7 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
|
|
||||||
//If tuser gets here, they entered something wrong
|
//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;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,30 +68,30 @@ namespace Sharpii
|
|||||||
{
|
{
|
||||||
//Load tpl
|
//Load tpl
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
TPL tplfile = libWiiSharp.TPL.Load(input);
|
TPL tplfile = libWiiSharp.TPL.Load(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
//save image
|
//save image
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Extracting texture...");
|
Console.Write("Extracting texture...");
|
||||||
|
|
||||||
tplfile.ExtractTexture(output);
|
tplfile.ExtractTexture(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,7 +106,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ namespace Sharpii
|
|||||||
//Check if valid format was entered
|
//Check if valid format was entered
|
||||||
if (tplFormat != "I4" & tplFormat != "I8" & tplFormat != "IA4" & tplFormat != "IA8" & tplFormat != "RGB565" & tplFormat != "RGB5A3" & tplFormat != "RGBA8")
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,20 +163,20 @@ namespace Sharpii
|
|||||||
format = TPL_TextureFormat.RGBA8;
|
format = TPL_TextureFormat.RGBA8;
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Format set to: {0}", tplFormat);
|
Console.WriteLine("Format set to: {0}", tplFormat);
|
||||||
|
|
||||||
//Make tpl
|
//Make tpl
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Creating tpl file...");
|
Console.Write("Creating tpl file...");
|
||||||
|
|
||||||
TPL tplfile = libWiiSharp.TPL.FromImage(input, format);
|
TPL tplfile = libWiiSharp.TPL.FromImage(input, format);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
//save
|
//save
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving tpl file...");
|
Console.Write("Saving tpl file...");
|
||||||
|
|
||||||
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TPL")
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TPL")
|
||||||
output = output + ".tpl";
|
output = output + ".tpl";
|
||||||
@ -184,53 +184,53 @@ namespace Sharpii
|
|||||||
tplfile.Save(output);
|
tplfile.Save(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void TPL_help()
|
public static void TPL_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - TPL - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - TPL - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe TPL [-to | -from] input output [arguments]");
|
Console.WriteLine(" Sharpii.exe TPL [-to | -from] input output [arguments]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -to Convert image to tpl");
|
Console.WriteLine(" -to Convert image to tpl");
|
||||||
System.Console.WriteLine(" -from Create image from tpl");
|
Console.WriteLine(" -from Create image from tpl");
|
||||||
System.Console.WriteLine(" input The input file/folder");
|
Console.WriteLine(" input The input file/folder");
|
||||||
System.Console.WriteLine(" output The output file/folder");
|
Console.WriteLine(" output The output file/folder");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for Converting to TPL:");
|
Console.WriteLine(" Arguments for Converting to TPL:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -format | -f The format of the tpl. Possible values are:");
|
Console.WriteLine(" -format | -f The format of the tpl. Possible values are:");
|
||||||
System.Console.WriteLine(" RGBA8 (High Quality with Alpha)");
|
Console.WriteLine(" RGBA8 (High Quality with Alpha)");
|
||||||
System.Console.WriteLine(" RGB565 (Medium Quality without Alpha)");
|
Console.WriteLine(" RGB565 (Medium Quality without Alpha)");
|
||||||
System.Console.WriteLine(" RGB5A3 (Low Quality with Alpha)");
|
Console.WriteLine(" RGB5A3 (Low Quality with Alpha)");
|
||||||
System.Console.WriteLine(" IA8 (High quality B/W with Alpha)");
|
Console.WriteLine(" IA8 (High quality B/W with Alpha)");
|
||||||
System.Console.WriteLine(" IA4 (Low Quality B/W with Alpha)");
|
Console.WriteLine(" IA4 (Low Quality B/W with Alpha)");
|
||||||
System.Console.WriteLine(" I8 (High Quality B/W without Alpha)");
|
Console.WriteLine(" I8 (High Quality B/W without Alpha)");
|
||||||
System.Console.WriteLine(" I4 (Low Quality B/W without Alpha)");
|
Console.WriteLine(" I4 (Low Quality B/W without Alpha)");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Notes:");
|
Console.WriteLine(" Notes:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" If no format is specified when converting to TPL, RGB565 is used.");
|
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(" When converting to an image, the image format is chosen based on the extension");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,7 +46,7 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
|
|
||||||
//If tuser gets here, they entered something wrong
|
//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;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -59,13 +59,13 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
//Check if file is U8
|
//Check if file is U8
|
||||||
if (libWiiSharp.U8.IsU8(input) != true)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,29 +76,29 @@ namespace Sharpii
|
|||||||
U8 U8file = new U8();
|
U8 U8file = new U8();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
U8file.LoadFile(input);
|
U8file.LoadFile(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Extracting file...");
|
Console.Write("Extracting file...");
|
||||||
|
|
||||||
U8file.Extract(output);
|
U8file.Extract(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,7 +115,7 @@ namespace Sharpii
|
|||||||
//Check if folder exists
|
//Check if folder exists
|
||||||
if (Directory.Exists(input) == 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ namespace Sharpii
|
|||||||
|
|
||||||
if (imd5 == true && imet != "")
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,24 +152,24 @@ namespace Sharpii
|
|||||||
U8 U8folder = new U8();
|
U8 U8folder = new U8();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading folder...");
|
Console.Write("Loading folder...");
|
||||||
|
|
||||||
U8folder.CreateFromDirectory(input);
|
U8folder.CreateFromDirectory(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (imd5 == true)
|
if (imd5 == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Adding IMD5 Header");
|
Console.WriteLine("Adding IMD5 Header");
|
||||||
U8folder.AddHeaderImd5();
|
U8folder.AddHeaderImd5();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imet != "")
|
if (imet != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
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);
|
U8folder.AddHeaderImet(false, imet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,51 +177,51 @@ namespace Sharpii
|
|||||||
{
|
{
|
||||||
//Yeah, I know this isnt where it actually compresses it
|
//Yeah, I know this isnt where it actually compresses it
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Compressing U8 archive");
|
Console.WriteLine("Compressing U8 archive");
|
||||||
U8folder.Lz77Compress = true;
|
U8folder.Lz77Compress = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Saving file");
|
Console.WriteLine("Saving file");
|
||||||
|
|
||||||
U8folder.Save(output);
|
U8folder.Save(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void U8_help()
|
public static void U8_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - U8 - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - U8 - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe U8 [-p | -u] input output [arguments]");
|
Console.WriteLine(" Sharpii.exe U8 [-p | -u] input output [arguments]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" input The input file/folder");
|
Console.WriteLine(" input The input file/folder");
|
||||||
System.Console.WriteLine(" output The output file/folder");
|
Console.WriteLine(" output The output file/folder");
|
||||||
System.Console.WriteLine(" -p Pack");
|
Console.WriteLine(" -p Pack");
|
||||||
System.Console.WriteLine(" -u Unpack");
|
Console.WriteLine(" -u Unpack");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for Packing:");
|
Console.WriteLine(" Arguments for Packing:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -imet [title] Pack with an IMET header (for 00000000.app)");
|
Console.WriteLine(" -imet [title] Pack with an IMET header (for 00000000.app)");
|
||||||
System.Console.WriteLine(" You MUST enter a channel title");
|
Console.WriteLine(" You MUST enter a channel title");
|
||||||
System.Console.WriteLine(" -imd5 Pack with an IMD5 header (for Banner/Icon.bin)");
|
Console.WriteLine(" -imd5 Pack with an IMD5 header (for Banner/Icon.bin)");
|
||||||
System.Console.WriteLine(" -lz77 Compress with lz77");
|
Console.WriteLine(" -lz77 Compress with lz77");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
210
Sharpii/WAD.cs
210
Sharpii/WAD.cs
@ -78,7 +78,7 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
|
|
||||||
//If tuser gets here, they entered something wrong
|
//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;
|
return;
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,41 +127,41 @@ namespace Sharpii
|
|||||||
WAD wad = new WAD();
|
WAD wad = new WAD();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
wad.LoadFile(input);
|
wad.LoadFile(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1 && output == "")
|
if (Quiet.quiet > 1 && output == "")
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("WAD Info:");
|
Console.WriteLine("WAD Info:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
if (titles == false)
|
if (titles == false)
|
||||||
System.Console.WriteLine("Title: {0}", wad.ChannelTitles[1]);
|
Console.WriteLine("Title: {0}", wad.ChannelTitles[1]);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Titles:\n");
|
Console.WriteLine("Titles:\n");
|
||||||
System.Console.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]);
|
Console.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]);
|
||||||
System.Console.WriteLine(" English: {0}", wad.ChannelTitles[1]);
|
Console.WriteLine(" English: {0}", wad.ChannelTitles[1]);
|
||||||
System.Console.WriteLine(" German: {0}", wad.ChannelTitles[2]);
|
Console.WriteLine(" German: {0}", wad.ChannelTitles[2]);
|
||||||
System.Console.WriteLine(" French: {0}", wad.ChannelTitles[3]);
|
Console.WriteLine(" French: {0}", wad.ChannelTitles[3]);
|
||||||
System.Console.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]);
|
Console.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]);
|
||||||
System.Console.WriteLine(" Italian: {0}", wad.ChannelTitles[5]);
|
Console.WriteLine(" Italian: {0}", wad.ChannelTitles[5]);
|
||||||
System.Console.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]);
|
Console.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]);
|
||||||
System.Console.WriteLine(" Korean: {0}\n", wad.ChannelTitles[7]);
|
Console.WriteLine(" Korean: {0}\n", wad.ChannelTitles[7]);
|
||||||
}
|
}
|
||||||
System.Console.WriteLine("Title ID: {0}", wad.UpperTitleID);
|
Console.WriteLine("Title ID: {0}", wad.UpperTitleID);
|
||||||
System.Console.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString());
|
Console.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString());
|
||||||
System.Console.WriteLine("Region: {0}", wad.Region);
|
Console.WriteLine("Region: {0}", wad.Region);
|
||||||
System.Console.WriteLine("Version: {0}", wad.TitleVersion);
|
Console.WriteLine("Version: {0}", wad.TitleVersion);
|
||||||
System.Console.WriteLine("Blocks: {0}", wad.NandBlocks);
|
Console.WriteLine("Blocks: {0}", wad.NandBlocks);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving file...");
|
Console.Write("Saving file...");
|
||||||
|
|
||||||
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TXT")
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TXT")
|
||||||
output = output + ".txt";
|
output = output + ".txt";
|
||||||
@ -191,17 +191,17 @@ namespace Sharpii
|
|||||||
txt.Close();
|
txt.Close();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -225,13 +225,13 @@ namespace Sharpii
|
|||||||
if (edit == true)
|
if (edit == true)
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (edit == false)
|
if (edit == false)
|
||||||
if (Directory.Exists(input) == 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ namespace Sharpii
|
|||||||
id = args[i + 1];
|
id = args[i + 1];
|
||||||
if (id.Length < 4)
|
if (id.Length < 4)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("ERROR: ID too short");
|
Console.WriteLine("ERROR: ID too short");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
id = id.Substring(0, 4);
|
id = id.Substring(0, 4);
|
||||||
@ -265,7 +265,7 @@ namespace Sharpii
|
|||||||
lwrid = args[i + 1];
|
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")
|
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;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -357,18 +357,18 @@ namespace Sharpii
|
|||||||
if (edit == true)
|
if (edit == true)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
wad.LoadFile(input);
|
wad.LoadFile(input);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading folder...");
|
Console.Write("Loading folder...");
|
||||||
wad.CreateNew(input);
|
wad.CreateNew(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (sound != "" || banner != "" || icon != "" || app != "")
|
if (sound != "" || banner != "" || icon != "" || app != "")
|
||||||
{
|
{
|
||||||
@ -388,7 +388,7 @@ namespace Sharpii
|
|||||||
if (sound != "")
|
if (sound != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Grabbing sound...");
|
Console.Write("Grabbing sound...");
|
||||||
|
|
||||||
twad.LoadFile(sound);
|
twad.LoadFile(sound);
|
||||||
twad.Unpack(temp + "\\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);
|
File.Copy(temp + "\\sound\\00000000\\meta\\sound.bin", temp + "\\main\\00000000\\meta\\sound.bin", true);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
if (banner != "")
|
if (banner != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Grabbing banner...");
|
Console.Write("Grabbing banner...");
|
||||||
|
|
||||||
twad.LoadFile(banner);
|
twad.LoadFile(banner);
|
||||||
twad.Unpack(temp + "\\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);
|
File.Copy(temp + "\\banner\\00000000\\meta\\banner.bin", temp + "\\main\\00000000\\meta\\banner.bin", true);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
if (icon != "")
|
if (icon != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Grabbing icon...");
|
Console.Write("Grabbing icon...");
|
||||||
|
|
||||||
twad.LoadFile(icon);
|
twad.LoadFile(icon);
|
||||||
twad.Unpack(temp + "\\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);
|
File.Copy(temp + "\\icon\\00000000\\meta\\icon.bin", temp + "\\main\\00000000\\meta\\icon.bin", true);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
if (app != "")
|
if (app != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Grabbing dol...");
|
Console.Write("Grabbing dol...");
|
||||||
|
|
||||||
if (app.Substring(app.Length - 4, 4) == ".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);
|
File.Copy(temp + "\\dol\\00000001.app", temp + "\\main\\00000001.app", true);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
}
|
}
|
||||||
u.ReplaceFile(1, temp + "\\main\\00000000\\meta\\banner.bin");
|
u.ReplaceFile(1, temp + "\\main\\00000000\\meta\\banner.bin");
|
||||||
u.ReplaceFile(2, temp + "\\main\\00000000\\meta\\icon.bin");
|
u.ReplaceFile(2, temp + "\\main\\00000000\\meta\\icon.bin");
|
||||||
@ -464,18 +464,18 @@ namespace Sharpii
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 2 && fake == true)
|
if (Quiet.quiet > 2 && fake == true)
|
||||||
System.Console.WriteLine("FakeSigning WAD");
|
Console.WriteLine("FakeSigning WAD");
|
||||||
wad.FakeSign = fake;
|
wad.FakeSign = fake;
|
||||||
|
|
||||||
if (id != "")
|
if (id != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Changing channel ID to: {0}", id);
|
Console.WriteLine("Changing channel ID to: {0}", id);
|
||||||
|
|
||||||
if (lwrid != "")
|
if (lwrid != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Changing channel type to: {0}", lwrid);
|
Console.WriteLine("Changing channel type to: {0}", lwrid);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -498,18 +498,18 @@ namespace Sharpii
|
|||||||
if (ios > -1)
|
if (ios > -1)
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Changing startup IOS to: {0}", ios);
|
Console.WriteLine("Changing startup IOS to: {0}", ios);
|
||||||
wad.ChangeStartupIOS(ios);
|
wad.ChangeStartupIOS(ios);
|
||||||
}
|
}
|
||||||
if (title != "")
|
if (title != "")
|
||||||
{
|
{
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.WriteLine("Changing channel title to: {0}", title);
|
Console.WriteLine("Changing channel title to: {0}", title);
|
||||||
wad.ChangeChannelTitles(title);
|
wad.ChangeChannelTitles(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Saving file...");
|
Console.Write("Saving file...");
|
||||||
|
|
||||||
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD")
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD")
|
||||||
output = output + ".wad";
|
output = output + ".wad";
|
||||||
@ -517,16 +517,16 @@ namespace Sharpii
|
|||||||
wad.Save(output);
|
wad.Save(output);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -541,7 +541,7 @@ namespace Sharpii
|
|||||||
//Check if file exists
|
//Check if file exists
|
||||||
if (File.Exists(input) == false)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,78 +562,78 @@ namespace Sharpii
|
|||||||
WAD wad = new WAD();
|
WAD wad = new WAD();
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Loading file...");
|
Console.Write("Loading file...");
|
||||||
|
|
||||||
wad.LoadFile(input);
|
wad.LoadFile(input);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Unpacking WAD...");
|
Console.Write("Unpacking WAD...");
|
||||||
|
|
||||||
wad.Unpack(output, cid);
|
wad.Unpack(output, cid);
|
||||||
|
|
||||||
if (Quiet.quiet > 2)
|
if (Quiet.quiet > 2)
|
||||||
System.Console.Write("Done!\n");
|
Console.Write("Done!\n");
|
||||||
|
|
||||||
if (Quiet.quiet > 1)
|
if (Quiet.quiet > 1)
|
||||||
System.Console.WriteLine("Operation completed succesfully!");
|
Console.WriteLine("Operation completed succesfully!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("An unknown error occured, please try again");
|
Console.WriteLine("An unknown error occured, please try again");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void WAD_help()
|
public static void WAD_help()
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("Sharpii {0} - WAD - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
Console.WriteLine("Sharpii {0} - WAD - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Usage:");
|
Console.WriteLine(" Usage:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Sharpii.exe WAD [-p | -u | -e | -i] input output [arguments]");
|
Console.WriteLine(" Sharpii.exe WAD [-p | -u | -e | -i] input output [arguments]");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments:");
|
Console.WriteLine(" Arguments:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" input The input file/folder");
|
Console.WriteLine(" input The input file/folder");
|
||||||
System.Console.WriteLine(" output The output file/folder");
|
Console.WriteLine(" output The output file/folder");
|
||||||
System.Console.WriteLine(" -p Pack WAD");
|
Console.WriteLine(" -p Pack WAD");
|
||||||
System.Console.WriteLine(" -u Unpack WAD");
|
Console.WriteLine(" -u Unpack WAD");
|
||||||
System.Console.WriteLine(" -e Edit WAD");
|
Console.WriteLine(" -e Edit WAD");
|
||||||
System.Console.WriteLine(" -i Get WAD info");
|
Console.WriteLine(" -i Get WAD info");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for unpacking:");
|
Console.WriteLine(" Arguments for unpacking:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -cid Use Content ID as name");
|
Console.WriteLine(" -cid Use Content ID as name");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for info:");
|
Console.WriteLine(" Arguments for info:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -o output Output info to text file");
|
Console.WriteLine(" -o output Output info to text file");
|
||||||
System.Console.WriteLine(" -titles Display titles in all languages");
|
Console.WriteLine(" -titles Display titles in all languages");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" Arguments for packing/editing:");
|
Console.WriteLine(" Arguments for packing/editing:");
|
||||||
System.Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
System.Console.WriteLine(" -id [TitleID] Change the 4-character title id");
|
Console.WriteLine(" -id [TitleID] Change the 4-character title id");
|
||||||
System.Console.WriteLine(" -ios [IOS] Change the Startup IOS");
|
Console.WriteLine(" -ios [IOS] Change the Startup IOS");
|
||||||
System.Console.WriteLine(" -title [title] Change the Channel name/title.");
|
Console.WriteLine(" -title [title] Change the Channel name/title.");
|
||||||
System.Console.WriteLine(" If there are spaces, surround in quotes");
|
Console.WriteLine(" If there are spaces, surround in quotes");
|
||||||
System.Console.WriteLine(" -f Fakesign the WAD");
|
Console.WriteLine(" -f Fakesign the WAD");
|
||||||
System.Console.WriteLine(" -type [type] Change the Channel type. Possible values are:");
|
Console.WriteLine(" -type [type] Change the Channel type. Possible values are:");
|
||||||
System.Console.WriteLine(" Channel, DLC, GameChannel, HiddenChannels,");
|
Console.WriteLine(" Channel, DLC, GameChannel, HiddenChannels,");
|
||||||
System.Console.WriteLine(" SystemChannels, or SystemTitles");
|
Console.WriteLine(" SystemChannels, or SystemTitles");
|
||||||
System.Console.WriteLine(" -sound [wad] Use the sound from 'wad'");
|
Console.WriteLine(" -sound [wad] Use the sound from 'wad'");
|
||||||
System.Console.WriteLine(" -banner [wad] Use the banner from 'wad'");
|
Console.WriteLine(" -banner [wad] Use the banner from 'wad'");
|
||||||
System.Console.WriteLine(" -icon [wad] Use the icon from 'wad'");
|
Console.WriteLine(" -icon [wad] Use the icon from 'wad'");
|
||||||
System.Console.WriteLine(" -dol [wad] Use the dol from 'wad'");
|
Console.WriteLine(" -dol [wad] Use the dol from 'wad'");
|
||||||
System.Console.WriteLine(" NOTE: you can also just enter the path to a");
|
Console.WriteLine(" NOTE: you can also just enter the path to a");
|
||||||
System.Console.WriteLine(" regular dol file, instead of a wad");
|
Console.WriteLine(" regular dol file, instead of a wad");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -41,7 +41,7 @@ namespace WadInstaller
|
|||||||
|
|
||||||
public static MemoryStream CreateInstaller(byte[] wadFileBytes, byte iosToUse)
|
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 )
|
const int maxAllowedSizeForWads = 8 * 1024 * 1024 - 32; //(Max 4MB-32bytes )
|
||||||
|
|
||||||
//0. Read length of the wad to ensure it has an allowed size
|
//0. Read length of the wad to ensure it has an allowed size
|
||||||
|
Binary file not shown.
91
WadInstaller_Source/source/ahbprot.c
Normal file
91
WadInstaller_Source/source/ahbprot.c
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#include <gccore.h>
|
||||||
|
#include <ogc/machine/processor.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
44
WadInstaller_Source/source/ahbprot.h
Normal file
44
WadInstaller_Source/source/ahbprot.h
Normal file
@ -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
|
@ -3,6 +3,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <ogcsys.h>
|
#include <ogcsys.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "fat.h"
|
#include "fat.h"
|
||||||
#include "restart.h"
|
#include "restart.h"
|
||||||
@ -11,19 +12,35 @@
|
|||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "wad.h"
|
#include "wad.h"
|
||||||
#include "wpad.h"
|
#include "wpad.h"
|
||||||
|
#include "ahbprot.h"
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
#define CIOS_VERSION 249
|
#define CIOS_VERSION 249
|
||||||
|
|
||||||
|
|
||||||
void LoadSelectedIOS()
|
void LoadSelectedIOS()
|
||||||
{
|
{
|
||||||
u8 selectedIOS = Wad_SelectIOS();
|
u8 selectedIOS = Wad_SelectIOS();
|
||||||
|
|
||||||
s32 ret;
|
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);
|
ret = IOS_ReloadIOS(selectedIOS);
|
||||||
if (ret<0)
|
if (ret<0)
|
||||||
{
|
{
|
||||||
printf("\nUsing default IOS");
|
printf("\nUsing default IOS\n");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
printf("\nUsing selected IOS %d\n", selectedIOS);
|
printf("\nUsing selected IOS %d\n", selectedIOS);
|
||||||
|
@ -81,6 +81,32 @@ int mread(void * buf, int size, int count)
|
|||||||
|
|
||||||
//-------------------------- INSTALL FROM MEMORY -------------------------------
|
//-------------------------- 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 __Wad_ReadFile(void *outbuf, u32 offset, u32 len)
|
||||||
{
|
{
|
||||||
s32 ret;
|
s32 ret;
|
||||||
@ -192,9 +218,13 @@ s32 __Wad_Install()
|
|||||||
ret = __Wad_ReadAlloc((void *)&p_tik, offset, header->tik_len);
|
ret = __Wad_ReadAlloc((void *)&p_tik, offset, header->tik_len);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto err;
|
goto err;
|
||||||
else
|
else {
|
||||||
offset += round_up(header->tik_len, 64);
|
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 */
|
/* WAD TMD */
|
||||||
ret = __Wad_ReadAlloc((void *)&p_tmd, offset, header->tmd_len);
|
ret = __Wad_ReadAlloc((void *)&p_tmd, offset, header->tmd_len);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
s32 Wad_InstallFromMemory();
|
s32 Wad_InstallFromMemory();
|
||||||
u8 Wad_SelectIOS(void);
|
u8 Wad_SelectIOS(void);
|
||||||
|
s32 brute_tik(tik *p_tik);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user