mirror of
https://github.com/mogzol/sharpii.git
synced 2024-11-25 19:56:52 +01:00
Initial Release, yay! ^_^
This commit is contained in:
commit
47b787b9e8
20
Sharpii.sln
Normal file
20
Sharpii.sln
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual C# Express 2010
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sharpii", "Sharpii\Sharpii.csproj", "{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}.Release|x86.Build.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
203
Sharpii/BNS.cs
Normal file
203
Sharpii/BNS.cs
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class BNS_Stuff
|
||||||
|
{
|
||||||
|
public static void BNS(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 4)
|
||||||
|
{
|
||||||
|
Wav2BNS_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* To BNS *********************
|
||||||
|
if (args[1] == "-to")
|
||||||
|
{
|
||||||
|
To(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[1] == "-from")
|
||||||
|
{
|
||||||
|
From(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void From(string[] args)
|
||||||
|
{
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Now convert it
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
Wave WavFile = libWiiSharp.BNS.BnsToWave(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving wav...");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAV")
|
||||||
|
output = output + ".wav";
|
||||||
|
|
||||||
|
WavFile.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void To(string[] args)
|
||||||
|
{
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
bool loop = false;
|
||||||
|
bool mono = false;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-L":
|
||||||
|
loop = true;
|
||||||
|
break;
|
||||||
|
case "-LOOP":
|
||||||
|
loop = true;
|
||||||
|
break;
|
||||||
|
case "-M":
|
||||||
|
mono = true;
|
||||||
|
break;
|
||||||
|
case "-MONO":
|
||||||
|
mono = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
BNS WavFile = new BNS(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (loop == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Applying loop");
|
||||||
|
WavFile.SetLoop(1);
|
||||||
|
}
|
||||||
|
if (mono == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Converting to mono");
|
||||||
|
WavFile.StereoToMono = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving BNS...");
|
||||||
|
|
||||||
|
WavFile.Convert();
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".BNS")
|
||||||
|
output = output + ".bns";
|
||||||
|
|
||||||
|
WavFile.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Wav2BNS_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - BNS - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii BNS [-to | -from] input.wav output.bns [-l/-loop] [-m/-mono]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -to Convert wav to bns");
|
||||||
|
System.Console.WriteLine(" -from Create wav from bns");
|
||||||
|
System.Console.WriteLine(" input.wav The input wave sound file");
|
||||||
|
System.Console.WriteLine(" output.bns The output BNS sound file");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for converting to BNS:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -l | -loop Creates a looping BNS");
|
||||||
|
System.Console.WriteLine(" -m | -mono Convert stereo sound to mono BNS");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
134
Sharpii/HBC.cs
Normal file
134
Sharpii/HBC.cs
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class HBC_Stuff
|
||||||
|
{
|
||||||
|
public static void SendDol(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
SendDol_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string input = args[1];
|
||||||
|
string ip = "";
|
||||||
|
string protocol = "JODI";
|
||||||
|
bool compress = true;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get parameters
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-IP":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No ip set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ip = args[i + 1];
|
||||||
|
break;
|
||||||
|
case "-NOCOMP":
|
||||||
|
compress = false;
|
||||||
|
break;
|
||||||
|
case "-OLD":
|
||||||
|
protocol = "HAXX";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
libWiiSharp.Protocol proto = Protocol.JODI;
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2 && protocol == "HAXX")
|
||||||
|
System.Console.WriteLine("Using old protocol");
|
||||||
|
|
||||||
|
if (protocol == "HAXX")
|
||||||
|
proto = Protocol.HAXX;
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading File...");
|
||||||
|
|
||||||
|
HbcTransmitter file = new HbcTransmitter(proto, ip);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2 && compress == true)
|
||||||
|
System.Console.Write("Compressing File...");
|
||||||
|
|
||||||
|
file.Compress = compress;
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2 && compress == true)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.Write("Sending file...");
|
||||||
|
|
||||||
|
file.TransmitFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SendDol_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - SendDol - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii.exe SendDol file -ip ip_adress [-old] [-nocomp]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" file The dol file to send");
|
||||||
|
System.Console.WriteLine(" -ip ip_adress The IP address of your wii");
|
||||||
|
System.Console.WriteLine(" -old Use for the old (1.0.4 and below) HBC");
|
||||||
|
System.Console.WriteLine(" -nocomp Disable compression");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
226
Sharpii/IOS.cs
Normal file
226
Sharpii/IOS.cs
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class IOS_Stuff
|
||||||
|
{
|
||||||
|
public static void IOS(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
IOS_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string input = args[1];
|
||||||
|
string output = "";
|
||||||
|
bool fs = false;
|
||||||
|
bool es = false;
|
||||||
|
bool np = false;
|
||||||
|
int slot = -1;
|
||||||
|
int version = -1;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get parameters
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-FS":
|
||||||
|
fs = true;
|
||||||
|
break;
|
||||||
|
case "-ES":
|
||||||
|
es = true;
|
||||||
|
break;
|
||||||
|
case "-NP":
|
||||||
|
np = true;
|
||||||
|
break;
|
||||||
|
case "-SLOT":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No slot set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!int.TryParse(args[i + 1], out slot))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", args[i + 1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (slot < 3 || slot > 255)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", slot);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-V":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No version set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!int.TryParse(args[i + 1], out version))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid version {0}...", args[i + 1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (version < 0 || version > 65535)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid version {0}...", version);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-O":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No output set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
output = args[i + 1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Main part (most of it was borrowed from PatchIOS)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WAD ios = new WAD();
|
||||||
|
ios.KeepOriginalFooter = true;
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading File...");
|
||||||
|
|
||||||
|
ios.LoadFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
//Check if WAD is an IOS
|
||||||
|
if ((ios.TitleID >> 32) != 1 || (ios.TitleID & 0xffffffff) > 255 || (ios.TitleID & 0xffffffff) < 3)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Only IOS WADs can be patched...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IosPatcher patcher = new IosPatcher();
|
||||||
|
|
||||||
|
patcher.LoadIOS(ref ios);
|
||||||
|
|
||||||
|
//apply patches
|
||||||
|
if (fs == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Applying Fakesigning patch");
|
||||||
|
patcher.PatchFakeSigning();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (es == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Applying ES_Identify patch");
|
||||||
|
patcher.PatchEsIdentify();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (np == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Applying NAND permissions patch");
|
||||||
|
patcher.PatchNandPermissions();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (slot > -1 || version > -1)
|
||||||
|
ios.FakeSign = true;
|
||||||
|
|
||||||
|
if (slot > -1)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing IOS slot to: {0}", slot);
|
||||||
|
ios.TitleID = (ulong)((1UL << 32) | (uint)slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version > -1)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing title version to: {0}", version);
|
||||||
|
ios.TitleVersion = (ushort)version;
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if output was set
|
||||||
|
if (output != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Saving to file: {0}", output);
|
||||||
|
ios.Save(output);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Saving file");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD")
|
||||||
|
output = output + ".wad";
|
||||||
|
|
||||||
|
ios.Save(input);
|
||||||
|
}
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void IOS_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - IOS - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine(" Code based off PatchIOS by leathl");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii.exe IOS input [-o output] [-fs] [-es] [-np] [-s slot] [-v version]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" input The input file/folder");
|
||||||
|
System.Console.WriteLine(" -o output The output file/folder");
|
||||||
|
System.Console.WriteLine(" -fs Patch Fakesigning");
|
||||||
|
System.Console.WriteLine(" -es Patch ES_Identify");
|
||||||
|
System.Console.WriteLine(" -np Patch NAND Permissions");
|
||||||
|
System.Console.WriteLine(" -slot # Change IOS slot to #");
|
||||||
|
System.Console.WriteLine(" -v # Change IOS version to #");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
146
Sharpii/Program.cs
Normal file
146
Sharpii/Program.cs
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
class MainApp
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 1)
|
||||||
|
{
|
||||||
|
help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-QUIET":
|
||||||
|
Quiet.quiet = 1;
|
||||||
|
break;
|
||||||
|
case "-Q":
|
||||||
|
Quiet.quiet = 1;
|
||||||
|
break;
|
||||||
|
case "-LOTS":
|
||||||
|
Quiet.quiet = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string Function = args[0];
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "-H" || Function.ToUpper() == "-HELP" || Function.ToUpper() == "H" || Function.ToUpper() == "HELP")
|
||||||
|
{
|
||||||
|
help();
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "BNS")
|
||||||
|
{
|
||||||
|
BNS_Stuff.BNS(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "WAD")
|
||||||
|
{
|
||||||
|
WAD_Stuff.WAD(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "TPL")
|
||||||
|
{
|
||||||
|
TPL_Stuff.TPL(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "U8")
|
||||||
|
{
|
||||||
|
U8_Stuff.U8(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "IOS")
|
||||||
|
{
|
||||||
|
IOS_Stuff.IOS(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Function.ToUpper() == "SENDDOL" || Function.ToUpper() == "SENDOL")
|
||||||
|
{
|
||||||
|
HBC_Stuff.SendDol(args);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//If tuser gets here, they entered something wrong
|
||||||
|
System.Console.WriteLine("ERROR: The argument {0} is invalid", args[0]);
|
||||||
|
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii [function] [parameters] [-quiet | -q | -lots]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Functions:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" BNS Convert a wav to bns, or vice versa");
|
||||||
|
System.Console.WriteLine(" WAD Pack/Unpack/Edit a wad file");
|
||||||
|
System.Console.WriteLine(" TPL Convert a image to a tpl, or vice versa");
|
||||||
|
System.Console.WriteLine(" U8 Pack/Unpack a U8 archive");
|
||||||
|
System.Console.WriteLine(" IOS Apply various patches to an IOS");
|
||||||
|
System.Console.WriteLine(" SendDol Send a dol to the HBC over wifi");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" NOTE: Too see more detailed descriptions of any of the above,");
|
||||||
|
System.Console.WriteLine(" use 'Sharpii [function] -h'");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Global Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -quiet | -q Try not to display any output");
|
||||||
|
System.Console.WriteLine(" -lots Display lots of output");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class Quiet {
|
||||||
|
//1 = little
|
||||||
|
//2 = normal
|
||||||
|
//3 = lots
|
||||||
|
public static int quiet = 2;
|
||||||
|
}
|
||||||
|
public class Version
|
||||||
|
{
|
||||||
|
public static string version = "1.0";
|
||||||
|
}
|
36
Sharpii/Properties/AssemblyInfo.cs
Normal file
36
Sharpii/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("Sharpii")]
|
||||||
|
[assembly: AssemblyDescription("A command line app for libWiiSharp.dll")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Sharpii")]
|
||||||
|
[assembly: AssemblyCopyright("2011 Person66")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("88c17956-a329-4c36-8919-97334e6b6e4d")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
100
Sharpii/Sharpii.csproj
Normal file
100
Sharpii/Sharpii.csproj
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
|
<ProductVersion>8.0.30703</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{AD7EBA1D-DF9F-4F71-AAD4-3963E79CE827}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Sharpii</RootNamespace>
|
||||||
|
<AssemblyName>Sharpii</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile>
|
||||||
|
</TargetFrameworkProfile>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="libWiiSharp">
|
||||||
|
<HintPath>.\libWiiSharp.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="HBC.cs" />
|
||||||
|
<Compile Include="IOS.cs" />
|
||||||
|
<Compile Include="U8.cs" />
|
||||||
|
<Compile Include="TPL.cs" />
|
||||||
|
<Compile Include="BNS.cs" />
|
||||||
|
<Compile Include="WAD.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Windows Installer 3.1</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
25
Sharpii/Sharpii.csproj.user
Normal file
25
Sharpii/Sharpii.csproj.user
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
|
<StartArguments>
|
||||||
|
</StartArguments>
|
||||||
|
<StartWorkingDirectory>
|
||||||
|
</StartWorkingDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||||
|
<StartArguments>
|
||||||
|
</StartArguments>
|
||||||
|
<StartWorkingDirectory>
|
||||||
|
</StartWorkingDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||||
|
<InstallUrlHistory />
|
||||||
|
<SupportUrlHistory />
|
||||||
|
<UpdateUrlHistory />
|
||||||
|
<BootstrapperUrlHistory />
|
||||||
|
<ErrorReportUrlHistory />
|
||||||
|
<FallbackCulture>en-US</FallbackCulture>
|
||||||
|
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
236
Sharpii/TPL.cs
Normal file
236
Sharpii/TPL.cs
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class TPL_Stuff
|
||||||
|
{
|
||||||
|
public static void TPL(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 4)
|
||||||
|
{
|
||||||
|
TPL_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* To TPL *********************
|
||||||
|
if (args[1] == "-to")
|
||||||
|
{
|
||||||
|
To(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* From TPL *********************
|
||||||
|
if (args[1] == "-from")
|
||||||
|
{
|
||||||
|
From(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If tuser gets here, they entered something wrong
|
||||||
|
System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void From(string[] args)
|
||||||
|
{
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Load tpl
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
TPL tplfile = libWiiSharp.TPL.Load(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
//save image
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Extracting texture...");
|
||||||
|
|
||||||
|
tplfile.ExtractTexture(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void To(string[] args)
|
||||||
|
{
|
||||||
|
//Setting up variables
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
string tplFormat = "RGB565";
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check for arguments
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-FORMAT":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No format set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tplFormat = args[i + 1];
|
||||||
|
break;
|
||||||
|
case "-F":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No format set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tplFormat = args[i + 1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if valid format was entered
|
||||||
|
if (tplFormat != "I4" & tplFormat != "I8" & tplFormat != "IA4" & tplFormat != "IA8" & tplFormat != "RGB565" & tplFormat != "RGB5A3" & tplFormat != "RGBA8")
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unknown format type: {0}", tplFormat);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Set format
|
||||||
|
TPL_TextureFormat format = TPL_TextureFormat.RGB565;
|
||||||
|
if (tplFormat == "I4")
|
||||||
|
format = TPL_TextureFormat.I4;
|
||||||
|
if (tplFormat == "I8")
|
||||||
|
format = TPL_TextureFormat.I8;
|
||||||
|
if (tplFormat == "IA4")
|
||||||
|
format = TPL_TextureFormat.IA4;
|
||||||
|
if (tplFormat == "IA8")
|
||||||
|
format = TPL_TextureFormat.IA8;
|
||||||
|
if (tplFormat == "RGB565")
|
||||||
|
format = TPL_TextureFormat.RGB565;
|
||||||
|
if (tplFormat == "RGB5A3")
|
||||||
|
format = TPL_TextureFormat.RGB5A3;
|
||||||
|
if (tplFormat == "RGBA8")
|
||||||
|
format = TPL_TextureFormat.RGBA8;
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Format set to: {0}", tplFormat);
|
||||||
|
|
||||||
|
//Make tpl
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Creating tpl file...");
|
||||||
|
|
||||||
|
TPL tplfile = libWiiSharp.TPL.FromImage(input, format);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
//save
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving tpl file...");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TPL")
|
||||||
|
output = output + ".tpl";
|
||||||
|
|
||||||
|
tplfile.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void TPL_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - TPL - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii.exe TPL [-to | -from] input output [arguments]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -to Convert image to tpl");
|
||||||
|
System.Console.WriteLine(" -from Create image from tpl");
|
||||||
|
System.Console.WriteLine(" input The input file/folder");
|
||||||
|
System.Console.WriteLine(" output The output file/folder");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for Converting to TPL:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -format | -f The format of the tpl. Possible values are:");
|
||||||
|
System.Console.WriteLine(" RGBA8 (High Quality with Alpha)");
|
||||||
|
System.Console.WriteLine(" RGB565 (Medium Quality without Alpha)");
|
||||||
|
System.Console.WriteLine(" RGB5A3 (Low Quality with Alpha)");
|
||||||
|
System.Console.WriteLine(" IA8 (High quality B/W with Alpha)");
|
||||||
|
System.Console.WriteLine(" IA4 (Low Quality B/W with Alpha)");
|
||||||
|
System.Console.WriteLine(" I8 (High Quality B/W without Alpha)");
|
||||||
|
System.Console.WriteLine(" I4 (Low Quality B/W without Alpha)");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Notes:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" If no format is specified when converting to TPL, RGB565 is used.");
|
||||||
|
System.Console.WriteLine(" When converting to an image, the image format is chosen based on the extension");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
227
Sharpii/U8.cs
Normal file
227
Sharpii/U8.cs
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class U8_Stuff
|
||||||
|
{
|
||||||
|
public static void U8(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 4)
|
||||||
|
{
|
||||||
|
U8_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* Pack *********************
|
||||||
|
if (args[1] == "-p")
|
||||||
|
{
|
||||||
|
Pack(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* Unpack *********************
|
||||||
|
if (args[1] == "-u")
|
||||||
|
{
|
||||||
|
Unpack(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If tuser gets here, they entered something wrong
|
||||||
|
System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Unpack(string[] args)
|
||||||
|
{
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Check if file is U8
|
||||||
|
if (libWiiSharp.U8.IsU8(input) != true)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: File {0} is not a U8 archive", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Load U8
|
||||||
|
U8 U8file = new U8();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
U8file.LoadFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Extracting file...");
|
||||||
|
|
||||||
|
U8file.Extract(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Pack(string[] args)
|
||||||
|
{
|
||||||
|
//Setting up variables
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
bool lz77 = false;
|
||||||
|
bool imd5 = false;
|
||||||
|
string imet = "";
|
||||||
|
|
||||||
|
//Check if folder exists
|
||||||
|
if (Directory.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open Folder: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-LZ77":
|
||||||
|
lz77 = true;
|
||||||
|
break;
|
||||||
|
case "-IMD5":
|
||||||
|
imd5 = true;
|
||||||
|
break;
|
||||||
|
case "-IMET":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No title set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
imet = args[i + 1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imd5 == true && imet != "")
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Cannot use IMET and IMD5 at the same time.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
U8 U8folder = new U8();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading folder...");
|
||||||
|
|
||||||
|
U8folder.CreateFromDirectory(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (imd5 == true)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Adding IMD5 Header");
|
||||||
|
U8folder.AddHeaderImd5();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imet != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Adding IMET header with title: {0}", imet);
|
||||||
|
U8folder.AddHeaderImet(false, imet);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lz77 == true)
|
||||||
|
{
|
||||||
|
//Yeah, I know this isnt where it actually compresses it
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Compressing U8 archive");
|
||||||
|
U8folder.Lz77Compress = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Saving file");
|
||||||
|
|
||||||
|
U8folder.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void U8_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - U8 - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii.exe U8 [-p | -u] input output [arguments]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" input The input file/folder");
|
||||||
|
System.Console.WriteLine(" output The output file/folder");
|
||||||
|
System.Console.WriteLine(" -p Pack");
|
||||||
|
System.Console.WriteLine(" -u Unpack");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for Packing:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -imet [title] Pack with an IMET header (for 00000000.app)");
|
||||||
|
System.Console.WriteLine(" You MUST enter a channel title");
|
||||||
|
System.Console.WriteLine(" -imd5 Pack with an IMD5 header (for Banner/Icon.bin)");
|
||||||
|
System.Console.WriteLine(" -lz77 Compress with lz77");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
595
Sharpii/WAD.cs
Normal file
595
Sharpii/WAD.cs
Normal file
@ -0,0 +1,595 @@
|
|||||||
|
/* This file is part of Sharpii.
|
||||||
|
* Copyright (C) 2011 Person66
|
||||||
|
*
|
||||||
|
* Sharpii is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Sharpii is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Sharpii. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using libWiiSharp;
|
||||||
|
|
||||||
|
namespace Sharpii
|
||||||
|
{
|
||||||
|
partial class WAD_Stuff
|
||||||
|
{
|
||||||
|
public static void WAD(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
WAD_help();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* PACK *********************
|
||||||
|
if (args[1] == "-p")
|
||||||
|
{
|
||||||
|
Pack(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* UNPACK *********************
|
||||||
|
if (args[1] == "-u")
|
||||||
|
{
|
||||||
|
Unpack(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* EDIT *********************
|
||||||
|
if (args[1] == "-e")
|
||||||
|
{
|
||||||
|
Edit(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************* INFO *********************
|
||||||
|
if (args[1] == "-i")
|
||||||
|
{
|
||||||
|
Info(args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If tuser gets here, they entered something wrong
|
||||||
|
System.Console.WriteLine("ERROR: The argument {0} is invalid", args[1]);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Info(string[] args)
|
||||||
|
{
|
||||||
|
string input = args[2];
|
||||||
|
string output = "";
|
||||||
|
bool titles = false;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-O":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No output set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
output = args[i + 1];
|
||||||
|
break;
|
||||||
|
case "-OUTPUT":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No output set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
output = args[i + 1];
|
||||||
|
break;
|
||||||
|
case "-TITLES":
|
||||||
|
titles = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WAD wad = new WAD();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
wad.LoadFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1 && output == "")
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("WAD Info:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
if (titles == false)
|
||||||
|
System.Console.WriteLine("Title: {0}", wad.ChannelTitles[1]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Titles:\n");
|
||||||
|
System.Console.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]);
|
||||||
|
System.Console.WriteLine(" English: {0}", wad.ChannelTitles[1]);
|
||||||
|
System.Console.WriteLine(" German: {0}", wad.ChannelTitles[2]);
|
||||||
|
System.Console.WriteLine(" French: {0}", wad.ChannelTitles[3]);
|
||||||
|
System.Console.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]);
|
||||||
|
System.Console.WriteLine(" Italian: {0}", wad.ChannelTitles[5]);
|
||||||
|
System.Console.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]);
|
||||||
|
System.Console.WriteLine(" Korean: {0}\n", wad.ChannelTitles[7]);
|
||||||
|
}
|
||||||
|
System.Console.WriteLine("Title ID: {0}", wad.UpperTitleID);
|
||||||
|
System.Console.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString());
|
||||||
|
System.Console.WriteLine("Region: {0}", wad.Region);
|
||||||
|
System.Console.WriteLine("Version: {0}", wad.TitleVersion);
|
||||||
|
System.Console.WriteLine("Blocks: {0}", wad.NandBlocks);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving file...");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".TXT")
|
||||||
|
output = output + ".txt";
|
||||||
|
|
||||||
|
TextWriter txt = new StreamWriter(output);
|
||||||
|
txt.WriteLine("WAD Info:");
|
||||||
|
txt.WriteLine("");
|
||||||
|
if (titles == false)
|
||||||
|
txt.WriteLine("Title: {0}", wad.ChannelTitles[1]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
txt.WriteLine("Titles:");
|
||||||
|
txt.WriteLine(" Japanese: {0}", wad.ChannelTitles[0]);
|
||||||
|
txt.WriteLine(" English: {0}", wad.ChannelTitles[1]);
|
||||||
|
txt.WriteLine(" German: {0}", wad.ChannelTitles[2]);
|
||||||
|
txt.WriteLine(" French: {0}", wad.ChannelTitles[3]);
|
||||||
|
txt.WriteLine(" Spanish: {0}", wad.ChannelTitles[4]);
|
||||||
|
txt.WriteLine(" Italian: {0}", wad.ChannelTitles[5]);
|
||||||
|
txt.WriteLine(" Dutch: {0}", wad.ChannelTitles[6]);
|
||||||
|
txt.WriteLine(" Korean: {0}", wad.ChannelTitles[7]);
|
||||||
|
}
|
||||||
|
txt.WriteLine("Title ID: {0}", wad.UpperTitleID);
|
||||||
|
txt.WriteLine("IOS: {0}", ((int)wad.StartupIOS).ToString());
|
||||||
|
txt.WriteLine("Region: {0}", wad.Region);
|
||||||
|
txt.WriteLine("Version: {0}", wad.TitleVersion);
|
||||||
|
txt.WriteLine("Blocks: {0}", wad.NandBlocks);
|
||||||
|
txt.Close();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Edit(string[] args)
|
||||||
|
{
|
||||||
|
//setting up variables
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
string id = "";
|
||||||
|
int ios = -1;
|
||||||
|
string title = "";
|
||||||
|
string lwrid = "Channel";
|
||||||
|
bool fake = false;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-F":
|
||||||
|
fake = true;
|
||||||
|
break;
|
||||||
|
case "-ID":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No ID set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
id = args[i + 1];
|
||||||
|
if (id.Length < 4)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: ID too short");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
id = id.Substring(0, 4);
|
||||||
|
break;
|
||||||
|
case "-TYPE":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lwrid = args[i + 1];
|
||||||
|
if (lwrid != "Channel" & lwrid != "DLC" & lwrid != "GameChannel" & lwrid != "HiddenChannels" & lwrid != "SystemChannels" & lwrid != "SystemTitles")
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unknown WAD type: {0}", lwrid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-IOS":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!int.TryParse(args[i + 1], out ios))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", args[i + 1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ios < 0 || ios > 255)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", ios);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-TITLE":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
title = args[i + 1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WAD wad = new WAD();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
wad.LoadFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2 && fake == true)
|
||||||
|
System.Console.WriteLine("FakeSigning WAD");
|
||||||
|
wad.FakeSign = fake;
|
||||||
|
|
||||||
|
if (id != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing channel type to: {0}", lwrid);
|
||||||
|
|
||||||
|
if (lwrid == "Channel")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.Channel, id);
|
||||||
|
if (lwrid == "DLC")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.DLC, id);
|
||||||
|
if (lwrid == "GameChannel")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.GameChannel, id);
|
||||||
|
if (lwrid == "HiddenChannels")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.HiddenChannels, id);
|
||||||
|
if (lwrid == "SystemChannels")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.SystemChannels, id);
|
||||||
|
if (lwrid == "SystemTitles")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.SystemTitles, id);
|
||||||
|
}
|
||||||
|
if (ios > -1)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing startup IOS to: {0}", ios);
|
||||||
|
wad.ChangeStartupIOS(ios);
|
||||||
|
}
|
||||||
|
if (title != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing channel title to: {0}", title);
|
||||||
|
wad.ChangeChannelTitles(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving file...");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD")
|
||||||
|
output = output + ".wad";
|
||||||
|
|
||||||
|
wad.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Unpack(string[] args)
|
||||||
|
{
|
||||||
|
//setting up variables
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
bool cid = false;
|
||||||
|
|
||||||
|
//Check if file exists
|
||||||
|
if (File.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open file: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-cid argument
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-CID":
|
||||||
|
cid = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WAD wad = new WAD();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading file...");
|
||||||
|
|
||||||
|
wad.LoadFile(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Unpacking WAD...");
|
||||||
|
|
||||||
|
wad.Unpack(output, cid);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Pack(string[] args)
|
||||||
|
{
|
||||||
|
//Setting up variables
|
||||||
|
string input = args[2];
|
||||||
|
string output = args[3];
|
||||||
|
string id = "";
|
||||||
|
int ios = -1;
|
||||||
|
string lwrid = "Channel";
|
||||||
|
string title = "";
|
||||||
|
bool fake = false;
|
||||||
|
|
||||||
|
//Check if folder exists
|
||||||
|
if (Directory.Exists(input) == false)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unable to open Folder: {0}", input);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
switch (args[i].ToUpper())
|
||||||
|
{
|
||||||
|
case "-F":
|
||||||
|
fake = true;
|
||||||
|
break;
|
||||||
|
case "-ID":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No ID set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
id = args[i + 1];
|
||||||
|
if (id.Length < 4)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: ID too short");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
id = id.Substring(0, 4);
|
||||||
|
break;
|
||||||
|
case "-TYPE":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lwrid = args[i + 1];
|
||||||
|
if (lwrid != "Channel" & lwrid != "DLC" & lwrid != "GameChannel" & lwrid != "HiddenChannels" & lwrid != "SystemChannels" & lwrid != "SystemTitles")
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("ERROR: Unknown WAD type: {0}", lwrid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-IOS":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!int.TryParse(args[i + 1], out ios))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", args[i + 1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ios < 0 || ios > 255)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid slot {0}...", ios);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "-TITLE":
|
||||||
|
if (i + 1 >= args.Length)
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR: No type set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
title = args[i + 1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Run main part, and check for exceptions
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WAD wad = new WAD();
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Loading folder...");
|
||||||
|
|
||||||
|
wad.CreateNew(input);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2 && fake == true)
|
||||||
|
System.Console.WriteLine("FakeSigning WAD");
|
||||||
|
wad.FakeSign = fake;
|
||||||
|
|
||||||
|
if (id != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing channel type to: {0}", lwrid);
|
||||||
|
|
||||||
|
if (lwrid == "Channel")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.Channel, id);
|
||||||
|
if (lwrid == "DLC")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.DLC, id);
|
||||||
|
if (lwrid == "GameChannel")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.GameChannel, id);
|
||||||
|
if (lwrid == "HiddenChannels")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.HiddenChannels, id);
|
||||||
|
if (lwrid == "SystemChannels")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.SystemChannels, id);
|
||||||
|
if (lwrid == "SystemTitles")
|
||||||
|
wad.ChangeTitleID(LowerTitleID.SystemTitles, id);
|
||||||
|
}
|
||||||
|
if (ios > -1)
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing startup IOS to: {0}", ios);
|
||||||
|
wad.ChangeStartupIOS(ios);
|
||||||
|
}
|
||||||
|
if (title != "")
|
||||||
|
{
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.WriteLine("Changing channel title to: {0}", title);
|
||||||
|
wad.ChangeChannelTitles(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Saving file...");
|
||||||
|
|
||||||
|
if (output.Substring(output.Length - 4, 4).ToUpper() != ".WAD")
|
||||||
|
output = output + ".wad";
|
||||||
|
|
||||||
|
wad.Save(output);
|
||||||
|
|
||||||
|
if (Quiet.quiet > 2)
|
||||||
|
System.Console.Write("Done!\n");
|
||||||
|
|
||||||
|
if (Quiet.quiet > 1)
|
||||||
|
System.Console.WriteLine("Operation completed succesfully!");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("An unknown error occured, please try again");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("ERROR DETAILS: {0}", ex.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void WAD_help()
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("Sharpii {0} - WAD - A tool by person66, using libWiiSharp.dll by leathl", Version.version);
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Usage:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Sharpii.exe WAD [-p | -u | -e | -i] input output [arguments]");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" input The input file/folder");
|
||||||
|
System.Console.WriteLine(" output The output file/folder");
|
||||||
|
System.Console.WriteLine(" -p Pack WAD");
|
||||||
|
System.Console.WriteLine(" -u Unpack WAD");
|
||||||
|
System.Console.WriteLine(" -e Edit WAD");
|
||||||
|
System.Console.WriteLine(" -i Get WAD info");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for unpacking:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -cid Use Content ID as name");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for info:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -o output Output info to text file");
|
||||||
|
System.Console.WriteLine(" -titles Display titles in all languages");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" Arguments for packing/editing:");
|
||||||
|
System.Console.WriteLine("");
|
||||||
|
System.Console.WriteLine(" -id [TitleID] Change the 4-character title id");
|
||||||
|
System.Console.WriteLine(" -ios [IOS] Change the Startup IOS");
|
||||||
|
System.Console.WriteLine(" -title [title] Change the Channel name/title.");
|
||||||
|
System.Console.WriteLine(" If there are spaces, surround in quotes");
|
||||||
|
System.Console.WriteLine(" -f Fakesign the WAD");
|
||||||
|
System.Console.WriteLine(" -type [type] Change the Channel type. Possible values are:");
|
||||||
|
System.Console.WriteLine(" Channel, DLC, GameChannel, HiddenChannels,");
|
||||||
|
System.Console.WriteLine(" SystemChannels, or SystemTitles");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
Sharpii/app.config
Normal file
3
Sharpii/app.config
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<configuration>
|
||||||
|
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
BIN
Sharpii/libWiiSharp.dll
Normal file
BIN
Sharpii/libWiiSharp.dll
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user