diff --git a/Backup_Channel.wad b/Backup_Channel.wad
new file mode 100644
index 0000000..50fdd46
Binary files /dev/null and b/Backup_Channel.wad differ
diff --git a/CustomizeMii.sln b/CustomizeMii.sln
deleted file mode 100644
index 25a5dfa..0000000
--- a/CustomizeMii.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C# Express 2008
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomizeMii", "CustomizeMii\CustomizeMii.csproj", "{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForwardMii-Plugin", "ForwardMii-Plugin\ForwardMii-Plugin.csproj", "{20CB2CA7-6767-4758-97FA-97395F47CD6B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.Build.0 = Release|Any CPU
- {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {20CB2CA7-6767-4758-97FA-97395F47CD6B}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/CustomizeMii/BNS.cs b/CustomizeMii/BNS.cs
deleted file mode 100644
index 35bbd3a..0000000
--- a/CustomizeMii/BNS.cs
+++ /dev/null
@@ -1,714 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-//These classes are based on bns.py of the Wii.py Framework with improvements by me (Leathl)
-//Thanks to Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man, the authors of Wii.py!
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using WaveFile;
-
-namespace BNS
-{
- internal class BNS_Data
- {
- //Private Varialbes
- private byte[] magic = new byte[] { (byte)'D', (byte)'A', (byte)'T', (byte)'A' };
- private UInt32 size = 0x0004d000;
- private byte[] data;
-
- //Public Variables
- public UInt32 Size { get { return size; } set { size = value; } }
- public byte[] Data { get { return data; } set { data = value; } }
-
- public BNS_Data() { }
-
- public void Write(Stream outStream)
- {
- byte[] temp = BitConverter.GetBytes(size); Array.Reverse(temp);
-
- outStream.Write(magic, 0, magic.Length);
- outStream.Write(temp, 0, temp.Length);
- outStream.Write(data, 0, data.Length);
- }
- }
-
- internal class BNS_Info
- {
- //Private Variables
- private byte[] magic = new byte[] { (byte)'I', (byte)'N', (byte)'F', (byte)'O' };
- private UInt32 size = 0x000000a0;
- private byte codec = 0x00;
- private byte hasLoop = 0x00;
- private byte channelCount = 0x02;
- private byte zero = 0x00;
- private UInt16 sampleRate = 0xac44;
- private UInt16 pad0 = 0x0000;
- private UInt32 loopStart = 0x00000000;
- private UInt32 loopEnd = 0x00000000; //Or total sample count
- private UInt32 offsetToChannelStart = 0x00000018;
- private UInt32 pad1 = 0x00000000;
- private UInt32 channel1StartOffset = 0x00000020;
- private UInt32 channel2StartOffset = 0x0000002C;
- private UInt32 channel1Start = 0x00000000;
- private UInt32 coefficients1Offset = 0x0000038;
- private UInt32 pad2 = 0x00000000;
- private UInt32 channel2Start = 0x00000000;
- private UInt32 coefficients2Offset = 0x00000068;
- private UInt32 pad3 = 0x00000000;
- private int[] coefficients1 = new int[16];
- private UInt16 channel1Gain = 0x0000;
- private UInt16 channel1PredictiveScale = 0x0000;
- private UInt16 channel1PreviousValue = 0x0000;
- private UInt16 channel1NextPreviousValue = 0x0000;
- private UInt16 channel1LoopPredictiveScale = 0x0000;
- private UInt16 channel1LoopPreviousValue = 0x0000;
- private UInt16 channel1LoopNextPreviousValue = 0x0000;
- private UInt16 channel1LoopPadding = 0x0000;
- private int[] coefficients2 = new int[16];
- private UInt16 channel2Gain = 0x0000;
- private UInt16 channel2PredictiveScale = 0x0000;
- private UInt16 channel2PreviousValue = 0x0000;
- private UInt16 channel2NextPreviousValue = 0x0000;
- private UInt16 channel2LoopPredictiveScale = 0x0000;
- private UInt16 channel2LoopPreviousValue = 0x0000;
- private UInt16 channel2LoopNextPreviousValue = 0x0000;
- private UInt16 channel2LoopPadding = 0x0000;
-
- //Public Variables
- public byte HasLoop { get { return hasLoop; } set { hasLoop = value; } }
- public UInt32 Coefficients1Offset { get { return coefficients1Offset; } set { coefficients1Offset = value; } }
- public UInt32 Channel1StartOffset { get { return channel1StartOffset; } set { channel1StartOffset = value; } }
- public UInt32 Channel2StartOffset { get { return channel2StartOffset; } set { channel2StartOffset = value; } }
- public UInt32 Size { get { return size; } set { size = value; } }
- public UInt16 SampleRate { get { return sampleRate; } set { sampleRate = value; } }
- public byte ChannelCount { get { return channelCount; } set { channelCount = value; } }
- public UInt32 Channel1Start { get { return channel1Start; } set { channel1Start = value; } }
- public UInt32 Channel2Start { get { return channel2Start; } set { channel2Start = value; } }
- public UInt32 LoopStart { get { return loopStart; } set { loopStart = value; } }
- public UInt32 LoopEnd { get { return loopEnd; } set { loopEnd = value; } }
- public int[] Coefficients1 { get { return coefficients1; } set { coefficients1 = value; } }
- public int[] Coefficients2 { get { return coefficients2; } set { coefficients2 = value; } }
-
- public BNS_Info() { }
-
- public void Write(Stream outStream)
- {
- outStream.Write(magic, 0, magic.Length);
-
- byte[] temp = BitConverter.GetBytes(size); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- outStream.WriteByte(codec);
- outStream.WriteByte(hasLoop);
- outStream.WriteByte(channelCount);
- outStream.WriteByte(zero);
-
- temp = BitConverter.GetBytes(sampleRate); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(pad0); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(loopStart); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(loopEnd); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(offsetToChannelStart); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(pad1); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1StartOffset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2StartOffset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1Start); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(coefficients1Offset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- if (this.channelCount == 2)
- {
- temp = BitConverter.GetBytes(pad2); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2Start); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(coefficients2Offset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(pad3); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- foreach (int thisInt in coefficients1)
- {
- temp = BitConverter.GetBytes(thisInt); Array.Reverse(temp);
- outStream.Write(temp, 2, temp.Length - 2);
- }
-
- temp = BitConverter.GetBytes(channel1Gain); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1PredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1PreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1NextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopNextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPadding); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- foreach (int thisInt in coefficients2)
- {
- temp = BitConverter.GetBytes(thisInt); Array.Reverse(temp);
- outStream.Write(temp, 2, temp.Length - 2);
- }
-
- temp = BitConverter.GetBytes(channel2Gain); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2PredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2PreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2NextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2LoopPredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2LoopPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2LoopNextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel2LoopPadding); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
- }
- else if (this.channelCount == 1)
- {
- foreach (int thisInt in coefficients1)
- {
- temp = BitConverter.GetBytes(thisInt); Array.Reverse(temp);
- outStream.Write(temp, 2, temp.Length - 2);
- }
-
- temp = BitConverter.GetBytes(channel1Gain); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1PredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1PreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1NextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPredictiveScale); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopNextPreviousValue); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(channel1LoopPadding); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
- }
- }
- }
-
- internal class BNS_Header
- {
- //Private Variables
- private byte[] magic = new byte[] { (byte)'B', (byte)'N', (byte)'S', (byte)' ' };
- private UInt32 flags = 0xfeff0100;
- private UInt32 fileSize = 0x0004d0c0;
- private UInt16 size = 0x0020;
- private UInt16 chunkCount = 0x0002;
- private UInt32 infoOffset = 0x00000020;
- private UInt32 infoLength = 0x000000a0;
- private UInt32 dataOffset = 0x000000c0;
- private UInt32 dataLength = 0x0004d000;
-
- //Public Varialbes
- public UInt32 DataOffset { get { return dataOffset; } set { dataOffset = value; } }
- public UInt32 InfoLength { get { return infoLength; } set { infoLength = value; } }
- public UInt16 Size { get { return size; } set { size = value; } }
- public UInt32 DataLength { get { return dataLength; } set { dataLength = value; } }
- public UInt32 FileSize { get { return fileSize; } set { fileSize = value; } }
-
- public BNS_Header() { }
-
- public void Write(Stream outStream)
- {
- outStream.Write(magic, 0, magic.Length);
-
- byte[] temp = BitConverter.GetBytes(flags); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(fileSize); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(size); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(chunkCount); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(infoOffset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(infoLength); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(dataOffset); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
-
- temp = BitConverter.GetBytes(dataLength); Array.Reverse(temp);
- outStream.Write(temp, 0, temp.Length);
- }
- }
-
- public class BNS_File
- {
- //Private Variables
- private BNS_Header bnsHeader = new BNS_Header();
- private BNS_Info bnsInfo = new BNS_Info();
- private BNS_Data bnsData = new BNS_Data();
- private int[,] lSamples = new int[2, 2];
- private int[,] rlSamples = new int[2, 2];
- private int[] tlSamples = new int[2];
- private int[] hbcDefTbl = new int[] { 674, 1040, 3598, -1738, 2270, -583, 3967, -1969, 1516, 381, 3453, -1468, 2606, -617, 3795, -1759 };
- private int[] defTbl = new int[] { 1820, -856, 3238, -1514, 2333, -550, 3336, -1376, 2444, -949, 3666, -1764, 2654, -701, 3420, -1398 };
- private int[] pHist1 = new int[2];
- private int[] pHist2 = new int[2];
- private int tempSampleCount;
- private string waveFile;
- private bool loopFromWave = false;
- private bool converted = false;
- private bool toMono = false;
-
-
-
- //Public Variables
- ///
- /// 0x00 (0) = No Loop, 0x01 (1) = Loop
- ///
- public byte HasLoop { get { return this.bnsInfo.HasLoop; } set { this.bnsInfo.HasLoop = value; } }
- ///
- /// The start sample of the Loop
- ///
- public UInt32 LoopStart { get { return this.bnsInfo.LoopStart; } set { this.bnsInfo.LoopStart = value; } }
- ///
- /// The total number of samples in this file
- ///
- public UInt32 TotalSampleCount { get { return this.bnsInfo.LoopEnd; } set { this.bnsInfo.LoopEnd = value; } }
- ///
- /// If true and the input Wave file is stereo, the BNS will be converted to Mono.
- /// Be sure to set this before you call Convert()!
- ///
- public bool StereoToMono { get { return toMono; } set { toMono = value; } }
-
-
-
- //Public Functions
-
- public BNS_File(string waveFile)
- {
- this.waveFile = waveFile;
- }
-
- public BNS_File(string waveFile, bool loopFromWave)
- {
- this.waveFile = waveFile;
- this.loopFromWave = loopFromWave;
- }
-
- ///
- /// Returns the progress of the conversion
- ///
- public event EventHandler ProgressChanged;
-
- ///
- /// Converts the Wave file to BNS
- ///
- public void Convert()
- {
- Convert(waveFile, loopFromWave);
- }
-
- ///
- /// Returns the BNS file as a Byte Array. If not already converted, it will be done first.
- ///
- ///
- public byte[] ToByteArray()
- {
- return ToMemoryStream().ToArray();
- }
-
- ///
- /// Returns the BNS file as a Memory Stream. If not already converted, it will be done first.
- ///
- ///
- public MemoryStream ToMemoryStream()
- {
- if (!converted)
- Convert(waveFile, loopFromWave);
-
- MemoryStream ms = new MemoryStream();
-
- this.bnsHeader.Write(ms);
- this.bnsInfo.Write(ms);
- this.bnsData.Write(ms);
-
- return ms;
- }
-
- ///
- /// Saves the BNS file to the given path. If not already converted, it will be done first.
- ///
- ///
- public void Save(string destionationFile)
- {
- if (File.Exists(destionationFile)) File.Delete(destionationFile);
-
- using (FileStream fs = new FileStream(destionationFile, FileMode.Create))
- {
- byte[] bnsFile = ToMemoryStream().ToArray();
- fs.Write(bnsFile, 0, bnsFile.Length);
- }
- }
-
- ///
- /// Sets the Loop to the given Start Sample. Be sure that you call Convert() first!
- ///
- ///
- public void SetLoop(int loopStartSample)
- {
- this.bnsInfo.HasLoop = 0x01;
- this.bnsInfo.LoopStart = (uint)loopStartSample;
- }
-
-
-
- //Private Functions
-
- private void Convert(string waveFile, bool loopFromWave)
- {
- Wave wave = new Wave(waveFile);
- int waveLoopCount = wave.LoopCount;
- int waveLoopStart = wave.LoopStart;
-
- this.bnsInfo.ChannelCount = (byte)wave.ChannelCount;
- this.bnsInfo.SampleRate = (ushort)wave.SampleRate;
-
- if (this.bnsInfo.ChannelCount > 2 || this.bnsInfo.ChannelCount < 1)
- throw new Exception("Unsupported Count of Channels!");
- if (wave.BitDepth != 16)
- throw new Exception("Only 16bit Wave files are supported!");
- if (wave.DataFormat != 1)
- throw new Exception("The format of this Wave file is not supported!");
-
- this.bnsData.Data = Encode(wave.GetAllFrames());
- wave.Close();
-
- if (this.bnsInfo.ChannelCount == 1)
- {
- this.bnsHeader.InfoLength = 0x60;
- this.bnsHeader.DataOffset = 0x80;
-
- this.bnsInfo.Size = 0x60;
- this.bnsInfo.Channel1StartOffset = 0x0000001C;
- this.bnsInfo.Channel2StartOffset = 0x00000000;
- this.bnsInfo.Channel1Start = 0x00000028;
- this.bnsInfo.Coefficients1Offset = 0x00000000;
- }
-
- this.bnsData.Size = (uint)bnsData.Data.Length + 8;
-
- this.bnsHeader.DataLength = this.bnsData.Size;
- this.bnsHeader.FileSize = this.bnsHeader.Size + this.bnsInfo.Size + this.bnsData.Size;
-
- if (loopFromWave)
- if (waveLoopCount == 1)
- if (waveLoopStart != -1)
- { this.bnsInfo.LoopStart = (uint)waveLoopStart; this.bnsInfo.HasLoop = 0x01; }
-
- this.bnsInfo.LoopEnd = (uint)tempSampleCount;
-
- for (int i = 0; i < 16; i++)
- {
- this.bnsInfo.Coefficients1[i] = this.defTbl[i];
-
- if (this.bnsInfo.ChannelCount == 2)
- this.bnsInfo.Coefficients2[i] = this.defTbl[i];
- }
-
- this.converted = true;
- }
-
- private byte[] Encode(byte[] inputFrames)
- {
- int offset = 0;
- int[] sampleBuffer = new int[14];
-
- this.tempSampleCount = inputFrames.Length / (bnsInfo.ChannelCount == 2 ? 4 : 2);
- int modLength = (inputFrames.Length / (bnsInfo.ChannelCount == 2 ? 4 : 2)) % 14;
-
- Array.Resize(ref inputFrames, inputFrames.Length + ((14 - modLength) * (bnsInfo.ChannelCount == 2 ? 4 : 2)));
-
- int sampleCount = inputFrames.Length / (bnsInfo.ChannelCount == 2 ? 4 : 2);
-
- int blocks = (sampleCount + 13) / 14;
-
- List soundDataLeft = new List();
- List soundDataRight = new List();
-
- int co = offset;
-
- if (this.toMono && this.bnsInfo.ChannelCount == 2) this.bnsInfo.ChannelCount = 1;
- else if (this.toMono) this.toMono = false;
-
- for (int j = 0; j < sampleCount; j++)
- {
- soundDataLeft.Add(BitConverter.ToInt16(inputFrames, co));
- co += 2;
-
- if (this.bnsInfo.ChannelCount == 2 || toMono)
- {
- soundDataRight.Add(BitConverter.ToInt16(inputFrames, co));
- co += 2;
- }
- }
-
- byte[] data = new byte[(this.bnsInfo.ChannelCount == 2 ? (blocks * 16) : (blocks * 8))];
-
- int data1Offset = 0;
- int data2Offset = blocks * 8;
-
- this.bnsInfo.Channel2Start = (this.bnsInfo.ChannelCount == 2 ? (uint)data2Offset : 0);
-
- int[] leftSoundData = soundDataLeft.ToArray();
- int[] rightSoundData = soundDataRight.ToArray();
-
- for (int y = 0; y < blocks; y++)
- {
- try
- {
- if (y % (int)(blocks / 100) == 0 || (y + 1) == blocks)
- ChangeProgress((y + 1) * 100 / blocks);
- }
- catch { }
-
- for (int a = 0; a < 14; a++)
- sampleBuffer[a] = leftSoundData[y * 14 + a];
-
- byte[] outBuffer = RepackAdpcm(0, this.defTbl, sampleBuffer);
-
- for (int a = 0; a < 8; a++)
- data[data1Offset + a] = outBuffer[a];
-
- data1Offset += 8;
-
- if (this.bnsInfo.ChannelCount == 2)
- {
- for (int a = 0; a < 14; a++)
- sampleBuffer[a] = rightSoundData[y * 14 + a];
-
- outBuffer = RepackAdpcm(1, this.defTbl, sampleBuffer);
-
- for (int a = 0; a < 8; a++)
- data[data2Offset + a] = outBuffer[a];
-
- data2Offset += 8;
- }
- }
-
- this.bnsInfo.LoopEnd = (uint)(blocks * 7);
-
- return data;
- }
-
- private byte[] RepackAdpcm(int index, int[] table, int[] inputBuffer)
- {
- byte[] data = new byte[8];
- int[] blSamples = new int[2];
- int bestIndex = -1;
- double bestError = 999999999.0;
- double error;
-
- for (int tableIndex = 0; tableIndex < 8; tableIndex++)
- {
- byte[] testData = CompressAdpcm(index, table, tableIndex, inputBuffer, out error);
-
- if (error < bestError)
- {
- bestError = error;
-
- for (int i = 0; i < 8; i++)
- data[i] = testData[i];
- for (int i = 0; i < 2; i++)
- blSamples[i] = this.tlSamples[i];
-
- bestIndex = tableIndex;
- }
- }
-
- for (int i = 0; i < 2; i++)
- this.rlSamples[index, i] = blSamples[i];
-
- return data;
- }
-
- private byte[] CompressAdpcm(int index, int[] table, int tableIndex, int[] inputBuffer, out double outError)
- {
- byte[] data = new byte[8];
- int error = 0;
- int factor1 = table[2 * tableIndex + 0];
- int factor2 = table[2 * tableIndex + 1];
-
- int exponent = DetermineStdExponent(index, table, tableIndex, inputBuffer);
-
- while (exponent <= 15)
- {
- bool breakIt = false;
- error = 0;
- data[0] = (byte)(exponent | (tableIndex << 4));
-
- for (int i = 0; i < 2; i++)
- this.tlSamples[i] = this.rlSamples[index, i];
-
- int j = 0;
-
- for (int i = 0; i < 14; i++)
- {
- int predictor = (int)((this.tlSamples[1] * factor1 + this.tlSamples[0] * factor2) >> 11);
- int residual = (inputBuffer[i] - predictor) >> exponent;
-
- if (residual > 7 || residual < -8)
- {
- exponent++;
- breakIt = true;
- break;
- }
-
- int nibble = Clamp(residual, -8, 7);
-
- if ((i & 1) != 0)
- data[i / 2 + 1] = (byte)(data[i / 2 + 1] | (nibble & 0xf));
- else
- data[i / 2 + 1] = (byte)(nibble << 4);
-
- predictor += nibble << exponent;
-
- this.tlSamples[0] = this.tlSamples[1];
- this.tlSamples[1] = Clamp(predictor, -32768, 32767);
-
- error += (int)(Math.Pow((double)(this.tlSamples[1] - inputBuffer[i]), 2));
- }
-
- if (!breakIt) j = 14;
-
- if (j == 14) break;
- }
-
- outError = error;
- return data;
- }
-
- private int DetermineStdExponent(int index, int[] table, int tableIndex, int[] inputBuffer)
- {
- int[] elSamples = new int[2];
- int maxResidual = 0;
- int factor1 = table[2 * tableIndex + 0];
- int factor2 = table[2 * tableIndex + 1];
-
- for (int i = 0; i < 2; i++)
- elSamples[i] = this.rlSamples[index, i];
-
- for (int i = 0; i < 14; i++)
- {
- int predictor = (elSamples[1] * factor1 + elSamples[0] * factor2) >> 11;
- int residual = inputBuffer[i] - predictor;
-
- if (residual > maxResidual)
- maxResidual = residual;
-
- elSamples[0] = elSamples[1];
- elSamples[1] = inputBuffer[i];
- }
-
- return FindExponent(maxResidual);
- }
-
- private int FindExponent(double residual)
- {
- int exponent = 0;
-
- while (residual > 7.5 || residual < -8.5)
- {
- exponent++;
- residual /= 2.0;
- }
-
- return exponent;
- }
-
- private int Clamp(int input, int min, int max)
- {
- if (input < min) return min;
- if (input > max) return max;
- return input;
- }
-
- private void ChangeProgress(int progressPercentage)
- {
- EventHandler progressChanged = ProgressChanged;
- if (progressChanged != null)
- {
- progressChanged(new object(), new System.ComponentModel.ProgressChangedEventArgs(progressPercentage, new object()));
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii.csproj b/CustomizeMii/CustomizeMii.csproj
deleted file mode 100644
index 23abde7..0000000
--- a/CustomizeMii/CustomizeMii.csproj
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {46B7F0BC-101B-4167-95AD-4C5D78AA0A20}
- WinExe
- Properties
- CustomizeMii
- CustomizeMii
- v2.0
- 512
-
-
- Resources\CustomizeMii.ico
- false
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 2.1.0.%2a
- false
- true
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- False
- ..\ForwardMii-Plugin\bin\Release\ForwardMii.dll
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- Form
-
-
- CustomizeMii_BnsConvert.cs
-
-
- Form
-
-
- CustomizeMii_ComplexForwarder.cs
-
-
-
- Form
-
-
- CustomizeMii_Main.cs
-
-
- Form
-
-
- CustomizeMii_Preview.cs
-
-
- Form
-
-
- CustomizeMii_InputBox.cs
-
-
-
-
- CustomizeMii_BnsConvert.cs
-
-
- CustomizeMii_ComplexForwarder.cs
-
-
- CustomizeMii_InputBox.cs
-
-
- CustomizeMii_Main.cs
-
-
- CustomizeMii_Preview.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
-
-
- True
- Settings.settings
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
- .NET Framework Client Profile
- false
-
-
- False
- .NET Framework 2.0 %28x86%29
- true
-
-
- False
- .NET Framework 3.0 %28x86%29
- false
-
-
- False
- .NET Framework 3.5
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii.csproj.user b/CustomizeMii/CustomizeMii.csproj.user
deleted file mode 100644
index 3258829..0000000
--- a/CustomizeMii/CustomizeMii.csproj.user
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- publish\
-
-
-
-
-
-
-
-
-
-
- de-DE
- false
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_BackgroundWorkers.cs b/CustomizeMii/CustomizeMii_BackgroundWorkers.cs
deleted file mode 100644
index b1694a3..0000000
--- a/CustomizeMii/CustomizeMii_BackgroundWorkers.cs
+++ /dev/null
@@ -1,753 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.IO;
-using BNS;
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_Main
- {
- public int sendWadReady = 0;
- private bool sendToWii = false;
- private bool internalSound;
-
- void bwBannerReplace_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
- SetText(tbReplace, BannerReplace);
- }
-
- void bwBannerReplace_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwBannerReplace_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwBannerReplace = sender as BackgroundWorker;
- string thisFile = (string)e.Argument;
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
- if (Directory.Exists(TempBannerPath)) Directory.Delete(TempBannerPath, true);
-
- if (thisFile.EndsWith(".bin"))
- {
- bwBannerReplace.ReportProgress(0, "Loading banner.bin...");
- Wii.U8.UnpackU8(thisFile, TempBannerPath);
- }
- else if (thisFile.EndsWith(".app"))
- {
- bwBannerReplace.ReportProgress(0, "Loading 00000000.app...");
- Wii.U8.UnpackU8(thisFile, TempTempPath);
- bwBannerReplace.ReportProgress(50, "Loading banner.bin...");
- Wii.U8.UnpackU8(TempTempPath + "meta\\banner.bin", TempBannerPath);
- Directory.Delete(TempTempPath, true);
- }
- else
- {
- bwBannerReplace.ReportProgress(0, "Loading WAD...");
- Wii.WadUnpack.UnpackWad(thisFile, TempTempPath);
- if (Wii.U8.CheckU8(TempTempPath + "00000000.app") == false)
- throw new Exception("CustomizeMii only handles Channel WADs!");
- bwBannerReplace.ReportProgress(30, "Loading 00000000.app...");
- Wii.U8.UnpackU8(TempTempPath + "00000000.app", TempTempPath + "00000000.app_OUT");
- bwBannerReplace.ReportProgress(60, "Loading banner.bin...");
- Wii.U8.UnpackU8(TempTempPath + "00000000.app_OUT\\meta\\banner.bin", TempBannerPath);
- Directory.Delete(TempTempPath, true);
- }
-
- EventHandler AddBannerTpls = new EventHandler(this.AddBannerTpls);
- EventHandler AddIconTpls = new EventHandler(this.AddIconTpls);
- EventHandler AddBrlyts = new EventHandler(this.AddBrlyts);
- EventHandler AddBrlans = new EventHandler(this.AddBrlans);
- this.Invoke(AddBannerTpls);
- this.Invoke(AddIconTpls);
- this.Invoke(AddBrlyts);
- this.Invoke(AddBrlans);
- }
- catch (Exception ex)
- {
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
- if (Directory.Exists(TempBannerPath)) Directory.Delete(TempBannerPath, true);
- BannerReplace = string.Empty;
- ErrorBox(ex.Message);
- }
- }
-
- void bwIconReplace_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
- SetText(tbReplace, IconReplace);
- }
-
- void bwIconReplace_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwIconReplace_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwIconReplace = sender as BackgroundWorker;
- string thisFile = (string)e.Argument;
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
- if (Directory.Exists(TempIconPath)) Directory.Delete(TempIconPath, true);
-
- if (thisFile.EndsWith(".bin"))
- {
- bwIconReplace.ReportProgress(0, "Loading icon.bin...");
- Wii.U8.UnpackU8(thisFile, TempIconPath);
- }
- else if (thisFile.EndsWith(".app"))
- {
- bwIconReplace.ReportProgress(0, "Loading 00000000.app...");
- Wii.U8.UnpackU8(thisFile, TempTempPath);
- bwIconReplace.ReportProgress(50, "Loading icon.bin...");
- Wii.U8.UnpackU8(TempTempPath + "meta\\icon.bin", TempIconPath);
- Directory.Delete(TempTempPath, true);
- }
- else
- {
- bwIconReplace.ReportProgress(0, "Loading WAD...");
- Wii.WadUnpack.UnpackWad(thisFile, TempTempPath);
- if (Wii.U8.CheckU8(TempTempPath + "00000000.app") == false)
- throw new Exception("CustomizeMii only handles Channel WADs!");
- bwIconReplace.ReportProgress(30, "Loading 00000000.app...");
- Wii.U8.UnpackU8(TempTempPath + "00000000.app", TempTempPath + "00000000.app_OUT");
- bwIconReplace.ReportProgress(60, "Loading icon.bin...");
- Wii.U8.UnpackU8(TempTempPath + "00000000.app_OUT\\meta\\icon.bin", TempIconPath);
- Directory.Delete(TempTempPath, true);
- }
-
- EventHandler AddBannerTpls = new EventHandler(this.AddBannerTpls);
- EventHandler AddIconTpls = new EventHandler(this.AddIconTpls);
- EventHandler AddBrlyts = new EventHandler(this.AddBrlyts);
- EventHandler AddBrlans = new EventHandler(this.AddBrlans);
- this.Invoke(AddBannerTpls);
- this.Invoke(AddIconTpls);
- this.Invoke(AddBrlyts);
- this.Invoke(AddBrlans);
- }
- catch (Exception ex)
- {
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
- if (Directory.Exists(TempIconPath)) Directory.Delete(TempIconPath, true);
- IconReplace = string.Empty;
- ErrorBox(ex.Message);
- }
- }
-
- void bwSoundReplace_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
- SetText(tbReplace, SoundReplace);
- }
-
- void bwSoundReplace_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwSoundReplace_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwSoundReplace = sender as BackgroundWorker;
- string thisFile = (string)e.Argument;
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
-
- if (thisFile.EndsWith(".bin"))
- {
- bwSoundReplace.ReportProgress(0, "Copying sound.bin...");
- File.Copy(thisFile, TempSoundPath);
- }
- else if (thisFile.EndsWith(".app"))
- {
- bwSoundReplace.ReportProgress(0, "Loading 00000000.app...");
- Wii.U8.UnpackU8(thisFile, TempTempPath);
- bwSoundReplace.ReportProgress(80, "Copying sound.bin...");
- File.Copy(TempTempPath + "meta\\sound.bin", TempSoundPath);
- Directory.Delete(TempTempPath, true);
- }
- else
- {
- bwSoundReplace.ReportProgress(0, "Loading WAD...");
- Wii.WadUnpack.UnpackWad(thisFile, TempTempPath);
- if (Wii.U8.CheckU8(TempTempPath + "00000000.app") == false)
- throw new Exception("CustomizeMii only handles Channel WADs!");
- bwSoundReplace.ReportProgress(50, "Loading 00000000.app...");
- Wii.U8.UnpackU8(TempTempPath + "00000000.app", TempTempPath + "00000000.app_OUT");
- bwSoundReplace.ReportProgress(90, "Copying sound.bin...");
- File.Copy(TempTempPath + "00000000.app_OUT\\meta\\sound.bin", TempSoundPath);
- Directory.Delete(TempTempPath, true);
- }
-
- SetText(tbSound, SoundReplace);
- }
- catch (Exception ex)
- {
- if (Directory.Exists(TempTempPath)) Directory.Delete(TempTempPath, true);
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- SoundReplace = string.Empty;
- ErrorBox(ex.Message);
- }
- }
-
- void bwConvertToBns_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (File.Exists(TempBnsPath))
- {
- if (internalSound == true)
- SetText(tbSound, "BNS: Internal Sound");
- else
- SetText(tbSound, "BNS: " + Mp3Path);
-
- btnBrowseSound.Text = "Clear";
-
- if (!string.IsNullOrEmpty(SoundReplace))
- {
- SoundReplace = string.Empty;
- if (cmbReplace.SelectedIndex == 2) SetText(tbReplace, SoundReplace);
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- }
- }
-
- if (File.Exists(TempWavePath)) File.Delete(TempWavePath);
-
- lbStatusText.Text = string.Empty;
- Mp3Path = string.Empty;
- pbProgress.Value = 100;
- }
-
- void bwConvertToBns_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- if (!string.IsNullOrEmpty((string)e.UserState)) currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bns_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwConvertToBns_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwConvertToBns = sender as BackgroundWorker;
- BnsConversionInfo bnsInfo = (BnsConversionInfo)e.Argument;
- string audioFile;
-
- if (bnsInfo.AudioFile == "Internal Sound")
- { audioFile = TempWavePath; internalSound = true; }
- else
- audioFile = bnsInfo.AudioFile;
- Mp3Path = audioFile; //Rather audioPath...
-
- bool mp3 = audioFile.EndsWith(".mp3");
- if (mp3 && bnsInfo.Loop == BnsConversionInfo.LoopType.FromWave) bnsInfo.Loop = BnsConversionInfo.LoopType.None;
-
- if (mp3)
- {
- bwConvertToBns.ReportProgress(0, "Converting MP3...");
-
- ProcessStartInfo lameI = new ProcessStartInfo(System.Windows.Forms.Application.StartupPath + "\\lame.exe",
- string.Format("--decode \"{0}\" \"{1}\"", audioFile, "C:\\cmtempmp3wav.wav")); //Gotta go this step, cause the TempWavePath is too long for lame.exe
- lameI.CreateNoWindow = true;
- lameI.UseShellExecute = false;
- lameI.RedirectStandardError = true;
-
- Process lame = Process.Start(lameI);
-
- string thisLine = string.Empty;
- while (lame.HasExited == false)
- {
- thisLine = lame.StandardError.ReadLine();
- if (!string.IsNullOrEmpty(thisLine))
- {
- if (thisLine.StartsWith("Frame#"))
- {
- string thisFrame = thisLine.Remove(thisLine.IndexOf('/'));
- thisFrame = thisFrame.Remove(0, thisFrame.LastIndexOf(' ') + 1);
- string Frames = thisLine.Remove(0, thisLine.IndexOf('/') + 1);
- Frames = Frames.Remove(Frames.IndexOf(' '));
-
- int thisProgress = (int)((Convert.ToDouble(thisFrame) / Convert.ToDouble(Frames)) * 100);
- bwConvertToBns.ReportProgress(thisProgress);
- }
- }
- }
-
- lame.WaitForExit();
- lame.Close();
-
- if (File.Exists("C:\\cmtempmp3wav.wav"))
- {
- FileInfo fi = new FileInfo("C:\\cmtempmp3wav.wav");
- fi.MoveTo(TempWavePath);
- }
-
- if (!File.Exists(TempWavePath)) throw new Exception("Error converting MP3...");
- else audioFile = TempWavePath;
- }
-
- bwConvertToBns.ReportProgress(0, "Converting To BNS...");
-
- BNS_File bns = new BNS_File(audioFile, bnsInfo.Loop == BnsConversionInfo.LoopType.FromWave);
- bns.ProgressChanged += new EventHandler(bns_ProgressChanged);
-
- bns.StereoToMono = bnsInfo.StereoToMono;
- bns.Convert();
-
- if (bnsInfo.Loop == BnsConversionInfo.LoopType.Manual && bnsInfo.LoopStartSample > -1 && bnsInfo.LoopStartSample < bns.TotalSampleCount)
- bns.SetLoop(bnsInfo.LoopStartSample);
-
- bns.Save(TempBnsPath);
-
- if (File.Exists(TempWavePath))
- File.Delete(TempWavePath);
- }
- catch (Exception ex)
- {
- ErrorBox("Error during conversion:\n" + ex.Message);
- }
- }
-
- void bwConvertMp3_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (File.Exists(TempWavePath))
- {
- SetText(tbSound, Mp3Path);
-
- btnBrowseSound.Text = "Clear";
-
- if (!string.IsNullOrEmpty(SoundReplace))
- {
- SoundReplace = string.Empty;
- if (cmbReplace.SelectedIndex == 2) SetText(tbReplace, SoundReplace);
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- }
- }
-
- lbStatusText.Text = string.Empty;
- Mp3Path = string.Empty;
- pbProgress.Value = 100;
- }
-
- void bwConvertMp3_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwConvertMp3_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwConvertMp3 = sender as BackgroundWorker;
- Mp3Path = (string)e.Argument;
- ProcessStartInfo lameI = new ProcessStartInfo(System.Windows.Forms.Application.StartupPath + "\\lame.exe",
- string.Format("--decode \"{0}\" \"{1}\"", e.Argument, "C:\\cmtempmp3wav.wav")); //Gotta go this step, cause the TempWavePath is too long for lame.exe
- lameI.CreateNoWindow = true;
- lameI.UseShellExecute = false;
- lameI.RedirectStandardError = true;
-
- Process lame = Process.Start(lameI);
-
- string thisLine = string.Empty;
- while (lame.HasExited == false)
- {
- thisLine = lame.StandardError.ReadLine();
- if (!string.IsNullOrEmpty(thisLine))
- {
- if (thisLine.StartsWith("Frame#"))
- {
- string thisFrame = thisLine.Remove(thisLine.IndexOf('/'));
- thisFrame = thisFrame.Remove(0, thisFrame.LastIndexOf(' ') + 1);
- string Frames = thisLine.Remove(0, thisLine.IndexOf('/') + 1);
- Frames = Frames.Remove(Frames.IndexOf(' '));
-
- int thisProgress = (int)((Convert.ToDouble(thisFrame) / Convert.ToDouble(Frames)) * 100);
- bwConvertMp3.ReportProgress(thisProgress);
- }
- }
- }
-
- lame.WaitForExit();
- lame.Close();
-
- if (File.Exists("C:\\cmtempmp3wav.wav"))
- {
- FileInfo fi = new FileInfo("C:\\cmtempmp3wav.wav");
- fi.MoveTo(TempWavePath);
- }
- }
- catch (Exception ex)
- {
- if (File.Exists(TempWavePath)) File.Delete(TempWavePath);
- Mp3Path = string.Empty;
- ErrorBox("Error during conversion:\n" + ex.Message);
- }
- }
-
- void bwLoadChannel_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
- }
-
- void bwLoadChannel_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwLoadChannel_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwLoadChannel = sender as BackgroundWorker;
- EventHandler SetSourceWad = new EventHandler(this.SetSourceWad);
- byte[] WadFile = Wii.Tools.LoadFileToByteArray((string)e.Argument);
- bool hashesMatch = true;
-
- if (Directory.Exists(TempUnpackPath)) Directory.Delete(TempUnpackPath, true);
-
- bwLoadChannel.ReportProgress(0, "Loading WAD...");
- Wii.WadUnpack.UnpackWad(WadFile, TempUnpackPath, out hashesMatch);
- if (Wii.U8.CheckU8(TempUnpackPath + "00000000.app") == false)
- throw new Exception("CustomizeMii only edits Channel WADs!");
-
- this.Invoke(SetSourceWad);
-
- bwLoadChannel.ReportProgress(25, "Loading 00000000.app...");
- Wii.U8.UnpackU8(TempUnpackPath + "00000000.app", TempUnpackPath + "00000000.app_OUT");
-
- bwLoadChannel.ReportProgress(50, "Loading banner.bin...");
- Wii.U8.UnpackU8(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin", TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT");
-
- bwLoadChannel.ReportProgress(75, "Loading icon.bin...");
- Wii.U8.UnpackU8(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin", TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT");
-
- bwLoadChannel.ReportProgress(90, "Gathering Information...");
- string[] ChannelTitles = Wii.WadInfo.GetChannelTitles(WadFile);
- string TitleID = Wii.WadInfo.GetTitleID(WadFile, 1);
-
- SetText(tbAllLanguages, ChannelTitles[1]);
-
- if (ChannelTitles[0] != ChannelTitles[1])
- SetText(tbJapanese, ChannelTitles[0]);
- if (ChannelTitles[2] != ChannelTitles[1])
- SetText(tbGerman, ChannelTitles[2]);
- if (ChannelTitles[3] != ChannelTitles[1])
- SetText(tbFrench, ChannelTitles[3]);
- if (ChannelTitles[4] != ChannelTitles[1])
- SetText(tbSpanish, ChannelTitles[4]);
- if (ChannelTitles[5] != ChannelTitles[1])
- SetText(tbItalian, ChannelTitles[5]);
- if (ChannelTitles[6] != ChannelTitles[1])
- SetText(tbDutch, ChannelTitles[6]);
-
- SetText(tbTitleID, TitleID);
-
- EventHandler AddBannerTpls = new EventHandler(this.AddBannerTpls);
- EventHandler AddIconTpls = new EventHandler(this.AddIconTpls);
- EventHandler AddBrlyts = new EventHandler(this.AddBrlyts);
- EventHandler AddBrlans = new EventHandler(this.AddBrlans);
- this.Invoke(AddBannerTpls);
- this.Invoke(AddIconTpls);
- this.Invoke(AddBrlyts);
- this.Invoke(AddBrlans);
-
- bwLoadChannel.ReportProgress(100);
- EventHandler EnableCtrls = new EventHandler(this.EnableControls);
- this.Invoke(EnableCtrls);
-
- if (!hashesMatch)
- System.Windows.Forms.MessageBox.Show("At least one content's hash doesn't match the hash in the TMD!\n" +
- "Some files of the WAD might be corrupted, thus it might brick your Wii!", "Warning",
- System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
- }
- catch (Exception ex)
- {
- if (Directory.Exists(TempUnpackPath)) Directory.Delete(TempUnpackPath, true);
- SourceWad = string.Empty;
- SetText(tbSourceWad, string.Empty);
- ErrorBox(ex.Message);
- }
- }
-
- void bwCreateWad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- EventHandler EnableControls = new EventHandler(this.EnableControls);
- EventHandler Initialize = new EventHandler(this.Initialize);
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
- this.Invoke(EnableControls);
- this.Invoke(Initialize);
- }
-
- void bwCreateWad_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- currentProgress.progressValue = e.ProgressPercentage;
- currentProgress.progressState = (string)e.UserState;
-
- this.Invoke(ProgressUpdate);
- }
-
- void bwCreateWad_DoWork(object sender, DoWorkEventArgs e)
- {
- try
- {
- BackgroundWorker bwCreateWad = sender as BackgroundWorker;
- WadCreationInfo wadInfo = (WadCreationInfo)e.Argument;
- EventHandler DisableControls = new EventHandler(this.DisableControls);
- this.Invoke(DisableControls);
-
- this.sendToWii = wadInfo.sendToWii;
- sendWadReady = 0;
-
- bwCreateWad.ReportProgress(0, "Making TPLs transparent");
- MakeBannerTplsTransparent();
- MakeIconTplsTransparent();
-
- bwCreateWad.ReportProgress(5, "Packing icon.bin...");
- byte[] iconbin;
-
- if (!string.IsNullOrEmpty(IconReplace))
- iconbin = Wii.U8.PackU8(TempIconPath);
- else
- iconbin = Wii.U8.PackU8(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT");
-
- if (cbLz77.Checked == true) iconbin = Wii.Lz77.Compress(iconbin);
- iconbin = Wii.U8.AddHeaderIMD5(iconbin);
- Wii.Tools.SaveFileFromByteArray(iconbin, TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin");
- Directory.Delete(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT", true);
-
- bwCreateWad.ReportProgress(25, "Packing banner.bin...");
- byte[] bannerbin;
-
- if (!string.IsNullOrEmpty(BannerReplace))
- bannerbin = Wii.U8.PackU8(TempBannerPath);
- else
- bannerbin = Wii.U8.PackU8(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT");
-
- if (cbLz77.Checked == true) bannerbin = Wii.Lz77.Compress(bannerbin);
- bannerbin = Wii.U8.AddHeaderIMD5(bannerbin);
- Wii.Tools.SaveFileFromByteArray(bannerbin, TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin");
- Directory.Delete(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT", true);
-
- if (!string.IsNullOrEmpty(SoundReplace) || !string.IsNullOrEmpty(tbSound.Text))
- {
- bwCreateWad.ReportProgress(50, "Packing sound.bin...");
-
- if (!string.IsNullOrEmpty(SoundReplace))
- {
- File.Delete(TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin");
- File.Copy(TempSoundPath, TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin");
- }
- else if (!string.IsNullOrEmpty(tbSound.Text))
- {
- if (tbSound.Text.EndsWith(".bns"))
- {
- Wii.Sound.BnsToSoundBin(tbSound.Text, TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", false);
- }
- else if (tbSound.Text.StartsWith("BNS:"))
- {
- Wii.Sound.BnsToSoundBin(TempBnsPath, TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", false);
- }
- else
- {
- string SoundFile = tbSound.Text;
- if (tbSound.Text.EndsWith(".mp3")) SoundFile = TempWavePath;
-
- Wii.Sound.WaveToSoundBin(SoundFile, TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", false);
- }
- }
- }
-
- bwCreateWad.ReportProgress(60, "Packing 00000000.app...");
- int[] Sizes = new int[3];
- string[] Titles = new string[] { tbJapanese.Text, tbEnglish.Text, tbGerman.Text, tbFrench.Text, tbSpanish.Text, tbItalian.Text, tbDutch.Text };
-
- for (int i = 0; i < Titles.Length; i++)
- if (string.IsNullOrEmpty(Titles[i])) Titles[i] = tbAllLanguages.Text;
-
- byte[] nullapp = Wii.U8.PackU8(TempUnpackPath + "00000000.app_OUT", out Sizes[0], out Sizes[1], out Sizes[2]);
- nullapp = Wii.U8.AddHeaderIMET(nullapp, Titles, Sizes);
- Wii.Tools.SaveFileFromByteArray(nullapp, TempUnpackPath + "00000000.app");
- Directory.Delete(TempUnpackPath + "00000000.app_OUT", true);
-
- string[] tikfile = Directory.GetFiles(TempUnpackPath, "*.tik");
- string[] tmdfile = Directory.GetFiles(TempUnpackPath, "*.tmd");
- byte[] tmd = Wii.Tools.LoadFileToByteArray(tmdfile[0]);
-
- if (!string.IsNullOrEmpty(tbDol.Text))
- {
- bwCreateWad.ReportProgress(80, "Inserting new DOL...");
- string[] AppFiles = Directory.GetFiles(TempUnpackPath, "*.app");
-
- foreach (string thisApp in AppFiles)
- if (!thisApp.EndsWith("00000000.app")) File.Delete(thisApp);
-
- if (wadInfo.nandLoader == 0)
- {
- using (BinaryReader nandloader = new BinaryReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("CustomizeMii.Resources.comex.app")))
- {
- using (FileStream fs = new FileStream(TempUnpackPath + "\\00000001.app", FileMode.Create))
- {
- byte[] temp = nandloader.ReadBytes((int)nandloader.BaseStream.Length);
- fs.Write(temp, 0, temp.Length);
- }
- }
-
- if (tbDol.Text.StartsWith("Simple Forwarder:"))
- {
- CreateForwarderSimple(TempUnpackPath + "\\00000002.app");
- }
- else if (tbDol.Text.StartsWith("Complex Forwarder:"))
- {
- bwCreateWad.ReportProgress(82, "Compiling Forwarder...");
- CreateForwarderComplex(TempUnpackPath + "\\00000002.app");
- }
- else if (tbDol.Text == "Internal" || tbDol.Text.EndsWith(".wad"))
- {
- File.Copy(TempDolPath, TempUnpackPath + "\\00000002.app");
- }
- else
- {
- File.Copy(tbDol.Text, TempUnpackPath + "\\00000002.app");
- }
-
- tmd = Wii.WadEdit.ChangeTmdBootIndex(tmd, 1);
- }
- else
- {
- using (BinaryReader nandloader = new BinaryReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("CustomizeMii.Resources.Waninkoko.app")))
- {
- using (FileStream fs = new FileStream(TempUnpackPath + "\\00000002.app", FileMode.Create))
- {
- byte[] temp = nandloader.ReadBytes((int)nandloader.BaseStream.Length);
- fs.Write(temp, 0, temp.Length);
- }
- }
-
- if (tbDol.Text.StartsWith("Simple Forwarder:"))
- {
- CreateForwarderSimple(TempUnpackPath + "\\00000001.app");
- }
- else if (tbDol.Text.StartsWith("Complex Forwarder:"))
- {
- bwCreateWad.ReportProgress(82, "Compiling Forwarder...");
- CreateForwarderComplex(TempUnpackPath + "\\00000001.app");
- }
- else if (tbDol.Text == "Internal")
- {
- File.Copy(TempDolPath, TempUnpackPath + "\\00000001.app");
- }
- else
- {
- File.Copy(tbDol.Text, TempUnpackPath + "\\00000001.app");
- }
-
- tmd = Wii.WadEdit.ChangeTmdBootIndex(tmd, 2);
- }
-
- tmd = Wii.WadEdit.ChangeTmdContentCount(tmd, 3);
-
- bwCreateWad.ReportProgress(85, "Updating TMD...");
- File.Delete(tmdfile[0]);
- using (FileStream fs = new FileStream(tmdfile[0], FileMode.Create))
- {
- byte[] tmdconts = new byte[108];
- tmdconts[7] = 0x01;
- tmdconts[39] = 0x01;
- tmdconts[41] = 0x01;
- tmdconts[43] = 0x01;
- tmdconts[75] = 0x02;
- tmdconts[77] = 0x02;
- tmdconts[79] = 0x01;
-
- fs.Write(tmd, 0, 484);
- fs.Write(tmdconts, 0, tmdconts.Length);
- }
- }
-
- bwCreateWad.ReportProgress(85, "Updating TMD...");
- Wii.WadEdit.UpdateTmdContents(tmdfile[0]);
-
- Wii.WadEdit.ChangeTitleID(tikfile[0], 0, tbTitleID.Text.ToUpper());
- Wii.WadEdit.ChangeTitleID(tmdfile[0], 1, tbTitleID.Text.ToUpper());
-
- bwCreateWad.ReportProgress(90, "Trucha Signing...");
- Wii.WadEdit.TruchaSign(tmdfile[0], 1);
- Wii.WadEdit.TruchaSign(tikfile[0], 0);
-
- bwCreateWad.ReportProgress(95, "Packing WAD...");
- if (File.Exists(wadInfo.outFile)) File.Delete(wadInfo.outFile);
- Wii.WadPack.PackWad(TempUnpackPath, wadInfo.outFile, false);
-
- bwCreateWad.ReportProgress(100, " ");
- CreationTimer.Stop();
-
- if (!sendToWii)
- {
- FileInfo fi = new FileInfo(wadInfo.outFile);
- double fileSize = Math.Round(fi.Length * 0.0009765625 * 0.0009765625, 2);
-
-
- InfoBox(string.Format("Successfully created custom channel!\nTime elapsed: {0} ms\nFilesize: {1} MB\nApprox. Blocks: {2}", CreationTimer.ElapsedMilliseconds, fileSize, Wii.WadInfo.GetNandBlocks(wadInfo.outFile)));
- }
- else sendWadReady = 1;
- }
- catch (Exception ex)
- {
- sendWadReady = -1;
- CreationTimer.Stop();
- EventHandler EnableControls = new EventHandler(this.EnableControls);
- this.Invoke(EnableControls);
- ErrorBox(ex.Message);
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_BnsConvert.Designer.cs b/CustomizeMii/CustomizeMii_BnsConvert.Designer.cs
deleted file mode 100644
index 8faf26e..0000000
--- a/CustomizeMii/CustomizeMii_BnsConvert.Designer.cs
+++ /dev/null
@@ -1,391 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_BnsConvert
- {
- ///
- /// Erforderliche Designervariable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Vom Windows Form-Designer generierter Code
-
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
- private void InitializeComponent()
- {
- this.btnCancel = new System.Windows.Forms.Button();
- this.btnConvert = new System.Windows.Forms.Button();
- this.lbAudioFile = new System.Windows.Forms.Label();
- this.tbAudioFile = new System.Windows.Forms.TextBox();
- this.btnBrowseAudioFile = new System.Windows.Forms.Button();
- this.gbLoop = new System.Windows.Forms.GroupBox();
- this.tbLoopStart = new System.Windows.Forms.TextBox();
- this.rbEnterManually = new System.Windows.Forms.RadioButton();
- this.rbFromAudioFile = new System.Windows.Forms.RadioButton();
- this.rbNone = new System.Windows.Forms.RadioButton();
- this.gbWaveInfo = new System.Windows.Forms.GroupBox();
- this.lbStatusValue = new System.Windows.Forms.Label();
- this.lbLoopStartValue = new System.Windows.Forms.Label();
- this.lbLoopCountValue = new System.Windows.Forms.Label();
- this.lbFormatValue = new System.Windows.Forms.Label();
- this.lbChannelCountValue = new System.Windows.Forms.Label();
- this.lbSamplerateValue = new System.Windows.Forms.Label();
- this.lbBitdepthValue = new System.Windows.Forms.Label();
- this.lbStatus = new System.Windows.Forms.Label();
- this.lbLoopStart = new System.Windows.Forms.Label();
- this.lbLoopCount = new System.Windows.Forms.Label();
- this.lbFormat = new System.Windows.Forms.Label();
- this.lbChannelCount = new System.Windows.Forms.Label();
- this.lbSamplerate = new System.Windows.Forms.Label();
- this.lbBitdepth = new System.Windows.Forms.Label();
- this.cbSourceSound = new System.Windows.Forms.CheckBox();
- this.gbLoop.SuspendLayout();
- this.gbWaveInfo.SuspendLayout();
- this.SuspendLayout();
- //
- // btnCancel
- //
- this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.btnCancel.Location = new System.Drawing.Point(186, 179);
- this.btnCancel.Name = "btnCancel";
- this.btnCancel.Size = new System.Drawing.Size(160, 23);
- this.btnCancel.TabIndex = 10;
- this.btnCancel.Text = "Cancel";
- this.btnCancel.UseVisualStyleBackColor = true;
- this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
- //
- // btnConvert
- //
- this.btnConvert.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.btnConvert.Location = new System.Drawing.Point(15, 179);
- this.btnConvert.Name = "btnConvert";
- this.btnConvert.Size = new System.Drawing.Size(160, 23);
- this.btnConvert.TabIndex = 9;
- this.btnConvert.Text = "Convert";
- this.btnConvert.UseVisualStyleBackColor = true;
- this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click);
- //
- // lbAudioFile
- //
- this.lbAudioFile.AutoSize = true;
- this.lbAudioFile.Location = new System.Drawing.Point(12, 24);
- this.lbAudioFile.Name = "lbAudioFile";
- this.lbAudioFile.Size = new System.Drawing.Size(56, 13);
- this.lbAudioFile.TabIndex = 11;
- this.lbAudioFile.Text = "Audio File:";
- //
- // tbAudioFile
- //
- this.tbAudioFile.Location = new System.Drawing.Point(74, 21);
- this.tbAudioFile.Name = "tbAudioFile";
- this.tbAudioFile.ReadOnly = true;
- this.tbAudioFile.Size = new System.Drawing.Size(191, 20);
- this.tbAudioFile.TabIndex = 12;
- //
- // btnBrowseAudioFile
- //
- this.btnBrowseAudioFile.Location = new System.Drawing.Point(271, 20);
- this.btnBrowseAudioFile.Name = "btnBrowseAudioFile";
- this.btnBrowseAudioFile.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseAudioFile.TabIndex = 13;
- this.btnBrowseAudioFile.Text = "Browse...";
- this.btnBrowseAudioFile.UseVisualStyleBackColor = true;
- this.btnBrowseAudioFile.Click += new System.EventHandler(this.btnBrowseAudioFile_Click);
- //
- // gbLoop
- //
- this.gbLoop.Controls.Add(this.tbLoopStart);
- this.gbLoop.Controls.Add(this.rbEnterManually);
- this.gbLoop.Controls.Add(this.rbFromAudioFile);
- this.gbLoop.Controls.Add(this.rbNone);
- this.gbLoop.Location = new System.Drawing.Point(15, 72);
- this.gbLoop.Name = "gbLoop";
- this.gbLoop.Size = new System.Drawing.Size(331, 94);
- this.gbLoop.TabIndex = 14;
- this.gbLoop.TabStop = false;
- this.gbLoop.Text = "Loop";
- //
- // tbLoopStart
- //
- this.tbLoopStart.Enabled = false;
- this.tbLoopStart.Location = new System.Drawing.Point(227, 64);
- this.tbLoopStart.Name = "tbLoopStart";
- this.tbLoopStart.Size = new System.Drawing.Size(60, 20);
- this.tbLoopStart.TabIndex = 1;
- this.tbLoopStart.Text = "0";
- //
- // rbEnterManually
- //
- this.rbEnterManually.AutoSize = true;
- this.rbEnterManually.Location = new System.Drawing.Point(6, 65);
- this.rbEnterManually.Name = "rbEnterManually";
- this.rbEnterManually.Size = new System.Drawing.Size(215, 17);
- this.rbEnterManually.TabIndex = 0;
- this.rbEnterManually.Text = "Enter Manually Loop Start Sample:";
- this.rbEnterManually.UseVisualStyleBackColor = true;
- this.rbEnterManually.CheckedChanged += new System.EventHandler(this.rbSelectionChanged);
- //
- // rbFromAudioFile
- //
- this.rbFromAudioFile.AutoSize = true;
- this.rbFromAudioFile.Location = new System.Drawing.Point(6, 42);
- this.rbFromAudioFile.Name = "rbFromAudioFile";
- this.rbFromAudioFile.Size = new System.Drawing.Size(281, 17);
- this.rbFromAudioFile.TabIndex = 0;
- this.rbFromAudioFile.Text = "From Audio File (works only with pre-looped wave files)";
- this.rbFromAudioFile.UseVisualStyleBackColor = true;
- this.rbFromAudioFile.CheckedChanged += new System.EventHandler(this.rbSelectionChanged);
- //
- // rbNone
- //
- this.rbNone.AutoSize = true;
- this.rbNone.Checked = true;
- this.rbNone.Location = new System.Drawing.Point(6, 19);
- this.rbNone.Name = "rbNone";
- this.rbNone.Size = new System.Drawing.Size(51, 17);
- this.rbNone.TabIndex = 0;
- this.rbNone.TabStop = true;
- this.rbNone.Text = "None";
- this.rbNone.UseVisualStyleBackColor = true;
- this.rbNone.CheckedChanged += new System.EventHandler(this.rbSelectionChanged);
- //
- // gbWaveInfo
- //
- this.gbWaveInfo.Controls.Add(this.lbStatusValue);
- this.gbWaveInfo.Controls.Add(this.lbLoopStartValue);
- this.gbWaveInfo.Controls.Add(this.lbLoopCountValue);
- this.gbWaveInfo.Controls.Add(this.lbFormatValue);
- this.gbWaveInfo.Controls.Add(this.lbChannelCountValue);
- this.gbWaveInfo.Controls.Add(this.lbSamplerateValue);
- this.gbWaveInfo.Controls.Add(this.lbBitdepthValue);
- this.gbWaveInfo.Controls.Add(this.lbStatus);
- this.gbWaveInfo.Controls.Add(this.lbLoopStart);
- this.gbWaveInfo.Controls.Add(this.lbLoopCount);
- this.gbWaveInfo.Controls.Add(this.lbFormat);
- this.gbWaveInfo.Controls.Add(this.lbChannelCount);
- this.gbWaveInfo.Controls.Add(this.lbSamplerate);
- this.gbWaveInfo.Controls.Add(this.lbBitdepth);
- this.gbWaveInfo.Location = new System.Drawing.Point(363, 20);
- this.gbWaveInfo.Name = "gbWaveInfo";
- this.gbWaveInfo.Size = new System.Drawing.Size(135, 182);
- this.gbWaveInfo.TabIndex = 15;
- this.gbWaveInfo.TabStop = false;
- this.gbWaveInfo.Text = "Wave Info";
- //
- // lbStatusValue
- //
- this.lbStatusValue.Location = new System.Drawing.Point(75, 151);
- this.lbStatusValue.Name = "lbStatusValue";
- this.lbStatusValue.Size = new System.Drawing.Size(54, 13);
- this.lbStatusValue.TabIndex = 7;
- //
- // lbLoopStartValue
- //
- this.lbLoopStartValue.Location = new System.Drawing.Point(75, 130);
- this.lbLoopStartValue.Name = "lbLoopStartValue";
- this.lbLoopStartValue.Size = new System.Drawing.Size(54, 13);
- this.lbLoopStartValue.TabIndex = 7;
- //
- // lbLoopCountValue
- //
- this.lbLoopCountValue.Location = new System.Drawing.Point(75, 109);
- this.lbLoopCountValue.Name = "lbLoopCountValue";
- this.lbLoopCountValue.Size = new System.Drawing.Size(54, 13);
- this.lbLoopCountValue.TabIndex = 7;
- //
- // lbFormatValue
- //
- this.lbFormatValue.Location = new System.Drawing.Point(75, 88);
- this.lbFormatValue.Name = "lbFormatValue";
- this.lbFormatValue.Size = new System.Drawing.Size(54, 13);
- this.lbFormatValue.TabIndex = 7;
- //
- // lbChannelCountValue
- //
- this.lbChannelCountValue.Location = new System.Drawing.Point(75, 67);
- this.lbChannelCountValue.Name = "lbChannelCountValue";
- this.lbChannelCountValue.Size = new System.Drawing.Size(54, 13);
- this.lbChannelCountValue.TabIndex = 7;
- //
- // lbSamplerateValue
- //
- this.lbSamplerateValue.Location = new System.Drawing.Point(75, 46);
- this.lbSamplerateValue.Name = "lbSamplerateValue";
- this.lbSamplerateValue.Size = new System.Drawing.Size(54, 13);
- this.lbSamplerateValue.TabIndex = 7;
- //
- // lbBitdepthValue
- //
- this.lbBitdepthValue.Location = new System.Drawing.Point(75, 25);
- this.lbBitdepthValue.Name = "lbBitdepthValue";
- this.lbBitdepthValue.Size = new System.Drawing.Size(54, 13);
- this.lbBitdepthValue.TabIndex = 7;
- //
- // lbStatus
- //
- this.lbStatus.AutoSize = true;
- this.lbStatus.Location = new System.Drawing.Point(6, 151);
- this.lbStatus.Name = "lbStatus";
- this.lbStatus.Size = new System.Drawing.Size(40, 13);
- this.lbStatus.TabIndex = 6;
- this.lbStatus.Text = "Status:";
- //
- // lbLoopStart
- //
- this.lbLoopStart.AutoSize = true;
- this.lbLoopStart.Location = new System.Drawing.Point(6, 130);
- this.lbLoopStart.Name = "lbLoopStart";
- this.lbLoopStart.Size = new System.Drawing.Size(59, 13);
- this.lbLoopStart.TabIndex = 5;
- this.lbLoopStart.Text = "Loop Start:";
- //
- // lbLoopCount
- //
- this.lbLoopCount.AutoSize = true;
- this.lbLoopCount.Location = new System.Drawing.Point(6, 109);
- this.lbLoopCount.Name = "lbLoopCount";
- this.lbLoopCount.Size = new System.Drawing.Size(39, 13);
- this.lbLoopCount.TabIndex = 4;
- this.lbLoopCount.Text = "Loops:";
- //
- // lbFormat
- //
- this.lbFormat.AutoSize = true;
- this.lbFormat.Location = new System.Drawing.Point(6, 88);
- this.lbFormat.Name = "lbFormat";
- this.lbFormat.Size = new System.Drawing.Size(42, 13);
- this.lbFormat.TabIndex = 3;
- this.lbFormat.Text = "Format:";
- //
- // lbChannelCount
- //
- this.lbChannelCount.AutoSize = true;
- this.lbChannelCount.Location = new System.Drawing.Point(6, 67);
- this.lbChannelCount.Name = "lbChannelCount";
- this.lbChannelCount.Size = new System.Drawing.Size(54, 13);
- this.lbChannelCount.TabIndex = 2;
- this.lbChannelCount.Text = "Channels:";
- //
- // lbSamplerate
- //
- this.lbSamplerate.AutoSize = true;
- this.lbSamplerate.Location = new System.Drawing.Point(6, 46);
- this.lbSamplerate.Name = "lbSamplerate";
- this.lbSamplerate.Size = new System.Drawing.Size(63, 13);
- this.lbSamplerate.TabIndex = 1;
- this.lbSamplerate.Text = "Samplerate:";
- //
- // lbBitdepth
- //
- this.lbBitdepth.AutoSize = true;
- this.lbBitdepth.Location = new System.Drawing.Point(6, 25);
- this.lbBitdepth.Name = "lbBitdepth";
- this.lbBitdepth.Size = new System.Drawing.Size(49, 13);
- this.lbBitdepth.TabIndex = 0;
- this.lbBitdepth.Text = "Bitdepth:";
- //
- // cbSourceSound
- //
- this.cbSourceSound.AutoSize = true;
- this.cbSourceSound.Enabled = false;
- this.cbSourceSound.Location = new System.Drawing.Point(15, 50);
- this.cbSourceSound.Name = "cbSourceSound";
- this.cbSourceSound.Size = new System.Drawing.Size(170, 17);
- this.cbSourceSound.TabIndex = 16;
- this.cbSourceSound.Text = "Take sound from source WAD";
- this.cbSourceSound.UseVisualStyleBackColor = true;
- this.cbSourceSound.CheckedChanged += new System.EventHandler(this.cbSourceSound_CheckedChanged);
- //
- // CustomizeMii_BnsConvert
- //
- this.AcceptButton = this.btnConvert;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.btnCancel;
- this.ClientSize = new System.Drawing.Size(510, 220);
- this.Controls.Add(this.cbSourceSound);
- this.Controls.Add(this.gbWaveInfo);
- this.Controls.Add(this.gbLoop);
- this.Controls.Add(this.btnBrowseAudioFile);
- this.Controls.Add(this.tbAudioFile);
- this.Controls.Add(this.lbAudioFile);
- this.Controls.Add(this.btnCancel);
- this.Controls.Add(this.btnConvert);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Name = "CustomizeMii_BnsConvert";
- this.Text = "CustomizeMii_BnsConvert";
- this.Load += new System.EventHandler(this.CustomizeMii_BnsConvert_Load);
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CustomizeMii_BnsConvert_FormClosing);
- this.gbLoop.ResumeLayout(false);
- this.gbLoop.PerformLayout();
- this.gbWaveInfo.ResumeLayout(false);
- this.gbWaveInfo.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Button btnCancel;
- private System.Windows.Forms.Button btnConvert;
- private System.Windows.Forms.Label lbAudioFile;
- private System.Windows.Forms.TextBox tbAudioFile;
- private System.Windows.Forms.Button btnBrowseAudioFile;
- private System.Windows.Forms.GroupBox gbLoop;
- private System.Windows.Forms.RadioButton rbNone;
- private System.Windows.Forms.RadioButton rbEnterManually;
- private System.Windows.Forms.RadioButton rbFromAudioFile;
- private System.Windows.Forms.TextBox tbLoopStart;
- private System.Windows.Forms.GroupBox gbWaveInfo;
- private System.Windows.Forms.Label lbBitdepth;
- private System.Windows.Forms.Label lbSamplerate;
- private System.Windows.Forms.Label lbChannelCount;
- private System.Windows.Forms.Label lbFormat;
- private System.Windows.Forms.Label lbLoopCount;
- private System.Windows.Forms.Label lbLoopStart;
- private System.Windows.Forms.Label lbStatus;
- private System.Windows.Forms.Label lbStatusValue;
- private System.Windows.Forms.Label lbLoopStartValue;
- private System.Windows.Forms.Label lbLoopCountValue;
- private System.Windows.Forms.Label lbFormatValue;
- private System.Windows.Forms.Label lbChannelCountValue;
- private System.Windows.Forms.Label lbSamplerateValue;
- private System.Windows.Forms.Label lbBitdepthValue;
- private System.Windows.Forms.CheckBox cbSourceSound;
-
- }
-}
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_BnsConvert.cs b/CustomizeMii/CustomizeMii_BnsConvert.cs
deleted file mode 100644
index 8bdf4b6..0000000
--- a/CustomizeMii/CustomizeMii_BnsConvert.cs
+++ /dev/null
@@ -1,356 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using System.ComponentModel;
-using WaveFile;
-
-namespace CustomizeMii
-{
- public partial class CustomizeMii_BnsConvert : Form
- {
- private bool lameExists;
- private int loopStartSample;
- private BackgroundWorker bwGatherInfo;
- private int bitDepth;
- private int sampleRate;
- private int channelCount;
- private int dataFormat;
- private int loopCount;
- private int loopStart;
- private bool error = false;
- private bool cancelled = false;
-
- public string AudioFile { get { return tbAudioFile.Text; } }
- public bool LoopNone { get { return rbNone.Checked; } }
- public bool LoopFromAudio { get { return rbFromAudioFile.Checked; } }
- public bool LoopManually { get { return rbEnterManually.Checked; } }
- public int LoopStartSample { get { return loopStartSample; } }
- public int ChannelCount { get { return channelCount; } }
-
- public CustomizeMii_BnsConvert(bool lameExists)
- {
- InitializeComponent();
- this.lameExists = lameExists;
- }
-
- private void CustomizeMii_BnsConvert_Load(object sender, EventArgs e)
- {
- //this.Size = new System.Drawing.Size(358, 220);
- this.Size = new System.Drawing.Size(btnCancel.Location.X + btnCancel.Size.Width + 15, 220);
-
- this.CenterToParent();
- bwGatherInfo = new BackgroundWorker();
- bwGatherInfo.WorkerSupportsCancellation = true;
-
- bwGatherInfo.DoWork += new DoWorkEventHandler(bwGatherInfo_DoWork);
-
- byte[] soundBin = Wii.Tools.LoadFileToByteArray(CustomizeMii_Main.TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", 32, 16);
-
- if (soundBin[0] == 'R' && soundBin[1] == 'I' && soundBin[2] == 'F' && soundBin[3] == 'F')
- { cbSourceSound.Enabled = true; }
- else if (soundBin[0] == 'L' && soundBin[1] == 'Z' && soundBin[2] == '7' && soundBin[3] == '7')
- if (soundBin[9] == 'R' && soundBin[10] == 'I' && soundBin[11] == 'F' && soundBin[12] == 'F')
- { cbSourceSound.Enabled = true; }
- }
-
- private void CustomizeMii_BnsConvert_FormClosing(object sender, FormClosingEventArgs e)
- {
- cancelled = true;
-
- if (bwGatherInfo.IsBusy)
- bwGatherInfo.CancelAsync();
- }
-
- private void rbSelectionChanged(object sender, EventArgs e)
- {
- tbLoopStart.Enabled = rbEnterManually.Checked;
- }
-
- private void btnConvert_Click(object sender, EventArgs e)
- {
- if (!File.Exists(tbAudioFile.Text) && tbAudioFile.Text != "Internal Sound")
- {
- tbAudioFile.Focus();
- tbAudioFile.SelectAll();
- return;
- }
-
- if (!int.TryParse(tbLoopStart.Text, out loopStartSample))
- {
- tbLoopStart.Focus();
- tbLoopStart.SelectAll();
- }
-
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
-
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- this.Close();
- }
-
- private void cbSourceSound_CheckedChanged(object sender, EventArgs e)
- {
- if (cbSourceSound.Checked)
- {
- tbAudioFile.Text = "Internal Sound";
-
- FileStream fs = new FileStream(CustomizeMii_Main.TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", FileMode.Open);
- byte[] audio = new byte[fs.Length - 32];
- int offset = 0;
-
- fs.Seek(32, SeekOrigin.Begin);
- fs.Read(audio, 0, audio.Length);
- fs.Close();
-
- if ((offset = Wii.Lz77.GetLz77Offset(audio)) != -1)
- audio = Wii.Lz77.Decompress(audio, offset);
-
- foreach (Label thisLabel in gbWaveInfo.Controls)
- if (thisLabel.Name.ToLower().Contains("value"))
- {
- thisLabel.ForeColor = System.Drawing.Color.Black;
- thisLabel.Text = "Gathering";
- }
-
- bwGatherInfo.RunWorkerAsync(audio);
-
- //this.Size = new System.Drawing.Size(510, 220);
- this.Size = new System.Drawing.Size(gbWaveInfo.Location.X + gbWaveInfo.Size.Width + 15, 220);
- }
- else
- {
- if (tbAudioFile.Text == "Internal Sound")
- tbAudioFile.Text = string.Empty;
-
- //this.Size = new System.Drawing.Size(358, 220);
- this.Size = new System.Drawing.Size(btnCancel.Location.X + btnCancel.Size.Width + 15, 220);
- }
- }
-
- private void btnBrowseAudioFile_Click(object sender, EventArgs e)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- if (lameExists)
- { ofd.Filter = "Wave|*.wav|MP3|*.mp3|All|*.wav;*.mp3"; ofd.FilterIndex = 3; }
- else
- { ofd.Filter = "Wave|*.wav"; }
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName != tbAudioFile.Text)
- {
- btnConvert.Enabled = false;
-
- cbSourceSound.Checked = false;
- tbAudioFile.Text = ofd.FileName;
-
- if (ofd.FileName.EndsWith(".wav"))
- {
- rbFromAudioFile.Enabled = true;
-
- foreach (Label thisLabel in gbWaveInfo.Controls)
- if (thisLabel.Name.ToLower().Contains("value"))
- {
- thisLabel.ForeColor = System.Drawing.Color.Black;
- thisLabel.Text = "Gathering";
- }
-
- bwGatherInfo.RunWorkerAsync(ofd.FileName);
-
- //this.Size = new System.Drawing.Size(510, 220);
- this.Size = new System.Drawing.Size(gbWaveInfo.Location.X + gbWaveInfo.Size.Width + 15, 220);
- }
- else if (ofd.FileName.EndsWith(".mp3"))
- {
- channelCount = 0;
- btnConvert.Enabled = true;
-
- if (rbFromAudioFile.Checked) rbNone.Checked = true;
- rbFromAudioFile.Enabled = false;
-
- //this.Size = new System.Drawing.Size(358, 220);
- this.Size = new System.Drawing.Size(btnCancel.Location.X + btnCancel.Size.Width + 15, 220);
- }
- }
- }
- }
-
- void bwGatherInfo_DoWork(object sender, DoWorkEventArgs e)
- {
- EventHandler UpdateValues = new EventHandler(this.UpdateValues);
-
- try
- {
- Wave wave;
- if (e.Argument is byte[])
- { wave = new Wave((byte[])e.Argument); }
- else
- { wave = new Wave((string)e.Argument); }
-
- try { bitDepth = wave.BitDepth; }
- catch { bitDepth = -1; }
-
- try { sampleRate = wave.SampleRate; }
- catch { sampleRate = -1; }
-
- try { channelCount = wave.ChannelCount; }
- catch { channelCount = -1; }
-
- try { dataFormat = wave.DataFormat; }
- catch { dataFormat = -1; }
-
- try { loopCount = wave.LoopCount; }
- catch { loopCount = -1; }
-
- try { loopStart = wave.LoopStart; }
- catch { loopStart = -1; }
-
- if (!cancelled)
- this.Invoke(UpdateValues);
-
- if (e.Argument is byte[])
- {
- byte[] audio = e.Argument as byte[];
- using (FileStream fs = new FileStream(CustomizeMii_Main.TempWavePath, FileMode.Create))
- {
- fs.Write(audio, 0, audio.Length);
- }
- }
- }
- catch
- {
- error = true;
-
- if (!cancelled)
- this.Invoke(UpdateValues);
- }
- }
-
- void UpdateValues(object sender, EventArgs e)
- {
- if (error == true)
- {
- foreach (Label thisLabel in gbWaveInfo.Controls)
- if (thisLabel.Name.ToLower().Contains("value"))
- {
- thisLabel.Text = "Error";
- thisLabel.ForeColor = System.Drawing.Color.Red;
- }
-
- error = false;
- return;
- }
-
- bool statusOk = true;
-
- if (bitDepth == -1) lbBitdepthValue.Text = "Error";
- else lbBitdepthValue.Text = bitDepth.ToString();
-
- if (sampleRate == -1) lbSamplerateValue.Text = "Error";
- else lbSamplerateValue.Text = sampleRate.ToString();
-
- if (dataFormat == -1) lbFormatValue.Text = "Error";
- else if (dataFormat == 1) lbFormatValue.Text = "1 (PCM)";
- else lbFormatValue.Text = dataFormat.ToString();
-
- if (channelCount == -1) lbChannelCountValue.Text = "Error";
- else if (channelCount == 1) lbChannelCountValue.Text = "1 (Mono)";
- else if (channelCount == 2) lbChannelCountValue.Text = "2 (Stereo)";
- else lbChannelCountValue.Text = channelCount.ToString();
-
- if (loopCount == -1) lbLoopCountValue.Text = "Error";
- else lbLoopCountValue.Text = loopCount.ToString();
-
- if (loopCount == -1) lbLoopStartValue.Text = "Error";
- else if (loopCount == 1) { lbLoopStartValue.Text = loopStart == -1 ? "Error" : loopStart.ToString(); }
- else lbLoopStartValue.Text = "-";
-
-
-
- if (lbBitdepthValue.Text == "Error" || bitDepth != 16)
- {
- lbBitdepthValue.ForeColor = System.Drawing.Color.Red;
- statusOk = false;
- }
- else lbBitdepthValue.ForeColor = System.Drawing.Color.Green;
-
- if (lbSamplerateValue.Text == "Error")
- {
- lbSamplerateValue.ForeColor = System.Drawing.Color.Red;
- statusOk = false;
- }
- else lbSamplerateValue.ForeColor = System.Drawing.Color.Green;
-
- if (lbFormatValue.Text == "Error" || dataFormat != 1)
- {
- lbFormatValue.ForeColor = System.Drawing.Color.Red;
- statusOk = false;
- }
- else lbFormatValue.ForeColor = System.Drawing.Color.Green;
-
- if (lbChannelCountValue.Text == "Error" || (channelCount > 2 || channelCount < 1))
- {
- lbChannelCountValue.ForeColor = System.Drawing.Color.Red;
- statusOk = false;
- }
- else lbChannelCountValue.ForeColor = System.Drawing.Color.Green;
-
- if (lbLoopCountValue.Text == "Error" || loopCount > 1)
- lbLoopCountValue.ForeColor = System.Drawing.Color.Orange;
- else lbLoopCountValue.ForeColor = System.Drawing.Color.Green;
-
- if (lbLoopStartValue.Text == "Error" || lbLoopStartValue.Text == "-")
- lbLoopStartValue.ForeColor = System.Drawing.Color.Orange;
- else lbLoopStartValue.ForeColor = System.Drawing.Color.Green;
-
- if (!statusOk)
- {
- lbStatusValue.Text = "Not OK!";
- lbStatusValue.ForeColor = System.Drawing.Color.Red;
-
- btnConvert.Enabled = false;
- }
- else
- {
- btnConvert.Enabled = true;
-
- if (lbLoopCountValue.ForeColor == System.Drawing.Color.Orange ||
- lbLoopStartValue.ForeColor == System.Drawing.Color.Orange)
- {
- lbStatusValue.Text = "No Loop!";
- lbStatusValue.ForeColor = System.Drawing.Color.Orange;
-
- if (rbFromAudioFile.Checked) rbNone.Checked = true;
- rbFromAudioFile.Enabled = false;
- }
- else
- {
- rbFromAudioFile.Enabled = true;
-
- lbStatusValue.Text = "OK!";
- lbStatusValue.ForeColor = System.Drawing.Color.Green;
- }
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_BnsConvert.resx b/CustomizeMii/CustomizeMii_BnsConvert.resx
deleted file mode 100644
index ff31a6d..0000000
--- a/CustomizeMii/CustomizeMii_BnsConvert.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_ComplexForwarder.Designer.cs b/CustomizeMii/CustomizeMii_ComplexForwarder.Designer.cs
deleted file mode 100644
index e81c3b8..0000000
--- a/CustomizeMii/CustomizeMii_ComplexForwarder.Designer.cs
+++ /dev/null
@@ -1,205 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_ComplexForwarder
- {
- ///
- /// Erforderliche Designervariable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Vom Windows Form-Designer generierter Code
-
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
- private void InitializeComponent()
- {
- this.lbAppFolder = new System.Windows.Forms.Label();
- this.tbAppFolder = new System.Windows.Forms.TextBox();
- this.cbImage43 = new System.Windows.Forms.CheckBox();
- this.cbImage169 = new System.Windows.Forms.CheckBox();
- this.tbImage43 = new System.Windows.Forms.TextBox();
- this.tbImage169 = new System.Windows.Forms.TextBox();
- this.btnBrowseImage43 = new System.Windows.Forms.Button();
- this.btnBrowseImage169 = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
- this.btnOK = new System.Windows.Forms.Button();
- this.btnCancel = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // lbAppFolder
- //
- this.lbAppFolder.AutoSize = true;
- this.lbAppFolder.Location = new System.Drawing.Point(12, 17);
- this.lbAppFolder.Name = "lbAppFolder";
- this.lbAppFolder.Size = new System.Drawing.Size(107, 13);
- this.lbAppFolder.TabIndex = 0;
- this.lbAppFolder.Text = "Application Directory:";
- //
- // tbAppFolder
- //
- this.tbAppFolder.Location = new System.Drawing.Point(125, 14);
- this.tbAppFolder.Name = "tbAppFolder";
- this.tbAppFolder.Size = new System.Drawing.Size(221, 20);
- this.tbAppFolder.TabIndex = 1;
- //
- // cbImage43
- //
- this.cbImage43.AutoSize = true;
- this.cbImage43.Location = new System.Drawing.Point(15, 111);
- this.cbImage43.Name = "cbImage43";
- this.cbImage43.Size = new System.Drawing.Size(73, 17);
- this.cbImage43.TabIndex = 3;
- this.cbImage43.Text = "Image 4:3";
- this.cbImage43.UseVisualStyleBackColor = true;
- this.cbImage43.CheckedChanged += new System.EventHandler(this.cbImage43_CheckedChanged);
- //
- // cbImage169
- //
- this.cbImage169.AutoSize = true;
- this.cbImage169.Location = new System.Drawing.Point(15, 141);
- this.cbImage169.Name = "cbImage169";
- this.cbImage169.Size = new System.Drawing.Size(79, 17);
- this.cbImage169.TabIndex = 3;
- this.cbImage169.Text = "Image 16:9";
- this.cbImage169.UseVisualStyleBackColor = true;
- this.cbImage169.CheckedChanged += new System.EventHandler(this.cbImage169_CheckedChanged);
- //
- // tbImage43
- //
- this.tbImage43.Enabled = false;
- this.tbImage43.Location = new System.Drawing.Point(94, 109);
- this.tbImage43.Name = "tbImage43";
- this.tbImage43.Size = new System.Drawing.Size(171, 20);
- this.tbImage43.TabIndex = 4;
- //
- // tbImage169
- //
- this.tbImage169.Enabled = false;
- this.tbImage169.Location = new System.Drawing.Point(94, 138);
- this.tbImage169.Name = "tbImage169";
- this.tbImage169.Size = new System.Drawing.Size(171, 20);
- this.tbImage169.TabIndex = 5;
- //
- // btnBrowseImage43
- //
- this.btnBrowseImage43.Enabled = false;
- this.btnBrowseImage43.Location = new System.Drawing.Point(271, 109);
- this.btnBrowseImage43.Name = "btnBrowseImage43";
- this.btnBrowseImage43.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseImage43.TabIndex = 6;
- this.btnBrowseImage43.Text = "Browse...";
- this.btnBrowseImage43.UseVisualStyleBackColor = true;
- this.btnBrowseImage43.Click += new System.EventHandler(this.btnBrowse_Click);
- //
- // btnBrowseImage169
- //
- this.btnBrowseImage169.Enabled = false;
- this.btnBrowseImage169.Location = new System.Drawing.Point(271, 138);
- this.btnBrowseImage169.Name = "btnBrowseImage169";
- this.btnBrowseImage169.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseImage169.TabIndex = 6;
- this.btnBrowseImage169.Text = "Browse...";
- this.btnBrowseImage169.UseVisualStyleBackColor = true;
- this.btnBrowseImage169.Click += new System.EventHandler(this.btnBrowse_Click);
- //
- // label1
- //
- this.label1.Location = new System.Drawing.Point(0, 55);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(358, 40);
- this.label1.TabIndex = 7;
- this.label1.Text = "The images must be 640 x 480, else they will be resized!\r\nThe 16:9 image should b" +
- "e made in 832 x 480 and resized\r\nto 640 x 480, it will be streched on the Wii!";
- this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // btnOK
- //
- this.btnOK.Location = new System.Drawing.Point(15, 179);
- this.btnOK.Name = "btnOK";
- this.btnOK.Size = new System.Drawing.Size(160, 23);
- this.btnOK.TabIndex = 8;
- this.btnOK.Text = "OK";
- this.btnOK.UseVisualStyleBackColor = true;
- this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
- //
- // btnCancel
- //
- this.btnCancel.Location = new System.Drawing.Point(186, 179);
- this.btnCancel.Name = "btnCancel";
- this.btnCancel.Size = new System.Drawing.Size(160, 23);
- this.btnCancel.TabIndex = 8;
- this.btnCancel.Text = "Cancel";
- this.btnCancel.UseVisualStyleBackColor = true;
- this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
- //
- // CustomizeMii_ComplexForwarder
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(358, 220);
- this.Controls.Add(this.btnCancel);
- this.Controls.Add(this.btnOK);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.btnBrowseImage169);
- this.Controls.Add(this.btnBrowseImage43);
- this.Controls.Add(this.tbImage169);
- this.Controls.Add(this.tbImage43);
- this.Controls.Add(this.cbImage169);
- this.Controls.Add(this.cbImage43);
- this.Controls.Add(this.tbAppFolder);
- this.Controls.Add(this.lbAppFolder);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Name = "CustomizeMii_ComplexForwarder";
- this.Text = "CustomizeMii_ComplexForwarder";
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Label lbAppFolder;
- private System.Windows.Forms.Label label1;
- public System.Windows.Forms.TextBox tbAppFolder;
- public System.Windows.Forms.CheckBox cbImage43;
- public System.Windows.Forms.CheckBox cbImage169;
- public System.Windows.Forms.TextBox tbImage43;
- public System.Windows.Forms.TextBox tbImage169;
- public System.Windows.Forms.Button btnBrowseImage43;
- public System.Windows.Forms.Button btnBrowseImage169;
- private System.Windows.Forms.Button btnOK;
- private System.Windows.Forms.Button btnCancel;
- }
-}
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_ComplexForwarder.cs b/CustomizeMii/CustomizeMii_ComplexForwarder.cs
deleted file mode 100644
index 5d1f208..0000000
--- a/CustomizeMii/CustomizeMii_ComplexForwarder.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.IO;
-
-namespace CustomizeMii
-{
- public partial class CustomizeMii_ComplexForwarder : Form
- {
- public CustomizeMii_ComplexForwarder()
- {
- InitializeComponent();
- this.CenterToParent();
- }
-
- private void cbImage43_CheckedChanged(object sender, EventArgs e)
- {
- tbImage43.Enabled = cbImage43.Checked;
- btnBrowseImage43.Enabled = cbImage43.Checked;
- }
-
- private void cbImage169_CheckedChanged(object sender, EventArgs e)
- {
- tbImage169.Enabled = cbImage169.Checked;
- btnBrowseImage169.Enabled = cbImage169.Checked;
- }
-
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- this.Close();
- }
-
- private void btnOK_Click(object sender, EventArgs e)
- {
- if (string.IsNullOrEmpty(tbAppFolder.Text))
- {
- tbAppFolder.Focus();
- }
- else
- {
- if (!File.Exists(tbImage43.Text)) tbImage43.Text = string.Empty;
- if (!File.Exists(tbImage169.Text)) tbImage169.Text = string.Empty;
-
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
- }
-
- private void btnBrowse_Click(object sender, EventArgs e)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|All|*.png;*.jpg;*.gif;*.bmp";
- ofd.FilterIndex = 5;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (sender == btnBrowseImage43) tbImage43.Text = ofd.FileName;
- else tbImage169.Text = ofd.FileName;
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_ComplexForwarder.resx b/CustomizeMii/CustomizeMii_ComplexForwarder.resx
deleted file mode 100644
index ff31a6d..0000000
--- a/CustomizeMii/CustomizeMii_ComplexForwarder.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_Forwarders.cs b/CustomizeMii/CustomizeMii_Forwarders.cs
deleted file mode 100644
index bfc2e7c..0000000
--- a/CustomizeMii/CustomizeMii_Forwarders.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using ForwardMii;
-
-namespace CustomizeMii
-{
- namespace Forwarder
- {
- //Let's use this kind of wrapper, so CustomizeMii can still run, if the ForwardMii.dll is missing...
-
- internal class Complex
- {
- private string thisAppFolder;
- private bool elfFirst = false;
- private bool usbFirst = false;
- private string image43;
- private string image169;
- public string AppFolder { get { return thisAppFolder; } set { thisAppFolder = value; } }
- public bool ElfFirst { get { return elfFirst; } set { elfFirst = value; } }
- public bool UsbFirst { get { return usbFirst; } set { usbFirst = value; } }
- public string Image43 { get { return image43; } set { image43 = value; } }
- public string Image169 { get { return image169; } set { image169 = value; } }
-
- public Complex()
- {
-
- }
-
- public void Save(string Destination)
- {
- GXForwarder Forwarder = new GXForwarder(thisAppFolder, usbFirst, elfFirst, image43, image169);
- Forwarder.Save(Destination, true);
- }
-
- public void Clear()
- {
- thisAppFolder = string.Empty;
- elfFirst = false;
- usbFirst = false;
- image43 = string.Empty;
- image169 = string.Empty;
- }
- }
-
- internal class Simple
- {
- private string thisAppFolder;
- private bool toElf = false;
- public string AppFolder { get { return thisAppFolder; } set { thisAppFolder = value; } }
- public bool ForwardToElf { get { return toElf; } set { toElf = value; } }
-
- public Simple()
- {
-
- }
-
- public void Save(string Destination)
- {
- SDSDHC_Forwarder Forwarder = new SDSDHC_Forwarder(thisAppFolder, toElf);
- Forwarder.Save(Destination, true);
- }
-
- public void Clear()
- {
- thisAppFolder = string.Empty;
- toElf = false;
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_InputBox.Designer.cs b/CustomizeMii/CustomizeMii_InputBox.Designer.cs
deleted file mode 100644
index a3ef099..0000000
--- a/CustomizeMii/CustomizeMii_InputBox.Designer.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_InputBox
- {
- ///
- /// Erforderliche Designervariable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Vom Windows Form-Designer generierter Code
-
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
- private void InitializeComponent()
- {
- this.tbInput = new System.Windows.Forms.TextBox();
- this.lbInfo = new System.Windows.Forms.Label();
- this.btnOK = new System.Windows.Forms.Button();
- this.btnExit = new System.Windows.Forms.Button();
- this.cbElf = new System.Windows.Forms.CheckBox();
- this.SuspendLayout();
- //
- // tbInput
- //
- this.tbInput.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
- this.tbInput.Location = new System.Drawing.Point(7, 34);
- this.tbInput.MaxLength = 3;
- this.tbInput.Name = "tbInput";
- this.tbInput.Size = new System.Drawing.Size(222, 20);
- this.tbInput.TabIndex = 0;
- //
- // lbInfo
- //
- this.lbInfo.Anchor = System.Windows.Forms.AnchorStyles.Top;
- this.lbInfo.Location = new System.Drawing.Point(4, 9);
- this.lbInfo.Name = "lbInfo";
- this.lbInfo.Size = new System.Drawing.Size(225, 32);
- this.lbInfo.TabIndex = 1;
- this.lbInfo.Text = "Please enter \"45e\" to create the Common-Key";
- this.lbInfo.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // btnOK
- //
- this.btnOK.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
- this.btnOK.Location = new System.Drawing.Point(7, 62);
- this.btnOK.Name = "btnOK";
- this.btnOK.Size = new System.Drawing.Size(108, 23);
- this.btnOK.TabIndex = 2;
- this.btnOK.Text = "OK";
- this.btnOK.UseVisualStyleBackColor = true;
- this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
- //
- // btnExit
- //
- this.btnExit.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
- this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.btnExit.Location = new System.Drawing.Point(121, 62);
- this.btnExit.Name = "btnExit";
- this.btnExit.Size = new System.Drawing.Size(108, 23);
- this.btnExit.TabIndex = 3;
- this.btnExit.Text = "Exit";
- this.btnExit.UseVisualStyleBackColor = true;
- this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
- //
- // cbElf
- //
- this.cbElf.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
- this.cbElf.AutoSize = true;
- this.cbElf.Location = new System.Drawing.Point(61, 16);
- this.cbElf.Name = "cbElf";
- this.cbElf.Size = new System.Drawing.Size(114, 17);
- this.cbElf.TabIndex = 4;
- this.cbElf.Text = "Forward to boot.elf";
- this.cbElf.UseVisualStyleBackColor = true;
- this.cbElf.Visible = false;
- //
- // CustomizeMii_InputBox
- //
- this.AcceptButton = this.btnOK;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.btnExit;
- this.ClientSize = new System.Drawing.Size(238, 92);
- this.Controls.Add(this.cbElf);
- this.Controls.Add(this.btnExit);
- this.Controls.Add(this.btnOK);
- this.Controls.Add(this.tbInput);
- this.Controls.Add(this.lbInfo);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Name = "CustomizeMii_InputBox";
- this.ShowInTaskbar = false;
- this.Text = "InputBox";
- this.Load += new System.EventHandler(this.CustomizeMii_InputBox_Load);
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Button btnOK;
- public System.Windows.Forms.Label lbInfo;
- public System.Windows.Forms.TextBox tbInput;
- public System.Windows.Forms.Button btnExit;
- public System.Windows.Forms.CheckBox cbElf;
- }
-}
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_InputBox.cs b/CustomizeMii/CustomizeMii_InputBox.cs
deleted file mode 100644
index edf7c7d..0000000
--- a/CustomizeMii/CustomizeMii_InputBox.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-namespace CustomizeMii
-{
- public partial class CustomizeMii_InputBox : Form
- {
- public bool CommonKeyMode = true;
- public string Input
- {
- get { return tbInput.Text; }
- }
-
- public CustomizeMii_InputBox()
- {
- InitializeComponent();
- }
-
- public CustomizeMii_InputBox(bool CommonKeyMode)
- {
- InitializeComponent();
- this.CommonKeyMode = CommonKeyMode;
- }
-
- private void CustomizeMii_InputBox_Load(object sender, EventArgs e)
- {
- this.CenterToScreen();
- }
-
- private void btnExit_Click(object sender, EventArgs e)
- {
- if (CommonKeyMode == true)
- {
- Application.Exit();
- }
- else this.Close();
- }
-
- private void btnOK_Click(object sender, EventArgs e)
- {
- if (this.CommonKeyMode == true)
- {
- if (tbInput.Text == "45e")
- {
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
- else
- {
- tbInput.Focus();
- tbInput.SelectAll();
- }
- }
- else
- {
- if (tbInput.Text.Length > 2)
- {
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
- else
- {
- tbInput.Focus();
- tbInput.SelectAll();
- }
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_InputBox.resx b/CustomizeMii/CustomizeMii_InputBox.resx
deleted file mode 100644
index ff31a6d..0000000
--- a/CustomizeMii/CustomizeMii_InputBox.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_Main.Designer.cs b/CustomizeMii/CustomizeMii_Main.Designer.cs
deleted file mode 100644
index b92307f..0000000
--- a/CustomizeMii/CustomizeMii_Main.Designer.cs
+++ /dev/null
@@ -1,1612 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_Main
- {
- ///
- /// Erforderliche Designervariable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Vom Windows Form-Designer generierter Code
-
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CustomizeMii_Main));
- this.btnCreateWad = new System.Windows.Forms.Button();
- this.tabControl = new System.Windows.Forms.TabControl();
- this.tabSource = new System.Windows.Forms.TabPage();
- this.tbReplace = new System.Windows.Forms.TextBox();
- this.btnBrowseReplace = new System.Windows.Forms.Button();
- this.btnClearReplace = new System.Windows.Forms.Button();
- this.cmbReplace = new System.Windows.Forms.ComboBox();
- this.btnSaveBaseWad = new System.Windows.Forms.Button();
- this.btnPreviewBaseWad = new System.Windows.Forms.Button();
- this.btnLoadBaseWad = new System.Windows.Forms.Button();
- this.lbxBaseWads = new System.Windows.Forms.ListBox();
- this.btnBrowseSource = new System.Windows.Forms.Button();
- this.tbSourceWad = new System.Windows.Forms.TextBox();
- this.lbSource = new System.Windows.Forms.Label();
- this.tabTitle = new System.Windows.Forms.TabPage();
- this.tbItalian = new System.Windows.Forms.TextBox();
- this.tbFrench = new System.Windows.Forms.TextBox();
- this.tbJapanese = new System.Windows.Forms.TextBox();
- this.tbDutch = new System.Windows.Forms.TextBox();
- this.tbSpanish = new System.Windows.Forms.TextBox();
- this.tbGerman = new System.Windows.Forms.TextBox();
- this.tbEnglish = new System.Windows.Forms.TextBox();
- this.lbDutch = new System.Windows.Forms.Label();
- this.lbItalian = new System.Windows.Forms.Label();
- this.lbSpanish = new System.Windows.Forms.Label();
- this.lbFrench = new System.Windows.Forms.Label();
- this.lbGerman = new System.Windows.Forms.Label();
- this.lbJapanese = new System.Windows.Forms.Label();
- this.lbEnglish = new System.Windows.Forms.Label();
- this.lbSpecificLanguageTitles = new System.Windows.Forms.Label();
- this.tbAllLanguages = new System.Windows.Forms.TextBox();
- this.lbAllLanguages = new System.Windows.Forms.Label();
- this.tabOptions = new System.Windows.Forms.TabPage();
- this.btnOptionsExtract = new System.Windows.Forms.Button();
- this.btnForwarder = new System.Windows.Forms.Button();
- this.cbFailureChecks = new System.Windows.Forms.CheckBox();
- this.cbLz77 = new System.Windows.Forms.CheckBox();
- this.lbOptionsOptional = new System.Windows.Forms.Label();
- this.btnBrowseSound = new System.Windows.Forms.Button();
- this.tbSound = new System.Windows.Forms.TextBox();
- this.cmbNandLoader = new System.Windows.Forms.ComboBox();
- this.btnBrowseDol = new System.Windows.Forms.Button();
- this.tbDol = new System.Windows.Forms.TextBox();
- this.tbTitleID = new System.Windows.Forms.TextBox();
- this.lbNewSound = new System.Windows.Forms.Label();
- this.lbNandLoader = new System.Windows.Forms.Label();
- this.lbNewDol = new System.Windows.Forms.Label();
- this.lbTitleID = new System.Windows.Forms.Label();
- this.tabBanner = new System.Windows.Forms.TabPage();
- this.cbBannerMakeTransparent = new System.Windows.Forms.CheckBox();
- this.cmbFormatBanner = new System.Windows.Forms.ComboBox();
- this.lbFormatBanner = new System.Windows.Forms.Label();
- this.btnPreviewBanner = new System.Windows.Forms.Button();
- this.btnExtractBanner = new System.Windows.Forms.Button();
- this.btnDeleteBanner = new System.Windows.Forms.Button();
- this.btnAddBanner = new System.Windows.Forms.Button();
- this.btnReplaceBanner = new System.Windows.Forms.Button();
- this.lbxBannerTpls = new System.Windows.Forms.ListBox();
- this.tabIcon = new System.Windows.Forms.TabPage();
- this.cbIconMakeTransparent = new System.Windows.Forms.CheckBox();
- this.cmbFormatIcon = new System.Windows.Forms.ComboBox();
- this.lbFormatIcon = new System.Windows.Forms.Label();
- this.btnPreviewIcon = new System.Windows.Forms.Button();
- this.btnExtractIcon = new System.Windows.Forms.Button();
- this.btnAddIcon = new System.Windows.Forms.Button();
- this.btnDeleteIcon = new System.Windows.Forms.Button();
- this.btnReplaceIcon = new System.Windows.Forms.Button();
- this.lbxIconTpls = new System.Windows.Forms.ListBox();
- this.tabBrlyt = new System.Windows.Forms.TabPage();
- this.btnBrlytListTpls = new System.Windows.Forms.Button();
- this.lbBrlytWarning = new System.Windows.Forms.Label();
- this.lbBrlytActions = new System.Windows.Forms.Label();
- this.btnBrlytExtract = new System.Windows.Forms.Button();
- this.btnBrlytReplace = new System.Windows.Forms.Button();
- this.lbBrlytIcon = new System.Windows.Forms.Label();
- this.lbBrlytBanner = new System.Windows.Forms.Label();
- this.lbxBrlytIcon = new System.Windows.Forms.ListBox();
- this.lbxBrlytBanner = new System.Windows.Forms.ListBox();
- this.tabBrlan = new System.Windows.Forms.TabPage();
- this.lbBrlanWarning = new System.Windows.Forms.Label();
- this.lbBrlanActions = new System.Windows.Forms.Label();
- this.btnBrlanExtract = new System.Windows.Forms.Button();
- this.btnBrlanDelete = new System.Windows.Forms.Button();
- this.btnBrlanReplace = new System.Windows.Forms.Button();
- this.lbBrlanIcon = new System.Windows.Forms.Label();
- this.lbBrlanBanner = new System.Windows.Forms.Label();
- this.btnBrlanAdd = new System.Windows.Forms.Button();
- this.lbxBrlanIcon = new System.Windows.Forms.ListBox();
- this.lbxBrlanBanner = new System.Windows.Forms.ListBox();
- this.tabInstructions = new System.Windows.Forms.TabPage();
- this.rtbInstructions = new System.Windows.Forms.RichTextBox();
- this.tabCredits = new System.Windows.Forms.TabPage();
- this.llbUpdateAvailabe = new System.Windows.Forms.LinkLabel();
- this.llbSite = new System.Windows.Forms.LinkLabel();
- this.lbCreditThanks = new System.Windows.Forms.Label();
- this.lbCreditVersion = new System.Windows.Forms.Label();
- this.lbCreditInfo = new System.Windows.Forms.Label();
- this.ssMain = new System.Windows.Forms.StatusStrip();
- this.lbStatus = new System.Windows.Forms.ToolStripStatusLabel();
- this.lbStatusText = new System.Windows.Forms.ToolStripStatusLabel();
- this.pbProgress = new System.Windows.Forms.ToolStripProgressBar();
- this.cmForwarder = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.cmSimpleForwarder = new System.Windows.Forms.ToolStripMenuItem();
- this.cmComplexForwarder = new System.Windows.Forms.ToolStripMenuItem();
- this.cmOptionsExtract = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.cmExtractWad = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractDol = new System.Windows.Forms.ToolStripMenuItem();
- this.tsExtractSound = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractSoundAsBin = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractSoundAsAudio = new System.Windows.Forms.ToolStripMenuItem();
- this.tsExtractImages = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractBannerImages = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractIconImages = new System.Windows.Forms.ToolStripMenuItem();
- this.cmExtractBothImages = new System.Windows.Forms.ToolStripMenuItem();
- this.cmSound = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.cmLoadAudioFile = new System.Windows.Forms.ToolStripMenuItem();
- this.cmConvertToBns = new System.Windows.Forms.ToolStripMenuItem();
- this.cmDol = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.cmLoadDol = new System.Windows.Forms.ToolStripMenuItem();
- this.cmDolFromSource = new System.Windows.Forms.ToolStripMenuItem();
- this.panCredits = new System.Windows.Forms.Panel();
- this.tabControl.SuspendLayout();
- this.tabSource.SuspendLayout();
- this.tabTitle.SuspendLayout();
- this.tabOptions.SuspendLayout();
- this.tabBanner.SuspendLayout();
- this.tabIcon.SuspendLayout();
- this.tabBrlyt.SuspendLayout();
- this.tabBrlan.SuspendLayout();
- this.tabInstructions.SuspendLayout();
- this.tabCredits.SuspendLayout();
- this.ssMain.SuspendLayout();
- this.cmForwarder.SuspendLayout();
- this.cmOptionsExtract.SuspendLayout();
- this.cmSound.SuspendLayout();
- this.cmDol.SuspendLayout();
- this.panCredits.SuspendLayout();
- this.SuspendLayout();
- //
- // btnCreateWad
- //
- this.btnCreateWad.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.btnCreateWad.Location = new System.Drawing.Point(0, 235);
- this.btnCreateWad.Name = "btnCreateWad";
- this.btnCreateWad.Size = new System.Drawing.Size(451, 33);
- this.btnCreateWad.TabIndex = 0;
- this.btnCreateWad.Text = "Create WAD";
- this.btnCreateWad.UseVisualStyleBackColor = true;
- this.btnCreateWad.Click += new System.EventHandler(this.btnCreateWad_Click);
- //
- // tabControl
- //
- this.tabControl.Controls.Add(this.tabSource);
- this.tabControl.Controls.Add(this.tabTitle);
- this.tabControl.Controls.Add(this.tabOptions);
- this.tabControl.Controls.Add(this.tabBanner);
- this.tabControl.Controls.Add(this.tabIcon);
- this.tabControl.Controls.Add(this.tabBrlyt);
- this.tabControl.Controls.Add(this.tabBrlan);
- this.tabControl.Controls.Add(this.tabInstructions);
- this.tabControl.Controls.Add(this.tabCredits);
- this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tabControl.Location = new System.Drawing.Point(0, 0);
- this.tabControl.Name = "tabControl";
- this.tabControl.SelectedIndex = 0;
- this.tabControl.Size = new System.Drawing.Size(451, 235);
- this.tabControl.TabIndex = 1;
- this.tabControl.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabControl_Selecting);
- //
- // tabSource
- //
- this.tabSource.Controls.Add(this.tbReplace);
- this.tabSource.Controls.Add(this.btnBrowseReplace);
- this.tabSource.Controls.Add(this.btnClearReplace);
- this.tabSource.Controls.Add(this.cmbReplace);
- this.tabSource.Controls.Add(this.btnSaveBaseWad);
- this.tabSource.Controls.Add(this.btnPreviewBaseWad);
- this.tabSource.Controls.Add(this.btnLoadBaseWad);
- this.tabSource.Controls.Add(this.lbxBaseWads);
- this.tabSource.Controls.Add(this.btnBrowseSource);
- this.tabSource.Controls.Add(this.tbSourceWad);
- this.tabSource.Controls.Add(this.lbSource);
- this.tabSource.Location = new System.Drawing.Point(4, 22);
- this.tabSource.Name = "tabSource";
- this.tabSource.Padding = new System.Windows.Forms.Padding(3);
- this.tabSource.Size = new System.Drawing.Size(443, 209);
- this.tabSource.TabIndex = 0;
- this.tabSource.Text = "Source";
- this.tabSource.UseVisualStyleBackColor = true;
- //
- // tbReplace
- //
- this.tbReplace.Location = new System.Drawing.Point(100, 173);
- this.tbReplace.Name = "tbReplace";
- this.tbReplace.ReadOnly = true;
- this.tbReplace.Size = new System.Drawing.Size(173, 20);
- this.tbReplace.TabIndex = 10;
- this.tbReplace.Tag = "Disabled";
- //
- // btnBrowseReplace
- //
- this.btnBrowseReplace.Location = new System.Drawing.Point(279, 172);
- this.btnBrowseReplace.Name = "btnBrowseReplace";
- this.btnBrowseReplace.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseReplace.TabIndex = 9;
- this.btnBrowseReplace.Text = "Browse...";
- this.btnBrowseReplace.UseVisualStyleBackColor = true;
- this.btnBrowseReplace.Click += new System.EventHandler(this.btnBrowseReplace_Click);
- //
- // btnClearReplace
- //
- this.btnClearReplace.Location = new System.Drawing.Point(360, 172);
- this.btnClearReplace.Name = "btnClearReplace";
- this.btnClearReplace.Size = new System.Drawing.Size(75, 23);
- this.btnClearReplace.TabIndex = 8;
- this.btnClearReplace.Text = "Clear";
- this.btnClearReplace.UseVisualStyleBackColor = true;
- this.btnClearReplace.Click += new System.EventHandler(this.btnClearReplace_Click);
- //
- // cmbReplace
- //
- this.cmbReplace.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbReplace.FormattingEnabled = true;
- this.cmbReplace.Items.AddRange(new object[] {
- "Banner",
- "Icon",
- "Sound"});
- this.cmbReplace.Location = new System.Drawing.Point(11, 172);
- this.cmbReplace.Name = "cmbReplace";
- this.cmbReplace.Size = new System.Drawing.Size(83, 21);
- this.cmbReplace.TabIndex = 7;
- this.cmbReplace.SelectedIndexChanged += new System.EventHandler(this.cmbReplace_SelectedIndexChanged);
- //
- // btnSaveBaseWad
- //
- this.btnSaveBaseWad.Location = new System.Drawing.Point(360, 127);
- this.btnSaveBaseWad.Name = "btnSaveBaseWad";
- this.btnSaveBaseWad.Size = new System.Drawing.Size(75, 23);
- this.btnSaveBaseWad.TabIndex = 6;
- this.btnSaveBaseWad.Text = "Save";
- this.btnSaveBaseWad.UseVisualStyleBackColor = true;
- this.btnSaveBaseWad.Click += new System.EventHandler(this.btnSaveBaseWad_Click);
- //
- // btnPreviewBaseWad
- //
- this.btnPreviewBaseWad.Location = new System.Drawing.Point(360, 93);
- this.btnPreviewBaseWad.Name = "btnPreviewBaseWad";
- this.btnPreviewBaseWad.Size = new System.Drawing.Size(75, 23);
- this.btnPreviewBaseWad.TabIndex = 5;
- this.btnPreviewBaseWad.Text = "Preview";
- this.btnPreviewBaseWad.UseVisualStyleBackColor = true;
- this.btnPreviewBaseWad.Click += new System.EventHandler(this.btnPreviewBaseWad_Click);
- //
- // btnLoadBaseWad
- //
- this.btnLoadBaseWad.Location = new System.Drawing.Point(360, 59);
- this.btnLoadBaseWad.Name = "btnLoadBaseWad";
- this.btnLoadBaseWad.Size = new System.Drawing.Size(75, 23);
- this.btnLoadBaseWad.TabIndex = 4;
- this.btnLoadBaseWad.Text = "Load";
- this.btnLoadBaseWad.UseVisualStyleBackColor = true;
- this.btnLoadBaseWad.Click += new System.EventHandler(this.btnLoadBaseWad_Click);
- //
- // lbxBaseWads
- //
- this.lbxBaseWads.FormattingEnabled = true;
- this.lbxBaseWads.Items.AddRange(new object[] {
- "Static Base",
- "Genesis Plus GX",
- "MPlayer CE (No Wii)",
- "MPlayer CE (With Wii)",
- "Snes9xGX",
- "FCE Ultra (Wilsoff)",
- "FCE Ultra (Leathl)",
- "Wii64",
- "WiiSX Full",
- "WiiSX Retro",
- "WADder Base 1",
- "WADder Base 2",
- "WADder Base 3",
- "UniiLoader",
- "Backup Channel"});
- this.lbxBaseWads.Location = new System.Drawing.Point(11, 51);
- this.lbxBaseWads.Name = "lbxBaseWads";
- this.lbxBaseWads.Size = new System.Drawing.Size(343, 108);
- this.lbxBaseWads.TabIndex = 3;
- //
- // btnBrowseSource
- //
- this.btnBrowseSource.Location = new System.Drawing.Point(360, 13);
- this.btnBrowseSource.Name = "btnBrowseSource";
- this.btnBrowseSource.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseSource.TabIndex = 2;
- this.btnBrowseSource.Text = "Browse...";
- this.btnBrowseSource.UseVisualStyleBackColor = true;
- this.btnBrowseSource.Click += new System.EventHandler(this.btnBrowseSource_Click);
- //
- // tbSourceWad
- //
- this.tbSourceWad.Location = new System.Drawing.Point(84, 15);
- this.tbSourceWad.Name = "tbSourceWad";
- this.tbSourceWad.ReadOnly = true;
- this.tbSourceWad.Size = new System.Drawing.Size(270, 20);
- this.tbSourceWad.TabIndex = 1;
- this.tbSourceWad.Tag = "Disabled";
- //
- // lbSource
- //
- this.lbSource.AutoSize = true;
- this.lbSource.Location = new System.Drawing.Point(8, 18);
- this.lbSource.Name = "lbSource";
- this.lbSource.Size = new System.Drawing.Size(70, 13);
- this.lbSource.TabIndex = 0;
- this.lbSource.Text = "Source Wad:";
- //
- // tabTitle
- //
- this.tabTitle.Controls.Add(this.tbItalian);
- this.tabTitle.Controls.Add(this.tbFrench);
- this.tabTitle.Controls.Add(this.tbJapanese);
- this.tabTitle.Controls.Add(this.tbDutch);
- this.tabTitle.Controls.Add(this.tbSpanish);
- this.tabTitle.Controls.Add(this.tbGerman);
- this.tabTitle.Controls.Add(this.tbEnglish);
- this.tabTitle.Controls.Add(this.lbDutch);
- this.tabTitle.Controls.Add(this.lbItalian);
- this.tabTitle.Controls.Add(this.lbSpanish);
- this.tabTitle.Controls.Add(this.lbFrench);
- this.tabTitle.Controls.Add(this.lbGerman);
- this.tabTitle.Controls.Add(this.lbJapanese);
- this.tabTitle.Controls.Add(this.lbEnglish);
- this.tabTitle.Controls.Add(this.lbSpecificLanguageTitles);
- this.tabTitle.Controls.Add(this.tbAllLanguages);
- this.tabTitle.Controls.Add(this.lbAllLanguages);
- this.tabTitle.Location = new System.Drawing.Point(4, 22);
- this.tabTitle.Name = "tabTitle";
- this.tabTitle.Padding = new System.Windows.Forms.Padding(3);
- this.tabTitle.Size = new System.Drawing.Size(443, 209);
- this.tabTitle.TabIndex = 1;
- this.tabTitle.Text = "Title";
- this.tabTitle.UseVisualStyleBackColor = true;
- //
- // tbItalian
- //
- this.tbItalian.Location = new System.Drawing.Point(301, 143);
- this.tbItalian.MaxLength = 20;
- this.tbItalian.Name = "tbItalian";
- this.tbItalian.Size = new System.Drawing.Size(124, 20);
- this.tbItalian.TabIndex = 16;
- //
- // tbFrench
- //
- this.tbFrench.Location = new System.Drawing.Point(301, 115);
- this.tbFrench.MaxLength = 20;
- this.tbFrench.Name = "tbFrench";
- this.tbFrench.Size = new System.Drawing.Size(124, 20);
- this.tbFrench.TabIndex = 15;
- //
- // tbJapanese
- //
- this.tbJapanese.Location = new System.Drawing.Point(301, 87);
- this.tbJapanese.MaxLength = 20;
- this.tbJapanese.Name = "tbJapanese";
- this.tbJapanese.Size = new System.Drawing.Size(124, 20);
- this.tbJapanese.TabIndex = 14;
- //
- // tbDutch
- //
- this.tbDutch.Location = new System.Drawing.Point(70, 171);
- this.tbDutch.MaxLength = 20;
- this.tbDutch.Name = "tbDutch";
- this.tbDutch.Size = new System.Drawing.Size(124, 20);
- this.tbDutch.TabIndex = 13;
- //
- // tbSpanish
- //
- this.tbSpanish.Location = new System.Drawing.Point(70, 143);
- this.tbSpanish.MaxLength = 20;
- this.tbSpanish.Name = "tbSpanish";
- this.tbSpanish.Size = new System.Drawing.Size(124, 20);
- this.tbSpanish.TabIndex = 12;
- //
- // tbGerman
- //
- this.tbGerman.Location = new System.Drawing.Point(70, 115);
- this.tbGerman.MaxLength = 20;
- this.tbGerman.Name = "tbGerman";
- this.tbGerman.Size = new System.Drawing.Size(124, 20);
- this.tbGerman.TabIndex = 11;
- //
- // tbEnglish
- //
- this.tbEnglish.Location = new System.Drawing.Point(70, 87);
- this.tbEnglish.MaxLength = 20;
- this.tbEnglish.Name = "tbEnglish";
- this.tbEnglish.Size = new System.Drawing.Size(124, 20);
- this.tbEnglish.TabIndex = 10;
- //
- // lbDutch
- //
- this.lbDutch.AutoSize = true;
- this.lbDutch.Location = new System.Drawing.Point(8, 174);
- this.lbDutch.Name = "lbDutch";
- this.lbDutch.Size = new System.Drawing.Size(39, 13);
- this.lbDutch.TabIndex = 9;
- this.lbDutch.Text = "Dutch:";
- //
- // lbItalian
- //
- this.lbItalian.AutoSize = true;
- this.lbItalian.Location = new System.Drawing.Point(221, 146);
- this.lbItalian.Name = "lbItalian";
- this.lbItalian.Size = new System.Drawing.Size(38, 13);
- this.lbItalian.TabIndex = 8;
- this.lbItalian.Text = "Italian:";
- //
- // lbSpanish
- //
- this.lbSpanish.AutoSize = true;
- this.lbSpanish.Location = new System.Drawing.Point(8, 146);
- this.lbSpanish.Name = "lbSpanish";
- this.lbSpanish.Size = new System.Drawing.Size(48, 13);
- this.lbSpanish.TabIndex = 7;
- this.lbSpanish.Text = "Spanish:";
- //
- // lbFrench
- //
- this.lbFrench.AutoSize = true;
- this.lbFrench.Location = new System.Drawing.Point(221, 118);
- this.lbFrench.Name = "lbFrench";
- this.lbFrench.Size = new System.Drawing.Size(43, 13);
- this.lbFrench.TabIndex = 6;
- this.lbFrench.Text = "French:";
- //
- // lbGerman
- //
- this.lbGerman.AutoSize = true;
- this.lbGerman.Location = new System.Drawing.Point(8, 118);
- this.lbGerman.Name = "lbGerman";
- this.lbGerman.Size = new System.Drawing.Size(47, 13);
- this.lbGerman.TabIndex = 5;
- this.lbGerman.Text = "German:";
- //
- // lbJapanese
- //
- this.lbJapanese.AutoSize = true;
- this.lbJapanese.Location = new System.Drawing.Point(221, 90);
- this.lbJapanese.Name = "lbJapanese";
- this.lbJapanese.Size = new System.Drawing.Size(56, 13);
- this.lbJapanese.TabIndex = 4;
- this.lbJapanese.Text = "Japanese:";
- //
- // lbEnglish
- //
- this.lbEnglish.AutoSize = true;
- this.lbEnglish.Location = new System.Drawing.Point(8, 90);
- this.lbEnglish.Name = "lbEnglish";
- this.lbEnglish.Size = new System.Drawing.Size(44, 13);
- this.lbEnglish.TabIndex = 3;
- this.lbEnglish.Text = "English:";
- //
- // lbSpecificLanguageTitles
- //
- this.lbSpecificLanguageTitles.AutoSize = true;
- this.lbSpecificLanguageTitles.Location = new System.Drawing.Point(8, 63);
- this.lbSpecificLanguageTitles.Name = "lbSpecificLanguageTitles";
- this.lbSpecificLanguageTitles.Size = new System.Drawing.Size(175, 13);
- this.lbSpecificLanguageTitles.TabIndex = 2;
- this.lbSpecificLanguageTitles.Text = "Specific Language Titles (Optional):";
- //
- // tbAllLanguages
- //
- this.tbAllLanguages.Location = new System.Drawing.Point(114, 19);
- this.tbAllLanguages.MaxLength = 20;
- this.tbAllLanguages.Name = "tbAllLanguages";
- this.tbAllLanguages.Size = new System.Drawing.Size(311, 20);
- this.tbAllLanguages.TabIndex = 1;
- //
- // lbAllLanguages
- //
- this.lbAllLanguages.AutoSize = true;
- this.lbAllLanguages.Location = new System.Drawing.Point(8, 22);
- this.lbAllLanguages.Name = "lbAllLanguages";
- this.lbAllLanguages.Size = new System.Drawing.Size(77, 13);
- this.lbAllLanguages.TabIndex = 0;
- this.lbAllLanguages.Text = "All Languages:";
- //
- // tabOptions
- //
- this.tabOptions.Controls.Add(this.btnOptionsExtract);
- this.tabOptions.Controls.Add(this.btnForwarder);
- this.tabOptions.Controls.Add(this.cbFailureChecks);
- this.tabOptions.Controls.Add(this.cbLz77);
- this.tabOptions.Controls.Add(this.lbOptionsOptional);
- this.tabOptions.Controls.Add(this.btnBrowseSound);
- this.tabOptions.Controls.Add(this.tbSound);
- this.tabOptions.Controls.Add(this.cmbNandLoader);
- this.tabOptions.Controls.Add(this.btnBrowseDol);
- this.tabOptions.Controls.Add(this.tbDol);
- this.tabOptions.Controls.Add(this.tbTitleID);
- this.tabOptions.Controls.Add(this.lbNewSound);
- this.tabOptions.Controls.Add(this.lbNandLoader);
- this.tabOptions.Controls.Add(this.lbNewDol);
- this.tabOptions.Controls.Add(this.lbTitleID);
- this.tabOptions.Location = new System.Drawing.Point(4, 22);
- this.tabOptions.Name = "tabOptions";
- this.tabOptions.Padding = new System.Windows.Forms.Padding(3);
- this.tabOptions.Size = new System.Drawing.Size(443, 209);
- this.tabOptions.TabIndex = 2;
- this.tabOptions.Text = "Options";
- this.tabOptions.UseVisualStyleBackColor = true;
- //
- // btnOptionsExtract
- //
- this.btnOptionsExtract.Location = new System.Drawing.Point(360, 47);
- this.btnOptionsExtract.Name = "btnOptionsExtract";
- this.btnOptionsExtract.Size = new System.Drawing.Size(75, 23);
- this.btnOptionsExtract.TabIndex = 14;
- this.btnOptionsExtract.Text = "Extract...";
- this.btnOptionsExtract.UseVisualStyleBackColor = true;
- this.btnOptionsExtract.Click += new System.EventHandler(this.btnOptionsExtract_Click);
- //
- // btnForwarder
- //
- this.btnForwarder.Location = new System.Drawing.Point(360, 109);
- this.btnForwarder.Name = "btnForwarder";
- this.btnForwarder.Size = new System.Drawing.Size(75, 23);
- this.btnForwarder.TabIndex = 13;
- this.btnForwarder.Text = "Forwarder...";
- this.btnForwarder.UseVisualStyleBackColor = true;
- this.btnForwarder.Click += new System.EventHandler(this.btnForwarder_Click);
- //
- // cbFailureChecks
- //
- this.cbFailureChecks.AutoSize = true;
- this.cbFailureChecks.Location = new System.Drawing.Point(263, 180);
- this.cbFailureChecks.Name = "cbFailureChecks";
- this.cbFailureChecks.Size = new System.Drawing.Size(172, 17);
- this.cbFailureChecks.TabIndex = 12;
- this.cbFailureChecks.Tag = "Independent";
- this.cbFailureChecks.Text = "/!\\ Turn off security checks /!\\";
- this.cbFailureChecks.UseVisualStyleBackColor = true;
- //
- // cbLz77
- //
- this.cbLz77.AutoSize = true;
- this.cbLz77.Checked = true;
- this.cbLz77.CheckState = System.Windows.Forms.CheckState.Checked;
- this.cbLz77.Location = new System.Drawing.Point(11, 180);
- this.cbLz77.Name = "cbLz77";
- this.cbLz77.Size = new System.Drawing.Size(134, 17);
- this.cbLz77.TabIndex = 11;
- this.cbLz77.Text = "Use Lz77 Compression";
- this.cbLz77.UseVisualStyleBackColor = true;
- //
- // lbOptionsOptional
- //
- this.lbOptionsOptional.Location = new System.Drawing.Point(-7, 8);
- this.lbOptionsOptional.Name = "lbOptionsOptional";
- this.lbOptionsOptional.Size = new System.Drawing.Size(457, 34);
- this.lbOptionsOptional.TabIndex = 10;
- this.lbOptionsOptional.Text = "These are optional. Fill them in only if you want to change them.\r\nIf you want a " +
- "looped sound, set the loop points first (e.g. with Wavosaur).";
- this.lbOptionsOptional.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // btnBrowseSound
- //
- this.btnBrowseSound.Location = new System.Drawing.Point(360, 145);
- this.btnBrowseSound.Name = "btnBrowseSound";
- this.btnBrowseSound.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseSound.TabIndex = 9;
- this.btnBrowseSound.Text = "Browse...";
- this.btnBrowseSound.UseVisualStyleBackColor = true;
- this.btnBrowseSound.Click += new System.EventHandler(this.btnBrowseSound_Click);
- //
- // tbSound
- //
- this.tbSound.Location = new System.Drawing.Point(90, 147);
- this.tbSound.Name = "tbSound";
- this.tbSound.ReadOnly = true;
- this.tbSound.Size = new System.Drawing.Size(264, 20);
- this.tbSound.TabIndex = 8;
- this.tbSound.Tag = "Disabled";
- //
- // cmbNandLoader
- //
- this.cmbNandLoader.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbNandLoader.FormattingEnabled = true;
- this.cmbNandLoader.Items.AddRange(new object[] {
- "comex",
- "Waninkoko"});
- this.cmbNandLoader.Location = new System.Drawing.Point(143, 111);
- this.cmbNandLoader.Name = "cmbNandLoader";
- this.cmbNandLoader.Size = new System.Drawing.Size(211, 21);
- this.cmbNandLoader.TabIndex = 7;
- //
- // btnBrowseDol
- //
- this.btnBrowseDol.Location = new System.Drawing.Point(360, 81);
- this.btnBrowseDol.Name = "btnBrowseDol";
- this.btnBrowseDol.Size = new System.Drawing.Size(75, 23);
- this.btnBrowseDol.TabIndex = 6;
- this.btnBrowseDol.Text = "Browse...";
- this.btnBrowseDol.UseVisualStyleBackColor = true;
- this.btnBrowseDol.Click += new System.EventHandler(this.btnBrowseDol_Click);
- //
- // tbDol
- //
- this.tbDol.Location = new System.Drawing.Point(90, 83);
- this.tbDol.Name = "tbDol";
- this.tbDol.ReadOnly = true;
- this.tbDol.Size = new System.Drawing.Size(264, 20);
- this.tbDol.TabIndex = 5;
- this.tbDol.Tag = "Disabled";
- //
- // tbTitleID
- //
- this.tbTitleID.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
- this.tbTitleID.Location = new System.Drawing.Point(90, 49);
- this.tbTitleID.MaxLength = 4;
- this.tbTitleID.Name = "tbTitleID";
- this.tbTitleID.Size = new System.Drawing.Size(55, 20);
- this.tbTitleID.TabIndex = 4;
- //
- // lbNewSound
- //
- this.lbNewSound.AutoSize = true;
- this.lbNewSound.Location = new System.Drawing.Point(8, 150);
- this.lbNewSound.Name = "lbNewSound";
- this.lbNewSound.Size = new System.Drawing.Size(66, 13);
- this.lbNewSound.TabIndex = 3;
- this.lbNewSound.Text = "New Sound:";
- //
- // lbNandLoader
- //
- this.lbNandLoader.AutoSize = true;
- this.lbNandLoader.Location = new System.Drawing.Point(49, 114);
- this.lbNandLoader.Name = "lbNandLoader";
- this.lbNandLoader.Size = new System.Drawing.Size(77, 13);
- this.lbNandLoader.TabIndex = 2;
- this.lbNandLoader.Text = "NAND Loader:";
- //
- // lbNewDol
- //
- this.lbNewDol.AutoSize = true;
- this.lbNewDol.Location = new System.Drawing.Point(8, 86);
- this.lbNewDol.Name = "lbNewDol";
- this.lbNewDol.Size = new System.Drawing.Size(57, 13);
- this.lbNewDol.TabIndex = 1;
- this.lbNewDol.Text = "New DOL:";
- //
- // lbTitleID
- //
- this.lbTitleID.AutoSize = true;
- this.lbTitleID.Location = new System.Drawing.Point(8, 52);
- this.lbTitleID.Name = "lbTitleID";
- this.lbTitleID.Size = new System.Drawing.Size(44, 13);
- this.lbTitleID.TabIndex = 0;
- this.lbTitleID.Text = "Title ID:";
- //
- // tabBanner
- //
- this.tabBanner.Controls.Add(this.cbBannerMakeTransparent);
- this.tabBanner.Controls.Add(this.cmbFormatBanner);
- this.tabBanner.Controls.Add(this.lbFormatBanner);
- this.tabBanner.Controls.Add(this.btnPreviewBanner);
- this.tabBanner.Controls.Add(this.btnExtractBanner);
- this.tabBanner.Controls.Add(this.btnDeleteBanner);
- this.tabBanner.Controls.Add(this.btnAddBanner);
- this.tabBanner.Controls.Add(this.btnReplaceBanner);
- this.tabBanner.Controls.Add(this.lbxBannerTpls);
- this.tabBanner.Location = new System.Drawing.Point(4, 22);
- this.tabBanner.Name = "tabBanner";
- this.tabBanner.Padding = new System.Windows.Forms.Padding(3);
- this.tabBanner.Size = new System.Drawing.Size(443, 209);
- this.tabBanner.TabIndex = 3;
- this.tabBanner.Text = "Banner";
- this.tabBanner.UseVisualStyleBackColor = true;
- //
- // cbBannerMakeTransparent
- //
- this.cbBannerMakeTransparent.AutoSize = true;
- this.cbBannerMakeTransparent.Location = new System.Drawing.Point(11, 189);
- this.cbBannerMakeTransparent.Name = "cbBannerMakeTransparent";
- this.cbBannerMakeTransparent.Size = new System.Drawing.Size(113, 17);
- this.cbBannerMakeTransparent.TabIndex = 6;
- this.cbBannerMakeTransparent.Text = "Make Transparent";
- this.cbBannerMakeTransparent.UseVisualStyleBackColor = true;
- this.cbBannerMakeTransparent.CheckedChanged += new System.EventHandler(this.cbBannerMakeTransparent_CheckedChanged);
- //
- // cmbFormatBanner
- //
- this.cmbFormatBanner.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbFormatBanner.FormattingEnabled = true;
- this.cmbFormatBanner.Items.AddRange(new object[] {
- "RGBA8",
- "RGB565",
- "RGB5A3",
- "IA8",
- "IA4",
- "I8",
- "I4",
- "CMP"});
- this.cmbFormatBanner.Location = new System.Drawing.Point(360, 182);
- this.cmbFormatBanner.Name = "cmbFormatBanner";
- this.cmbFormatBanner.Size = new System.Drawing.Size(75, 21);
- this.cmbFormatBanner.TabIndex = 5;
- //
- // lbFormatBanner
- //
- this.lbFormatBanner.AutoSize = true;
- this.lbFormatBanner.Location = new System.Drawing.Point(360, 166);
- this.lbFormatBanner.Name = "lbFormatBanner";
- this.lbFormatBanner.Size = new System.Drawing.Size(42, 13);
- this.lbFormatBanner.TabIndex = 4;
- this.lbFormatBanner.Text = "Format:";
- //
- // btnPreviewBanner
- //
- this.btnPreviewBanner.Location = new System.Drawing.Point(360, 132);
- this.btnPreviewBanner.Name = "btnPreviewBanner";
- this.btnPreviewBanner.Size = new System.Drawing.Size(75, 23);
- this.btnPreviewBanner.TabIndex = 3;
- this.btnPreviewBanner.Text = "Preview";
- this.btnPreviewBanner.UseVisualStyleBackColor = true;
- this.btnPreviewBanner.Click += new System.EventHandler(this.btnPreviewBanner_Click);
- //
- // btnExtractBanner
- //
- this.btnExtractBanner.Location = new System.Drawing.Point(360, 102);
- this.btnExtractBanner.Name = "btnExtractBanner";
- this.btnExtractBanner.Size = new System.Drawing.Size(75, 23);
- this.btnExtractBanner.TabIndex = 2;
- this.btnExtractBanner.Text = "Extract";
- this.btnExtractBanner.UseVisualStyleBackColor = true;
- this.btnExtractBanner.Click += new System.EventHandler(this.btnExtractBanner_Click);
- //
- // btnDeleteBanner
- //
- this.btnDeleteBanner.Location = new System.Drawing.Point(360, 42);
- this.btnDeleteBanner.Name = "btnDeleteBanner";
- this.btnDeleteBanner.Size = new System.Drawing.Size(75, 23);
- this.btnDeleteBanner.TabIndex = 1;
- this.btnDeleteBanner.Text = "Delete";
- this.btnDeleteBanner.UseVisualStyleBackColor = true;
- this.btnDeleteBanner.Click += new System.EventHandler(this.btnDeleteBanner_Click);
- //
- // btnAddBanner
- //
- this.btnAddBanner.Location = new System.Drawing.Point(360, 12);
- this.btnAddBanner.Name = "btnAddBanner";
- this.btnAddBanner.Size = new System.Drawing.Size(75, 23);
- this.btnAddBanner.TabIndex = 1;
- this.btnAddBanner.Text = "Add";
- this.btnAddBanner.UseVisualStyleBackColor = true;
- this.btnAddBanner.Click += new System.EventHandler(this.btnAddBanner_Click);
- //
- // btnReplaceBanner
- //
- this.btnReplaceBanner.Location = new System.Drawing.Point(360, 72);
- this.btnReplaceBanner.Name = "btnReplaceBanner";
- this.btnReplaceBanner.Size = new System.Drawing.Size(75, 23);
- this.btnReplaceBanner.TabIndex = 1;
- this.btnReplaceBanner.Text = "Replace";
- this.btnReplaceBanner.UseVisualStyleBackColor = true;
- this.btnReplaceBanner.Click += new System.EventHandler(this.btnReplaceBanner_Click);
- //
- // lbxBannerTpls
- //
- this.lbxBannerTpls.FormattingEnabled = true;
- this.lbxBannerTpls.Location = new System.Drawing.Point(11, 12);
- this.lbxBannerTpls.Name = "lbxBannerTpls";
- this.lbxBannerTpls.Size = new System.Drawing.Size(343, 173);
- this.lbxBannerTpls.Sorted = true;
- this.lbxBannerTpls.TabIndex = 0;
- this.lbxBannerTpls.SelectedIndexChanged += new System.EventHandler(this.lbxBannerTpls_SelectedIndexChanged);
- //
- // tabIcon
- //
- this.tabIcon.Controls.Add(this.cbIconMakeTransparent);
- this.tabIcon.Controls.Add(this.cmbFormatIcon);
- this.tabIcon.Controls.Add(this.lbFormatIcon);
- this.tabIcon.Controls.Add(this.btnPreviewIcon);
- this.tabIcon.Controls.Add(this.btnExtractIcon);
- this.tabIcon.Controls.Add(this.btnAddIcon);
- this.tabIcon.Controls.Add(this.btnDeleteIcon);
- this.tabIcon.Controls.Add(this.btnReplaceIcon);
- this.tabIcon.Controls.Add(this.lbxIconTpls);
- this.tabIcon.Location = new System.Drawing.Point(4, 22);
- this.tabIcon.Name = "tabIcon";
- this.tabIcon.Padding = new System.Windows.Forms.Padding(3);
- this.tabIcon.Size = new System.Drawing.Size(443, 209);
- this.tabIcon.TabIndex = 4;
- this.tabIcon.Text = "Icon";
- this.tabIcon.UseVisualStyleBackColor = true;
- //
- // cbIconMakeTransparent
- //
- this.cbIconMakeTransparent.AutoSize = true;
- this.cbIconMakeTransparent.Location = new System.Drawing.Point(11, 189);
- this.cbIconMakeTransparent.Name = "cbIconMakeTransparent";
- this.cbIconMakeTransparent.Size = new System.Drawing.Size(113, 17);
- this.cbIconMakeTransparent.TabIndex = 12;
- this.cbIconMakeTransparent.Text = "Make Transparent";
- this.cbIconMakeTransparent.UseVisualStyleBackColor = true;
- this.cbIconMakeTransparent.CheckedChanged += new System.EventHandler(this.cbIconMakeTransparent_CheckedChanged);
- //
- // cmbFormatIcon
- //
- this.cmbFormatIcon.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbFormatIcon.FormattingEnabled = true;
- this.cmbFormatIcon.Items.AddRange(new object[] {
- "RGBA8",
- "RGB565",
- "RGB5A3",
- "IA8",
- "IA4",
- "I8",
- "I4",
- "CMP"});
- this.cmbFormatIcon.Location = new System.Drawing.Point(360, 182);
- this.cmbFormatIcon.Name = "cmbFormatIcon";
- this.cmbFormatIcon.Size = new System.Drawing.Size(75, 21);
- this.cmbFormatIcon.TabIndex = 11;
- //
- // lbFormatIcon
- //
- this.lbFormatIcon.AutoSize = true;
- this.lbFormatIcon.Location = new System.Drawing.Point(360, 166);
- this.lbFormatIcon.Name = "lbFormatIcon";
- this.lbFormatIcon.Size = new System.Drawing.Size(42, 13);
- this.lbFormatIcon.TabIndex = 10;
- this.lbFormatIcon.Text = "Format:";
- //
- // btnPreviewIcon
- //
- this.btnPreviewIcon.Location = new System.Drawing.Point(360, 132);
- this.btnPreviewIcon.Name = "btnPreviewIcon";
- this.btnPreviewIcon.Size = new System.Drawing.Size(75, 23);
- this.btnPreviewIcon.TabIndex = 9;
- this.btnPreviewIcon.Text = "Preview";
- this.btnPreviewIcon.UseVisualStyleBackColor = true;
- this.btnPreviewIcon.Click += new System.EventHandler(this.btnPreviewIcon_Click);
- //
- // btnExtractIcon
- //
- this.btnExtractIcon.Location = new System.Drawing.Point(360, 102);
- this.btnExtractIcon.Name = "btnExtractIcon";
- this.btnExtractIcon.Size = new System.Drawing.Size(75, 23);
- this.btnExtractIcon.TabIndex = 8;
- this.btnExtractIcon.Text = "Extract";
- this.btnExtractIcon.UseVisualStyleBackColor = true;
- this.btnExtractIcon.Click += new System.EventHandler(this.btnExtractIcon_Click);
- //
- // btnAddIcon
- //
- this.btnAddIcon.Location = new System.Drawing.Point(360, 12);
- this.btnAddIcon.Name = "btnAddIcon";
- this.btnAddIcon.Size = new System.Drawing.Size(75, 23);
- this.btnAddIcon.TabIndex = 7;
- this.btnAddIcon.Text = "Add";
- this.btnAddIcon.UseVisualStyleBackColor = true;
- this.btnAddIcon.Click += new System.EventHandler(this.btnAddIcon_Click);
- //
- // btnDeleteIcon
- //
- this.btnDeleteIcon.Location = new System.Drawing.Point(360, 42);
- this.btnDeleteIcon.Name = "btnDeleteIcon";
- this.btnDeleteIcon.Size = new System.Drawing.Size(75, 23);
- this.btnDeleteIcon.TabIndex = 7;
- this.btnDeleteIcon.Text = "Delete";
- this.btnDeleteIcon.UseVisualStyleBackColor = true;
- this.btnDeleteIcon.Click += new System.EventHandler(this.btnDeleteIcon_Click);
- //
- // btnReplaceIcon
- //
- this.btnReplaceIcon.Location = new System.Drawing.Point(360, 72);
- this.btnReplaceIcon.Name = "btnReplaceIcon";
- this.btnReplaceIcon.Size = new System.Drawing.Size(75, 23);
- this.btnReplaceIcon.TabIndex = 7;
- this.btnReplaceIcon.Text = "Replace";
- this.btnReplaceIcon.UseVisualStyleBackColor = true;
- this.btnReplaceIcon.Click += new System.EventHandler(this.btnReplaceIcon_Click);
- //
- // lbxIconTpls
- //
- this.lbxIconTpls.FormattingEnabled = true;
- this.lbxIconTpls.Location = new System.Drawing.Point(11, 12);
- this.lbxIconTpls.Name = "lbxIconTpls";
- this.lbxIconTpls.Size = new System.Drawing.Size(343, 173);
- this.lbxIconTpls.Sorted = true;
- this.lbxIconTpls.TabIndex = 6;
- this.lbxIconTpls.SelectedIndexChanged += new System.EventHandler(this.lbxIconTpls_SelectedIndexChanged);
- //
- // tabBrlyt
- //
- this.tabBrlyt.Controls.Add(this.btnBrlytListTpls);
- this.tabBrlyt.Controls.Add(this.lbBrlytWarning);
- this.tabBrlyt.Controls.Add(this.lbBrlytActions);
- this.tabBrlyt.Controls.Add(this.btnBrlytExtract);
- this.tabBrlyt.Controls.Add(this.btnBrlytReplace);
- this.tabBrlyt.Controls.Add(this.lbBrlytIcon);
- this.tabBrlyt.Controls.Add(this.lbBrlytBanner);
- this.tabBrlyt.Controls.Add(this.lbxBrlytIcon);
- this.tabBrlyt.Controls.Add(this.lbxBrlytBanner);
- this.tabBrlyt.Location = new System.Drawing.Point(4, 22);
- this.tabBrlyt.Name = "tabBrlyt";
- this.tabBrlyt.Padding = new System.Windows.Forms.Padding(3);
- this.tabBrlyt.Size = new System.Drawing.Size(443, 209);
- this.tabBrlyt.TabIndex = 6;
- this.tabBrlyt.Text = "Layout";
- this.tabBrlyt.UseVisualStyleBackColor = true;
- //
- // btnBrlytListTpls
- //
- this.btnBrlytListTpls.Location = new System.Drawing.Point(360, 131);
- this.btnBrlytListTpls.Name = "btnBrlytListTpls";
- this.btnBrlytListTpls.Size = new System.Drawing.Size(75, 23);
- this.btnBrlytListTpls.TabIndex = 8;
- this.btnBrlytListTpls.Text = "List TPLs";
- this.btnBrlytListTpls.UseVisualStyleBackColor = true;
- this.btnBrlytListTpls.Click += new System.EventHandler(this.btnBrlytListTpls_Click);
- //
- // lbBrlytWarning
- //
- this.lbBrlytWarning.ForeColor = System.Drawing.Color.Red;
- this.lbBrlytWarning.Location = new System.Drawing.Point(-4, 192);
- this.lbBrlytWarning.Name = "lbBrlytWarning";
- this.lbBrlytWarning.Size = new System.Drawing.Size(451, 23);
- this.lbBrlytWarning.TabIndex = 7;
- this.lbBrlytWarning.Text = "Be careful with these features, wrong handling WILL BRICK your Wii!";
- this.lbBrlytWarning.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // lbBrlytActions
- //
- this.lbBrlytActions.Location = new System.Drawing.Point(357, 42);
- this.lbBrlytActions.Name = "lbBrlytActions";
- this.lbBrlytActions.Size = new System.Drawing.Size(78, 11);
- this.lbBrlytActions.TabIndex = 6;
- this.lbBrlytActions.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // btnBrlytExtract
- //
- this.btnBrlytExtract.Location = new System.Drawing.Point(360, 98);
- this.btnBrlytExtract.Name = "btnBrlytExtract";
- this.btnBrlytExtract.Size = new System.Drawing.Size(75, 23);
- this.btnBrlytExtract.TabIndex = 5;
- this.btnBrlytExtract.Text = "Extract";
- this.btnBrlytExtract.UseVisualStyleBackColor = true;
- this.btnBrlytExtract.Click += new System.EventHandler(this.btnBrlytExtract_Click);
- //
- // btnBrlytReplace
- //
- this.btnBrlytReplace.Location = new System.Drawing.Point(360, 65);
- this.btnBrlytReplace.Name = "btnBrlytReplace";
- this.btnBrlytReplace.Size = new System.Drawing.Size(75, 23);
- this.btnBrlytReplace.TabIndex = 5;
- this.btnBrlytReplace.Text = "Replace";
- this.btnBrlytReplace.UseVisualStyleBackColor = true;
- this.btnBrlytReplace.Click += new System.EventHandler(this.btnBrlytReplace_Click);
- //
- // lbBrlytIcon
- //
- this.lbBrlytIcon.AutoSize = true;
- this.lbBrlytIcon.Location = new System.Drawing.Point(11, 102);
- this.lbBrlytIcon.Name = "lbBrlytIcon";
- this.lbBrlytIcon.Size = new System.Drawing.Size(31, 13);
- this.lbBrlytIcon.TabIndex = 4;
- this.lbBrlytIcon.Text = "Icon:";
- //
- // lbBrlytBanner
- //
- this.lbBrlytBanner.AutoSize = true;
- this.lbBrlytBanner.Location = new System.Drawing.Point(11, 11);
- this.lbBrlytBanner.Name = "lbBrlytBanner";
- this.lbBrlytBanner.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.lbBrlytBanner.Size = new System.Drawing.Size(44, 13);
- this.lbBrlytBanner.TabIndex = 3;
- this.lbBrlytBanner.Text = "Banner:";
- //
- // lbxBrlytIcon
- //
- this.lbxBrlytIcon.FormattingEnabled = true;
- this.lbxBrlytIcon.Location = new System.Drawing.Point(11, 120);
- this.lbxBrlytIcon.Name = "lbxBrlytIcon";
- this.lbxBrlytIcon.Size = new System.Drawing.Size(343, 69);
- this.lbxBrlytIcon.Sorted = true;
- this.lbxBrlytIcon.TabIndex = 1;
- this.lbxBrlytIcon.SelectedIndexChanged += new System.EventHandler(this.lbxBrlytIcon_SelectedIndexChanged);
- //
- // lbxBrlytBanner
- //
- this.lbxBrlytBanner.FormattingEnabled = true;
- this.lbxBrlytBanner.Location = new System.Drawing.Point(11, 29);
- this.lbxBrlytBanner.Name = "lbxBrlytBanner";
- this.lbxBrlytBanner.Size = new System.Drawing.Size(343, 69);
- this.lbxBrlytBanner.Sorted = true;
- this.lbxBrlytBanner.TabIndex = 0;
- this.lbxBrlytBanner.SelectedIndexChanged += new System.EventHandler(this.lbxBrlytBanner_SelectedIndexChanged);
- //
- // tabBrlan
- //
- this.tabBrlan.Controls.Add(this.lbBrlanWarning);
- this.tabBrlan.Controls.Add(this.lbBrlanActions);
- this.tabBrlan.Controls.Add(this.btnBrlanExtract);
- this.tabBrlan.Controls.Add(this.btnBrlanDelete);
- this.tabBrlan.Controls.Add(this.btnBrlanReplace);
- this.tabBrlan.Controls.Add(this.lbBrlanIcon);
- this.tabBrlan.Controls.Add(this.lbBrlanBanner);
- this.tabBrlan.Controls.Add(this.btnBrlanAdd);
- this.tabBrlan.Controls.Add(this.lbxBrlanIcon);
- this.tabBrlan.Controls.Add(this.lbxBrlanBanner);
- this.tabBrlan.Location = new System.Drawing.Point(4, 22);
- this.tabBrlan.Name = "tabBrlan";
- this.tabBrlan.Padding = new System.Windows.Forms.Padding(3);
- this.tabBrlan.Size = new System.Drawing.Size(443, 209);
- this.tabBrlan.TabIndex = 7;
- this.tabBrlan.Text = "Animation";
- this.tabBrlan.UseVisualStyleBackColor = true;
- //
- // lbBrlanWarning
- //
- this.lbBrlanWarning.ForeColor = System.Drawing.Color.Red;
- this.lbBrlanWarning.Location = new System.Drawing.Point(-4, 192);
- this.lbBrlanWarning.Name = "lbBrlanWarning";
- this.lbBrlanWarning.Size = new System.Drawing.Size(451, 23);
- this.lbBrlanWarning.TabIndex = 15;
- this.lbBrlanWarning.Text = "Be careful with these features, wrong handling WILL BRICK your Wii!";
- this.lbBrlanWarning.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // lbBrlanActions
- //
- this.lbBrlanActions.Location = new System.Drawing.Point(357, 14);
- this.lbBrlanActions.Name = "lbBrlanActions";
- this.lbBrlanActions.Size = new System.Drawing.Size(78, 13);
- this.lbBrlanActions.TabIndex = 14;
- this.lbBrlanActions.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // btnBrlanExtract
- //
- this.btnBrlanExtract.Location = new System.Drawing.Point(360, 153);
- this.btnBrlanExtract.Name = "btnBrlanExtract";
- this.btnBrlanExtract.Size = new System.Drawing.Size(75, 23);
- this.btnBrlanExtract.TabIndex = 11;
- this.btnBrlanExtract.Text = "Extract";
- this.btnBrlanExtract.UseVisualStyleBackColor = true;
- this.btnBrlanExtract.Click += new System.EventHandler(this.btnBrlanExtract_Click);
- //
- // btnBrlanDelete
- //
- this.btnBrlanDelete.Location = new System.Drawing.Point(360, 77);
- this.btnBrlanDelete.Name = "btnBrlanDelete";
- this.btnBrlanDelete.Size = new System.Drawing.Size(75, 23);
- this.btnBrlanDelete.TabIndex = 12;
- this.btnBrlanDelete.Text = "Delete";
- this.btnBrlanDelete.UseVisualStyleBackColor = true;
- this.btnBrlanDelete.Click += new System.EventHandler(this.btnBrlanDelete_Click);
- //
- // btnBrlanReplace
- //
- this.btnBrlanReplace.Location = new System.Drawing.Point(360, 115);
- this.btnBrlanReplace.Name = "btnBrlanReplace";
- this.btnBrlanReplace.Size = new System.Drawing.Size(75, 23);
- this.btnBrlanReplace.TabIndex = 13;
- this.btnBrlanReplace.Text = "Replace";
- this.btnBrlanReplace.UseVisualStyleBackColor = true;
- this.btnBrlanReplace.Click += new System.EventHandler(this.btnBrlanReplace_Click);
- //
- // lbBrlanIcon
- //
- this.lbBrlanIcon.AutoSize = true;
- this.lbBrlanIcon.Location = new System.Drawing.Point(11, 102);
- this.lbBrlanIcon.Name = "lbBrlanIcon";
- this.lbBrlanIcon.Size = new System.Drawing.Size(31, 13);
- this.lbBrlanIcon.TabIndex = 10;
- this.lbBrlanIcon.Text = "Icon:";
- //
- // lbBrlanBanner
- //
- this.lbBrlanBanner.AutoSize = true;
- this.lbBrlanBanner.Location = new System.Drawing.Point(11, 11);
- this.lbBrlanBanner.Name = "lbBrlanBanner";
- this.lbBrlanBanner.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.lbBrlanBanner.Size = new System.Drawing.Size(44, 13);
- this.lbBrlanBanner.TabIndex = 9;
- this.lbBrlanBanner.Text = "Banner:";
- //
- // btnBrlanAdd
- //
- this.btnBrlanAdd.Location = new System.Drawing.Point(360, 39);
- this.btnBrlanAdd.Name = "btnBrlanAdd";
- this.btnBrlanAdd.Size = new System.Drawing.Size(75, 23);
- this.btnBrlanAdd.TabIndex = 8;
- this.btnBrlanAdd.Text = "Add";
- this.btnBrlanAdd.UseVisualStyleBackColor = true;
- this.btnBrlanAdd.Click += new System.EventHandler(this.btnBrlanAdd_Click);
- //
- // lbxBrlanIcon
- //
- this.lbxBrlanIcon.FormattingEnabled = true;
- this.lbxBrlanIcon.Location = new System.Drawing.Point(11, 120);
- this.lbxBrlanIcon.Name = "lbxBrlanIcon";
- this.lbxBrlanIcon.Size = new System.Drawing.Size(343, 69);
- this.lbxBrlanIcon.Sorted = true;
- this.lbxBrlanIcon.TabIndex = 7;
- this.lbxBrlanIcon.SelectedIndexChanged += new System.EventHandler(this.lbxBrlanIcon_SelectedIndexChanged);
- //
- // lbxBrlanBanner
- //
- this.lbxBrlanBanner.FormattingEnabled = true;
- this.lbxBrlanBanner.Location = new System.Drawing.Point(11, 29);
- this.lbxBrlanBanner.Name = "lbxBrlanBanner";
- this.lbxBrlanBanner.Size = new System.Drawing.Size(343, 69);
- this.lbxBrlanBanner.Sorted = true;
- this.lbxBrlanBanner.TabIndex = 6;
- this.lbxBrlanBanner.SelectedIndexChanged += new System.EventHandler(this.lbxBrlanBanner_SelectedIndexChanged);
- //
- // tabInstructions
- //
- this.tabInstructions.Controls.Add(this.rtbInstructions);
- this.tabInstructions.Location = new System.Drawing.Point(4, 22);
- this.tabInstructions.Name = "tabInstructions";
- this.tabInstructions.Padding = new System.Windows.Forms.Padding(3);
- this.tabInstructions.Size = new System.Drawing.Size(443, 209);
- this.tabInstructions.TabIndex = 8;
- this.tabInstructions.Text = "Help";
- this.tabInstructions.UseVisualStyleBackColor = true;
- //
- // rtbInstructions
- //
- this.rtbInstructions.BackColor = System.Drawing.SystemColors.Window;
- this.rtbInstructions.Dock = System.Windows.Forms.DockStyle.Fill;
- this.rtbInstructions.Location = new System.Drawing.Point(3, 3);
- this.rtbInstructions.Name = "rtbInstructions";
- this.rtbInstructions.ReadOnly = true;
- this.rtbInstructions.Size = new System.Drawing.Size(437, 203);
- this.rtbInstructions.TabIndex = 0;
- this.rtbInstructions.Text = "";
- //
- // tabCredits
- //
- this.tabCredits.Controls.Add(this.panCredits);
- this.tabCredits.Controls.Add(this.llbUpdateAvailabe);
- this.tabCredits.Controls.Add(this.llbSite);
- this.tabCredits.Controls.Add(this.lbCreditVersion);
- this.tabCredits.Controls.Add(this.lbCreditInfo);
- this.tabCredits.Location = new System.Drawing.Point(4, 22);
- this.tabCredits.Name = "tabCredits";
- this.tabCredits.Padding = new System.Windows.Forms.Padding(3);
- this.tabCredits.Size = new System.Drawing.Size(443, 209);
- this.tabCredits.TabIndex = 5;
- this.tabCredits.Text = "About";
- this.tabCredits.UseVisualStyleBackColor = true;
- //
- // llbUpdateAvailabe
- //
- this.llbUpdateAvailabe.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.llbUpdateAvailabe.Location = new System.Drawing.Point(0, 62);
- this.llbUpdateAvailabe.Name = "llbUpdateAvailabe";
- this.llbUpdateAvailabe.Size = new System.Drawing.Size(443, 13);
- this.llbUpdateAvailabe.TabIndex = 4;
- this.llbUpdateAvailabe.TabStop = true;
- this.llbUpdateAvailabe.Text = "Version X is availabe, get it here!";
- this.llbUpdateAvailabe.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- this.llbUpdateAvailabe.Visible = false;
- this.llbUpdateAvailabe.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llbUpdateAvailabe_LinkClicked);
- //
- // llbSite
- //
- this.llbSite.Location = new System.Drawing.Point(0, 35);
- this.llbSite.Name = "llbSite";
- this.llbSite.Size = new System.Drawing.Size(443, 13);
- this.llbSite.TabIndex = 3;
- this.llbSite.TabStop = true;
- this.llbSite.Text = "http://customizemii.googlecode.com";
- this.llbSite.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- this.llbSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llbSite_LinkClicked);
- //
- // lbCreditThanks
- //
- this.lbCreditThanks.Location = new System.Drawing.Point(8, 0);
- this.lbCreditThanks.Name = "lbCreditThanks";
- this.lbCreditThanks.Size = new System.Drawing.Size(427, 150);
- this.lbCreditThanks.TabIndex = 2;
- this.lbCreditThanks.Text = resources.GetString("lbCreditThanks.Text");
- this.lbCreditThanks.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // lbCreditVersion
- //
- this.lbCreditVersion.Location = new System.Drawing.Point(0, 13);
- this.lbCreditVersion.Name = "lbCreditVersion";
- this.lbCreditVersion.Size = new System.Drawing.Size(443, 13);
- this.lbCreditVersion.TabIndex = 1;
- this.lbCreditVersion.Text = "CustomizeMii Version X by Leathl";
- this.lbCreditVersion.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // lbCreditInfo
- //
- this.lbCreditInfo.ForeColor = System.Drawing.Color.Red;
- this.lbCreditInfo.Location = new System.Drawing.Point(0, 189);
- this.lbCreditInfo.Name = "lbCreditInfo";
- this.lbCreditInfo.Size = new System.Drawing.Size(443, 16);
- this.lbCreditInfo.TabIndex = 0;
- this.lbCreditInfo.Text = "Thanks to icefire / Xuzz for the basic idea of this Application!";
- this.lbCreditInfo.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // ssMain
- //
- this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.lbStatus,
- this.lbStatusText,
- this.pbProgress});
- this.ssMain.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
- this.ssMain.Location = new System.Drawing.Point(0, 268);
- this.ssMain.Name = "ssMain";
- this.ssMain.Size = new System.Drawing.Size(451, 22);
- this.ssMain.SizingGrip = false;
- this.ssMain.TabIndex = 2;
- this.ssMain.Text = "ssMain";
- //
- // lbStatus
- //
- this.lbStatus.Name = "lbStatus";
- this.lbStatus.Size = new System.Drawing.Size(45, 17);
- this.lbStatus.Text = "Status: ";
- //
- // lbStatusText
- //
- this.lbStatusText.Name = "lbStatusText";
- this.lbStatusText.Size = new System.Drawing.Size(0, 17);
- this.lbStatusText.Spring = true;
- this.lbStatusText.TextChanged += new System.EventHandler(this.lbStatusText_TextChanged);
- //
- // pbProgress
- //
- this.pbProgress.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.pbProgress.Name = "pbProgress";
- this.pbProgress.Size = new System.Drawing.Size(100, 16);
- this.pbProgress.Value = 100;
- //
- // cmForwarder
- //
- this.cmForwarder.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmSimpleForwarder,
- this.cmComplexForwarder});
- this.cmForwarder.Name = "contextMenuStrip1";
- this.cmForwarder.Size = new System.Drawing.Size(178, 48);
- //
- // cmSimpleForwarder
- //
- this.cmSimpleForwarder.Name = "cmSimpleForwarder";
- this.cmSimpleForwarder.Size = new System.Drawing.Size(177, 22);
- this.cmSimpleForwarder.Text = "Simple Forwarder";
- this.cmSimpleForwarder.Click += new System.EventHandler(this.cmForwarderItem_Click);
- //
- // cmComplexForwarder
- //
- this.cmComplexForwarder.Name = "cmComplexForwarder";
- this.cmComplexForwarder.Size = new System.Drawing.Size(177, 22);
- this.cmComplexForwarder.Text = "Complex Forwarder";
- this.cmComplexForwarder.Click += new System.EventHandler(this.cmForwarderItem_Click);
- //
- // cmOptionsExtract
- //
- this.cmOptionsExtract.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmExtractWad,
- this.cmExtractDol,
- this.tsExtractSound,
- this.tsExtractImages});
- this.cmOptionsExtract.Name = "cmOptionsExtract";
- this.cmOptionsExtract.Size = new System.Drawing.Size(153, 92);
- //
- // cmExtractWad
- //
- this.cmExtractWad.Name = "cmExtractWad";
- this.cmExtractWad.Size = new System.Drawing.Size(152, 22);
- this.cmExtractWad.Text = "WAD Contents";
- this.cmExtractWad.Click += new System.EventHandler(this.cmExtractWad_Click);
- //
- // cmExtractDol
- //
- this.cmExtractDol.Name = "cmExtractDol";
- this.cmExtractDol.Size = new System.Drawing.Size(152, 22);
- this.cmExtractDol.Text = "DOL";
- this.cmExtractDol.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // tsExtractSound
- //
- this.tsExtractSound.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmExtractSoundAsBin,
- this.cmExtractSoundAsAudio});
- this.tsExtractSound.Name = "tsExtractSound";
- this.tsExtractSound.Size = new System.Drawing.Size(152, 22);
- this.tsExtractSound.Text = "Sound";
- //
- // cmExtractSoundAsBin
- //
- this.cmExtractSoundAsBin.Name = "cmExtractSoundAsBin";
- this.cmExtractSoundAsBin.Size = new System.Drawing.Size(143, 22);
- this.cmExtractSoundAsBin.Text = "As sound.bin";
- this.cmExtractSoundAsBin.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // cmExtractSoundAsAudio
- //
- this.cmExtractSoundAsAudio.Name = "cmExtractSoundAsAudio";
- this.cmExtractSoundAsAudio.Size = new System.Drawing.Size(143, 22);
- this.cmExtractSoundAsAudio.Text = "As Audiofile";
- this.cmExtractSoundAsAudio.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // tsExtractImages
- //
- this.tsExtractImages.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmExtractBannerImages,
- this.cmExtractIconImages,
- this.cmExtractBothImages});
- this.tsExtractImages.Name = "tsExtractImages";
- this.tsExtractImages.Size = new System.Drawing.Size(152, 22);
- this.tsExtractImages.Text = "Images";
- //
- // cmExtractBannerImages
- //
- this.cmExtractBannerImages.Name = "cmExtractBannerImages";
- this.cmExtractBannerImages.Size = new System.Drawing.Size(111, 22);
- this.cmExtractBannerImages.Text = "Banner";
- this.cmExtractBannerImages.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // cmExtractIconImages
- //
- this.cmExtractIconImages.Name = "cmExtractIconImages";
- this.cmExtractIconImages.Size = new System.Drawing.Size(111, 22);
- this.cmExtractIconImages.Text = "Icon";
- this.cmExtractIconImages.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // cmExtractBothImages
- //
- this.cmExtractBothImages.Name = "cmExtractBothImages";
- this.cmExtractBothImages.Size = new System.Drawing.Size(111, 22);
- this.cmExtractBothImages.Text = "Both";
- this.cmExtractBothImages.Click += new System.EventHandler(this.cmOptionsExtract_MouseClick);
- //
- // cmSound
- //
- this.cmSound.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmLoadAudioFile,
- this.cmConvertToBns});
- this.cmSound.Name = "cmSound";
- this.cmSound.Size = new System.Drawing.Size(159, 48);
- //
- // cmLoadAudioFile
- //
- this.cmLoadAudioFile.Name = "cmLoadAudioFile";
- this.cmLoadAudioFile.Size = new System.Drawing.Size(158, 22);
- this.cmLoadAudioFile.Text = "Load Audio File";
- this.cmLoadAudioFile.Click += new System.EventHandler(this.cmLoadAudioFile_Click);
- //
- // cmConvertToBns
- //
- this.cmConvertToBns.Name = "cmConvertToBns";
- this.cmConvertToBns.Size = new System.Drawing.Size(158, 22);
- this.cmConvertToBns.Text = "Convert To BNS";
- this.cmConvertToBns.Click += new System.EventHandler(this.cmConvertToBns_Click);
- //
- // cmDol
- //
- this.cmDol.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.cmLoadDol,
- this.cmDolFromSource});
- this.cmDol.Name = "cmDol";
- this.cmDol.Size = new System.Drawing.Size(200, 48);
- //
- // cmLoadDol
- //
- this.cmLoadDol.Name = "cmLoadDol";
- this.cmLoadDol.Size = new System.Drawing.Size(199, 22);
- this.cmLoadDol.Text = "Load DOL File";
- this.cmLoadDol.Click += new System.EventHandler(this.cmLoadDol_Click);
- //
- // cmDolFromSource
- //
- this.cmDolFromSource.Name = "cmDolFromSource";
- this.cmDolFromSource.Size = new System.Drawing.Size(199, 22);
- this.cmDolFromSource.Text = "Take From Source WAD";
- this.cmDolFromSource.Click += new System.EventHandler(this.cmDolFromSource_Click);
- //
- // panCredits
- //
- this.panCredits.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.panCredits.Controls.Add(this.lbCreditThanks);
- this.panCredits.Location = new System.Drawing.Point(0, 94);
- this.panCredits.Name = "panCredits";
- this.panCredits.Size = new System.Drawing.Size(443, 79);
- this.panCredits.TabIndex = 5;
- //
- // CustomizeMii_Main
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(451, 290);
- this.Controls.Add(this.tabControl);
- this.Controls.Add(this.btnCreateWad);
- this.Controls.Add(this.ssMain);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.MaximizeBox = false;
- this.Name = "CustomizeMii_Main";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "CustomizeMii X by Leathl";
- this.Load += new System.EventHandler(this.CustomizeMii_Main_Load);
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CustomizeMii_Main_FormClosing);
- this.tabControl.ResumeLayout(false);
- this.tabSource.ResumeLayout(false);
- this.tabSource.PerformLayout();
- this.tabTitle.ResumeLayout(false);
- this.tabTitle.PerformLayout();
- this.tabOptions.ResumeLayout(false);
- this.tabOptions.PerformLayout();
- this.tabBanner.ResumeLayout(false);
- this.tabBanner.PerformLayout();
- this.tabIcon.ResumeLayout(false);
- this.tabIcon.PerformLayout();
- this.tabBrlyt.ResumeLayout(false);
- this.tabBrlyt.PerformLayout();
- this.tabBrlan.ResumeLayout(false);
- this.tabBrlan.PerformLayout();
- this.tabInstructions.ResumeLayout(false);
- this.tabCredits.ResumeLayout(false);
- this.ssMain.ResumeLayout(false);
- this.ssMain.PerformLayout();
- this.cmForwarder.ResumeLayout(false);
- this.cmOptionsExtract.ResumeLayout(false);
- this.cmSound.ResumeLayout(false);
- this.cmDol.ResumeLayout(false);
- this.panCredits.ResumeLayout(false);
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.Button btnCreateWad;
- private System.Windows.Forms.TabControl tabControl;
- private System.Windows.Forms.TabPage tabSource;
- private System.Windows.Forms.TabPage tabTitle;
- private System.Windows.Forms.TabPage tabOptions;
- private System.Windows.Forms.TabPage tabBanner;
- private System.Windows.Forms.TabPage tabIcon;
- private System.Windows.Forms.TabPage tabCredits;
- private System.Windows.Forms.Label lbSource;
- private System.Windows.Forms.Button btnBrowseSource;
- private System.Windows.Forms.TextBox tbSourceWad;
- private System.Windows.Forms.ListBox lbxBaseWads;
- private System.Windows.Forms.Button btnSaveBaseWad;
- private System.Windows.Forms.Button btnPreviewBaseWad;
- private System.Windows.Forms.Button btnLoadBaseWad;
- private System.Windows.Forms.TextBox tbAllLanguages;
- private System.Windows.Forms.Label lbAllLanguages;
- private System.Windows.Forms.Label lbSpecificLanguageTitles;
- private System.Windows.Forms.Label lbEnglish;
- private System.Windows.Forms.Label lbJapanese;
- private System.Windows.Forms.Label lbDutch;
- private System.Windows.Forms.Label lbItalian;
- private System.Windows.Forms.Label lbSpanish;
- private System.Windows.Forms.Label lbFrench;
- private System.Windows.Forms.Label lbGerman;
- private System.Windows.Forms.TextBox tbItalian;
- private System.Windows.Forms.TextBox tbFrench;
- private System.Windows.Forms.TextBox tbJapanese;
- private System.Windows.Forms.TextBox tbDutch;
- private System.Windows.Forms.TextBox tbSpanish;
- private System.Windows.Forms.TextBox tbGerman;
- private System.Windows.Forms.TextBox tbEnglish;
- private System.Windows.Forms.Label lbNewDol;
- private System.Windows.Forms.Label lbTitleID;
- private System.Windows.Forms.Label lbNandLoader;
- private System.Windows.Forms.Label lbNewSound;
- private System.Windows.Forms.Button btnBrowseDol;
- private System.Windows.Forms.TextBox tbDol;
- private System.Windows.Forms.TextBox tbTitleID;
- private System.Windows.Forms.ComboBox cmbNandLoader;
- private System.Windows.Forms.TextBox tbSound;
- private System.Windows.Forms.Button btnBrowseSound;
- private System.Windows.Forms.Label lbOptionsOptional;
- private System.Windows.Forms.Button btnPreviewBanner;
- private System.Windows.Forms.Button btnExtractBanner;
- private System.Windows.Forms.Button btnReplaceBanner;
- private System.Windows.Forms.ListBox lbxBannerTpls;
- private System.Windows.Forms.Label lbFormatBanner;
- private System.Windows.Forms.ComboBox cmbFormatBanner;
- private System.Windows.Forms.ComboBox cmbFormatIcon;
- private System.Windows.Forms.Label lbFormatIcon;
- private System.Windows.Forms.Button btnPreviewIcon;
- private System.Windows.Forms.Button btnExtractIcon;
- private System.Windows.Forms.Button btnReplaceIcon;
- private System.Windows.Forms.ListBox lbxIconTpls;
- private System.Windows.Forms.Label lbCreditInfo;
- private System.Windows.Forms.Label lbCreditVersion;
- private System.Windows.Forms.Label lbCreditThanks;
- private System.Windows.Forms.StatusStrip ssMain;
- private System.Windows.Forms.ToolStripProgressBar pbProgress;
- private System.Windows.Forms.ToolStripStatusLabel lbStatus;
- private System.Windows.Forms.ToolStripStatusLabel lbStatusText;
- private System.Windows.Forms.ComboBox cmbReplace;
- private System.Windows.Forms.TextBox tbReplace;
- private System.Windows.Forms.Button btnBrowseReplace;
- private System.Windows.Forms.Button btnClearReplace;
- private System.Windows.Forms.CheckBox cbLz77;
- private System.Windows.Forms.LinkLabel llbSite;
- private System.Windows.Forms.TabPage tabBrlyt;
- private System.Windows.Forms.TabPage tabBrlan;
- private System.Windows.Forms.ListBox lbxBrlytIcon;
- private System.Windows.Forms.ListBox lbxBrlytBanner;
- private System.Windows.Forms.Label lbBrlytIcon;
- private System.Windows.Forms.Label lbBrlytBanner;
- private System.Windows.Forms.Button btnBrlytReplace;
- private System.Windows.Forms.Button btnBrlytExtract;
- private System.Windows.Forms.Button btnBrlanExtract;
- private System.Windows.Forms.Button btnBrlanDelete;
- private System.Windows.Forms.Button btnBrlanReplace;
- private System.Windows.Forms.Label lbBrlanIcon;
- private System.Windows.Forms.Label lbBrlanBanner;
- private System.Windows.Forms.Button btnBrlanAdd;
- private System.Windows.Forms.ListBox lbxBrlanIcon;
- private System.Windows.Forms.ListBox lbxBrlanBanner;
- private System.Windows.Forms.Label lbBrlytActions;
- private System.Windows.Forms.Label lbBrlanActions;
- private System.Windows.Forms.Label lbBrlytWarning;
- private System.Windows.Forms.Label lbBrlanWarning;
- private System.Windows.Forms.LinkLabel llbUpdateAvailabe;
- private System.Windows.Forms.Button btnDeleteBanner;
- private System.Windows.Forms.Button btnAddBanner;
- private System.Windows.Forms.Button btnAddIcon;
- private System.Windows.Forms.Button btnDeleteIcon;
- private System.Windows.Forms.Button btnBrlytListTpls;
- private System.Windows.Forms.CheckBox cbBannerMakeTransparent;
- private System.Windows.Forms.CheckBox cbIconMakeTransparent;
- private System.Windows.Forms.TabPage tabInstructions;
- private System.Windows.Forms.RichTextBox rtbInstructions;
- private System.Windows.Forms.CheckBox cbFailureChecks;
- private System.Windows.Forms.Button btnForwarder;
- private System.Windows.Forms.ContextMenuStrip cmForwarder;
- private System.Windows.Forms.ToolStripMenuItem cmSimpleForwarder;
- private System.Windows.Forms.ToolStripMenuItem cmComplexForwarder;
- private System.Windows.Forms.Button btnOptionsExtract;
- private System.Windows.Forms.ContextMenuStrip cmOptionsExtract;
- private System.Windows.Forms.ToolStripMenuItem cmExtractDol;
- private System.Windows.Forms.ToolStripMenuItem tsExtractSound;
- private System.Windows.Forms.ToolStripMenuItem tsExtractImages;
- private System.Windows.Forms.ToolStripMenuItem cmExtractBannerImages;
- private System.Windows.Forms.ToolStripMenuItem cmExtractIconImages;
- private System.Windows.Forms.ToolStripMenuItem cmExtractBothImages;
- private System.Windows.Forms.ToolStripMenuItem cmExtractSoundAsBin;
- private System.Windows.Forms.ToolStripMenuItem cmExtractSoundAsAudio;
- private System.Windows.Forms.ContextMenuStrip cmSound;
- private System.Windows.Forms.ToolStripMenuItem cmLoadAudioFile;
- private System.Windows.Forms.ToolStripMenuItem cmConvertToBns;
- private System.Windows.Forms.ToolStripMenuItem cmExtractWad;
- private System.Windows.Forms.ContextMenuStrip cmDol;
- private System.Windows.Forms.ToolStripMenuItem cmLoadDol;
- private System.Windows.Forms.ToolStripMenuItem cmDolFromSource;
- private System.Windows.Forms.Panel panCredits;
- }
-}
-
diff --git a/CustomizeMii/CustomizeMii_Main.cs b/CustomizeMii/CustomizeMii_Main.cs
deleted file mode 100644
index 0b1cec0..0000000
--- a/CustomizeMii/CustomizeMii_Main.cs
+++ /dev/null
@@ -1,3301 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-//#define Mono //Change all '\\' to '/' (in all files) while compiling for OS X / Linux (Mono)
-//#define Debug //Always remember to turn off :)
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Net;
-using System.Text.RegularExpressions;
-using System.Windows.Forms;
-
-#if !Mono
-using ForwardMii;
-#endif
-
-namespace CustomizeMii
-{
- public partial class CustomizeMii_Main : Form
- {
- const string version = "2.1"; //Hint for myself: Never use a char in the Version (UpdateCheck)!
- const int SoundMaxLength = 30; //In seconds
- const int SoundWarningLength = 20; //In seconds
- const int BnsWarningLength = 45; //In seconds
- const int CreditsScrollSpeed = 85; //Timer Intervall for the scrolling Credits
- public static string TempPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\";
- public static string TempWadPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\TempWad.wad";
- public static string TempUnpackPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\";
- public static string TempBannerPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Banner\\";
- public static string TempIconPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Icon\\";
- public static string TempSoundPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\sound.bin";
- public static string TempWavePath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Temp.wav";
- public static string TempBnsPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Temp.bns";
- public static string TempDolPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Temp.dol";
- public static string TempTempPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Temp\\";
- public static string TempUnpackBannerTplPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\timg\\";
- public static string TempUnpackIconTplPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\timg\\";
- public static string TempUnpackBannerBrlytPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\blyt\\";
- public static string TempUnpackIconBrlytPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\blyt\\";
- public static string TempUnpackBannerBrlanPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\anim\\";
- public static string TempUnpackIconBrlanPath = Path.GetTempPath() + "CustomizeMii_Temp\\XXX\\Unpack\\00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\anim\\";
- public static string[] ButtonTexts = new string[] { "Image", "Create WAD!", "Fire!", "Go Go Go!", "Let's do it!", "What are you waitin' for?", "I want my Channel!", "Houston, We've Got a Problem!", "Error, please contact anyone!", "Isn't she sweet?", "Is that milk?", "In your face!", "_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_", "Take me to a higher place!", "What's goin' on?", "I'm a Button!", "Click!", "Today's date is " + DateTime.Now.ToShortDateString(), "Launch Time: " + DateTime.Now.ToLongTimeString(), string.Format("My name is {0}", Environment.UserName) };
- public static string[] SourceWadUrls = new string[] { "http://wadder.net/bases/StaticBase.wad", "http://wadder.net/bases/GenesisGX.wad", "http://wadder.net/bases/MP-CE-Std.wad", "http://wadder.net/bases/MP-CE-Ext.wad", "http://wadder.net/bases/SNES9XGX.wad", "http://wadder.net/bases/FCEUGX-wilsoff.wad", "http://wadder.net/bases/FCEUGX.wad", "http://wadder.net/bases/Wii64.wad", "http://wadder.net/bases/WiiSXFull.wad", "http://wadder.net/bases/WiiSXRetro.wad", "http://wadder.net/bases/WADderBase1.wad", "http://wadder.net/bases/WADderBase2.wad", "http://wadder.net/bases/WADderBase3.wad", "http://wadder.net/bases/UniiLoader.wad", "http://wadder.net/bases/BackupChannel.wad" };
- public static string[] SourceWadPreviewUrls = new string[] { "http://www.youtube.com/watch?v=pFNKldTYQq0", "http://www.youtube.com/watch?v=p9A6iEQvv9w", "http://www.youtube.com/watch?v=Up1RZebUc_U", "http://www.youtube.com/watch?v=Up1RZebUc_U", "http://www.youtube.com/watch?v=P-Mxd6DMvFY", "http://www.youtube.com/watch?v=wrbrg-DH_h4", "http://www.youtube.com/watch?v=MfiVbQaiXw8", "http://www.youtube.com/watch?v=krCQ2J7ZH8Y", "http://www.youtube.com/watch?v=rZC1DKUM6QI", "http://www.youtube.com/watch?v=Uiy8w-bp1kI", "http://www.youtube.com/watch?v=BbSYCSI8tz8", "http://www.youtube.com/watch?v=PIFZevHQ8lQ", "http://www.youtube.com/watch?v=OIhvDNjphhc", "http://www.youtube.com/watch?v=KLcncEArQLY&NR=1", "http://www.youtube.com/watch?v=xE_EgdCRV1I" };
- private string BannerTplPath = string.Empty;
- private string IconTplPath = string.Empty;
- private string SourceWad = string.Empty;
- private string BannerBrlytPath = string.Empty;
- private string IconBrlytPath = string.Empty;
- private string BannerBrlanPath = string.Empty;
- private string IconBrlanPath = string.Empty;
- private string BannerReplace = string.Empty;
- private string IconReplace = string.Empty;
- private string SoundReplace = string.Empty;
- private bool BrlytChanged = false;
- private bool BrlanChanged = false;
- private Progress currentProgress;
- private EventHandler ProgressUpdate;
- private int UnpackFolderErrorCount = 0;
- private Stopwatch CreationTimer = new Stopwatch();
- private List BannerTransparents = new List();
- private List IconTransparents = new List();
- private string Mp3Path;
- private Forwarder.Simple SimpleForwarder = new Forwarder.Simple();
- private Forwarder.Complex ComplexForwarder = new Forwarder.Complex();
- private delegate void BoxInvoker(string message);
- private delegate void SetTextInvoker(string text, TextBox tb);
- double separatorBtn;
- Timer tmrCredits = new Timer();
-
- public CustomizeMii_Main()
- {
- InitializeComponent();
- this.Icon = global::CustomizeMii.Properties.Resources.CustomizeMii;
- }
-
- private void CustomizeMii_Main_Load(object sender, EventArgs e)
- {
- UpdatePaths();
- UpdateCheck();
-
-#if !Mono
- UpdateCheckForwardMii();
- CommonKeyCheck();
-#endif
-
- InitializeStartup();
-
-#if Mono
- //TextBox.MaxLength is not implemented in Mono, so don't use it
- for (int i = 0; i < tabControl.TabPages.Count; i++)
- for(int j=0;j 0)
- {
- lbxBannerTpls.Items.Clear();
- BannerTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < tpls.Length; i++)
- {
- if (BannerTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)))
- lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)");
- else
- lbxBannerTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void AddIconTpls(string[] tpls)
- {
- if (tpls.Length > 0)
- {
- lbxIconTpls.Items.Clear();
- IconTplPath = tpls[0].Remove(tpls[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < tpls.Length; i++)
- {
- if (IconTransparents.Contains(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1)))
- lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1) + " (Transparent)");
- else
- lbxIconTpls.Items.Add(tpls[i].Remove(0, tpls[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void AddBrlyts(object sender, EventArgs e)
- {
- try
- {
- string[] BannerBrlyt;
- if (string.IsNullOrEmpty(BannerReplace))
- BannerBrlyt = Directory.GetFiles(TempUnpackBannerBrlytPath);
- else
- BannerBrlyt = Directory.GetFiles(TempBannerPath + "arc\\blyt");
-
- string[] IconBrlyt;
- if (string.IsNullOrEmpty(IconReplace))
- IconBrlyt = Directory.GetFiles(TempUnpackIconBrlytPath);
- else
- IconBrlyt = Directory.GetFiles(TempIconPath + "arc\\blyt");
-
- AddBannerBrlyt(BannerBrlyt);
- AddIconBrlyt(IconBrlyt);
-
- if (lbxBrlytBanner.SelectedIndex == -1 && lbxBrlytIcon.SelectedIndex == -1)
- {
- if (lbxBrlytBanner.Items.Count > 0) lbxBrlytBanner.SelectedIndex = 0;
- else if (lbxBrlytIcon.Items.Count > 0) lbxBrlytIcon.SelectedIndex = 0;
- }
- }
- catch { }
- }
-
- private void AddBrlans(object sender, EventArgs e)
- {
- try
- {
- string[] BannerBrlan;
- if (string.IsNullOrEmpty(BannerReplace))
- BannerBrlan = Directory.GetFiles(TempUnpackBannerBrlanPath);
- else
- BannerBrlan = Directory.GetFiles(TempBannerPath + "arc\\anim");
-
- string[] IconBrlan;
- if (string.IsNullOrEmpty(IconReplace))
- IconBrlan = Directory.GetFiles(TempUnpackIconBrlanPath);
- else
- IconBrlan = Directory.GetFiles(TempIconPath + "arc\\anim");
-
- AddBannerBrlan(BannerBrlan);
- AddIconBrlan(IconBrlan);
-
- if (lbxBrlanBanner.SelectedIndex == -1 && lbxBrlanIcon.SelectedIndex == -1)
- {
- if (lbxBrlanBanner.Items.Count > 0) lbxBrlanBanner.SelectedIndex = 0;
- else if (lbxBrlanIcon.Items.Count > 0) lbxBrlanIcon.SelectedIndex = 0;
- }
- }
- catch { }
- }
-
- private void AddBannerBrlyt(string[] brlyt)
- {
- if (brlyt.Length > 0)
- {
- lbxBrlytBanner.Items.Clear();
- BannerBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < brlyt.Length; i++)
- {
- lbxBrlytBanner.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void AddIconBrlyt(string[] brlyt)
- {
- if (brlyt.Length > 0)
- {
- lbxBrlytIcon.Items.Clear();
- IconBrlytPath = brlyt[0].Remove(brlyt[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < brlyt.Length; i++)
- {
- lbxBrlytIcon.Items.Add(brlyt[i].Remove(0, brlyt[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void AddBannerBrlan(string[] brlan)
- {
- if (brlan.Length > 0)
- {
- lbxBrlanBanner.Items.Clear();
- BannerBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < brlan.Length; i++)
- {
- lbxBrlanBanner.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void AddIconBrlan(string[] brlan)
- {
- if (brlan.Length > 0)
- {
- lbxBrlanIcon.Items.Clear();
- IconBrlanPath = brlan[0].Remove(brlan[0].LastIndexOf('\\') + 1);
-
- for (int i = 0; i < brlan.Length; i++)
- {
- lbxBrlanIcon.Items.Add(brlan[i].Remove(0, brlan[i].LastIndexOf('\\') + 1));
- }
- }
- }
-
- private void SetText(TextBox tb, string text)
- {
- SetTextInvoker invoker = new SetTextInvoker(this.SetText);
- this.Invoke(invoker, text, tb);
- }
-
- private void SetText(string text, TextBox tb)
- {
- tb.Text = text;
- }
-
- private string GetCurBannerPath()
- {
- if (string.IsNullOrEmpty(BannerReplace))
- return TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\";
- else
- return TempBannerPath + "arc\\";
- }
-
- private string GetCurIconPath()
- {
- if (string.IsNullOrEmpty(IconReplace))
- return TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\";
- else
- return TempIconPath + "arc\\";
- }
-
- private void SetSourceWad(object sender, EventArgs e)
- {
- tbSourceWad.Text = SourceWad;
- }
-
- private void ForwarderDialogSimple()
- {
- CustomizeMii_InputBox ib = new CustomizeMii_InputBox(false);
- ib.Size = new Size(ib.Size.Width, 120);
- ib.lbInfo.Text = "Enter the application folder where the forwarder will point to (3-18 chars)";
- ib.tbInput.MaxLength = 18;
- ib.btnExit.Text = "Close";
- ib.cbElf.Visible = true;
-
- ib.tbInput.Text = SimpleForwarder.AppFolder;
- ib.cbElf.Checked = SimpleForwarder.ForwardToElf;
-
- if (ib.ShowDialog() == DialogResult.OK)
- {
- SimpleForwarder.ForwardToElf = ib.cbElf.Checked;
- SimpleForwarder.AppFolder = ib.Input;
- SetText(tbDol, string.Format("Simple Forwarder: \"SD:\\apps\\{0}\\boot.{1}\"",
- SimpleForwarder.AppFolder, SimpleForwarder.ForwardToElf == true ? "elf" : "dol"));
- btnBrowseDol.Text = "Clear";
- }
- }
-
- private void ForwarderDialogComplex()
- {
- CustomizeMii_ComplexForwarder cf = new CustomizeMii_ComplexForwarder();
- cf.tbAppFolder.Text = ComplexForwarder.AppFolder;
- //cf.rbSD.Checked = !ComplexForwarder.UsbFirst;
- //cf.rbUSB.Checked = ComplexForwarder.UsbFirst;
- //cf.rbDOL.Checked = !ComplexForwarder.ElfFirst;
- //cf.rbELF.Checked = ComplexForwarder.ElfFirst;
-
- if (!string.IsNullOrEmpty(ComplexForwarder.Image43))
- {
- cf.cbImage43.Checked = true;
- cf.tbImage43.Enabled = true;
- cf.btnBrowseImage43.Enabled = true;
-
- cf.tbImage43.Text = ComplexForwarder.Image43;
- }
- if (!string.IsNullOrEmpty(ComplexForwarder.Image169))
- {
- cf.cbImage169.Checked = true;
- cf.tbImage169.Enabled = true;
- cf.btnBrowseImage169.Enabled = true;
-
- cf.tbImage169.Text = ComplexForwarder.Image169;
- }
-
- if (cf.ShowDialog() == DialogResult.OK)
- {
- ComplexForwarder.AppFolder = cf.tbAppFolder.Text;
- //ComplexForwarder.UsbFirst = cf.rbUSB.Checked;
- //ComplexForwarder.ElfFirst = cf.rbELF.Checked;
- ComplexForwarder.Image43 = cf.tbImage43.Text;
- ComplexForwarder.Image169 = cf.tbImage169.Text;
-
- SetText(tbDol, string.Format("Complex Forwarder: \"{0}\"", ComplexForwarder.AppFolder));
- }
- }
-
- private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
- {
- tmrCredits.Stop();
-
- if (tabControl.SelectedTab == tabBanner)
- {
- lbxBannerTpls.SelectedIndex = -1;
- cbBannerMakeTransparent.Checked = false;
- cbBannerMakeTransparent.Enabled = false;
- AddBannerTpls(null, null);
- }
- else if (tabControl.SelectedTab == tabIcon)
- {
- lbxIconTpls.SelectedIndex = -1;
- cbIconMakeTransparent.Checked = false;
- cbIconMakeTransparent.Enabled = false;
- AddIconTpls(null, null);
- }
- else if (tabControl.SelectedTab == tabBrlyt)
- {
- AddBrlyts(null, null);
- }
- else if (tabControl.SelectedTab == tabBrlan)
- {
- AddBrlans(null, null);
- }
- else if (tabControl.SelectedTab == tabCredits)
- {
- lbCreditThanks.Location = new Point(lbCreditThanks.Location.X, panCredits.Height);
- tmrCredits.Start();
- }
- }
-
- void tmrCredits_Tick(object sender, EventArgs e)
- {
- if (lbCreditThanks.Location.Y == -130) lbCreditThanks.Location = new Point(lbCreditThanks.Location.X, panCredits.Height);
- lbCreditThanks.Location = new Point(lbCreditThanks.Location.X, lbCreditThanks.Location.Y - 1);
- }
-
- private void lbStatusText_TextChanged(object sender, EventArgs e)
- {
- if (string.IsNullOrEmpty(lbStatusText.Text) && pbProgress.Value == 100)
- {
- if (tabControl.SelectedTab == tabBanner)
- {
- try
- {
- string[] BannerTpls;
- if (string.IsNullOrEmpty(BannerReplace))
- BannerTpls = Directory.GetFiles(TempUnpackBannerTplPath);
- else
- BannerTpls = Directory.GetFiles(TempBannerPath + "arc\\timg");
-
- AddBannerTpls(BannerTpls);
- }
- catch { }
- }
- else if (tabControl.SelectedTab == tabIcon)
- {
- try
- {
- string[] IconTpls;
- if (string.IsNullOrEmpty(IconReplace))
- IconTpls = Directory.GetFiles(TempUnpackIconTplPath);
- else
- IconTpls = Directory.GetFiles(TempIconPath + "arc\\timg");
-
- AddIconTpls(IconTpls);
- }
- catch { }
- }
- else if (tabControl.SelectedTab == tabBrlyt)
- {
- try
- {
- string[] BannerBrlyt;
- if (string.IsNullOrEmpty(BannerReplace))
- BannerBrlyt = Directory.GetFiles(TempUnpackBannerBrlytPath);
- else
- BannerBrlyt = Directory.GetFiles(TempBannerPath + "arc\\blyt");
-
- string[] IconBrlyt;
- if (string.IsNullOrEmpty(IconReplace))
- IconBrlyt = Directory.GetFiles(TempUnpackIconBrlytPath);
- else
- IconBrlyt = Directory.GetFiles(TempIconPath + "arc\\blyt");
-
- AddBannerBrlyt(BannerBrlyt);
- AddIconBrlyt(IconBrlyt);
- }
- catch { }
- }
- else if (tabControl.SelectedTab == tabBrlan)
- {
- try
- {
- string[] BannerBrlan;
- if (string.IsNullOrEmpty(BannerReplace))
- BannerBrlan = Directory.GetFiles(TempUnpackBannerBrlanPath);
- else
- BannerBrlan = Directory.GetFiles(TempBannerPath + "arc\\anim");
-
- string[] IconBrlan;
- if (string.IsNullOrEmpty(IconReplace))
- IconBrlan = Directory.GetFiles(TempUnpackIconBrlanPath);
- else
- IconBrlan = Directory.GetFiles(TempIconPath + "arc\\anim");
-
- AddBannerBrlan(BannerBrlan);
- AddIconBrlan(IconBrlan);
- }
- catch { }
- }
- }
- }
-
- private Image ResizeImage(Image img, int x, int y)
- {
- Image newimage = new Bitmap(x, y);
- using (Graphics gfx = Graphics.FromImage(newimage))
- {
- gfx.DrawImage(img, 0, 0, x, y);
- }
- return newimage;
- }
-
- private void MakeBannerTplsTransparent()
- {
- foreach (string thisTpl in lbxBannerTpls.Items)
- {
- if (thisTpl.EndsWith("(Transparent)"))
- {
- string Tpl = BannerTplPath + thisTpl.Replace(" (Transparent)", string.Empty);
- byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl);
- int Width = Wii.TPL.GetTextureWidth(TplArray);
- int Height = Wii.TPL.GetTextureHeight(TplArray);
-
- Image Img = new Bitmap(Width, Height);
- Wii.TPL.ConvertToTPL(Img, Tpl, 5);
- }
- }
- }
-
- private void MakeIconTplsTransparent()
- {
- foreach (string thisTpl in lbxIconTpls.Items)
- {
- if (thisTpl.EndsWith("(Transparent)"))
- {
- string Tpl = IconTplPath + thisTpl.Replace(" (Transparent)", string.Empty);
- byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl);
- int Width = Wii.TPL.GetTextureWidth(TplArray);
- int Height = Wii.TPL.GetTextureHeight(TplArray);
-
- Image Img = new Bitmap(Width, Height);
- Wii.TPL.ConvertToTPL(Img, Tpl, 5);
- }
- }
- }
-
- private void EnableControls(object sender, EventArgs e)
- {
- for (int i = 0; i < tabControl.TabCount; i++)
- {
- if (tabControl.TabPages[i] != tabSource)
- {
- foreach (Control Ctrl in tabControl.TabPages[i].Controls)
- {
- if (Ctrl is Button) Ctrl.Enabled = true;
- else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = true;
- else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = true;
- else if (Ctrl is ComboBox) Ctrl.Enabled = true;
- }
- }
- }
- }
-
- private void DisableControls(object sender, EventArgs e)
- {
- for (int i = 0; i < tabControl.TabCount; i++)
- {
- if (tabControl.TabPages[i] != tabSource)
- {
- foreach (Control Ctrl in tabControl.TabPages[i].Controls)
- {
- if (Ctrl is Button) Ctrl.Enabled = false;
- else if ((Ctrl is TextBox) && (Ctrl.Tag != (object)"Disabled")) Ctrl.Enabled = false;
- else if (Ctrl is CheckBox && Ctrl.Tag != (object)"Independent") Ctrl.Enabled = false;
- else if (Ctrl is ComboBox) Ctrl.Enabled = false;
- }
- }
- }
- }
-
- private void UpdateCheck()
- {
- if (CheckInet() == true)
- {
- try
- {
- WebClient GetVersion = new WebClient();
-#if Mono
- string NewVersion = GetVersion.DownloadString("http://customizemii.googlecode.com/svn/monoversion.txt");
-#else
- string NewVersion = GetVersion.DownloadString("http://customizemii.googlecode.com/svn/version.txt");
-#endif
- int newVersion = Convert.ToInt32(NewVersion.Replace(".", string.Empty).Length == 2 ? (NewVersion.Replace(".", string.Empty) + "0") : NewVersion.Replace(".", string.Empty));
- int thisVersion = Convert.ToInt32(version.Replace(".", string.Empty).Length == 2 ? (version.Replace(".", string.Empty) + "0") : version.Replace(".", string.Empty));
-
- if (newVersion > thisVersion)
- {
- llbUpdateAvailabe.Text = llbUpdateAvailabe.Text.Replace("X", NewVersion);
- llbUpdateAvailabe.Visible = true;
-
- if (MessageBox.Show("Version " + NewVersion +
- " is availabe.\nDo you want the download page to be opened?",
- "Update availabe", MessageBoxButtons.YesNo, MessageBoxIcon.Information) ==
- DialogResult.Yes)
- {
- Process.Start("http://code.google.com/p/customizemii/downloads/list");
- }
- }
- }
- catch { }
- }
- }
-
-#if !Mono
- private string GetForwardMiiVersion()
- {
- return ForwardMii_Plugin.GetVersion();
- }
-
- private void UpdateCheckForwardMii()
- {
- if (File.Exists(Application.StartupPath + "\\ForwardMii.dll"))
- {
- if (CheckInet() == true)
- {
- try
- {
- string CurrentVersion = GetForwardMiiVersion();
-
- if (!string.IsNullOrEmpty(CurrentVersion))
- {
- WebClient GetVersion = new WebClient();
- string NewVersion = GetVersion.DownloadString("http://customizemii.googlecode.com/svn/forwardmii-version.txt");
-
- int newVersion = Convert.ToInt32(NewVersion.Replace(".", string.Empty).Length == 2 ? (NewVersion.Replace(".", string.Empty) + "0") : NewVersion.Replace(".", string.Empty));
- int thisVersion = Convert.ToInt32(CurrentVersion.Replace(".", string.Empty).Length == 2 ? (CurrentVersion.Replace(".", string.Empty) + "0") : CurrentVersion.Replace(".", string.Empty));
-
- if (newVersion > thisVersion)
- {
- if (MessageBox.Show("Version " + NewVersion +
- " of the ForwardMii-Plugin is availabe.\nDo you want the download page to be opened?",
- "ForwardMii Update availabe", MessageBoxButtons.YesNo, MessageBoxIcon.Information) ==
- DialogResult.Yes)
- {
- Process.Start("http://code.google.com/p/customizemii/downloads/list");
- }
- }
- }
- }
- catch { }
- }
- }
- }
-#endif
-
- private void llbSite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
- {
- try
- {
- llbSite.LinkVisited = true;
- Process.Start("http://customizemii.googlecode.com");
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnBrowseSource_Click(object sender, EventArgs e)
- {
-#if Mono
- CommonKeyCheck();
-#endif
-
- if (pbProgress.Value == 100)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Wii Channels|*.wad";
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- SourceWad = ofd.FileName;
- BackgroundWorker bwLoadChannel = new BackgroundWorker();
- bwLoadChannel.DoWork += new DoWorkEventHandler(bwLoadChannel_DoWork);
- bwLoadChannel.ProgressChanged += new ProgressChangedEventHandler(bwLoadChannel_ProgressChanged);
- bwLoadChannel.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwLoadChannel_RunWorkerCompleted);
- bwLoadChannel.WorkerReportsProgress = true;
- bwLoadChannel.RunWorkerAsync(ofd.FileName);
- }
- }
- }
-
- private void btnLoadBaseWad_Click(object sender, EventArgs e)
- {
- if (lbxBaseWads.SelectedIndex != -1)
- {
- if (CheckInet() == true)
- {
- if (pbProgress.Value == 100)
- {
- if (tbSourceWad.Text != SourceWadUrls[lbxBaseWads.SelectedIndex])
- {
- try
- {
- SourceWad = SourceWadUrls[lbxBaseWads.SelectedIndex];
- tbSourceWad.Text = SourceWad;
- WebClient Client = new WebClient();
- Client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Client_DownloadProgressChanged);
- Client.DownloadFileCompleted += new AsyncCompletedEventHandler(Client_DownloadFileCompleted);
-
- lbStatusText.Text = "Downloading Base WAD...";
- pbProgress.Value = 0;
- if (!Directory.Exists(TempWadPath.Remove(TempWadPath.LastIndexOf('\\'))))
- Directory.CreateDirectory(TempWadPath.Remove(TempWadPath.LastIndexOf('\\')));
- Client.DownloadFileAsync(new Uri(SourceWad), TempWadPath);
- }
- catch (Exception ex)
- {
- tbSourceWad.Text = string.Empty;
- ErrorBox(ex.Message);
- }
- }
- }
-
- }
- else
- {
- ErrorBox("You're not connected to the Internet!");
- }
- }
- }
-
- void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
- {
- pbProgress.Value = e.ProgressPercentage;
- }
-
- void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
- {
- pbProgress.Value = 100;
- lbStatusText.Text = string.Empty;
-
- if (File.Exists(TempWadPath))
- {
- FileInfo fi = new FileInfo(TempWadPath);
-
- if (fi.Length > 0)
- {
- BackgroundWorker bwLoadChannel = new BackgroundWorker();
- bwLoadChannel.DoWork += new DoWorkEventHandler(bwLoadChannel_DoWork);
- bwLoadChannel.ProgressChanged += new ProgressChangedEventHandler(bwLoadChannel_ProgressChanged);
- bwLoadChannel.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwLoadChannel_RunWorkerCompleted);
- bwLoadChannel.WorkerReportsProgress = true;
- bwLoadChannel.RunWorkerAsync(TempWadPath);
- }
- else
- {
- SetText(tbSourceWad, string.Empty);
- File.Delete(TempWadPath);
- ErrorBox("The requested file couldn't be downloaded.");
- }
- }
- }
-
- private void btnPreviewBaseWad_Click(object sender, EventArgs e)
- {
- if (lbxBaseWads.SelectedIndex != -1)
- {
- if (CheckInet() == true)
- {
- if (!string.IsNullOrEmpty(SourceWadPreviewUrls[lbxBaseWads.SelectedIndex]))
- {
- try
- {
- Process.Start(SourceWadPreviewUrls[lbxBaseWads.SelectedIndex]);
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- else
- InfoBox("There's no preview of this channel availabe, sorry!");
- }
- else
- {
- ErrorBox("You're not connected to the Internet!");
- }
- }
- }
-
- private void btnSaveBaseWad_Click(object sender, EventArgs e)
- {
- if (lbxBaseWads.SelectedIndex != -1)
- {
- if (CheckInet() == true)
- {
- if (pbProgress.Value == 100)
- {
- string Url = SourceWadUrls[lbxBaseWads.SelectedIndex];
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "Wii Channels|*.wad";
- sfd.FileName = Url.Remove(0, Url.LastIndexOf('/') + 1);
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- if (tbSourceWad.Text == SourceWadUrls[lbxBaseWads.SelectedIndex] && File.Exists(TempWadPath))
- {
- File.Copy(TempWadPath, sfd.FileName, true);
- InfoBox(string.Format("Saved channel as {0}", Path.GetFileName(sfd.FileName)));
- }
- else
- {
- try
- {
- WebClient SaveClient = new WebClient();
- SaveClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(SaveClient_DownloadProgressChanged);
- SaveClient.DownloadFileCompleted += new AsyncCompletedEventHandler(SaveClient_DownloadFileCompleted);
-
- lbStatusText.Text = "Downloading Base WAD...";
- pbProgress.Value = 0;
- SaveClient.DownloadFileAsync(new Uri(Url), sfd.FileName);
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- }
-
- }
- else
- {
- ErrorBox("You're not connected to the Internet!");
- }
- }
- }
-
- void SaveClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
- {
- pbProgress.Value = e.ProgressPercentage;
- }
-
- void SaveClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
- {
- lbStatusText.Text = string.Empty;
- pbProgress.Value = 100;
- }
-
- private void cmbReplace_SelectedIndexChanged(object sender, EventArgs e)
- {
- switch (cmbReplace.SelectedIndex)
- {
- case 1:
- tbReplace.Text = IconReplace;
- break;
- case 2:
- tbReplace.Text = SoundReplace;
- break;
- default:
- tbReplace.Text = BannerReplace;
- break;
- }
- }
-
- private void btnBrowseReplace_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(tbSourceWad.Text))
- {
- if (pbProgress.Value == 100)
- {
- if (cmbReplace.SelectedIndex == 2) //sound
- {
- try
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|sound.bin|sound.bin|All|*.wad;00000000.app;sound.bin";
- ofd.FilterIndex = 4;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName != tbSourceWad.Text)
- {
- SoundReplace = ofd.FileName;
- SetText(tbReplace, SoundReplace);
- BackgroundWorker bwSoundReplace = new BackgroundWorker();
- bwSoundReplace.DoWork += new DoWorkEventHandler(bwSoundReplace_DoWork);
- bwSoundReplace.ProgressChanged += new ProgressChangedEventHandler(bwSoundReplace_ProgressChanged);
- bwSoundReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwSoundReplace_RunWorkerCompleted);
- bwSoundReplace.WorkerReportsProgress = true;
- bwSoundReplace.RunWorkerAsync(ofd.FileName);
- }
- }
- }
- catch (Exception ex)
- {
- SoundReplace = string.Empty;
- SetText(tbReplace, SoundReplace);
- ErrorBox(ex.Message);
- }
- }
- else if (cmbReplace.SelectedIndex == 1) //icon
- {
- try
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|icon.bin|icon.bin|All|*.wad;00000000.app;icon.bin";
- ofd.FilterIndex = 4;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName != tbSourceWad.Text)
- {
- IconReplace = ofd.FileName;
- SetText(tbReplace, IconReplace);
- BackgroundWorker bwIconReplace = new BackgroundWorker();
- bwIconReplace.DoWork += new DoWorkEventHandler(bwIconReplace_DoWork);
- bwIconReplace.ProgressChanged += new ProgressChangedEventHandler(bwIconReplace_ProgressChanged);
- bwIconReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwIconReplace_RunWorkerCompleted);
- bwIconReplace.WorkerReportsProgress = true;
- bwIconReplace.RunWorkerAsync(ofd.FileName);
- }
- }
- }
- catch (Exception ex)
- {
- IconReplace = string.Empty;
- SetText(tbReplace, IconReplace);
- ErrorBox(ex.Message);
- }
- }
- else //banner
- {
- try
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|banner.bin|banner.bin|All|*.wad;00000000.app;banner.bin";
- ofd.FilterIndex = 4;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName != tbSourceWad.Text)
- {
- BannerReplace = ofd.FileName;
- SetText(tbReplace, BannerReplace);
- BackgroundWorker bwBannerReplace = new BackgroundWorker();
- bwBannerReplace.DoWork += new DoWorkEventHandler(bwBannerReplace_DoWork);
- bwBannerReplace.ProgressChanged += new ProgressChangedEventHandler(bwBannerReplace_ProgressChanged);
- bwBannerReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwBannerReplace_RunWorkerCompleted);
- bwBannerReplace.WorkerReportsProgress = true;
- bwBannerReplace.RunWorkerAsync(ofd.FileName);
- }
- }
- }
- catch (Exception ex)
- {
- BannerReplace = string.Empty;
- SetText(tbReplace, BannerReplace);
- ErrorBox(ex.Message);
- }
- }
- }
- }
- }
-
- private void btnClearReplace_Click(object sender, EventArgs e)
- {
- if (cmbReplace.SelectedIndex == 2) //sound
- {
- SoundReplace = string.Empty;
- SetText(tbReplace, SoundReplace);
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- SetText(tbSound, string.Empty);
- }
- else if (cmbReplace.SelectedIndex == 1) //icon
- {
- IconReplace = string.Empty;
- SetText(tbReplace, IconReplace);
- if (Directory.Exists(TempIconPath)) Directory.Delete(TempIconPath, true);
- }
- else //banner
- {
- BannerReplace = string.Empty;
- SetText(tbReplace, BannerReplace);
- if (Directory.Exists(TempBannerPath)) Directory.Delete(TempBannerPath, true);
- }
- }
-
- private void btnBrowseDol_Click(object sender, EventArgs e)
- {
- if (btnBrowseDol.Text == "Clear")
- {
- if (Directory.Exists(TempTempPath + "TempWad")) Directory.Delete(TempTempPath + "TempWad", true);
- if (File.Exists(TempDolPath)) File.Delete(TempDolPath);
-
- SetText(tbDol, string.Empty);
- btnBrowseDol.Text = "Browse...";
-
- SimpleForwarder.Clear();
- ComplexForwarder.Clear();
- }
- else
- {
- cmDol.Show(MousePosition);
- }
- }
-
- private void btnBrowseSound_Click(object sender, EventArgs e)
- {
- if (btnBrowseSound.Text == "Clear")
- {
- if (File.Exists(TempWavePath)) File.Delete(TempWavePath);
- if (File.Exists(TempBnsPath)) File.Delete(TempBnsPath);
- SetText(tbSound, string.Empty);
- btnBrowseSound.Text = "Browse...";
- }
- else
- cmSound.Show(MousePosition);
- }
-
- private void lbxBannerTpls_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxBannerTpls.SelectedIndex != -1)
- {
- try
- {
- cbBannerMakeTransparent.Enabled = true;
- cbBannerMakeTransparent.Checked = lbxBannerTpls.SelectedItem.ToString().EndsWith("(Transparent)");
-
- string TplFile = BannerTplPath + lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- int TplFormat = Wii.TPL.GetTextureFormat(TplFile);
-
- switch (TplFormat)
- {
- case 0:
- cmbFormatBanner.SelectedIndex = 6;
- break;
- case 1:
- cmbFormatBanner.SelectedIndex = 5;
- break;
- case 2:
- cmbFormatBanner.SelectedIndex = 4;
- break;
- case 3:
- cmbFormatBanner.SelectedIndex = 3;
- break;
- case 4:
- cmbFormatBanner.SelectedIndex = 1;
- break;
- case 5:
- cmbFormatBanner.SelectedIndex = 2;
- break;
- case 6:
- cmbFormatBanner.SelectedIndex = 0;
- break;
- case 14:
- cmbFormatBanner.SelectedIndex = 7;
- break;
- default:
- cmbFormatBanner.SelectedIndex = -1;
- break;
- }
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- else
- cbBannerMakeTransparent.Enabled = false;
- }
-
- private void lbxIconTpls_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxIconTpls.SelectedIndex != -1)
- {
- try
- {
- cbIconMakeTransparent.Enabled = true;
- cbIconMakeTransparent.Checked = lbxIconTpls.SelectedItem.ToString().EndsWith("(Transparent)");
-
- string TplFile = IconTplPath + lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- int TplFormat = Wii.TPL.GetTextureFormat(TplFile);
-
- switch (TplFormat)
- {
- case 0:
- cmbFormatIcon.SelectedIndex = 6;
- break;
- case 1:
- cmbFormatIcon.SelectedIndex = 5;
- break;
- case 2:
- cmbFormatIcon.SelectedIndex = 4;
- break;
- case 3:
- cmbFormatIcon.SelectedIndex = 3;
- break;
- case 4:
- cmbFormatIcon.SelectedIndex = 1;
- break;
- case 5:
- cmbFormatIcon.SelectedIndex = 2;
- break;
- case 6:
- cmbFormatIcon.SelectedIndex = 0;
- break;
- case 14:
- cmbFormatIcon.SelectedIndex = 7;
- break;
- default:
- cmbFormatIcon.SelectedIndex = -1;
- break;
- }
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- else
- cbIconMakeTransparent.Enabled = false;
- }
-
- private void btnReplaceBanner_Click(object sender, EventArgs e)
- {
- if (lbxBannerTpls.SelectedIndex != -1)
- {
- int Format = cmbFormatBanner.SelectedIndex;
-
- if (Format == 0 || Format == 1 || Format == 2)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|TPL|*.tpl|All|*.png;*.jpg;*.gif;*.bmp;*.tpl";
- ofd.FilterIndex = 6;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- string Tpl = BannerTplPath + lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl);
- Image Img;
-
- if (!ofd.FileName.ToLower().EndsWith(".tpl")) Img = Image.FromFile(ofd.FileName);
- else Img = Wii.TPL.ConvertFromTPL(ofd.FileName);
-
- int TplFormat;
- int X = Wii.TPL.GetTextureWidth(TplArray);
- int Y = Wii.TPL.GetTextureHeight(TplArray);
-
- if (X != Img.Width ||
- Y != Img.Height)
- {
- Img = ResizeImage(Img, X, Y);
- }
-
- switch (Format)
- {
- case 1:
- TplFormat = 4;
- break;
- case 2:
- TplFormat = 5;
- break;
- default:
- TplFormat = 6;
- break;
- }
-
- Wii.TPL.ConvertToTPL(Img, Tpl, TplFormat);
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- else
- {
- ErrorBox("This format is not supported, you must choose either RGBA8, RGB565 or RGB5A3!");
- }
- }
- }
-
- private void btnExtractBanner_Click(object sender, EventArgs e)
- {
- if (lbxBannerTpls.SelectedIndex != -1)
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|TPL|*.tpl|All|*.png;*.jpg;*.gif;*.bmp;*.tpl";
- sfd.FilterIndex = 6;
- sfd.FileName = lbxBannerTpls.SelectedItem.ToString().Replace(".tpl", string.Empty);
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- if (!sfd.FileName.ToLower().EndsWith(".tpl"))
- {
- string Tpl = BannerTplPath + lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- Image Img = Wii.TPL.ConvertFromTPL(Tpl);
-
- switch (sfd.FileName.Remove(0, sfd.FileName.LastIndexOf('.')))
- {
- case ".jpg":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
- break;
- case ".gif":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Gif);
- break;
- case ".bmp":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
- break;
- default:
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
- break;
- }
- }
- else
- {
- string Tpl = BannerTplPath + lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- File.Copy(Tpl, sfd.FileName, true);
- }
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- }
-
- private void btnPreviewBanner_Click(object sender, EventArgs e)
- {
- if (lbxBannerTpls.SelectedIndex != -1)
- {
- try
- {
- string Tpl = BannerTplPath + lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- Image Img = Wii.TPL.ConvertFromTPL(Tpl);
-
- CustomizeMii_Preview pvw = new CustomizeMii_Preview();
-
- if (Img.Width > 200) pvw.Width = Img.Width + 50;
- else pvw.Width = 250;
- if (Img.Height > 200) pvw.Height = Img.Height + 50;
- else pvw.Height = 250;
-
- pvw.pbImage.Image = Img;
- pvw.Text = string.Format("CustomizeMii - Preview ({0} x {1})", Img.Width, Img.Height);
-
- pvw.ShowDialog();
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
-
- lbxBannerTpls.Focus();
- }
- }
-
- private void btnReplaceIcon_Click(object sender, EventArgs e)
- {
- if (lbxIconTpls.SelectedIndex != -1)
- {
- int Format = cmbFormatIcon.SelectedIndex;
-
- if (Format == 0 || Format == 1 || Format == 2)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|TPL|*.tpl|All|*.png;*.jpg;*.gif;*.bmp;*.tpl";
- ofd.FilterIndex = 6;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- string Tpl = IconTplPath + lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- byte[] TplArray = Wii.Tools.LoadFileToByteArray(Tpl);
- Image Img;
-
- if (!ofd.FileName.ToLower().EndsWith(".tpl")) Img = Image.FromFile(ofd.FileName);
- else Img = Wii.TPL.ConvertFromTPL(ofd.FileName);
-
- int TplFormat;
- int X = Wii.TPL.GetTextureWidth(TplArray);
- int Y = Wii.TPL.GetTextureHeight(TplArray);
-
- if (X != Img.Width ||
- Y != Img.Height)
- {
- Img = ResizeImage(Img, X, Y);
- }
-
- switch (Format)
- {
- case 1:
- TplFormat = 4;
- break;
- case 2:
- TplFormat = 5;
- break;
- default:
- TplFormat = 6;
- break;
- }
-
- Wii.TPL.ConvertToTPL(Img, Tpl, TplFormat);
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- else
- {
- ErrorBox("This format is not supported, you must choose either RGBA8, RGB565 or RGB5A3!");
- }
- }
- }
-
- private void btnExtractIcon_Click(object sender, EventArgs e)
- {
- if (lbxIconTpls.SelectedIndex != -1)
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|TPL|*.tpl|All|*.png;*.jpg;*.gif;*.bmp;*.tpl";
- sfd.FilterIndex = 6;
- sfd.FileName = lbxIconTpls.SelectedItem.ToString().Replace(".tpl", string.Empty);
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- if (!sfd.FileName.ToLower().EndsWith(".tpl"))
- {
- string Tpl = IconTplPath + lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- Image Img = Wii.TPL.ConvertFromTPL(Tpl);
-
- switch (sfd.FileName.Remove(0, sfd.FileName.LastIndexOf('.')))
- {
- case ".jpg":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
- break;
- case ".gif":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Gif);
- break;
- case ".bmp":
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
- break;
- default:
- Img.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
- break;
- }
- }
- else
- {
- string Tpl = IconTplPath + lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- File.Copy(Tpl, sfd.FileName, true);
- }
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- }
-
- private void btnPreviewIcon_Click(object sender, EventArgs e)
- {
- if (lbxIconTpls.SelectedIndex != -1)
- {
- try
- {
- string Tpl = IconTplPath + lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- Image Img = Wii.TPL.ConvertFromTPL(Tpl);
-
- CustomizeMii_Preview pvw = new CustomizeMii_Preview();
-
- if (Img.Width > 200) pvw.Width = Img.Width + 50;
- else pvw.Width = 250;
- if (Img.Height > 200) pvw.Height = Img.Height + 50;
- else pvw.Height = 250;
-
- pvw.pbImage.Image = Img;
- pvw.Text = string.Format("CustomizeMii - Preview ({0} x {1})", Img.Width, Img.Height);
-
- pvw.ShowDialog();
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
-
- lbxIconTpls.Focus();
- }
- }
-
- private bool FailureCheck()
- {
- try
- {
- //Check Unpack Folder
- if (CheckUnpackFolder() == false)
- {
- if (UnpackFolderErrorCount > 0)
- {
- ErrorBox("Something's wrong with the temporary files.\nYou may have to start again." +
- "\n\nIf this message keeps bothering you, please report as much information " +
- "as possible at the issue tracker: http://code.google.com/p/customizemii/issues/list");
- }
- else
- {
- ErrorBox("Something's wrong with the temporary files.\nYou may have to start again.");
- }
-
- UnpackFolderErrorCount++;
- return false;
- }
-
- //Check Channel Title Boxes
- if (!(!string.IsNullOrEmpty(tbAllLanguages.Text) ||
- (!string.IsNullOrEmpty(tbEnglish.Text) &&
- !string.IsNullOrEmpty(tbJapanese.Text) &&
- !string.IsNullOrEmpty(tbGerman.Text) &&
- !string.IsNullOrEmpty(tbFrench.Text) &&
- !string.IsNullOrEmpty(tbSpanish.Text) &&
- !string.IsNullOrEmpty(tbItalian.Text) &&
- !string.IsNullOrEmpty(tbDutch.Text))))
- {
- ErrorBox("You must either enter a general Channel Title or one for each language!");
- return false;
- }
-
- //Check Title ID Length + Chars
- if (tbTitleID.Text.Length != 4)
- {
- ErrorBox("The Title ID must be 4 characters long!"); return false;
- }
-
- Regex allowedchars = new Regex("[A-Z0-9]{4}$");
- if (!allowedchars.IsMatch(tbTitleID.Text.ToUpper()))
- {
- ErrorBox("Please enter a valid Title ID!"); return false;
- }
-
- //Check brlan files
- string[] ValidBrlans = new string[] { "banner.brlan", "icon.brlan", "banner_loop.brlan", "icon_loop.brlan", "banner_start.brlan", "icon_start.brlan" };
- foreach (string thisBrlan in lbxBrlanBanner.Items)
- {
- if (!Wii.Tools.StringExistsInStringArray(thisBrlan.ToLower(), ValidBrlans))
- {
- ErrorBox(thisBrlan + " is not a valid brlan filename!");
- return false;
- }
- }
- foreach (string thisBrlan in lbxBrlanIcon.Items)
- {
- if (!Wii.Tools.StringExistsInStringArray(thisBrlan.ToLower(), ValidBrlans))
- {
- ErrorBox(thisBrlan + " is not a valid brlan filename!");
- return false;
- }
- }
-
- //Check TPLs
- List BannerTpls = new List();
- List IconTpls = new List();
- foreach (string thisTpl in lbxBannerTpls.Items) BannerTpls.Add(thisTpl.Replace(" (Transparent)", string.Empty));
- foreach (string thisTpl in lbxIconTpls.Items) IconTpls.Add(thisTpl.Replace(" (Transparent)", string.Empty));
-
- string[] BannerBrlytPath;
- string[] IconBrlytPath;
-
- if (string.IsNullOrEmpty(BannerReplace))
- BannerBrlytPath = Directory.GetFiles(TempUnpackBannerBrlytPath);
- else
- BannerBrlytPath = Directory.GetFiles(TempBannerPath + "arc\\blyt");
- if (string.IsNullOrEmpty(IconReplace))
- IconBrlytPath = Directory.GetFiles(TempUnpackIconBrlytPath);
- else
- IconBrlytPath = Directory.GetFiles(TempIconPath + "arc\\blyt");
-
- string[] BannerMissing;
- string[] BannerUnused;
- string[] IconMissing;
- string[] IconUnused;
-
- //Check for missing TPLs
- if (Wii.Brlyt.CheckForMissingTpls(BannerBrlytPath[0], BannerTpls.ToArray(), out BannerMissing) == true)
- {
- ErrorBox("The following Banner TPLs are required by the banner.brlyt, but missing:\n\n" + string.Join("\n", BannerMissing));
- return false;
- }
- if (Wii.Brlyt.CheckForMissingTpls(IconBrlytPath[0], IconTpls.ToArray(), out IconMissing) == true)
- {
- ErrorBox("The following Icon TPLs are required by the icon.brlyt, but missing:\n\n" + string.Join("\n", IconMissing));
- return false;
- }
-
- //Check Sound length
- int soundLength = 0;
- if (!string.IsNullOrEmpty(tbSound.Text) && string.IsNullOrEmpty(SoundReplace))
- {
- if (!tbSound.Text.ToLower().EndsWith(".bns") && !tbSound.Text.StartsWith("BNS:"))
- {
- string SoundFile = tbSound.Text;
- if (tbSound.Text.ToLower().EndsWith(".mp3")) SoundFile = TempWavePath;
-
- soundLength = Wii.Sound.GetWaveLength(SoundFile);
- if (soundLength > SoundMaxLength)
- {
- ErrorBox(string.Format("Your Sound is longer than {0} seconds and thus not supported.\nIt is recommended to use a Sound shorter than {1} seconds, the maximum length is {0} seconds!", SoundMaxLength, SoundWarningLength));
- return false;
- }
- }
- }
-
- /*Errors till here..
- From here only Warnings!*/
-
- if (soundLength > SoundWarningLength)
- {
- if (MessageBox.Show(string.Format("Your Sound is longer than {0} seconds.\nIt is recommended to use Sounds that are shorter than {0} seconds!\nDo you still want to continue?", SoundWarningLength), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
- return false;
- }
-
- //Check BNS sound length
- if (tbSound.Text.StartsWith("BNS:") || tbSound.Text.EndsWith(".bns"))
- {
- string bnsFile = tbSound.Text;
- if (tbSound.Text.StartsWith("BNS:")) bnsFile = TempBnsPath;
-
- int bnsLength = Wii.Sound.GetBnsLength(bnsFile);
- if (bnsLength > BnsWarningLength)
- {
- if (MessageBox.Show(string.Format("Your BNS Sound is longer than {0} seconds.\nIt is recommended to use Sounds that are shorter than {0} seconds!\nDo you still want to continue?", BnsWarningLength), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
- return false;
- }
- }
-
- //Check if brlyt or brlan were changed
- if (BrlytChanged == true && BrlanChanged == false)
- {
- if (MessageBox.Show("You have changed the brlyt, but didn't change the brlan.\nAre you sure this is correct?", "brlyt Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
- return false;
- }
- else if (BrlanChanged == true && BrlytChanged == false)
- {
- if (MessageBox.Show("You have changed the brlan, but didn't change the brlyt.\nAre you sure this is correct?", "brlan Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
- return false;
- }
-
- //Check for unused TPLs (Do this at the end of the failure checks, because we don't want a
- // MessageBox asking if unused TPLs should be deleted and after that any error)
- if (Wii.Brlyt.CheckForUnusedTpls(BannerBrlytPath[0], BannerTpls.ToArray(), out BannerUnused) == true)
- {
- DialogResult dlgresult = MessageBox.Show(
- "The following Banner TPLs are unused by the banner.brlyt:\n\n" +
- string.Join("\n", BannerUnused) +
- "\n\nDo you want them to be deleted before the WAD is being created? (Saves space!)",
- "Delete unused TPLs?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dlgresult == DialogResult.Yes)
- {
- foreach (string thisTpl in BannerUnused)
- {
- if (string.IsNullOrEmpty(BannerReplace))
- File.Delete(TempUnpackBannerTplPath + thisTpl);
- else
- File.Delete(TempBannerPath + "arc\\timg\\" + thisTpl);
- }
- }
- else if (dlgresult == DialogResult.Cancel) return false;
- }
- if (Wii.Brlyt.CheckForUnusedTpls(IconBrlytPath[0], IconTpls.ToArray(), out IconUnused) == true)
- {
- DialogResult dlgresult = MessageBox.Show(
- "The following Icon TPLs are unused by the icon.brlyt:\n\n" +
- string.Join("\n", IconUnused) +
- "\n\nDo you want them to be deleted before the WAD is being created? (Saves memory!)",
- "Delete unused TPLs?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dlgresult == DialogResult.Yes)
- {
- foreach (string thisTpl in IconUnused)
- {
- if (string.IsNullOrEmpty(IconReplace))
- File.Delete(TempUnpackIconTplPath + thisTpl);
- else
- File.Delete(TempIconPath + "arc\\timg\\" + thisTpl);
- }
- }
- else if (dlgresult == DialogResult.Cancel) return false;
- }
-
- return true;
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- return false;
- }
- }
-
- private bool CheckUnpackFolder()
- {
- try
- {
- //Check Unpack Root
- string[] RootFiles = Directory.GetFiles(TempUnpackPath);
- string[] RootDirs = Directory.GetDirectories(TempUnpackPath);
-
- foreach (string thisFile in RootFiles)
- {
- if (!thisFile.ToLower().EndsWith(".app") &&
- !thisFile.ToLower().EndsWith(".cert") &&
- !thisFile.ToLower().EndsWith(".tik") &&
- !thisFile.ToLower().EndsWith(".tmd"))
- File.Delete(thisFile);
- }
-
- if (RootDirs.Length > 1)
- {
- foreach (string thisDir in RootDirs)
- {
- if (!thisDir.EndsWith("00000000.app_OUT"))
- Directory.Delete(thisDir, true);
- }
- }
-
- //Check 00000000.app_OUT
- string[] MetaFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT");
- string[] MetaDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT");
-
- foreach (string thisFile in MetaFiles)
- File.Delete(thisFile);
- foreach (string thisDir in MetaDirs)
- if (!thisDir.ToLower().EndsWith("meta"))
- Directory.Delete(thisDir, true);
-
- string[] AppFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta");
- string[] AppDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta");
-
- foreach (string thisFile in AppFiles)
- {
- if (!thisFile.ToLower().EndsWith("banner.bin") &&
- !thisFile.ToLower().EndsWith("icon.bin") &&
- !thisFile.ToLower().EndsWith("sound.bin"))
- File.Delete(thisFile);
- }
-
- if (AppDirs.Length > 2)
- {
- foreach (string thisDir in AppDirs)
- {
- if (!thisDir.EndsWith("banner.bin_OUT") &&
- !thisDir.EndsWith("icon.bin_OUT"))
- Directory.Delete(thisDir, true);
- }
- }
-
- //Check banner.bin_OUT / Banner Replace Path
- if (string.IsNullOrEmpty(BannerReplace))
- {
- string[] ArcFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT");
- string[] ArcDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT");
-
- foreach (string thisFile in ArcFiles)
- File.Delete(thisFile);
- foreach (string thisDir in ArcDirs)
- if (!thisDir.ToLower().EndsWith("arc"))
- Directory.Delete(thisDir, true);
-
- string[] BannerFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc");
- string[] BannerDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc");
-
- foreach (string thisFile in BannerFiles)
- File.Delete(thisFile);
-
- if (BannerDirs.Length > 3)
- {
- foreach (string thisDir in BannerDirs)
- {
- if (!thisDir.ToLower().EndsWith("anim") &&
- !thisDir.ToLower().EndsWith("blyt") &&
- !thisDir.ToLower().EndsWith("timg"))
- Directory.Delete(thisDir, true);
- }
- }
-
- string[] AnimFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\anim");
- string[] AnimDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\anim");
-
- foreach (string thisFile in AnimFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlan"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in AnimDirs)
- Directory.Delete(thisDir, true);
-
- string[] BlytFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\blyt");
- string[] BlytDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\blyt");
-
- foreach (string thisFile in BlytFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlyt"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in BlytDirs)
- Directory.Delete(thisDir, true);
-
- string[] TimgFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\timg");
- string[] TimgDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\banner.bin_OUT\\arc\\timg");
-
- foreach (string thisFile in TimgFiles)
- {
- if (!thisFile.ToLower().EndsWith(".tpl"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in TimgDirs)
- Directory.Delete(thisDir, true);
- }
- else
- {
- string[] ArcFiles = Directory.GetFiles(TempBannerPath);
- string[] ArcDirs = Directory.GetDirectories(TempBannerPath);
-
- foreach (string thisFile in ArcFiles)
- File.Delete(thisFile);
- foreach (string thisDir in ArcDirs)
- if (!thisDir.ToLower().EndsWith("arc"))
- Directory.Delete(thisDir, true);
-
- string[] BannerFiles = Directory.GetFiles(TempBannerPath + "arc");
- string[] BannerDirs = Directory.GetDirectories(TempBannerPath + "arc");
-
- foreach (string thisFile in BannerFiles)
- File.Delete(thisFile);
-
- if (BannerDirs.Length > 3)
- {
- foreach (string thisDir in BannerDirs)
- {
- if (!thisDir.ToLower().EndsWith("anim") &&
- !thisDir.ToLower().EndsWith("blyt") &&
- !thisDir.ToLower().EndsWith("timg"))
- Directory.Delete(thisDir, true);
- }
- }
-
- string[] AnimFiles = Directory.GetFiles(TempBannerPath + "arc\\anim");
- string[] AnimDirs = Directory.GetDirectories(TempBannerPath + "arc\\anim");
-
- foreach (string thisFile in AnimFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlan"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in AnimDirs)
- Directory.Delete(thisDir, true);
-
- string[] BlytFiles = Directory.GetFiles(TempBannerPath + "arc\\blyt");
- string[] BlytDirs = Directory.GetDirectories(TempBannerPath + "arc\\blyt");
-
- foreach (string thisFile in BlytFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlyt"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in BlytDirs)
- Directory.Delete(thisDir, true);
-
- string[] TimgFiles = Directory.GetFiles(TempBannerPath + "arc\\timg");
- string[] TimgDirs = Directory.GetDirectories(TempBannerPath + "arc\\timg");
-
- foreach (string thisFile in TimgFiles)
- {
- if (!thisFile.ToLower().EndsWith(".tpl"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in TimgDirs)
- Directory.Delete(thisDir, true);
- }
-
- //Check icon.bin_OUT / Icon Replace Path
- if (string.IsNullOrEmpty(IconReplace))
- {
- string[] ArcFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT");
- string[] ArcDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT");
-
- foreach (string thisFile in ArcFiles)
- File.Delete(thisFile);
- foreach (string thisDir in ArcDirs)
- if (!thisDir.ToLower().EndsWith("arc"))
- Directory.Delete(thisDir, true);
-
- string[] IconFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc");
- string[] IconDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc");
-
- foreach (string thisFile in IconFiles)
- File.Delete(thisFile);
-
- if (IconDirs.Length > 3)
- {
- foreach (string thisDir in IconDirs)
- {
- if (!thisDir.ToLower().EndsWith("anim") &&
- !thisDir.ToLower().EndsWith("blyt") &&
- !thisDir.ToLower().EndsWith("timg"))
- Directory.Delete(thisDir, true);
- }
- }
-
- string[] AnimFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\anim");
- string[] AnimDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\anim");
-
- foreach (string thisFile in AnimFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlan"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in AnimDirs)
- Directory.Delete(thisDir, true);
-
- string[] BlytFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\blyt");
- string[] BlytDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\blyt");
-
- foreach (string thisFile in BlytFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlyt"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in BlytDirs)
- Directory.Delete(thisDir, true);
-
- string[] TimgFiles = Directory.GetFiles(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\timg");
- string[] TimgDirs = Directory.GetDirectories(TempUnpackPath + "00000000.app_OUT\\meta\\icon.bin_OUT\\arc\\timg");
-
- foreach (string thisFile in TimgFiles)
- {
- if (!thisFile.ToLower().EndsWith(".tpl"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in TimgDirs)
- Directory.Delete(thisDir, true);
- }
- else
- {
- string[] ArcFiles = Directory.GetFiles(TempIconPath);
- string[] ArcDirs = Directory.GetDirectories(TempIconPath);
-
- foreach (string thisFile in ArcFiles)
- File.Delete(thisFile);
- foreach (string thisDir in ArcDirs)
- if (!thisDir.ToLower().EndsWith("arc"))
- Directory.Delete(thisDir, true);
-
- string[] IconFiles = Directory.GetFiles(TempIconPath + "arc");
- string[] IconDirs = Directory.GetDirectories(TempIconPath + "arc");
-
- foreach (string thisFile in IconFiles)
- File.Delete(thisFile);
-
- if (IconDirs.Length > 3)
- {
- foreach (string thisDir in IconDirs)
- {
- if (!thisDir.ToLower().EndsWith("anim") &&
- !thisDir.ToLower().EndsWith("blyt") &&
- !thisDir.ToLower().EndsWith("timg"))
- Directory.Delete(thisDir, true);
- }
- }
-
- string[] AnimFiles = Directory.GetFiles(TempIconPath + "arc\\anim");
- string[] AnimDirs = Directory.GetDirectories(TempIconPath + "arc\\anim");
-
- foreach (string thisFile in AnimFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlan"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in AnimDirs)
- Directory.Delete(thisDir, true);
-
- string[] BlytFiles = Directory.GetFiles(TempIconPath + "arc\\blyt");
- string[] BlytDirs = Directory.GetDirectories(TempIconPath + "arc\\blyt");
-
- foreach (string thisFile in BlytFiles)
- {
- if (!thisFile.ToLower().EndsWith(".brlyt"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in BlytDirs)
- Directory.Delete(thisDir, true);
-
- string[] TimgFiles = Directory.GetFiles(TempIconPath + "arc\\timg");
- string[] TimgDirs = Directory.GetDirectories(TempIconPath + "arc\\timg");
-
- foreach (string thisFile in TimgFiles)
- {
- if (!thisFile.ToLower().EndsWith(".tpl"))
- File.Delete(thisFile);
- }
-
- foreach (string thisDir in TimgDirs)
- Directory.Delete(thisDir, true);
- }
-
- return true;
- }
- catch (Exception ex) { ErrorBox(ex.Message); return false; }
- }
-
- private void btnCreateWad_Click(object sender, EventArgs e)
- {
- Point mousePos = MousePosition;
-
- if (mousePos.X < (this.Location.X + btnCreateWad.Location.X + Math.Ceiling(separatorBtn) + 3))
- {
- if (pbProgress.Value == 100)
- {
- if (!string.IsNullOrEmpty(tbSourceWad.Text))
- {
- if (cbFailureChecks.Checked == true || FailureCheck() == true)
- {
- try
- {
- WadCreationInfo wadInfo = new WadCreationInfo();
- wadInfo.outFile = TempPath + "SendToWii.wad";
- wadInfo.nandLoader = (WadCreationInfo.NandLoader)cmbNandLoader.SelectedIndex;
- wadInfo.sendToWii = true;
-
- BackgroundWorker bwCreateWad = new BackgroundWorker();
- bwCreateWad.DoWork += new DoWorkEventHandler(bwCreateWad_DoWork);
- bwCreateWad.ProgressChanged += new ProgressChangedEventHandler(bwCreateWad_ProgressChanged);
- bwCreateWad.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwCreateWad_RunWorkerCompleted);
- bwCreateWad.WorkerReportsProgress = true;
- bwCreateWad.RunWorkerAsync(wadInfo);
-
- // @WiiCrazy: The WAD will be saved to >> TempTempPath + "SendToWii.wad" <<
- // here. Now a loop that waits for the BackgroundWorker to finish and then opens
- // a new window (wiiload - window or whatever) ?!
- // If it finishes successfully, the variable >> sendWadReady << will turn into 1,
- // if it errors, it will turn into -1, as long as it's running it is 0.
- }
- catch (Exception ex)
- {
- ErrorBox(ex.Message);
- }
- }
- }
- }
- }
- else
- {
- if (pbProgress.Value == 100)
- {
- if (!string.IsNullOrEmpty(tbSourceWad.Text))
- {
- if (cbFailureChecks.Checked == true || FailureCheck() == true)
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "Wii Channels|*.wad";
-
- if (!string.IsNullOrEmpty(tbAllLanguages.Text))
- sfd.FileName = tbAllLanguages.Text + " - " + tbTitleID.Text.ToUpper() + ".wad";
- else
- sfd.FileName = tbEnglish.Text + " - " + tbTitleID.Text.ToUpper() + ".wad";
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- CreationTimer.Reset();
- CreationTimer.Start();
-
- WadCreationInfo wadInfo = new WadCreationInfo();
- wadInfo.outFile = sfd.FileName;
- wadInfo.nandLoader = (WadCreationInfo.NandLoader)cmbNandLoader.SelectedIndex;
-
- BackgroundWorker bwCreateWad = new BackgroundWorker();
- bwCreateWad.DoWork += new DoWorkEventHandler(bwCreateWad_DoWork);
- bwCreateWad.ProgressChanged += new ProgressChangedEventHandler(bwCreateWad_ProgressChanged);
- bwCreateWad.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwCreateWad_RunWorkerCompleted);
- bwCreateWad.WorkerReportsProgress = true;
- bwCreateWad.RunWorkerAsync(wadInfo);
- }
- catch (Exception ex)
- {
- CreationTimer.Stop();
- ErrorBox(ex.Message);
- }
- }
- }
- }
- }
- }
- }
-
- private void lbxBrlytBanner_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxBrlytBanner.SelectedIndex != -1)
- lbxBrlytIcon.SelectedIndex = -1;
-
- if (lbxBrlytIcon.SelectedIndex == -1)
- lbBrlytActions.Text = "Banner";
- else
- lbBrlytActions.Text = "Icon";
- }
-
- private void lbxBrlytIcon_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxBrlytIcon.SelectedIndex != -1)
- lbxBrlytBanner.SelectedIndex = -1;
-
- if (lbxBrlytIcon.SelectedIndex == -1)
- lbBrlytActions.Text = "Banner";
- else
- lbBrlytActions.Text = "Icon";
- }
-
- private void lbxBrlanBanner_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxBrlanBanner.SelectedIndex != -1)
- lbxBrlanIcon.SelectedIndex = -1;
-
- if (lbxBrlanIcon.SelectedIndex == -1)
- lbBrlanActions.Text = "Banner";
- else
- lbBrlanActions.Text = "Icon";
- }
-
- private void lbxBrlanIcon_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (lbxBrlanIcon.SelectedIndex != -1)
- lbxBrlanBanner.SelectedIndex = -1;
-
- if (lbxBrlanIcon.SelectedIndex == -1)
- lbBrlanActions.Text = "Banner";
- else
- lbBrlanActions.Text = "Icon";
- }
-
- private void btnBrlanAdd_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlanActions.Text))
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "brlan Files|*.brlan";
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- bool Exists = false;
-
- if (lbBrlanActions.Text == "Banner")
- {
- for (int i = 0; i < lbxBrlanBanner.Items.Count; i++)
- if (lbxBrlanBanner.Items[i].ToString() == ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1))
- Exists = true;
-
- if (Exists == true)
- ErrorBox("This file already exists, use the Replace button!");
- else
- {
- if (string.IsNullOrEmpty(BannerReplace))
- File.Copy(ofd.FileName, TempUnpackBannerBrlanPath + ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1), true);
- else
- File.Copy(ofd.FileName, BannerBrlanPath + ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1), true);
- lbxBrlanBanner.Items.Add(ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1));
- BrlanChanged = true;
- }
- }
- else
- {
- for (int i = 0; i < lbxBrlanIcon.Items.Count; i++)
- if (lbxBrlanIcon.Items[i].ToString() == ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1))
- Exists = true;
-
- if (Exists == true)
- ErrorBox("This file already exists, use the Replace button!");
- else
- {
- if (string.IsNullOrEmpty(IconReplace))
- File.Copy(ofd.FileName, TempUnpackIconBrlanPath + ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1), true);
- else
- File.Copy(ofd.FileName, IconBrlanPath + ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1), true);
- lbxBrlanIcon.Items.Add(ofd.FileName.Remove(0, ofd.FileName.LastIndexOf('\\') + 1));
- BrlanChanged = true;
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
- }
-
- private void btnBrlytExtract_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlytActions.Text))
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "brlyt Files|*.brlyt";
-
- if (lbBrlytActions.Text == "Banner")
- sfd.FileName = lbxBrlytBanner.SelectedItem.ToString();
- else
- sfd.FileName = lbxBrlytIcon.SelectedItem.ToString();
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- string brlytFile;
-
- if (lbBrlytActions.Text == "Banner")
- {
- if (string.IsNullOrEmpty(BannerReplace))
- brlytFile = TempUnpackBannerBrlytPath + lbxBrlytBanner.SelectedItem.ToString();
- else
- brlytFile = BannerBrlytPath + lbxBrlytBanner.Items.ToString();
- }
- else
- {
- if (string.IsNullOrEmpty(IconReplace))
- brlytFile = TempUnpackIconBrlytPath + lbxBrlytIcon.SelectedItem.ToString();
- else
- brlytFile = IconBrlytPath + lbxBrlytIcon.Items.ToString();
- }
-
- File.Copy(brlytFile, sfd.FileName, true);
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
- }
-
- private void btnBrlanExtract_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlanActions.Text))
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "brlan Files|*.brlan";
-
- if (lbBrlanActions.Text == "Banner")
- sfd.FileName = lbxBrlanBanner.SelectedItem.ToString();
- else
- sfd.FileName = lbxBrlanIcon.SelectedItem.ToString();
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- string brlanFile;
-
- if (lbBrlanActions.Text == "Banner")
- {
- if (string.IsNullOrEmpty(BannerReplace))
- brlanFile = TempUnpackBannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString();
- else
- brlanFile = BannerBrlanPath + lbxBrlanBanner.Items.ToString();
- }
- else
- {
- if (string.IsNullOrEmpty(IconReplace))
- brlanFile = TempUnpackIconBrlanPath + lbxBrlanIcon.SelectedItem.ToString();
- else
- brlanFile = IconBrlanPath + lbxBrlanIcon.Items.ToString();
- }
-
- File.Copy(brlanFile, sfd.FileName, true);
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
- }
-
- private void btnBrlanDelete_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlanActions.Text))
- {
- try
- {
- string brlanFile;
-
- if (lbBrlanActions.Text == "Banner")
- {
- if (lbxBrlanBanner.Items.Count > 1)
- {
- if (string.IsNullOrEmpty(BannerReplace))
- brlanFile = TempUnpackBannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString();
- else
- brlanFile = BannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString();
-
- lbxBrlanBanner.Items.Remove(lbxBrlanBanner.SelectedItem);
- File.Delete(brlanFile);
- BrlanChanged = true;
- }
- else
- {
- ErrorBox("You can't delete the last file.\nAdd a new one first in order to delete this one.");
- }
- }
- else
- {
- if (lbxBrlanIcon.Items.Count > 1)
- {
- if (string.IsNullOrEmpty(IconReplace))
- brlanFile = TempUnpackIconBrlanPath + lbxBrlanIcon.SelectedItem.ToString();
- else
- brlanFile = IconBrlanPath + lbxBrlanIcon.SelectedItem.ToString();
-
- lbxBrlanIcon.Items.Remove(lbxBrlanIcon.SelectedItem);
- File.Delete(brlanFile);
- BrlanChanged = true;
- }
- else
- {
- ErrorBox("You can't delete the last file.\nAdd a new one first in order to delete this one.");
- }
- }
- }
- catch { }
- }
- }
-
- private void btnBrlytReplace_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlytActions.Text))
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "brlyt Files|*.brlyt";
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- if (lbBrlytActions.Text == "Banner")
- {
- if (string.IsNullOrEmpty(BannerReplace))
- {
- File.Delete(TempUnpackBannerBrlytPath + lbxBrlytBanner.SelectedItem.ToString());
- File.Copy(ofd.FileName, TempUnpackBannerBrlytPath + lbxBrlytBanner.SelectedItem.ToString(), true);
- BrlytChanged = true;
- }
- else
- {
- File.Delete(BannerBrlytPath + lbxBrlytBanner.SelectedItem.ToString());
- File.Copy(ofd.FileName, BannerBrlytPath + lbxBrlytBanner.SelectedItem.ToString(), true);
- BrlytChanged = true;
- }
- }
- else
- {
- if (string.IsNullOrEmpty(IconReplace))
- {
- File.Delete(TempUnpackIconBrlytPath + lbxBrlytIcon.SelectedItem.ToString());
- File.Copy(ofd.FileName, TempUnpackIconBrlytPath + lbxBrlytIcon.SelectedItem.ToString(), true);
- BrlytChanged = true;
- }
- else
- {
- File.Delete(IconBrlytPath + lbxBrlytIcon.SelectedItem.ToString());
- File.Copy(ofd.FileName, IconBrlytPath + lbxBrlytIcon.SelectedItem.ToString(), true);
- BrlytChanged = true;
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
- }
-
- private void btnBrlanReplace_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(lbBrlanActions.Text))
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "brlan Files|*.brlan";
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- try
- {
- if (lbBrlanActions.Text == "Banner")
- {
- if (string.IsNullOrEmpty(BannerReplace))
- {
- File.Delete(TempUnpackBannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString());
- File.Copy(ofd.FileName, TempUnpackBannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString(), true);
- BrlanChanged = true;
- }
- else
- {
- File.Delete(BannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString());
- File.Copy(ofd.FileName, BannerBrlanPath + lbxBrlanBanner.SelectedItem.ToString(), true);
- BrlanChanged = true;
- }
- }
- else
- {
- if (string.IsNullOrEmpty(IconReplace))
- {
- File.Delete(TempUnpackIconBrlanPath + lbxBrlanIcon.SelectedItem.ToString());
- File.Copy(ofd.FileName, TempUnpackIconBrlanPath + lbxBrlanIcon.SelectedItem.ToString(), true);
- BrlanChanged = true;
- }
- else
- {
- File.Delete(IconBrlanPath + lbxBrlanIcon.SelectedItem.ToString());
- File.Copy(ofd.FileName, IconBrlanPath + lbxBrlanIcon.SelectedItem.ToString(), true);
- BrlanChanged = true;
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
- }
-
- private void llbUpdateAvailabe_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
- {
- try
- {
- llbUpdateAvailabe.LinkVisited = true;
- Process.Start("http://code.google.com/p/customizemii/downloads/list");
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnDeleteBanner_Click(object sender, EventArgs e)
- {
- try
- {
- string TplName = lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- string CurBannerPath = GetCurBannerPath();
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurBannerPath + "blyt\\banner.brlyt");
-
- if (!Wii.Tools.StringExistsInStringArray(TplName, brlytTpls))
- {
- File.Delete(CurBannerPath + "timg\\" + TplName);
- lbxBannerTpls.Items.Remove(lbxBannerTpls.SelectedItem);
- }
- else
- {
- ErrorBox("This TPL is required by your banner.brlyt and thus can't be deleted!\nYou can still replace the image using the Replace button!");
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnDeleteIcon_Click(object sender, EventArgs e)
- {
- try
- {
- string TplName = lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- string CurIconPath = GetCurIconPath();
-
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurIconPath + "blyt\\icon.brlyt");
-
- if (!Wii.Tools.StringExistsInStringArray(TplName, brlytTpls))
- {
- File.Delete(CurIconPath + "timg\\" + TplName);
- lbxIconTpls.Items.Remove(lbxIconTpls.SelectedItem);
- }
- else
- {
- ErrorBox("This TPL is required by your icon.brlyt and thus can't be deleted!\nYou can still replace the image using the Replace button!");
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnAddBanner_Click(object sender, EventArgs e)
- {
- try
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "TPL|*.tpl|PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|All|*.tpl;*.png;*.jpg;*.gif;*.bmp";
- ofd.FilterIndex = 6;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- for (int i = 0; i < lbxBannerTpls.Items.Count; i++)
- {
- if (lbxBannerTpls.Items[i].ToString().ToLower() == Path.GetFileNameWithoutExtension(ofd.FileName).ToLower() + ".tpl")
- {
- ErrorBox("This TPL already exists, use the Replace button");
- return;
- }
- }
-
- string CurBannerPath = GetCurBannerPath();
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurBannerPath + "blyt\\banner.brlyt");
- string TplName = Path.GetFileNameWithoutExtension(ofd.FileName) + ".tpl";
- int TplFormat = 6;
-
- switch (cmbFormatBanner.SelectedIndex)
- {
- case 0:
- TplFormat = 6;
- break;
- case 1:
- TplFormat = 4;
- break;
- case 2:
- TplFormat = 5;
- break;
- default:
- if (!ofd.FileName.ToLower().EndsWith(".tpl"))
- {
- ErrorBox("This format is not supported, you must choose either RGBA8, RGB565 or RGB5A3!");
- return;
- }
- break;
- }
-
- if (!Wii.Tools.StringExistsInStringArray(TplName, brlytTpls))
- {
- if (MessageBox.Show("This TPL is not required by your banner.brlyt and thus only wastes memory!\nDo you still want to add it?", "TPL not required", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
- return;
- }
-
- if (ofd.FileName.ToLower().EndsWith(".tpl"))
- {
- File.Copy(ofd.FileName, CurBannerPath + "timg\\" + TplName, true);
- lbxBannerTpls.Items.Add(TplName);
- }
- else
- {
- Image img = Image.FromFile(ofd.FileName);
- Wii.TPL.ConvertToTPL(img, CurBannerPath + "timg\\" + TplName, TplFormat);
- lbxBannerTpls.Items.Add(TplName);
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnAddIcon_Click(object sender, EventArgs e)
- {
- try
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "TPL|*.tpl|PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|All|*.tpl;*.png;*.jpg;*.gif;*.bmp";
- ofd.FilterIndex = 6;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- for (int i = 0; i < lbxIconTpls.Items.Count; i++)
- {
- if (lbxIconTpls.Items[i].ToString().ToLower() == Path.GetFileNameWithoutExtension(ofd.FileName).ToLower() + ".tpl")
- {
- ErrorBox("This TPL already exists, use the Replace button");
- return;
- }
- }
-
- string CuriconPath = GetCurIconPath();
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CuriconPath + "blyt\\icon.brlyt");
- string TplName = Path.GetFileNameWithoutExtension(ofd.FileName) + ".tpl";
- int TplFormat = 6;
-
- switch (cmbFormatIcon.SelectedIndex)
- {
- case 0:
- TplFormat = 6;
- break;
- case 1:
- TplFormat = 4;
- break;
- case 2:
- TplFormat = 5;
- break;
- default:
- if (!ofd.FileName.ToLower().EndsWith(".tpl"))
- {
- ErrorBox("This format is not supported, you must choose either RGBA8, RGB565 or RGB5A3!");
- return;
- }
- break;
- }
-
- if (!Wii.Tools.StringExistsInStringArray(TplName, brlytTpls))
- {
- if (MessageBox.Show("This TPL is not required by your icon.brlyt and thus only wastes memory!\nDo you still want to add it?", "TPL not required", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
- return;
- }
-
- if (ofd.FileName.ToLower().EndsWith(".tpl"))
- {
- File.Copy(ofd.FileName, CuriconPath + "timg\\" + TplName, true);
- lbxIconTpls.Items.Add(TplName);
- }
- else
- {
- Image img = Image.FromFile(ofd.FileName);
- Wii.TPL.ConvertToTPL(img, CuriconPath + "timg\\" + TplName, TplFormat);
- lbxIconTpls.Items.Add(TplName);
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
-
- private void btnBrlytListTpls_Click(object sender, EventArgs e)
- {
- if (lbBrlytActions.Text == "Banner")
- {
- string CurBannerPath = GetCurBannerPath();
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurBannerPath + "blyt\\banner.brlyt");
-
- MessageBox.Show("These are the TPLs required by your banner.brlyt:\n\n" +
- string.Join("\n", brlytTpls), "TPLs specified in banner.brlyt", MessageBoxButtons.OK,
- MessageBoxIcon.Information);
- }
- else
- {
- string CurIconPath = GetCurIconPath();
- string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurIconPath + "blyt\\icon.brlyt");
-
- MessageBox.Show("These are the TPLs required by your icon.brlyt:\n\n" +
- string.Join("\n", brlytTpls), "TPLs specified in icon.brlyt", MessageBoxButtons.OK,
- MessageBoxIcon.Information);
- }
- }
-
- private void cbBannerMakeTransparent_CheckedChanged(object sender, EventArgs e)
- {
- if (lbxBannerTpls.SelectedIndex != -1)
- {
- if (cbBannerMakeTransparent.Checked == true)
- {
- try
- {
- if (!lbxBannerTpls.SelectedItem.ToString().EndsWith("(Transparent)"))
- {
- string thisItem = lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- lbxBannerTpls.Items.Remove(lbxBannerTpls.SelectedItem);
- lbxBannerTpls.Items.Add(thisItem + " (Transparent)");
- lbxBannerTpls.SelectedItem = thisItem + " (Transparent)";
- BannerTransparents.Add(thisItem);
- }
- }
- catch { }
- }
- else
- {
- try
- {
- string thisItem = lbxBannerTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- lbxBannerTpls.Items.Remove(lbxBannerTpls.SelectedItem);
- lbxBannerTpls.Items.Add(thisItem.Replace(" (Transparent)", string.Empty));
- lbxBannerTpls.SelectedItem = thisItem.Replace(" (Transparent)", string.Empty);
- BannerTransparents.Remove(thisItem.Replace(" (Transparent)", string.Empty));
- }
- catch { }
- }
-
- lbxBannerTpls.Focus();
- }
- }
-
- private void cbIconMakeTransparent_CheckedChanged(object sender, EventArgs e)
- {
- if (lbxIconTpls.SelectedIndex != -1)
- {
- if (cbIconMakeTransparent.Checked == true)
- {
- try
- {
- if (!lbxIconTpls.SelectedItem.ToString().EndsWith("(Transparent)"))
- {
- string thisItem = lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- lbxIconTpls.Items.Remove(lbxIconTpls.SelectedItem);
- lbxIconTpls.Items.Add(thisItem + " (Transparent)");
- lbxIconTpls.SelectedItem = thisItem + " (Transparent)";
- IconTransparents.Add(thisItem);
- }
- }
- catch { }
- }
- else
- {
- try
- {
- string thisItem = lbxIconTpls.SelectedItem.ToString().Replace(" (Transparent)", string.Empty);
- lbxIconTpls.Items.Remove(lbxIconTpls.SelectedItem);
- lbxIconTpls.Items.Add(thisItem.Replace(" (Transparent)", string.Empty));
- lbxIconTpls.SelectedItem = thisItem.Replace(" (Transparent)", string.Empty);
- IconTransparents.Remove(thisItem.Replace(" (Transparent)", string.Empty));
- }
- catch { }
- }
-
- lbxIconTpls.Focus();
- }
- }
-
- private void btnForwarder_Click(object sender, EventArgs e)
- {
-#if Mono
- ErrorBox("This feature doesn't work under Mono!");
-#endif
-
-#if !Mono
- if (CheckForForwardMii() == true)
- {
- if (CheckDevKit() == false)
- {
- ForwarderDialogSimple();
- }
- else
- {
- cmForwarder.Show(MousePosition);
- }
- }
- else
- {
- if (MessageBox.Show("You don't have the ForwardMii.dll in your application folder.\nYou can download it on the project page, do you want the page to be opened?", "Plugin not availabe", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
- {
- Process.Start("http://code.google.com/p/customizemii/downloads/list");
- }
- }
-#endif
- }
-
- private void cmForwarderItem_Click(object sender, EventArgs e)
- {
- ToolStripMenuItem cmSender = sender as ToolStripMenuItem;
-
- if (cmSender == cmSimpleForwarder)
- ForwarderDialogSimple();
- else
- ForwarderDialogComplex();
- }
-
- private void btnOptionsExtract_Click(object sender, EventArgs e)
- {
- cmOptionsExtract.Show(MousePosition);
- }
-
- private void cmOptionsExtract_MouseClick(object sender, EventArgs e)
- {
- ToolStripMenuItem cmSender = sender as ToolStripMenuItem;
-
- if (cmSender.OwnerItem == tsExtractImages)
- {
- try
- {
- FolderBrowserDialog fbd = new FolderBrowserDialog();
-
- if (cmSender.Text.ToLower() == "both") { fbd.Description = "Select the path where the images will be extracted to. Two folders \"Banner\" and \"Icon\" will be created."; }
- else { fbd.Description = "Select the path where the images will be extracted to."; }
-
- if (fbd.ShowDialog() == DialogResult.OK)
- {
- string bannerPath;
- string iconPath;
-
- switch (cmSender.Text.ToLower())
- {
- case "banner":
- bannerPath = fbd.SelectedPath;
- iconPath = string.Empty;
- break;
- case "icon":
- bannerPath = string.Empty;
- iconPath = fbd.SelectedPath;
- break;
- default: //both
- bannerPath = fbd.SelectedPath + "\\Banner";
- iconPath = fbd.SelectedPath + "\\Icon";
- break;
- }
-
- if (!string.IsNullOrEmpty(bannerPath))
- {
- if (!Directory.Exists(bannerPath)) Directory.CreateDirectory(bannerPath);
- string[] tplFiles = Directory.GetFiles(BannerTplPath, "*.tpl");
- Image img;
-
- foreach (string thisTpl in tplFiles)
- {
- img = Wii.TPL.ConvertFromTPL(thisTpl);
- img.Save(bannerPath + "\\" + Path.GetFileNameWithoutExtension(thisTpl) + ".png",
- System.Drawing.Imaging.ImageFormat.Png);
- }
- }
- if (!string.IsNullOrEmpty(iconPath))
- {
- if (!Directory.Exists(iconPath)) Directory.CreateDirectory(iconPath);
- string[] tplFiles = Directory.GetFiles(IconTplPath, "*.tpl");
- Image img;
-
- foreach (string thisTpl in tplFiles)
- {
- img = Wii.TPL.ConvertFromTPL(thisTpl);
- img.Save(iconPath + "\\" + Path.GetFileNameWithoutExtension(thisTpl) + ".png",
- System.Drawing.Imaging.ImageFormat.Png);
- }
- }
-
- InfoBox("Extracted images successfully!");
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- else if (cmSender.OwnerItem == tsExtractSound)
- {
- try
- {
- SaveFileDialog sfd = new SaveFileDialog();
- if (cmSender.Name.ToLower() == "cmextractsoundasbin") { sfd.Filter = "BIN|*.bin"; sfd.FileName = "sound.bin"; }
- else if (cmSender.Name.ToLower() == "cmextractsoundasaudio")
- {
- byte[] soundBin = Wii.Tools.LoadFileToByteArray(TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", 32, 16);
-
- if (soundBin[0] == 'R' && soundBin[1] == 'I' && soundBin[2] == 'F' && soundBin[3] == 'F')
- { sfd.Filter = "Wave|*.wav"; sfd.FileName = "sound.wav"; }
- else if (soundBin[0] == 'B' && soundBin[1] == 'N' && soundBin[2] == 'S' && soundBin[3] == ' ')
- { sfd.Filter = "BNS|*.bns"; sfd.FileName = "sound.bns"; }
- else if (soundBin[0] == 'F' && soundBin[1] == 'O' && soundBin[2] == 'R' && soundBin[3] == 'M')
- { sfd.Filter = "AIFF|*.aif;*.aiff"; sfd.FileName = "sound.aif"; }
- else if (soundBin[0] == 'L' && soundBin[1] == 'Z' && soundBin[2] == '7' && soundBin[3] == '7')
- {
- if (soundBin[9] == 'R' && soundBin[10] == 'I' && soundBin[11] == 'F' && soundBin[12] == 'F')
- { sfd.Filter = "Wave|*.wav"; sfd.FileName = "sound.wav"; }
- else if (soundBin[9] == 'B' && soundBin[10] == 'N' && soundBin[11] == 'S' && soundBin[12] == ' ')
- { sfd.Filter = "BNS|*.bns"; sfd.FileName = "sound.bns"; }
- else if (soundBin[9] == 'F' && soundBin[10] == 'O' && soundBin[11] == 'R' && soundBin[12] == 'M')
- { sfd.Filter = "AIFF|*.aif;*.aiff"; sfd.FileName = "sound.aif"; }
- else throw new Exception("Unsupported Audio Format!");
- }
- else throw new Exception("Unsupported Audio Format!");
-
- }
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- if (sfd.FileName.ToLower().EndsWith(".bin"))
- {
- File.Copy(TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", sfd.FileName, true);
- InfoBox("The sound.bin was successfully extraced!");
- }
- else
- {
- Wii.Sound.SoundBinToAudio(TempUnpackPath + "00000000.app_OUT\\meta\\sound.bin", sfd.FileName);
- InfoBox(string.Format("The sound.bin was successfully converted to {0}!", Path.GetFileName(sfd.FileName)));
- }
- }
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- else //DOL
- {
- try
- {
- string[] tmdFile = Directory.GetFiles(TempUnpackPath, "*.tmd");
- byte[] tmd = Wii.Tools.LoadFileToByteArray(tmdFile[0]);
-
- int numContents = Wii.WadInfo.GetContentNum(tmd);
-
- if (numContents == 3)
- {
- int bootIndex = Wii.WadInfo.GetBootIndex(tmd);
- string appFile = string.Empty;
-
- if (bootIndex == 1)
- { appFile = "00000002.app"; }
- else if (bootIndex == 2)
- { appFile = "00000001.app"; }
-
- if (!string.IsNullOrEmpty(appFile))
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.Filter = "Wii Executables|*.dol"; sfd.FileName = (string.IsNullOrEmpty(tbAllLanguages.Text) ? tbEnglish.Text : tbAllLanguages.Text) + ".dol";
-
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- File.Copy(TempUnpackPath + appFile, sfd.FileName, true);
- InfoBox(string.Format("The DOL file was successfully extracted to {0}!", Path.GetFileName(sfd.FileName)));
- }
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- catch (Exception ex) { ErrorBox(ex.Message); }
- }
- }
-
- private void cmLoadAudioFile_Click(object sender, EventArgs e)
- {
- if (pbProgress.Value == 100)
- {
- OpenFileDialog ofd = new OpenFileDialog();
-
- if (File.Exists(Application.StartupPath + "\\lame.exe"))
- {
- ofd.Filter = "Wave Files|*.wav|Mp3 Files|*.mp3|BNS Files|*.bns|All|*.wav;*.mp3;*.bns";
- ofd.FilterIndex = 4;
- }
- else
- {
- ofd.Filter = "Wave Files|*.wav|BNS Files|*.bns|All|*.wav;*.bns";
- ofd.FilterIndex = 3;
- }
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName.ToLower().EndsWith(".mp3"))
- {
- ConvertMp3ToWave(ofd.FileName);
- }
- else
- {
- SetText(tbSound, ofd.FileName);
-
- btnBrowseSound.Text = "Clear";
-
- if (!string.IsNullOrEmpty(SoundReplace))
- {
- SoundReplace = string.Empty;
- if (cmbReplace.SelectedIndex == 2) SetText(tbReplace, SoundReplace);
- if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
- }
- }
- }
- }
- }
-
- private void cmConvertToBns_Click(object sender, EventArgs e)
- {
- if (pbProgress.Value == 100)
- {
- CustomizeMii_BnsConvert bnsConvert = new CustomizeMii_BnsConvert(File.Exists(Application.StartupPath + "\\lame.exe"));
-
- if (bnsConvert.ShowDialog() == DialogResult.OK)
- {
- BnsConversionInfo bnsInfo = new BnsConversionInfo();
-
- bnsInfo.AudioFile = bnsConvert.AudioFile;
- bnsInfo.StereoToMono = false;
-
- if (bnsConvert.ChannelCount == 2)
- {
- if (MessageBox.Show("Do you want to convert the stereo Wave file to a mono BNS file?\nOnly the left channel will be taken.",
- "Convert to Mono?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
- bnsInfo.StereoToMono = true;
- }
-
- if (bnsConvert.LoopFromAudio)
- { bnsInfo.Loop = BnsConversionInfo.LoopType.FromWave; }
- else if (bnsConvert.LoopManually)
- { bnsInfo.LoopStartSample = bnsConvert.LoopStartSample; bnsInfo.Loop = BnsConversionInfo.LoopType.Manual; }
- else bnsInfo.Loop = BnsConversionInfo.LoopType.None;
-
- BackgroundWorker bwConvertToBns = new BackgroundWorker();
- bwConvertToBns.WorkerReportsProgress = true;
- bwConvertToBns.DoWork += new DoWorkEventHandler(bwConvertToBns_DoWork);
- bwConvertToBns.ProgressChanged += new ProgressChangedEventHandler(bwConvertToBns_ProgressChanged);
- bwConvertToBns.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwConvertToBns_RunWorkerCompleted);
-
- bwConvertToBns.RunWorkerAsync(bnsInfo);
- }
- }
- }
-
- private void cmExtractWad_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog fbd = new FolderBrowserDialog();
- string unpackDir = string.Format("{0} - {1}", Wii.WadInfo.GetChannelTitlesFromApp(TempUnpackPath + "00000000.app")[1], Wii.WadInfo.GetTitleID(Directory.GetFiles(TempUnpackPath, "*.tmd")[0], 1));
- fbd.Description = string.Format("Choose the path where the WAD will be extracted to. A folder called \"{0}\" containing the contents will be created!", unpackDir);
-
- if (fbd.ShowDialog() == DialogResult.OK)
- {
- unpackDir = fbd.SelectedPath + "\\" + unpackDir;
- string[] files = Directory.GetFiles(TempUnpackPath);
- if (!Directory.Exists(unpackDir)) Directory.CreateDirectory(unpackDir);
-
- foreach (string thisFile in files)
- File.Copy(thisFile, unpackDir + "\\" + Path.GetFileName(thisFile), true);
-
- InfoBox("Successfully extracted WAD file!");
- }
- }
-
- private void cmLoadDol_Click(object sender, EventArgs e)
- {
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Wii Executables|*.dol|Wii Channels|*.wad|All|*.dol;*.wad";
- ofd.FilterIndex = 3;
-
- if (ofd.ShowDialog() == DialogResult.OK)
- {
- if (ofd.FileName.EndsWith(".wad"))
- {
- try
- {
- byte[] wad = Wii.Tools.LoadFileToByteArray(ofd.FileName);
-
- int numContents = Wii.WadInfo.GetContentNum(wad);
-
- if (numContents == 3)
- {
- int bootIndex = Wii.WadInfo.GetBootIndex(wad);
- string appFile = string.Empty;
-
- if (bootIndex == 1)
- { appFile = "00000002.app"; }
- else if (bootIndex == 2)
- { appFile = "00000001.app"; }
-
- if (!string.IsNullOrEmpty(appFile))
- {
- if (Directory.Exists(TempTempPath + "TempWad")) Directory.Delete(TempTempPath + "TempWad", true);
- Wii.WadUnpack.UnpackWad(ofd.FileName, TempTempPath + "TempWad");
-
- File.Copy(TempTempPath + "TempWad\\" + appFile, TempDolPath, true);
- SetText(tbDol, ofd.FileName);
- btnBrowseDol.Text = "Clear";
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- catch (Exception ex)
- {
- SetText(tbDol, string.Empty);
- ErrorBox(ex.Message);
- }
- }
- else
- {
- SetText(tbDol, ofd.FileName);
- btnBrowseDol.Text = "Clear";
- }
- }
- }
-
- private void cmDolFromSource_Click(object sender, EventArgs e)
- {
- try
- {
- string[] tmdFile = Directory.GetFiles(TempUnpackPath, "*.tmd");
- byte[] tmd = Wii.Tools.LoadFileToByteArray(tmdFile[0]);
-
- int numContents = Wii.WadInfo.GetContentNum(tmd);
-
- if (numContents == 3)
- {
- int bootIndex = Wii.WadInfo.GetBootIndex(tmd);
- string appFile = string.Empty;
-
- if (bootIndex == 1)
- { appFile = "00000002.app"; }
- else if (bootIndex == 2)
- { appFile = "00000001.app"; }
-
- if (!string.IsNullOrEmpty(appFile))
- {
- File.Copy(TempUnpackPath + appFile, TempDolPath, true);
- SetText(tbDol, "Internal");
- btnBrowseDol.Text = "Clear";
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- else
- ErrorBox("The DOL file couldn't be found!");
- }
- catch (Exception ex)
- {
- SetText(tbDol, string.Empty);
- btnBrowseDol.Text = "Browse...";
- ErrorBox(ex.Message);
- }
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_Main.resx b/CustomizeMii/CustomizeMii_Main.resx
deleted file mode 100644
index 0ca0828..0000000
--- a/CustomizeMii/CustomizeMii_Main.resx
+++ /dev/null
@@ -1,148 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Thanks:
-Xuzz for his idea and hard work
-Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py
-SquidMan for Zetsubou
-Andre Perrot for gbalzss
-comex and Waninkoko for both their NAND Loader
-djdynamite123 for the forwarder base files (ForwardMii-Plugin)
-The USB Loader GX Team for their forwarder source (ForwardMii-Plugin)
-
-
- 16, 7
-
-
- 105, 7
-
-
- 228, 7
-
-
- 376, 7
-
-
- 479, 7
-
-
- 42
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_Preview.Designer.cs b/CustomizeMii/CustomizeMii_Preview.Designer.cs
deleted file mode 100644
index 3a53663..0000000
--- a/CustomizeMii/CustomizeMii_Preview.Designer.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace CustomizeMii
-{
- partial class CustomizeMii_Preview
- {
- ///
- /// Erforderliche Designervariable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Vom Windows Form-Designer generierter Code
-
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
- private void InitializeComponent()
- {
- this.pbImage = new System.Windows.Forms.PictureBox();
- ((System.ComponentModel.ISupportInitialize)(this.pbImage)).BeginInit();
- this.SuspendLayout();
- //
- // pbImage
- //
- this.pbImage.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pbImage.Location = new System.Drawing.Point(0, 0);
- this.pbImage.Name = "pbImage";
- this.pbImage.Size = new System.Drawing.Size(194, 176);
- this.pbImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
- this.pbImage.TabIndex = 0;
- this.pbImage.TabStop = false;
- //
- // CustomizeMii_Preview
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(194, 176);
- this.Controls.Add(this.pbImage);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
- this.MinimumSize = new System.Drawing.Size(200, 200);
- this.Name = "CustomizeMii_Preview";
- this.Text = "CustomizeMii - Preview";
- this.Load += new System.EventHandler(this.CustomizeMii_Preview_Load);
- ((System.ComponentModel.ISupportInitialize)(this.pbImage)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- public System.Windows.Forms.PictureBox pbImage;
-
- }
-}
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_Preview.cs b/CustomizeMii/CustomizeMii_Preview.cs
deleted file mode 100644
index bd0a822..0000000
--- a/CustomizeMii/CustomizeMii_Preview.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-namespace CustomizeMii
-{
- public partial class CustomizeMii_Preview : Form
- {
- public CustomizeMii_Preview()
- {
- InitializeComponent();
- }
-
- private void CustomizeMii_Preview_Load(object sender, EventArgs e)
- {
- this.CenterToParent();
- }
- }
-}
diff --git a/CustomizeMii/CustomizeMii_Preview.resx b/CustomizeMii/CustomizeMii_Preview.resx
deleted file mode 100644
index ff31a6d..0000000
--- a/CustomizeMii/CustomizeMii_Preview.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/CustomizeMii/CustomizeMii_Structs.cs b/CustomizeMii/CustomizeMii_Structs.cs
deleted file mode 100644
index d4775e7..0000000
--- a/CustomizeMii/CustomizeMii_Structs.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
- namespace CustomizeMii
-{
- public struct BnsConversionInfo
- {
- public enum LoopType
- {
- None,
- FromWave,
- Manual
- }
-
- public LoopType Loop;
- public int LoopStartSample;
- public string AudioFile;
- public bool StereoToMono;
- }
-
- public struct WadCreationInfo
- {
- public enum NandLoader : int
- {
- comex = 0,
- Waninkoko = 1
- }
-
- public string outFile;
- public NandLoader nandLoader;
- public bool sendToWii;
- }
-
- public struct Progress
- {
- public int progressValue;
- public string progressState;
- }
-}
diff --git a/CustomizeMii/Instructions.txt b/CustomizeMii/Instructions.txt
deleted file mode 100644
index 9f4ca00..0000000
--- a/CustomizeMii/Instructions.txt
+++ /dev/null
@@ -1,134 +0,0 @@
-These are some basic instructions for CustomizeMii.
-
-At the very beginning, let me say this again: Don't install any WADs without a proper brick protection!
-
-Ok, so you want to create your own custom channels?
-First it is important to understand how the creation of a custom channel with CustomizeMii works.
-Skip this if you already know.
-
-Basically, you can't create a channel from scratch. Well, you could, but not with this application.
-You need a base WAD which you can modify. You can either download one within this application or use
-any WAD (must be a channel of course) from anywhere.
-You can then edit the WAD file.
-The editing of animations is for advanced users, so if you're not familiar with brlyt's and brlan's
-(I guess you're not unless you created your own animations), get a static base WAD or one with the
-animation you want.
-
-So, let's start to create a channel. Download a base WAD through the application or load one from your HDD.
-You can preview the downloadable WADs through the preview button.
-All options below are optional!
-
-
-
-MIXING BANNER, ICON AND SOUND
-
-The options below the downloadable base WADs are the "replace" options.
-Let's say you have loaded WAD A as a base, but you want the icon of WAD B and you have a 00000000.app that
-contains a sound that you want to use.
-No problem! Just use the dropdownbox which yet says "Banner" and choose "Icon". Click on the browse button
-next to it and choose WAD B. The icon of WAD B will replace the icon of WAD A.
-After that, choose "Sound" from the dropdownbox and browse for the 00000000.app, the sound.bin will be
-extracted and used instead of the one within WAD A.
-
-Note: These features are non-destructive, i.e. you can always use the clear button to get back to the
-banner/icon/sound of WAD A!
-
-
-
-CHANNEL INFORMATION
-
-You may want to change the channel information, i.e. the title and ID.
-Let's change the channel title first. It's the text that will be displayed when you hold your cursor
-over the channel. Goto the "Title" tab and fill a title for all languages. If you want to change the
-title for a specific language, just use the language's textbox. If you want a different title for every
-language, you don't need to fill in a title for all languages.
-Now, the title ID. Open the "Options" tab and you'll see a textbox for the ID. The ID is 4 characters long
-and only contains letters and numerics. Lower case letters will automatically converted to upper case.
-Change it to a unique(!) ID, because channels will overwrite existing channles with the same ID!
-
-I recommend not to use any title ID beginning with the following characters, because official channels
-use these and thus your channel may overwrite them:
-C, E, F, H, J, L, M, N, P, Q, W
-
-
-
-INSERTING A NEW DOL
-
-Let's bring some life into the channel. In the "Options" tab, use the browse button for a new DOL.
-Either load a forwarder, the DOL of any application or a WAD to use it's DOL. Note that some applications
-require more than just a DOL and thus may not work in a channel (e.g. MPlayer CE).
-Choose a NAND loader or just stick with the one selected (both will do fine).
-
-You can also use the built-in forwarder creation by using the forwarder button right below the browse button
-for DOLs.
-You need the ForwardMii.dll in order to use the forwarder creation.
-
-
-
-INSERTING A NEW SOUND
-
-For the sound, you can either use a wave or mp3 (needs lame.exe) file or the sound replace function to use
-the sound of an existing sound.bin/00000000.app/WAD.
-If you want looped sound, open your wave file with wavosaur and add loop points before.
-
-To save space, you can convert your wav or mp3 files to BNS. You can take the loop from a prelooped wave file
-or enter the loop start point manually. Wave files must be 16bit PCM.
-It is possible to directly convert stereo Wave files to mono BNS files, note that only the left channel of
-the Wave will be taken.
-
-
-
-EDITING THE BANNER/ICON (If you're an advanced user and want to edit the brlyt/brlan, do that first!)
-
-So, let's begin with the real customization. I will only talk about the banner here, the instructions
-are the same for the icon.
-Goto the "Banner" tab. You shouldn't touch the add and remove buttons, they're for advanced users that
-change the animation. (However, they can't really harm your channel, as CustomizeMii will check for missing
-and unneeded TPLs while creating a WAD).
-You will see a list with all TPLs inside the banner.bin. When you select a TPL,
-it's current format will be shown in the "Format" dropdownbox. Note that CustomizeMii can read 8 different
-TPL formats, but only write 3 (RGBA8, RGB565 and RGB5A3), that should be enough for your needs.
-You can use the preview button to preview a TPL (obvious, right?), but you get one more important info,
-the image size. It will be shown in the title of the preview window. If your images aren't the same size,
-they will be resized! So be sure to have at least the correct aspect ratio, so your images wont be
-squeezed or whatever.
-Before replacing the image, choose a format from the dropdownbox.
-(RGBA8 = High Quality, Big Size --- RGB565 = Moderate Quality, Small Size --- RGB5A3 = Bad Quality, Small Size)
-Now you can use the replace button to insert your image. Preview the TPL after replacing to check the
-image. Maybe you want to use another format though? No problem, just replace the TPL again.
-
-Note: You can use the "Make Transparent" checkbox to make a TPL transparent, e.g. if you don't like
-one piece of an animation (It's non-destructive, i.e. you can always uncheck the box).
-
-
-
-EDITING THE ANIMATION (Advanced users only!)
-
-Skip this part, if you don't really know what brlyt and brlan files are and how they're structured.
-Goto the "Layout" tab. You will see the banner.brlyt and icon.brlyt there.
-Above the buttons is a text that will indicate whether you're doing actions on the "Banner" or
-the "Icon" (When you select the banner.brlyt, you're editing the "Banner" and vice versa).
-Now, just replace the banner.brlyt and icon.brlyt files as you want. You can use the list TPLs button
-afterwards to see all TPLs that are required by the banner.brlyt/icon.brlyt (Don't worry, CustomizeMii
-won't let you create a WAD, if you forgot a required TPL).
-Now, goto the "Animation" tab. It's similar to the "Layout" tab. You shouldn't touch the add or delete button
-unless your base WAD only has a banner.brlan and you want to use a banner_Start.brlan and banner_Loop.brlan.
-In this case, first add the two files and then delete the old banner.brlan.
-Else just replace the files with yours. Be absolutely sure the your brlan files only refer to panes that are
-indicated in your brlyt files!
-That's it, here's nothing left to do.
-
-
-
-CREATING THE WAD
-
-Well, your channel should be ready to be created.
-Goto the "Options" tab and check the Lz77 checkbox, if you want to compress your channel to safe some Wii memory.
-If your channel doesn't work, first try it again without compression.
-Now just click on the create WAD button (The big one with the different text each startup).
-CustomizeMii will do some failure checks and if all went fine, a save dialog will pop up.
-If you get an error or warning, read the message carefully. It should give you enough information to fix
-the problem yourself.
-
-So, if you got down to here, you're done by now. Please, if you find any bugs or have suggestions, take some
-seconds to report them at the issue tracker: http://code.google.com/p/customizemii/issues/list
\ No newline at end of file
diff --git a/CustomizeMii/License.txt b/CustomizeMii/License.txt
deleted file mode 100644
index 94a9ed0..0000000
--- a/CustomizeMii/License.txt
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program 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.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/CustomizeMii/Program.cs b/CustomizeMii/Program.cs
deleted file mode 100644
index 8848c92..0000000
--- a/CustomizeMii/Program.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Windows.Forms;
-
-namespace CustomizeMii
-{
- static class Program
- {
- ///
- /// Der Haupteinstiegspunkt für die Anwendung.
- ///
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new CustomizeMii_Main());
- }
- }
-}
diff --git a/CustomizeMii/Properties/AssemblyInfo.cs b/CustomizeMii/Properties/AssemblyInfo.cs
deleted file mode 100644
index 06a9bdb..0000000
--- a/CustomizeMii/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Resources;
-
-// Allgemeine Informationen über eine Assembly werden über die folgenden
-// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
-// die mit einer Assembly verknüpft sind.
-[assembly: AssemblyTitle("CustomizeMii")]
-[assembly: AssemblyDescription("CustomizeMii is a custom channel creator for the Wii")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("CustomizeMii")]
-[assembly: AssemblyCopyright("Copyright © Leathl 2009")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
-// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
-// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
-[assembly: ComVisible(false)]
-
-// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
-[assembly: Guid("b8292272-5915-44f7-a7b1-a347bea3ecd5")]
-
-// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
-//
-// Hauptversion
-// Nebenversion
-// Buildnummer
-// Revision
-//
-// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
-// übernehmen, indem Sie "*" eingeben:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.1.0.0")]
-[assembly: AssemblyFileVersion("2.1.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en")]
diff --git a/CustomizeMii/Properties/Resources.Designer.cs b/CustomizeMii/Properties/Resources.Designer.cs
deleted file mode 100644
index 313627d..0000000
--- a/CustomizeMii/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion:2.0.50727.4927
-//
-// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-// der Code erneut generiert wird.
-//
-//------------------------------------------------------------------------------
-
-namespace CustomizeMii.Properties {
- using System;
-
-
- ///
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
- ///
- // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
- // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CustomizeMii.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- internal static System.Drawing.Bitmap btnCreateWad {
- get {
- object obj = ResourceManager.GetObject("btnCreateWad", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- internal static System.Drawing.Icon CustomizeMii {
- get {
- object obj = ResourceManager.GetObject("CustomizeMii", resourceCulture);
- return ((System.Drawing.Icon)(obj));
- }
- }
-
- ///
- /// Sucht eine lokalisierte Zeichenfolge, die {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}}
- ///{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}
- ///{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sl276\slmult1\b\f0\fs17 These are some basic instructions for CustomizeMii.\b0\par
- ///\par
- ///\cf1 At the very beginning, let me say this again: Don't install any WADs without a proper brick protection!\cf0\par
- ///\par
- ///Ok, so you want to create your own custom channels?\par
- ///First it is important to understand how [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt.
- ///
- internal static string Instructions {
- get {
- return ResourceManager.GetString("Instructions", resourceCulture);
- }
- }
- }
-}
diff --git a/CustomizeMii/Properties/Resources.resx b/CustomizeMii/Properties/Resources.resx
deleted file mode 100644
index 7f2b7d7..0000000
--- a/CustomizeMii/Properties/Resources.resx
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- ..\Resources\btnCreateWad.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\CustomizeMii.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\resources\instructions.rtf;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
-
-
\ No newline at end of file
diff --git a/CustomizeMii/Properties/Settings.Designer.cs b/CustomizeMii/Properties/Settings.Designer.cs
deleted file mode 100644
index c26659c..0000000
--- a/CustomizeMii/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:2.0.50727.4927
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace CustomizeMii.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/CustomizeMii/Properties/Settings.settings b/CustomizeMii/Properties/Settings.settings
deleted file mode 100644
index abf36c5..0000000
--- a/CustomizeMii/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/CustomizeMii/Readme.txt b/CustomizeMii/Readme.txt
deleted file mode 100644
index f0e14aa..0000000
--- a/CustomizeMii/Readme.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-CustomizeMii is a custom channel creator for the Wii.
-The .NET Framework 2.0 is required to run this application!
-
-For any further information, see: http://customizemii.googlecode.com
-Please use the Issue Tracker there to report any occuring bugs.
-
-Thanks to icefire / Xuzz for the basic idea of this Application!
-
------------------------------------------------------------------------------------------
-Changelog:
-
-Version 2.1
- -
-
-Version 2.0
- - Added BNS conversion (Mono and Stereo, with and without loop)
- - Fixed MP3 conversion (some files didn't convert)
- - Lz77 checkbox is now ticked by default
- - Removed Lz77 compression of sound.bin as most sounds will get bigger
- - Added ability to insert DOLs from any channel WAD
- - Added ability to re-add the interal DOL (To switch the NAND Loader)
- - Added ability to extract the contents, DOL, sound and all images
- - Added displaying of approx. blocks to the success-message
- - Deleted some functions of the complex forwarder as they weren't working properly
- - Some bugfixes and improvements
-
-Version 1.2
- - Fixed writing/reading of channel titles, so japanese characters will work now
- - Added checkbox (Options tab) to turn security checks off
- - Added built-in forwarder creator (Needs the ForwardMii.dll which is separately avaiable)
- - You can choose MP3 files as channel sound (Needs lame.exe in application directory)
- - Bugfixes
-
-Version 1.1
- - Note: License upgraded to GNU GPL v3!
- - Sound is working now
- - Added brlan and brlyt tabs (for advanced users)
- - Added displaying of image width and height in preview window
- - Added "Make Transparent" checkbox for TPLs
- - Fixed IA8 previewing / extracting
- - Improved bricksafety (hopefully!)
- - Added Tooltips
- - Added update check at startup
- - Wrote basic instructions (see Instructions.txt or help tab)
-
-Version 1.0
- - Initial Release
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-Disclaimer:
-
-Editing WAD files can result in a brick of your Wii.
-Only use this application if you have a bricksafe Wii, meaning either Preloader or
-BootMii/boot2 is installed, and if you know what you're doing.
-
-This application comes without any express or implied warranty.
-The author can't be held responsible for any damages arising from the use of it.
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-Thanks:
-
-Xuzz for his idea and hard work
-Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py
-SquidMan for Zetsubou
-Andre Perrot for gbalzss
-comex and Waninkoko for both their NAND Loader
-djdynamite123 for the forwarder base files (ForwardMii-Plugin)
-The USB Loader GX Team for their forwarder source (ForwardMii-Plugin)
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-License:
-
-Copyright (C) 2009 Leathl
-
-CustomizeMii is free software: you can redistribute it and/or
-modify it under the terms of the GNU General Public License as published
-by the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-CustomizeMii is distributed in the hope that it will be
-useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/CustomizeMii/Resources/CustomizeMii.ico b/CustomizeMii/Resources/CustomizeMii.ico
deleted file mode 100644
index 43fef89..0000000
Binary files a/CustomizeMii/Resources/CustomizeMii.ico and /dev/null differ
diff --git a/CustomizeMii/Resources/Instructions.rtf b/CustomizeMii/Resources/Instructions.rtf
deleted file mode 100644
index 687e0e2..0000000
--- a/CustomizeMii/Resources/Instructions.rtf
+++ /dev/null
@@ -1,138 +0,0 @@
-{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}}
-{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}
-{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sl276\slmult1\b\f0\fs17 These are some basic instructions for CustomizeMii.\b0\par
-\par
-\cf1 At the very beginning, let me say this again: Don't install any WADs without a proper brick protection!\cf0\par
-\par
-Ok, so you want to create your own custom channels?\par
-First it is important to understand how the creation of a custom channel with CustomizeMii works.\par
-Skip this if you already know.\par
-\par
-Basically, you can't create a channel from scratch. Well, you could, but not with this application.\par
-You need a base WAD which you can modify. You can either download one within this application or use\par
-any WAD (must be a channel of course) from anywhere.\par
-You can then edit the WAD file.\par
-The editing of animations is for advanced users, so if you're not familiar with brlyt's and brlan's\par
-(I guess you're not unless you created your own animations), get a static base WAD or one with the\par
-animation you want.\par
-\par
-So, let's start to create a channel. Download a base WAD through the application or load one from your HDD.\par
-You can preview the downloadable WADs through the preview button.\par
-All options below are optional!\par
-\par
-\par
-\par
-\b MIXING BANNER, ICON AND SOUND\b0\par
-\par
-The options below the downloadable base WADs are the "replace" options.\par
-Let's say you have loaded WAD A as a base, but you want the icon of WAD B and you have a 00000000.app that\par
-contains a sound that you want to use.\par
-No problem! Just use the dropdownbox which yet says "Banner" and choose "Icon". Click on the browse button\par
-next to it and choose WAD B. The icon of WAD B will replace the icon of WAD A.\par
-After that, choose "Sound" from the dropdownbox and browse for the 00000000.app, the sound.bin will be\par
-extracted and used instead of the one within WAD A.\par
-\par
-Note: These features are non-destructive, i.e. you can always use the clear button to get back to the\par
-banner/icon/sound of WAD A!\par
-\par
-\par
-\par
-\b CHANNEL INFORMATION\b0\par
-\par
-You may want to change the channel information, i.e. the title and ID.\par
-Let's change the channel title first. It's the text that will be displayed when you hold your cursor\par
-over the channel. Goto the "Title" tab and fill a title for all languages. If you want to change the\par
-title for a specific language, just use the language's textbox. If you want a different title for every\par
-language, you don't need to fill in a title for all languages.\par
-Now, the title ID. Open the "Options" tab and you'll see a textbox for the ID. The ID is 4 characters long\par
-and only contains letters and numerics. Lower case letters will automatically converted to upper case.\par
-Change it to a unique(!) ID, because channels will overwrite existing channles with the same ID!\par
-\par
-I recommend not to use any title ID beginning with the following characters, because official channels\par
-use these and thus your channel may overwrite them:\par
-C, E, F, H, J, L, M, N, P, Q, W\par
-\par
-\par
-\par
-\b INSERTING A NEW DOL\b0\par
-\par
-Let's bring some life into the channel. In the "Options" tab, use the browse button for a new DOL.\par
-Either load a forwarder, the DOL of any application or a WAD to use it's DOL. Note that some applications\par
-require more than just a DOL and thus may not work in a channel (e.g. MPlayer CE).\par
-Choose a NAND loader or just stick with the one selected (both will do fine).\par
-\par
-You can also use the built-in forwarder creation by using the forwarder button right below the browse button\par
-for DOLs.\par
-You need the ForwardMii.dll in order to use the forwarder creation.\par
-\par
-\par
-\par
-\b INSERTING A NEW SOUND\b0\par
-\par
-For the sound, you can either use a wave or mp3 (needs lame.exe) file or the sound replace function to use\par
-the sound of an existing sound.bin/00000000.app/WAD.\par
-If you want looped sound, open your wave file with wavosaur and add loop points before.\par
-\par
-To save space, you can convert your wav or mp3 files to BNS. You can take the loop from a prelooped wave file\par
-or enter the loop start point manually. Wave files must be 16bit PCM.\par
-It is possible to directly convert stereo Wave files to mono BNS files, note that only the left channel of\par
-the Wave will be taken.\par
-\par
-\par
-\par
-\b EDITING THE BANNER/ICON (If you're an advanced user and want to edit the brlyt/brlan, do that first!)\b0\par
-\par
-So, let's begin with the real customization. I will only talk about the banner here, the instructions\par
-are the same for the icon.\par
-Goto the "Banner" tab. You shouldn't touch the add and remove buttons, they're for advanced users that\par
-change the animation. (However, they can't really harm your channel, as CustomizeMii will check for missing\par
-and unneeded TPLs while creating a WAD).\par
-You will see a list with all TPLs inside the banner.bin. When you select a TPL,\par
-it's current format will be shown in the "Format" dropdownbox. Note that CustomizeMii can read 8 different\par
-TPL formats, but only write 3 (RGBA8, RGB565 and RGB5A3), that should be enough for your needs.\par
-You can use the preview button to preview a TPL (obvious, right?), but you get one more important info,\par
-the image size. It will be shown in the title of the preview window. If your images aren't the same size,\par
-they will be resized! So be sure to have at least the correct aspect ratio, so your images wont be\par
-squeezed or whatever.\par
-Before replacing the image, choose a format from the dropdownbox.\par
-(RGBA8 = High Quality, Big Size --- RGB565 = Moderate Quality, Small Size --- RGB5A3 = Bad Quality, Small Size)\par
-Now you can use the replace button to insert your image. Preview the TPL after replacing to check the\par
-image. Maybe you want to use another format though? No problem, just replace the TPL again.\par
-\par
-Note: You can use the "Make Transparent" checkbox to make a TPL transparent, e.g. if you don't like\par
-one piece of an animation (It's non-destructive, i.e. you can always uncheck the box).\par
-\par
-\par
-\par
-\b EDITING THE ANIMATION (Advanced users only!)\b0\par
-\par
-Skip this part, if you don't really know what brlyt and brlan files are and how they're structured.\par
-Goto the "Layout" tab. You will see the banner.brlyt and icon.brlyt there.\par
-Above the buttons is a text that will indicate whether you're doing actions on the "Banner" or\par
-the "Icon" (When you select the banner.brlyt, you're editing the "Banner" and vice versa).\par
-Now, just replace the banner.brlyt and icon.brlyt files as you want. You can use the list TPLs button\par
-afterwards to see all TPLs that are required by the banner.brlyt/icon.brlyt (Don't worry, CustomizeMii\par
-won't let you create a WAD, if you forgot a required TPL).\par
-Now, goto the "Animation" tab. It's similar to the "Layout" tab. You shouldn't touch the add or delete button\par
-unless your base WAD only has a banner.brlan and you want to use a banner_Start.brlan and banner_Loop.brlan.\par
-In this case, first add the two files and then delete the old banner.brlan.\par
-Else just replace the files with yours. Be absolutely sure the your brlan files only refer to panes that are\par
-indicated in your brlyt files!\par
-That's it, here's nothing left to do.\par
-\par
-\par
-\par
-\b CREATING THE WAD\b0\par
-\par
-Well, your channel should be ready to be created.\par
-Goto the "Options" tab and check the Lz77 checkbox, if you want to compress your channel to safe some Wii memory.\par
-If your channel doesn't work, first try it again without compression.\par
-Now just click on the create WAD button (The big one with the different text each startup).\par
-CustomizeMii will do some failure checks and if all went fine, a save dialog will pop up.\par
-If you get an error or warning, read the message carefully. It should give you enough information to fix\par
-the problem yourself.\par
-\par
-So, if you got down to here, you're done by now. Please, if you find any bugs or have suggestions, take some\par
-seconds to report them at the issue tracker: {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/customizemii/issues/list"}}{\fldrslt{\ul\cf2 http://code.google.com/p/customizemii/issues/list}}}\lang7\i\f0\fs17\par
-}
-
\ No newline at end of file
diff --git a/CustomizeMii/Resources/Waninkoko.app b/CustomizeMii/Resources/Waninkoko.app
deleted file mode 100644
index ccf3026..0000000
Binary files a/CustomizeMii/Resources/Waninkoko.app and /dev/null differ
diff --git a/CustomizeMii/Resources/btnCreateWad.png b/CustomizeMii/Resources/btnCreateWad.png
deleted file mode 100644
index 85dc5b6..0000000
Binary files a/CustomizeMii/Resources/btnCreateWad.png and /dev/null differ
diff --git a/CustomizeMii/Resources/comex.app b/CustomizeMii/Resources/comex.app
deleted file mode 100644
index a8d94c8..0000000
Binary files a/CustomizeMii/Resources/comex.app and /dev/null differ
diff --git a/CustomizeMii/Wave.cs b/CustomizeMii/Wave.cs
deleted file mode 100644
index 238c101..0000000
--- a/CustomizeMii/Wave.cs
+++ /dev/null
@@ -1,325 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.IO;
-
-namespace WaveFile
-{
- ///
- /// A class for RIFF Wave files
- ///
- public class Wave
- {
- //Private Variables
- private int fmtOffset;
- private int dataOffset;
- private int smplOffset;
- private byte[] waveFile;
-
-
-
- //Public Variables
- ///
- /// The Samplerate of the Wave file
- ///
- public int SampleRate { get { return GetSampleRate(); } }
- ///
- /// The Bitdepth of the Wave file
- ///
- public int BitDepth { get { return GetBitDepth(); } }
- ///
- /// The number of channels of the Wave file
- ///
- public int ChannelCount { get { return GetChannelCount(); } }
- ///
- /// The format of the Wave file's data. 1 = PCM
- ///
- public int DataFormat { get { return GetDataFormat(); } }
- ///
- /// The number of Loops in the Wave file
- ///
- public int LoopCount { get { return GetLoopCount(); } }
- ///
- /// The start sample of the first Loop (if exist)
- ///
- public int LoopStart { get { return GetLoopStart(); } }
-
-
-
- //Public Functions
-
- public Wave(string waveFile)
- {
- using (FileStream fs = new FileStream(waveFile, FileMode.Open))
- {
- byte[] temp = new byte[fs.Length];
- fs.Read(temp, 0, temp.Length);
-
- this.waveFile = temp;
- }
-
- if (!CheckWave()) throw new Exception("This is not a supported PCM Wave File!");
-
- if (!GetFmtOffset()) throw new Exception("The format section couldn't be found!");
- if (!GetDataOffset()) throw new Exception("The data section couldn't be found!");
- GetSmplOffset();
- }
-
- public Wave(byte[] waveFile)
- {
- this.waveFile = waveFile;
-
- if (!CheckWave()) throw new Exception("This is not a supported PCM Wave File!");
-
- if (!GetFmtOffset()) throw new Exception("The format section couldn't be found!");
- if (!GetDataOffset()) throw new Exception("The data section couldn't be found!");
- GetSmplOffset();
- }
-
- ///
- /// Returns the Wave file as a Byte Array
- ///
- ///
- public byte[] ToByteArray()
- {
- return waveFile;
- }
-
- ///
- /// Returns the Wave file as a Memory Stream
- ///
- ///
- public MemoryStream ToMemoryStream()
- {
- return new MemoryStream(waveFile);
- }
-
- ///
- /// Returns only the audio data of the Wave file (No header or anything else)
- ///
- ///
- public byte[] GetAllFrames()
- {
- int dataLength = GetDataLength();
-
- MemoryStream ms = new MemoryStream();
- ms.Write(waveFile, dataOffset, dataLength);
-
- return ms.ToArray();
- }
-
- ///
- /// Closes the Wave file
- ///
- public void Close()
- {
- waveFile = null;
- }
-
-
-
- //Private Functions
-
- private int GetLoopStart()
- {
- if (smplOffset == -1) return 0;
-
- byte[] temp = new byte[4];
-
- temp[0] = waveFile[smplOffset + 52];
- temp[1] = waveFile[smplOffset + 53];
- temp[2] = waveFile[smplOffset + 54];
- temp[3] = waveFile[smplOffset + 55];
-
- return BitConverter.ToInt32(temp, 0);
- }
-
- private int GetLoopCount()
- {
- if (smplOffset == -1) return 0;
-
- byte[] temp = new byte[4];
-
- temp[0] = waveFile[smplOffset + 36];
- temp[1] = waveFile[smplOffset + 37];
- temp[2] = waveFile[smplOffset + 38];
- temp[3] = waveFile[smplOffset + 39];
-
- return BitConverter.ToInt32(temp, 0);
- }
-
- private bool GetSmplOffset()
- {
- try
- {
- int length = (waveFile.Length > 5004 ? (waveFile.Length - 5000) : 0);
- for (int i = waveFile.Length - 4; i > length; i--)
- {
- if (waveFile[i] == 's' &&
- waveFile[i + 1] == 'm' &&
- waveFile[i + 2] == 'p' &&
- waveFile[i + 3] == 'l')
- {
- this.smplOffset = i;
- return true;
- }
- }
- }
- catch { }
-
- for (int i = 0; i < waveFile.Length - 4; i++)
- {
- if (waveFile[i] == 's' &&
- waveFile[i + 1] == 'm' &&
- waveFile[i + 2] == 'p' &&
- waveFile[i + 3] == 'l')
- {
- this.smplOffset = i;
- return true;
- }
- }
-
- this.smplOffset = -1;
- return false;
- }
-
- private bool GetFmtOffset()
- {
- if (waveFile[12] == 'f' &&
- waveFile[13] == 'm' &&
- waveFile[14] == 't' &&
- waveFile[15] == ' ')
- {
- this.fmtOffset = 12;
- return true;
- }
-
- int length = (waveFile.Length > 5004 ? 5000 : waveFile.Length - 4);
- for (int i = 0; i < length; i++)
- {
- if (waveFile[i] == 'f' &&
- waveFile[i + 1] == 'm' &&
- waveFile[i + 2] == 't' &&
- waveFile[i + 3] == ' ')
- {
- this.fmtOffset = i;
- return true;
- }
- }
-
- this.fmtOffset = -1;
- return false;
- }
-
- private int GetDataLength()
- {
- byte[] temp = new byte[4];
-
- temp[0] = waveFile[dataOffset + 4];
- temp[1] = waveFile[dataOffset + 5];
- temp[2] = waveFile[dataOffset + 6];
- temp[3] = waveFile[dataOffset + 7];
-
- return BitConverter.ToInt32(temp, 0);
- }
-
- private bool GetDataOffset()
- {
- if (waveFile[40] == 'd' &&
- waveFile[41] == 'a' &&
- waveFile[42] == 't' &&
- waveFile[43] == 'a')
- {
- this.dataOffset = 40;
- return true;
- }
-
- for (int i = 0; i < waveFile.Length - 4; i++)
- {
- if (waveFile[i] == 'd' &&
- waveFile[i + 1] == 'a' &&
- waveFile[i + 2] == 't' &&
- waveFile[i + 3] == 'a')
- {
- this.dataOffset = i;
- return true;
- }
- }
-
- this.dataOffset = -1;
- return false;
- }
-
- private int GetSampleRate()
- {
- byte[] temp = new byte[4];
-
- temp[0] = waveFile[fmtOffset + 12];
- temp[1] = waveFile[fmtOffset + 13];
- temp[2] = waveFile[fmtOffset + 14];
- temp[3] = waveFile[fmtOffset + 15];
-
- return BitConverter.ToInt32(temp, 0);
- }
-
- private int GetBitDepth()
- {
- byte[] temp = new byte[2];
-
- temp[0] = waveFile[fmtOffset + 22];
- temp[1] = waveFile[fmtOffset + 23];
-
- return BitConverter.ToInt16(temp, 0);
- }
-
- private int GetChannelCount()
- {
- byte[] temp = new byte[2];
-
- temp[0] = waveFile[fmtOffset + 10];
- temp[1] = waveFile[fmtOffset + 11];
-
- return BitConverter.ToInt16(temp, 0);
- }
-
- private int GetDataFormat()
- {
- byte[] temp = new byte[2];
-
- temp[0] = waveFile[fmtOffset + 8];
- temp[1] = waveFile[fmtOffset + 9];
-
- return BitConverter.ToInt16(temp, 0);
- }
-
- private bool CheckWave()
- {
- if (waveFile[0] != 'R' ||
- waveFile[1] != 'I' ||
- waveFile[2] != 'F' ||
- waveFile[3] != 'F' ||
-
- waveFile[8] != 'W' ||
- waveFile[9] != 'A' ||
- waveFile[10] != 'V' ||
- waveFile[11] != 'E') return false;
-
- return true;
- }
- }
-}
diff --git a/CustomizeMii/Wii.cs b/CustomizeMii/Wii.cs
deleted file mode 100644
index acb172d..0000000
--- a/CustomizeMii/Wii.cs
+++ /dev/null
@@ -1,5653 +0,0 @@
-/* This file is part of ShowMiiWads
- * Copyright (C) 2009 Leathl
- *
- * ShowMiiWads 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.
- *
- * ShowMiiWads is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-//Wii.py by Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man was the base for TPL conversion
-//Zetsubou by SquidMan was a reference for TPL conversion
-//gbalzss by Andre Perrot was the base for LZ77 (de-)compression
-//Thanks to the authors!
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
-using System.Net;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Wii
-{
- public class Tools
- {
- public static event EventHandler ProgressChanged;
-
- public static void ChangeProgress(int ProgressPercent)
- {
- EventHandler progressChanged = ProgressChanged;
- if (progressChanged != null)
- {
- progressChanged(new object(), new ProgressChangedEventArgs(ProgressPercent));
- }
- }
-
- ///
- /// Writes the small Byte Array into the big one at the given offset
- ///
- ///
- ///
- ///
- ///
- public static byte[] InsertByteArray(byte[] big, byte[] small, int offset)
- {
- for (int i = 0; i < small.Length; i++)
- big[offset + i] = small[i];
- return big;
- }
-
- ///
- /// Creates a new Byte Array out of the given one
- /// from the given offset with the specified length
- ///
- ///
- ///
- ///
- ///
- public static byte[] GetPartOfByteArray(byte[] array, int offset, int length)
- {
- byte[] ret = new byte[length];
- for (int i = 0; i < length; i++)
- ret[i] = array[offset + i];
- return ret;
- }
-
- ///
- /// Converts UInt32 Array into Byte Array
- ///
- ///
- ///
- public static byte[] UInt32ArrayToByteArray(UInt32[] array)
- {
- List results = new List();
- foreach (UInt32 value in array)
- {
- byte[] converted = BitConverter.GetBytes(value);
- results.AddRange(converted);
- }
- return results.ToArray();
- }
-
- ///
- /// Converts UInt16 Array into Byte Array
- ///
- ///
- ///
- public static byte[] UInt16ArrayToByteArray(UInt16[] array)
- {
- List results = new List();
- foreach (UInt16 value in array)
- {
- byte[] converted = BitConverter.GetBytes(value);
- results.AddRange(converted);
- }
- return results.ToArray();
- }
-
- ///
- /// Converts UInt16 Array into Byte Array
- ///
- ///
- ///
- public static byte[] UIntArrayToByteArray(uint[] array)
- {
- List results = new List();
- foreach (uint value in array)
- {
- byte[] converted = BitConverter.GetBytes(value);
- results.AddRange(converted);
- }
- return results.ToArray();
- }
-
- ///
- /// Converts Byte Array into UInt16 Array
- ///
- ///
- ///
- public static UInt32[] ByteArrayToUInt32Array(byte[] array)
- {
- UInt32[] converted = new UInt32[array.Length / 2];
- int j = 0;
- for (int i = 0; i < array.Length; i += 4)
- {
- converted[j] = BitConverter.ToUInt32(array, i);
- j++;
- }
- return converted;
- }
-
- ///
- /// Converts Byte Array into UInt16 Array
- ///
- ///
- ///
- public static UInt16[] ByteArrayToUInt16Array(byte[] array)
- {
- UInt16[] converted = new UInt16[array.Length / 2];
- int j = 0;
- for (int i = 0; i < array.Length; i += 2)
- {
- converted[j] = BitConverter.ToUInt16(array, i);
- j++;
- }
- return converted;
- }
-
- ///
- /// Returns the file length as a Byte Array
- ///
- ///
- ///
- public static byte[] FileLengthToByteArray(int filelength)
- {
- byte[] length = BitConverter.GetBytes(filelength);
- Array.Reverse(length);
- return length;
- }
-
- ///
- /// Adds a padding to the next 64 bytes, if necessary
- ///
- ///
- ///
- public static int AddPadding(int value)
- {
- return AddPadding(value, 64);
- }
-
- ///
- /// Adds a padding to the given value, if necessary
- ///
- ///
- ///
- ///
- public static int AddPadding(int value, int padding)
- {
- if (value % padding != 0)
- {
- value = value + (padding - (value % padding));
- }
-
- return value;
- }
-
- ///
- /// Converts a Hex-String to Int
- ///
- ///
- ///
- public static int HexStringToInt(string hexstring)
- {
- try { return int.Parse(hexstring, System.Globalization.NumberStyles.HexNumber); }
- catch { throw new Exception("An Error occured, maybe the Wad file is corrupt!"); }
- }
-
- ///
- /// Converts a Hex-String to Long
- ///
- ///
- ///
- public static long HexStringToLong(string hexstring)
- {
- try { return long.Parse(hexstring, System.Globalization.NumberStyles.HexNumber); }
- catch { throw new Exception("An Error occured, maybe the Wad file is corrupt!"); }
- }
-
- ///
- /// Writes a Byte Array to a file
- ///
- ///
- public static void SaveFileFromByteArray(byte[] file, string destination)
- {
- using (FileStream fs = new FileStream(destination, FileMode.Create))
- fs.Write(file, 0, file.Length);
- }
-
- ///
- /// Loads a file into a Byte Array
- ///
- ///
- ///
- public static byte[] LoadFileToByteArray(string sourcefile)
- {
- if (File.Exists(sourcefile))
- {
- using (FileStream fs = new FileStream(sourcefile, FileMode.Open))
- {
- byte[] filearray = new byte[fs.Length];
- fs.Read(filearray, 0, filearray.Length);
- return filearray;
- }
- }
- else throw new FileNotFoundException("File couldn't be found:\r\n" + sourcefile);
- }
-
- ///
- /// Loads a file into a Byte Array
- ///
- ///
- ///
- public static byte[] LoadFileToByteArray(string sourcefile, int offset, int length)
- {
- if (File.Exists(sourcefile))
- {
- using (FileStream fs = new FileStream(sourcefile, FileMode.Open))
- {
- if (fs.Length < length) length = (int)fs.Length;
- byte[] filearray = new byte[length];
- fs.Seek(offset, SeekOrigin.Begin);
- fs.Read(filearray, 0, length);
- return filearray;
- }
- }
- else throw new FileNotFoundException("File couldn't be found:\r\n" + sourcefile);
- }
-
- ///
- /// Checks the SHA1 of the Common-Key
- ///
- ///
- ///
- public static bool CheckCommonKey(string pathtocommonkey)
- {
- byte[] sum = new byte[] { 0xEB, 0xEA, 0xE6, 0xD2, 0x76, 0x2D, 0x4D, 0x3E, 0xA1, 0x60, 0xA6, 0xD8, 0x32, 0x7F, 0xAC, 0x9A, 0x25, 0xF8, 0x06, 0x2B };
-
- FileInfo fi = new FileInfo(pathtocommonkey);
- if (fi.Length != 16) return false;
- else
- {
- byte[] ckey = LoadFileToByteArray(pathtocommonkey);
-
- SHA1Managed sha1 = new SHA1Managed();
- byte[] newsum = sha1.ComputeHash(ckey);
-
- if (CompareByteArrays(sum, newsum) == true) return true;
- else return false;
- }
- }
-
- ///
- /// Creates the Common Key
- ///
- /// Must be "45e"
- /// Destination Path
- public static void CreateCommonKey(string fat, string destinationpath)
- {
- //What an effort, lol
- byte[] encryptedwater = new byte[] { 0x4d, 0x89, 0x21, 0x34, 0x62, 0x81, 0xe4, 0x02, 0x37, 0x36, 0xc4, 0xb4, 0xde, 0x40, 0x32, 0xab };
- byte[] key = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, byte.Parse(fat.Remove(2), System.Globalization.NumberStyles.HexNumber), byte.Parse(fat.Remove(0, 2) + "0", System.Globalization.NumberStyles.HexNumber) };
- byte[] decryptedwater = new byte[10];
-
- RijndaelManaged decryptkey = new RijndaelManaged();
- decryptkey.Mode = CipherMode.CBC;
- decryptkey.Padding = PaddingMode.None;
- decryptkey.KeySize = 128;
- decryptkey.BlockSize = 128;
- decryptkey.Key = key;
- Array.Reverse(key);
- decryptkey.IV = key;
-
- ICryptoTransform cryptor = decryptkey.CreateDecryptor();
-
- using (MemoryStream memory = new MemoryStream(encryptedwater))
- {
- using (CryptoStream crypto = new CryptoStream(memory, cryptor, CryptoStreamMode.Read))
- crypto.Read(decryptedwater, 0, 10);
- }
-
- string water = BitConverter.ToString(decryptedwater).Replace("-", "").ToLower() + " ";
-
- water = water.Insert(0, fat[2].ToString());
- water = water.Insert(2, fat[2].ToString());
- water = water.Insert(7, fat[2].ToString());
- water = water.Insert(11, fat[2].ToString());
-
- water = water.Insert(7, fat[1].ToString());
- water = water.Insert(10, fat[1].ToString());
- water = water.Insert(18, fat[1].ToString());
- water = water.Insert(19, fat[1].ToString());
-
- water = water.Insert(3, fat[0].ToString());
- water = water.Insert(15, fat[0].ToString());
- water = water.Insert(16, fat[0].ToString());
- water = water.Insert(22, fat[0].ToString());
-
- byte[] cheese = new byte[16];
- int count = -1;
-
- for (int i = 0; i < 32; i += 2)
- cheese[++count] = byte.Parse(water.Remove(0, i).Remove(2), System.Globalization.NumberStyles.HexNumber);
-
- if (destinationpath[destinationpath.Length - 1] != '\\') destinationpath = destinationpath + "\\";
- using (FileStream keystream = new FileStream(destinationpath + "\\common-key.bin", FileMode.Create))
- {
- keystream.Write(cheese, 0, cheese.Length);
- }
- }
-
- ///
- /// Counts the appearance of a specific character in a string
- ///
- ///
- ///
- ///
- public static int CountCharsInString(string theString, char theChar)
- {
- int count = 0;
- foreach (char thisChar in theString)
- {
- if (thisChar == theChar)
- count++;
- }
- return count;
- }
-
- ///
- /// Compares two Byte Arrays and returns true, if they match
- ///
- ///
- ///
- ///
- public static bool CompareByteArrays(byte[] first, byte[] second)
- {
- if (first.Length != second.Length) return false;
- else
- {
- for (int i = 0; i < first.Length; i++)
- if (first[i] != second[i]) return false;
-
- return true;
- }
- }
-
- ///
- /// Converts a Hex String to a Byte Array
- ///
- ///
- ///
- public static byte[] HexStringToByteArray(string hexstring)
- {
- byte[] ba = new byte[hexstring.Length / 2];
-
- for (int i = 0; i < hexstring.Length / 2; i++)
- {
- ba[i] = byte.Parse(hexstring.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
- }
-
- return ba;
- }
-
- ///
- /// Checks, if the given string does exist in the string Array
- ///
- ///
- ///
- ///
- public static bool StringExistsInStringArray(string theString, string[] theStringArray)
- {
- return Array.Exists(theStringArray, thisString => thisString == theString);
- }
-
- ///
- /// Copies an entire Directoy
- ///
- ///
- ///
- public static void CopyDirectory(string source, string destination)
- {
- string[] subdirs = Directory.GetDirectories(source);
- string[] files = Directory.GetFiles(source);
-
- foreach (string thisFile in files)
- {
- if (!Directory.Exists(destination)) Directory.CreateDirectory(destination);
- if (File.Exists(destination + "\\" + Path.GetFileName(thisFile))) File.Delete(destination + "\\" + Path.GetFileName(thisFile));
- File.Copy(thisFile, destination + "\\" + Path.GetFileName(thisFile));
- }
-
- foreach (string thisDir in subdirs)
- {
- CopyDirectory(thisDir, destination + "\\" + thisDir.Remove(0, thisDir.LastIndexOf('\\') + 1));
- }
- }
- }
-
- public class WadInfo
- {
- public const int Headersize = 64;
- public static string[] RegionCode = new string[4] { "Japan", "USA", "Europe", "Region Free" };
-
- ///
- /// Returns the Header of a Wadfile
- ///
- ///
- ///
- public static byte[] GetHeader(byte[] wadfile)
- {
- byte[] Header = new byte[0x20];
-
- for (int i = 0; i < Header.Length; i++)
- {
- Header[i] = wadfile[i];
- }
-
- return Header;
- }
-
- ///
- /// Returns the size of the Certificate
- ///
- ///
- ///
- public static int GetCertSize(byte[] wadfile)
- {
- int size = int.Parse(wadfile[0x08].ToString("x2") + wadfile[0x09].ToString("x2") + wadfile[0x0a].ToString("x2") + wadfile[0x0b].ToString("x2"), System.Globalization.NumberStyles.HexNumber);
- return size;
- }
-
- ///
- /// Returns the size of the Ticket
- ///
- ///
- ///
- public static int GetTikSize(byte[] wadfile)
- {
- int size = int.Parse(wadfile[0x10].ToString("x2") + wadfile[0x11].ToString("x2") + wadfile[0x12].ToString("x2") + wadfile[0x13].ToString("x2"), System.Globalization.NumberStyles.HexNumber);
- return size;
- }
-
- ///
- /// Returns the size of the TMD
- ///
- ///
- ///
- public static int GetTmdSize(byte[] wadfile)
- {
- int size = int.Parse(wadfile[0x14].ToString("x2") + wadfile[0x15].ToString("x2") + wadfile[0x16].ToString("x2") + wadfile[0x17].ToString("x2"), System.Globalization.NumberStyles.HexNumber);
- return size;
- }
-
- ///
- /// Returns the size of all Contents
- ///
- ///
- ///
- public static int GetContentSize(byte[] wadfile)
- {
- int size = int.Parse(wadfile[0x18].ToString("x2") + wadfile[0x19].ToString("x2") + wadfile[0x1a].ToString("x2") + wadfile[0x1b].ToString("x2"), System.Globalization.NumberStyles.HexNumber);
- return size;
- }
-
- ///
- /// Returns the size of the Footer
- ///
- ///
- ///
- public static int GetFooterSize(byte[] wadfile)
- {
- int size = int.Parse(wadfile[0x1c].ToString("x2") + wadfile[0x1d].ToString("x2") + wadfile[0x1e].ToString("x2") + wadfile[0x1f].ToString("x2"), System.Globalization.NumberStyles.HexNumber);
- return size;
- }
-
- ///
- /// Returns the position of the tmd in the wad file
- ///
- ///
- ///
- public static int GetTmdPos(byte[] wadfile)
- {
- return Headersize + Tools.AddPadding(GetCertSize(wadfile)) + Tools.AddPadding(GetTikSize(wadfile));
- }
-
- ///
- /// Returns the position of the ticket in the wad file, ticket or tmd
- ///
- ///
- ///
- public static int GetTikPos(byte[] wadfile)
- {
- return Headersize + Tools.AddPadding(GetCertSize(wadfile));
- }
-
- ///
- /// Returns the title ID of the wad file.
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static string GetTitleID(string wadtiktmd, int type)
- {
- byte[] temp = Tools.LoadFileToByteArray(wadtiktmd);
- return GetTitleID(temp, type);
- }
-
- ///
- /// Returns the title ID of the wad file.
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static string GetTitleID(byte[] wadtiktmd, int type)
- {
- string channeltype = GetChannelType(wadtiktmd, type);
- int tikpos = 0;
- int tmdpos = 0;
-
- if (IsThisWad(wadtiktmd) == true)
- {
- //It's a wad
- tikpos = GetTikPos(wadtiktmd);
- tmdpos = GetTmdPos(wadtiktmd);
- }
-
- if (type == 1)
- {
- if (!channeltype.Contains("System:"))
- {
- string tmdid = Convert.ToChar(wadtiktmd[tmdpos + 0x190]).ToString() + Convert.ToChar(wadtiktmd[tmdpos + 0x191]).ToString() + Convert.ToChar(wadtiktmd[tmdpos + 0x192]).ToString() + Convert.ToChar(wadtiktmd[tmdpos + 0x193]).ToString();
- return tmdid;
- }
- else if (channeltype.Contains("IOS"))
- {
- int tmdid = Tools.HexStringToInt(wadtiktmd[tmdpos + 0x190].ToString("x2") + wadtiktmd[tmdpos + 0x191].ToString("x2") + wadtiktmd[tmdpos + 0x192].ToString("x2") + wadtiktmd[tmdpos + 0x193].ToString("x2"));
- return "IOS" + tmdid;
- }
- else if (channeltype.Contains("System")) return "SYSTEM";
- else return "";
- }
- else
- {
- if (!channeltype.Contains("System:"))
- {
- string tikid = Convert.ToChar(wadtiktmd[tikpos + 0x1e0]).ToString() + Convert.ToChar(wadtiktmd[tikpos + 0x1e1]).ToString() + Convert.ToChar(wadtiktmd[tikpos + 0x1e2]).ToString() + Convert.ToChar(wadtiktmd[tikpos + 0x1e3]).ToString();
- return tikid;
- }
- else if (channeltype.Contains("IOS"))
- {
- int tikid = Tools.HexStringToInt(wadtiktmd[tikpos + 0x1e0].ToString("x2") + wadtiktmd[tikpos + 0x1e1].ToString("x2") + wadtiktmd[tikpos + 0x1e2].ToString("x2") + wadtiktmd[tikpos + 0x1e3].ToString("x2"));
- return "IOS" + tikid;
- }
- else if (channeltype.Contains("System")) return "SYSTEM";
- else return "";
- }
- }
-
- ///
- /// Returns the full title ID of the wad file as a hex string.
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static string GetFullTitleID(byte[] wadtiktmd, int type)
- {
- int tikpos = 0;
- int tmdpos = 0;
-
- if (IsThisWad(wadtiktmd) == true)
- {
- //It's a wad
- tikpos = GetTikPos(wadtiktmd);
- tmdpos = GetTmdPos(wadtiktmd);
- }
-
- if (type == 1)
- {
- string tmdid = wadtiktmd[tmdpos + 0x18c].ToString("x2") +
- wadtiktmd[tmdpos + 0x18d].ToString("x2") +
- wadtiktmd[tmdpos + 0x18e].ToString("x2") +
- wadtiktmd[tmdpos + 0x18f].ToString("x2") +
- wadtiktmd[tmdpos + 0x190].ToString("x2") +
- wadtiktmd[tmdpos + 0x191].ToString("x2") +
- wadtiktmd[tmdpos + 0x192].ToString("x2") +
- wadtiktmd[tmdpos + 0x193].ToString("x2");
- return tmdid;
- }
- else
- {
- string tikid = wadtiktmd[tikpos + 0x1dc].ToString() +
- wadtiktmd[tikpos + 0x1dd].ToString() +
- wadtiktmd[tikpos + 0x1de].ToString() +
- wadtiktmd[tikpos + 0x1df].ToString() +
- wadtiktmd[tikpos + 0x1e0].ToString() +
- wadtiktmd[tikpos + 0x1e1].ToString() +
- wadtiktmd[tikpos + 0x1e2].ToString() +
- wadtiktmd[tikpos + 0x1e3].ToString();
- return tikid;
- }
- }
-
- ///
- /// Returns the title for each language of a wad file.
- /// Order: Jap, Eng, Ger, Fra, Spa, Ita, Dut
- ///
- ///
- ///
- public static string[] GetChannelTitles(string wadfile)
- {
- byte[] wadarray = Tools.LoadFileToByteArray(wadfile);
- return GetChannelTitles(wadarray);
- }
-
- ///
- /// Returns the title for each language of a wad file.
- /// Order: Jap, Eng, Ger, Fra, Spa, Ita, Dut
- ///
- ///
- ///
- public static string[] GetChannelTitles(byte[] wadfile)
- {
- if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\common-key.bin") || File.Exists(System.Windows.Forms.Application.StartupPath + "\\key.bin"))
- {
- string channeltype = GetChannelType(wadfile, 0);
-
- if (!channeltype.Contains("System:"))
- {
- if (!channeltype.Contains("Hidden"))
- {
- string[] titles = new string[7];
-
- //Detection from footer is turned off, cause the footer
- //can be easily edited and thus the titles in it could be simply wrong
-
- //int footer = GetFooterSize(wadfile);
- //if (footer > 0)
- //{
- // int footerpos = wadfile.Length - footer;
- // int count = 0;
- // int imetpos = 0;
-
- // if ((wadfile.Length - (wadfile.Length - footer)) < 250) return new string[7];
-
- // for (int z = 0; z < 250; z++)
- // {
- // if (Convert.ToChar(wadfile[footerpos + z]) == 'I')
- // if (Convert.ToChar(wadfile[footerpos + z + 1]) == 'M')
- // if (Convert.ToChar(wadfile[footerpos + z + 2]) == 'E')
- // if (Convert.ToChar(wadfile[footerpos + z + 3]) == 'T')
- // {
- // imetpos = footerpos + z;
- // break;
- // }
- // }
-
- // int jappos = imetpos + 29;
-
- // for (int i = jappos; i < jappos + 588; i += 84)
- // {
- // for (int j = 0; j < 40; j += 2)
- // {
- // if (wadfile[i + j] != 0x00)
- // {
- // char temp = Convert.ToChar(wadfile[i + j]);
- // titles[count] += temp;
- // }
- // }
-
- // count++;
- // }
-
- // return titles;
- //}
-
- string[,] conts = GetContentInfo(wadfile);
- byte[] titlekey = GetTitleKey(wadfile);
- int nullapp = 0;
-
- for (int i = 0; i < conts.GetLength(0); i++)
- {
- if (conts[i, 1] == "00000000")
- nullapp = i;
- }
-
- byte[] contenthandle = WadEdit.DecryptContent(wadfile, nullapp, titlekey);
- int imetpos = 0;
-
- if (contenthandle.Length < 400) return new string[7];
-
- for (int z = 0; z < 400; z++)
- {
- if (Convert.ToChar(contenthandle[z]) == 'I')
- if (Convert.ToChar(contenthandle[z + 1]) == 'M')
- if (Convert.ToChar(contenthandle[z + 2]) == 'E')
- if (Convert.ToChar(contenthandle[z + 3]) == 'T')
- {
- imetpos = z;
- break;
- }
- }
-
- int jappos = imetpos + 29;
- int count = 0;
-
- for (int i = jappos; i < jappos + 588; i += 84)
- {
- for (int j = 0; j < 40; j += 2)
- {
- if (contenthandle[i + j] != 0x00)
- {
- char temp = BitConverter.ToChar(new byte[] { contenthandle[i + j], contenthandle[i + j - 1] }, 0);
- titles[count] += temp;
- }
- }
-
- count++;
- }
-
- return titles;
- }
- else return new string[7];
- }
- else return new string[7];
- }
- else return new string[7];
- }
-
- ///
- /// Returns the title for each language of a 00.app file
- /// Order: Jap, Eng, Ger, Fra, Spa, Ita, Dut
- ///
- ///
- ///
- public static string[] GetChannelTitlesFromApp(string app)
- {
- byte[] tmp = Tools.LoadFileToByteArray(app);
- return GetChannelTitlesFromApp(tmp);
- }
-
- ///
- /// Returns the title for each language of a 00.app file
- /// Order: Jap, Eng, Ger, Fra, Spa, Ita, Dut
- ///
- ///
- ///
- public static string[] GetChannelTitlesFromApp(byte[] app)
- {
- string[] titles = new string[7];
-
- int imetpos = 0;
- int length = 400;
-
- if (app.Length < 400) length = app.Length - 4;
-
- for (int z = 0; z < length; z++)
- {
- if (Convert.ToChar(app[z]) == 'I')
- if (Convert.ToChar(app[z + 1]) == 'M')
- if (Convert.ToChar(app[z + 2]) == 'E')
- if (Convert.ToChar(app[z + 3]) == 'T')
- {
- imetpos = z;
- break;
- }
- }
-
- if (imetpos != 0)
- {
- int jappos = imetpos + 29;
- int count = 0;
-
- for (int i = jappos; i < jappos + 588; i += 84)
- {
- for (int j = 0; j < 40; j += 2)
- {
- if (app[i + j] != 0x00)
- {
- char temp = BitConverter.ToChar(new byte[] { app[i + j], app[i + j - 1] }, 0);
- titles[count] += temp;
- }
- }
-
- count++;
- }
- }
-
- return titles;
- }
-
- ///
- /// Returns the Type of the Channel as a string
- /// Wad or Tik needed for WiiWare / VC detection!
- ///
- ///
- ///
- public static string GetChannelType(byte[] wadtiktmd, int type)
- {
- int tikpos = 0;
- int tmdpos = 0;
-
- if (IsThisWad(wadtiktmd) == true)
- {
- //It's a wad
- tikpos = GetTikPos(wadtiktmd);
- tmdpos = GetTmdPos(wadtiktmd);
- }
-
- string thistype = "";
-
- if (type == 0)
- { thistype = wadtiktmd[tikpos + 0x1dc].ToString("x2") + wadtiktmd[tikpos + 0x1dd].ToString("x2") + wadtiktmd[tikpos + 0x1de].ToString("x2") + wadtiktmd[tikpos + 0x1df].ToString("x2"); }
- else { thistype = wadtiktmd[tmdpos + 0x18c].ToString("x2") + wadtiktmd[tmdpos + 0x18d].ToString("x2") + wadtiktmd[tmdpos + 0x18e].ToString("x2") + wadtiktmd[tmdpos + 0x18f].ToString("x2"); }
- string channeltype = "Unknown";
-
- if (thistype == "00010001")
- {
- channeltype = CheckWiiWareVC(wadtiktmd, type);
- }
- else if (thistype == "00010002") channeltype = "System Channel";
- else if (thistype == "00010004" || thistype == "00010000") channeltype = "Game Channel";
- else if (thistype == "00010005") channeltype = "Downloaded Content";
- else if (thistype == "00010008") channeltype = "Hidden Channel";
- else if (thistype == "00000001")
- {
- channeltype = "System: IOS";
-
- string thisid = "";
- if (type == 0) { thisid = wadtiktmd[tikpos + 0x1e0].ToString("x2") + wadtiktmd[tikpos + 0x1e1].ToString("x2") + wadtiktmd[tikpos + 0x1e2].ToString("x2") + wadtiktmd[tikpos + 0x1e3].ToString("x2"); }
- else { thisid = wadtiktmd[tmdpos + 0x190].ToString("x2") + wadtiktmd[tmdpos + 0x191].ToString("x2") + wadtiktmd[tmdpos + 0x192].ToString("x2") + wadtiktmd[tmdpos + 0x193].ToString("x2"); }
-
- if (thisid == "00000001") channeltype = "System: Boot2";
- else if (thisid == "00000002") channeltype = "System: Menu";
- else if (thisid == "00000100") channeltype = "System: BC";
- else if (thisid == "00000101") channeltype = "System: MIOS";
- }
-
- return channeltype;
- }
-
- ///
- /// Returns the amount of included Contents (app-files)
- ///
- ///
- ///
- public static int GetContentNum(byte[] wadtmd)
- {
- int tmdpos = 0;
-
- if (IsThisWad(wadtmd) == true)
- {
- //It's a wad file, so get the tmd position
- tmdpos = GetTmdPos(wadtmd);
- }
-
- int contents = Tools.HexStringToInt(wadtmd[tmdpos + 0x1de].ToString("x2") + wadtmd[tmdpos + 0x1df].ToString("x2"));
-
- return contents;
- }
-
- ///
- /// Returns the boot index specified in the tmd
- ///
- ///
- ///
- public static int GetBootIndex(byte[] wadtmd)
- {
- int tmdpos = 0;
-
- if (IsThisWad(wadtmd))
- tmdpos = GetTmdPos(wadtmd);
-
- int bootIndex = Tools.HexStringToInt(wadtmd[tmdpos + 0x1e0].ToString("x2") + wadtmd[tmdpos + 0x1e1].ToString("x2"));
-
- return bootIndex;
- }
-
- ///
- /// Returns the approx. destination size on the Wii
- ///
- ///
- ///
- public static string GetNandSize(byte[] wadtmd, bool ConvertToMB)
- {
- int tmdpos = 0;
- int minsize = 0;
- int maxsize = 0;
- int numcont = GetContentNum(wadtmd);
-
- if (IsThisWad(wadtmd) == true)
- {
- //It's a wad
- tmdpos = GetTmdPos(wadtmd);
- }
-
- for (int i = 0; i < numcont; i++)
- {
- int cont = 36 * i;
- int contentsize = Tools.HexStringToInt(wadtmd[tmdpos + 0x1e4 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1e5 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1e6 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1e7 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1e8 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1e9 + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1ea + 8 + cont].ToString("x2") +
- wadtmd[tmdpos + 0x1eb + 8 + cont].ToString("x2"));
-
- string type = wadtmd[tmdpos + 0x1e4 + 6 + cont].ToString("x2") + wadtmd[tmdpos + 0x1e5 + 6 + cont].ToString("x2");
-
- if (type == "0001")
- {
- minsize += contentsize;
- maxsize += contentsize;
- }
- else if (type == "8001")
- maxsize += contentsize;
- }
-
- string size = "";
-
- if (maxsize == minsize) size = maxsize.ToString();
- else size = minsize.ToString() + " - " + maxsize.ToString();
-
- if (ConvertToMB == true)
- {
- if (size.Contains("-"))
- {
- string min = size.Remove(size.IndexOf(' '));
- string max = size.Remove(0, size.IndexOf('-') + 2);
-
- min = Convert.ToString(Math.Round(Convert.ToDouble(min) * 0.0009765625 * 0.0009765625, 2));
- max = Convert.ToString(Math.Round(Convert.ToDouble(max) * 0.0009765625 * 0.0009765625, 2));
- if (min.Length > 4) { min = min.Remove(4); }
- if (max.Length > 4) { max = max.Remove(4); }
- size = min + " - " + max + " MB";
- }
- else
- {
- size = Convert.ToString(Math.Round(Convert.ToDouble(size) * 0.0009765625 * 0.0009765625, 2));
- if (size.Length > 4) { size = size.Remove(4); }
- size = size + " MB";
- }
- }
-
- return size.Replace(",", ".");
- }
-
- ///
- /// Returns the approx. destination block on the Wii
- ///
- ///
- ///
- public static string GetNandBlocks(string wadtmd)
- {
- using (FileStream fs = new FileStream(wadtmd, FileMode.Open))
- {
- byte[] temp = new byte[fs.Length];
- fs.Read(temp, 0, temp.Length);
- return GetNandBlocks(temp);
- }
- }
-
- ///
- /// Returns the approx. destination block on the Wii
- ///
- ///
- ///
- public static string GetNandBlocks(byte[] wadtmd)
- {
- string size = GetNandSize(wadtmd, false);
-
- if (size.Contains("-"))
- {
- string size1 = size.Remove(size.IndexOf(' '));
- string size2 = size.Remove(0, size.LastIndexOf(' ') + 1);
-
- double blocks1 = (double)((Convert.ToDouble(size1) / 1024) / 128);
- double blocks2 = (double)((Convert.ToDouble(size2) / 1024) / 128);
-
- return Math.Ceiling(blocks1) + " - " + Math.Ceiling(blocks2);
- }
- else
- {
- double blocks = (double)((Convert.ToDouble(size) / 1024) / 128);
-
- return Math.Ceiling(blocks).ToString();
- }
- }
-
- ///
- /// Returns the title version of the wad file
- ///
- ///
- ///
- public static int GetTitleVersion(string wadtmd)
- {
- byte[] temp = Tools.LoadFileToByteArray(wadtmd, 0, 10000);
- return GetTitleVersion(temp);
- }
-
- ///
- /// Returns the title version of the wad file
- ///
- ///
- ///
- public static int GetTitleVersion(byte[] wadtmd)
- {
- int tmdpos = 0;
-
- if (IsThisWad(wadtmd) == true) { tmdpos = GetTmdPos(wadtmd); }
- return Tools.HexStringToInt(wadtmd[tmdpos + 0x1dc].ToString("x2") + wadtmd[tmdpos + 0x1dd].ToString("x2"));
- }
-
- ///
- /// Returns the IOS that is needed by the wad file
- ///
- ///
- ///
- public static string GetIosFlag(byte[] wadtmd)
- {
- string type = GetChannelType(wadtmd, 1);
-
- if (!type.Contains("IOS") && !type.Contains("BC"))
- {
- int tmdpos = 0;
- if (IsThisWad(wadtmd) == true) { tmdpos = GetTmdPos(wadtmd); }
- return "IOS" + Tools.HexStringToInt(wadtmd[tmdpos + 0x188].ToString("x2") + wadtmd[tmdpos + 0x189].ToString("x2") + wadtmd[tmdpos + 0x18a].ToString("x2") + wadtmd[tmdpos + 0x18b].ToString("x2"));
- }
- else return "";
- }
-
- ///
- /// Returns the region of the wad file
- ///
- ///
- ///
- public static string GetRegionFlag(byte[] wadtmd)
- {
- int tmdpos = 0;
- string channeltype = GetChannelType(wadtmd, 1);
-
- if (IsThisWad(wadtmd) == true) { tmdpos = GetTmdPos(wadtmd); }
-
- if (!channeltype.Contains("System:"))
- {
- int region = Tools.HexStringToInt(wadtmd[tmdpos + 0x19d].ToString("x2"));
- return RegionCode[region];
- }
- else return "";
- }
-
- ///
- /// Returns the Path where the wad will be installed on the Wii
- ///
- ///
- ///
- public static string GetNandPath(string wadfile)
- {
- byte[] wad = Tools.LoadFileToByteArray(wadfile);
- return GetNandPath(wad, 0);
- }
-
- ///
- /// Returns the Path where the wad will be installed on the Wii
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static string GetNandPath(byte[] wadtiktmd, int type)
- {
- int tikpos = 0;
- int tmdpos = 0;
-
- if (IsThisWad(wadtiktmd) == true)
- {
- tikpos = GetTikPos(wadtiktmd);
- tmdpos = GetTmdPos(wadtiktmd);
- }
-
- string thispath = "";
-
- if (type == 0)
- {
- thispath = wadtiktmd[tikpos + 0x1dc].ToString("x2") +
- wadtiktmd[tikpos + 0x1dd].ToString("x2") +
- wadtiktmd[tikpos + 0x1de].ToString("x2") +
- wadtiktmd[tikpos + 0x1df].ToString("x2") +
- wadtiktmd[tikpos + 0x1e0].ToString("x2") +
- wadtiktmd[tikpos + 0x1e1].ToString("x2") +
- wadtiktmd[tikpos + 0x1e2].ToString("x2") +
- wadtiktmd[tikpos + 0x1e3].ToString("x2");
- }
- else
- {
- thispath = wadtiktmd[tmdpos + 0x18c].ToString("x2") +
- wadtiktmd[tmdpos + 0x18d].ToString("x2") +
- wadtiktmd[tmdpos + 0x18e].ToString("x2") +
- wadtiktmd[tmdpos + 0x18f].ToString("x2") +
- wadtiktmd[tmdpos + 0x190].ToString("x2") +
- wadtiktmd[tmdpos + 0x191].ToString("x2") +
- wadtiktmd[tmdpos + 0x192].ToString("x2") +
- wadtiktmd[tmdpos + 0x193].ToString("x2");
- }
-
- thispath = thispath.Insert(8, "\\");
- return thispath;
- }
-
- ///
- /// Returns true, if the wad file is a WiiWare / VC title.
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static string CheckWiiWareVC(byte[] wadtiktmd, int type)
- {
- int tiktmdpos = 0;
- int offset = 0x221;
- int idoffset = 0x1e0;
-
- if (type == 1) { offset = 0x197; idoffset = 0x190; }
- if (IsThisWad(wadtiktmd) == true)
- {
- if (type == 1) tiktmdpos = GetTmdPos(wadtiktmd);
- else tiktmdpos = GetTikPos(wadtiktmd);
- }
-
- if (wadtiktmd[tiktmdpos + offset] == 0x01)
- {
- char idchar = Convert.ToChar(wadtiktmd[tiktmdpos + idoffset]);
- char idchar2 = Convert.ToChar(wadtiktmd[tiktmdpos + idoffset + 1]);
-
- if (idchar == 'H') return "System Channel";
- else if (idchar == 'W') return "WiiWare";
- else
- {
- if (idchar == 'C') return "C64";
- else if (idchar == 'E' && idchar2 == 'A') return "NeoGeo";
- else if (idchar == 'E') return "VC - Arcade";
- else if (idchar == 'F') return "NES";
- else if (idchar == 'J') return "SNES";
- else if (idchar == 'L') return "Sega Master System";
- else if (idchar == 'M') return "Sega Genesis";
- else if (idchar == 'N') return "Nintendo 64";
- else if (idchar == 'P') return "Turbografx";
- else if (idchar == 'Q') return "Turbografx CD";
- else return "Channel Title";
- }
- }
- else return "Channel Title";
- }
-
- ///
- /// Returns all information stored in the tmd for all contents in the wad file.
- /// [x, 0] = Content ID, [x, 1] = Index, [x, 2] = Type, [x, 3] = Size, [x, 4] = Sha1
- ///
- ///
- ///
- public static string[,] GetContentInfo(byte[] wadtmd)
- {
- int tmdpos = 0;
-
- if (IsThisWad(wadtmd) == true) { tmdpos = GetTmdPos(wadtmd); }
- int contentcount = GetContentNum(wadtmd);
- string[,] contentinfo = new string[contentcount, 5];
-
- for (int i = 0; i < contentcount; i++)
- {
- contentinfo[i, 0] = wadtmd[tmdpos + 0x1e4 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1e5 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1e6 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1e7 + (36 * i)].ToString("x2");
- contentinfo[i, 1] = "0000" +
- wadtmd[tmdpos + 0x1e8 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1e9 + (36 * i)].ToString("x2");
- contentinfo[i, 2] = wadtmd[tmdpos + 0x1ea + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1eb + (36 * i)].ToString("x2");
- contentinfo[i, 3] = Tools.HexStringToInt(
- wadtmd[tmdpos + 0x1ec + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1ed + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1ee + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1ef + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1f0 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1f1 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1f2 + (36 * i)].ToString("x2") +
- wadtmd[tmdpos + 0x1f3 + (36 * i)].ToString("x2")).ToString();
-
- for (int j = 0; j < 20; j++)
- {
- contentinfo[i, 4] += wadtmd[tmdpos + 0x1f4 + (36 * i) + j].ToString("x2");
- }
- }
-
- return contentinfo;
- }
-
- ///
- /// Returns the Tik of the wad file as a Byte-Array
- ///
- ///
- ///
- public static byte[] ReturnTik(byte[] wadfile)
- {
- int tikpos = GetTikPos(wadfile);
- int tiksize = GetTikSize(wadfile);
-
- byte[] tik = new byte[tiksize];
-
- for (int i = 0; i < tiksize; i++)
- {
- tik[i] = wadfile[tikpos + i];
- }
-
- return tik;
- }
-
- ///
- /// Returns the Tmd of the wad file as a Byte-Array
- ///
- ///
- ///
- public static byte[] ReturnTmd(byte[] wadfile)
- {
- int tmdpos = GetTmdPos(wadfile);
- int tmdsize = GetTmdSize(wadfile);
-
- byte[] tmd = new byte[tmdsize];
-
- for (int i = 0; i < tmdsize; i++)
- {
- tmd[i] = wadfile[tmdpos + i];
- }
-
- return tmd;
- }
-
- ///
- /// Checks, if the given file is a wad
- ///
- ///
- ///
- public static bool IsThisWad(byte[] wadtiktmd)
- {
- if (wadtiktmd[0] == 0x00 &&
- wadtiktmd[1] == 0x00 &&
- wadtiktmd[2] == 0x00 &&
- wadtiktmd[3] == 0x20 &&
- wadtiktmd[4] == 0x49 &&
- wadtiktmd[5] == 0x73)
- { return true; }
-
- return false;
- }
-
- ///
- /// Returns the decrypted TitleKey
- ///
- ///
- ///
- public static byte[] GetTitleKey(byte[] wadtik)
- {
- byte[] commonkey = new byte[16];
-
- if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\common-key.bin"))
- { commonkey = Tools.LoadFileToByteArray(System.Windows.Forms.Application.StartupPath + "\\common-key.bin"); }
- else if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\key.bin"))
- { commonkey = Tools.LoadFileToByteArray(System.Windows.Forms.Application.StartupPath + "\\key.bin"); }
- else { throw new FileNotFoundException("The (common-)key.bin must be in the application directory!"); }
-
- byte[] encryptedkey = new byte[16];
- byte[] iv = new byte[16];
- int tikpos = 0;
-
- if (IsThisWad(wadtik) == true)
- {
- //It's a wad file, so get the tik position
- tikpos = GetTikPos(wadtik);
- }
-
- for (int i = 0; i < 16; i++)
- {
- encryptedkey[i] = wadtik[tikpos + 0x1bf + i];
- }
-
- for (int j = 0; j < 8; j++)
- {
- iv[j] = wadtik[tikpos + 0x1dc + j];
- iv[j + 8] = 0x00;
- }
-
- RijndaelManaged decrypt = new RijndaelManaged();
- decrypt.Mode = CipherMode.CBC;
- decrypt.Padding = PaddingMode.None;
- decrypt.KeySize = 128;
- decrypt.BlockSize = 128;
- decrypt.Key = commonkey;
- decrypt.IV = iv;
-
- ICryptoTransform cryptor = decrypt.CreateDecryptor();
-
- MemoryStream memory = new MemoryStream(encryptedkey);
- CryptoStream crypto = new CryptoStream(memory, cryptor, CryptoStreamMode.Read);
-
- byte[] decryptedkey = new byte[16];
- crypto.Read(decryptedkey, 0, decryptedkey.Length);
-
- crypto.Close();
- memory.Close();
-
- return decryptedkey;
- }
- }
-
- public class WadEdit
- {
- ///
- /// Changes the region of the wad file
- ///
- ///
- /// 0 = JAP, 1 = USA, 2 = EUR, 3 = FREE
- ///
- public static byte[] ChangeRegion(byte[] wadfile, int region)
- {
-
- int tmdpos = WadInfo.GetTmdPos(wadfile);
-
- if (region == 0) wadfile[tmdpos + 0x19d] = 0x00;
- else if (region == 1) wadfile[tmdpos + 0x19d] = 0x01;
- else if (region == 2) wadfile[tmdpos + 0x19d] = 0x02;
- else wadfile[tmdpos + 0x19d] = 0x03;
-
- wadfile = TruchaSign(wadfile, 1);
-
- return wadfile;
- }
-
- ///
- /// Changes the region of the wad file
- ///
- ///
- ///
- public static void ChangeRegion(string wadfile, int region)
- {
- byte[] wadarray = Tools.LoadFileToByteArray(wadfile);
- wadarray = ChangeRegion(wadarray, region);
-
- using (FileStream fs = new FileStream(wadfile, FileMode.Open, FileAccess.Write))
- {
- fs.Seek(0, SeekOrigin.Begin);
- fs.Write(wadarray, 0, wadarray.Length);
- }
- }
-
- ///
- /// Changes the Channel Title of the wad file
- /// All languages have the same title
- ///
- ///
- ///
- ///
- public static byte[] ChangeChannelTitle(byte[] wadfile, string title)
- {
- return ChangeChannelTitle(wadfile, title, title, title, title, title, title, title);
- }
-
- ///
- /// Changes the Channel Title of the wad file
- /// Each language has a specific title
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static void ChangeChannelTitle(string wadfile, string jap, string eng, string ger, string fra, string spa, string ita, string dut)
- {
- byte[] wadarray = Tools.LoadFileToByteArray(wadfile);
- wadarray = ChangeChannelTitle(wadarray, jap, eng, ger, fra, spa, ita, dut);
-
- using (FileStream fs = new FileStream(wadfile, FileMode.Open, FileAccess.Write))
- {
- fs.Seek(0, SeekOrigin.Begin);
- fs.Write(wadarray, 0, wadarray.Length);
- }
- }
-
- ///
- /// Changes the Channel Title of the wad file
- /// Each language has a specific title
- ///
- ///
- /// Japanese Title
- /// English Title
- /// German Title
- /// French Title
- /// Spanish Title
- /// Italian Title
- /// Dutch Title
- ///
- public static byte[] ChangeChannelTitle(byte[] wadfile, string jap, string eng, string ger, string fra, string spa, string ita, string dut)
- {
- Tools.ChangeProgress(0);
-
- char[] japchars = jap.ToCharArray();
- char[] engchars = eng.ToCharArray();
- char[] gerchars = ger.ToCharArray();
- char[] frachars = fra.ToCharArray();
- char[] spachars = spa.ToCharArray();
- char[] itachars = ita.ToCharArray();
- char[] dutchars = dut.ToCharArray();
-
- byte[] titlekey = WadInfo.GetTitleKey(wadfile);
- string[,] conts = WadInfo.GetContentInfo(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- int tmdsize = WadInfo.GetTmdSize(wadfile);
- int nullapp = 0;
- int contentpos = 64 + Tools.AddPadding(WadInfo.GetCertSize(wadfile)) + Tools.AddPadding(WadInfo.GetTikSize(wadfile)) + Tools.AddPadding(WadInfo.GetTmdSize(wadfile));
- SHA1Managed sha1 = new SHA1Managed();
-
- Tools.ChangeProgress(10);
-
- for (int i = 0; i < conts.GetLength(0); i++)
- {
- if (conts[i, 1] == "00000000")
- {
- nullapp = i;
- break;
- }
- else
- contentpos += Tools.AddPadding(Convert.ToInt32(conts[i, 3]));
- }
-
- byte[] contenthandle = DecryptContent(wadfile, nullapp, titlekey);
-
- Tools.ChangeProgress(25);
-
- int imetpos = 0;
-
- for (int z = 0; z < 400; z++)
- {
- if (Convert.ToChar(contenthandle[z]) == 'I')
- if (Convert.ToChar(contenthandle[z + 1]) == 'M')
- if (Convert.ToChar(contenthandle[z + 2]) == 'E')
- if (Convert.ToChar(contenthandle[z + 3]) == 'T')
- {
- imetpos = z;
- break;
- }
- }
-
- Tools.ChangeProgress(40);
-
- int count = 0;
-
- for (int x = imetpos; x < imetpos + 40; x += 2)
- {
- if (japchars.Length > count)
- {
- contenthandle[x + 29] = BitConverter.GetBytes(japchars[count])[0];
- contenthandle[x + 30] = BitConverter.GetBytes(japchars[count])[1];
- }
- else { contenthandle[x + 29] = 0x00; }
- if (engchars.Length > count)
- {
- contenthandle[x + 29 + 84] = BitConverter.GetBytes(engchars[count])[0];
- contenthandle[x + 29 + 84 - 1] = BitConverter.GetBytes(engchars[count])[1];
- }
- else { contenthandle[x + 29 + 84] = 0x00; }
- if (gerchars.Length > count)
- {
- contenthandle[x + 29 + 84 * 2] = BitConverter.GetBytes(gerchars[count])[0];
- contenthandle[x + 29 + 84 * 2 - 1] = BitConverter.GetBytes(gerchars[count])[1];
- }
- else { contenthandle[x + 29 + 84 * 2] = 0x00; }
- if (frachars.Length > count)
- {
- contenthandle[x + 29 + 84 * 3] = BitConverter.GetBytes(frachars[count])[0];
- contenthandle[x + 29 + 84 * 3 - 1] = BitConverter.GetBytes(frachars[count])[1];
- }
- else { contenthandle[x + 29 + 84 * 3] = 0x00; }
- if (spachars.Length > count)
- {
- contenthandle[x + 29 + 84 * 4] = BitConverter.GetBytes(spachars[count])[0];
- contenthandle[x + 29 + 84 * 4 - 1] = BitConverter.GetBytes(spachars[count])[1];
- }
- else { contenthandle[x + 29 + 84 * 4] = 0x00; }
- if (itachars.Length > count)
- {
- contenthandle[x + 29 + 84 * 5] = BitConverter.GetBytes(itachars[count])[0];
- contenthandle[x + 29 + 84 * 5 - 1] = BitConverter.GetBytes(itachars[count])[1];
- }
- else { contenthandle[x + 29 + 84 * 5] = 0x00; }
- if (dutchars.Length > count)
- {
- contenthandle[x + 29 + 84 * 6] = BitConverter.GetBytes(dutchars[count])[0];
- contenthandle[x + 29 + 84 * 6 - 1] = BitConverter.GetBytes(dutchars[count])[1];
- }
- else { contenthandle[x + 29 + 84 * 6] = 0x00; }
-
- count++;
- }
-
- Tools.ChangeProgress(50);
-
- byte[] newmd5 = new byte[16];
- contenthandle = FixMD5InImet(contenthandle, out newmd5);
- byte[] newsha = sha1.ComputeHash(contenthandle);
-
- contenthandle = EncryptContent(contenthandle, WadInfo.ReturnTmd(wadfile), nullapp, titlekey, false);
-
- Tools.ChangeProgress(70);
-
- for (int y = 0; y < contenthandle.Length; y++)
- {
- wadfile[contentpos + y] = contenthandle[y];
- }
-
- //SHA1 in TMD
- byte[] tmd = Tools.GetPartOfByteArray(wadfile, tmdpos, tmdsize);
- for (int i = 0; i < 20; i++)
- tmd[0x1f4 + (36 * nullapp) + i] = newsha[i];
- TruchaSign(tmd, 1);
- wadfile = Tools.InsertByteArray(wadfile, tmd, tmdpos);
-
- int footer = WadInfo.GetFooterSize(wadfile);
-
- Tools.ChangeProgress(80);
-
- if (footer > 0)
- {
- int footerpos = wadfile.Length - footer;
- int imetposfoot = 0;
-
- for (int z = 0; z < 200; z++)
- {
- if (Convert.ToChar(wadfile[footerpos + z]) == 'I')
- if (Convert.ToChar(wadfile[footerpos + z + 1]) == 'M')
- if (Convert.ToChar(wadfile[footerpos + z + 2]) == 'E')
- if (Convert.ToChar(wadfile[footerpos + z + 3]) == 'T')
- {
- imetposfoot = footerpos + z;
- break;
- }
- }
-
- Tools.ChangeProgress(90);
-
- int count2 = 0;
-
- for (int x = imetposfoot; x < imetposfoot + 40; x += 2)
- {
- if (japchars.Length > count2) { wadfile[x + 29] = Convert.ToByte(japchars[count2]); }
- else { wadfile[x + 29] = 0x00; }
- if (engchars.Length > count2) { wadfile[x + 29 + 84] = Convert.ToByte(engchars[count2]); }
- else { wadfile[x + 29 + 84] = 0x00; }
- if (gerchars.Length > count2) { wadfile[x + 29 + 84 * 2] = Convert.ToByte(gerchars[count2]); }
- else { wadfile[x + 29 + 84 * 2] = 0x00; }
- if (frachars.Length > count2) { wadfile[x + 29 + 84 * 3] = Convert.ToByte(frachars[count2]); }
- else { wadfile[x + 29 + 84 * 3] = 0x00; }
- if (spachars.Length > count2) { wadfile[x + 29 + 84 * 4] = Convert.ToByte(spachars[count2]); }
- else { wadfile[x + 29 + 84 * 4] = 0x00; }
- if (itachars.Length > count2) { wadfile[x + 29 + 84 * 5] = Convert.ToByte(itachars[count2]); }
- else { wadfile[x + 29 + 84 * 5] = 0x00; }
- if (dutchars.Length > count2) { wadfile[x + 29 + 84 * 6] = Convert.ToByte(dutchars[count2]); }
- else { wadfile[x + 29 + 84 * 6] = 0x00; }
-
- count2++;
- }
-
- for (int i = 0; i < 16; i++)
- wadfile[imetposfoot + 1456 + i] = newmd5[i];
- }
-
- Tools.ChangeProgress(100);
- return wadfile;
- }
-
- ///
- /// Changes the Title ID in the Tik or Tmd file
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static void ChangeTitleID(string tiktmdfile, int type, string titleid)
- {
- byte[] temp = Tools.LoadFileToByteArray(tiktmdfile);
- temp = ChangeTitleID(temp, type, titleid);
- Tools.SaveFileFromByteArray(temp, tiktmdfile);
- }
-
- ///
- /// Changes the Title ID in the Tik or Tmd file
- ///
- ///
- /// 0 = Tik, 1 = Tmd
- ///
- public static byte[] ChangeTitleID(byte[] tiktmd, int type, string titleid)
- {
- int offset = 0x1e0;
- if (type == 1) offset = 0x190;
- char[] id = titleid.ToCharArray();
-
- tiktmd[offset] = (byte)id[0];
- tiktmd[offset + 1] = (byte)id[1];
- tiktmd[offset + 2] = (byte)id[2];
- tiktmd[offset + 3] = (byte)id[3];
-
- tiktmd = TruchaSign(tiktmd, type);
-
- return tiktmd;
- }
-
- ///
- /// Changes the title ID of the wad file
- ///
- ///
- ///
- ///
- public static byte[] ChangeTitleID(byte[] wadfile, string titleid)
- {
- Tools.ChangeProgress(0);
-
- int tikpos = WadInfo.GetTikPos(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- char[] id = titleid.ToCharArray();
-
- byte[] oldtitlekey = WadInfo.GetTitleKey(wadfile);
-
- Tools.ChangeProgress(20);
-
- //Change the ID in the ticket
- wadfile[tikpos + 0x1e0] = (byte)id[0];
- wadfile[tikpos + 0x1e1] = (byte)id[1];
- wadfile[tikpos + 0x1e2] = (byte)id[2];
- wadfile[tikpos + 0x1e3] = (byte)id[3];
-
- //Change the ID in the tmd
- wadfile[tmdpos + 0x190] = (byte)id[0];
- wadfile[tmdpos + 0x191] = (byte)id[1];
- wadfile[tmdpos + 0x192] = (byte)id[2];
- wadfile[tmdpos + 0x193] = (byte)id[3];
-
- Tools.ChangeProgress(40);
-
- //Trucha-Sign both
- wadfile = TruchaSign(wadfile, 0);
-
- Tools.ChangeProgress(50);
-
- wadfile = TruchaSign(wadfile, 1);
-
- Tools.ChangeProgress(60);
-
- byte[] newtitlekey = WadInfo.GetTitleKey(wadfile);
- byte[] tmd = WadInfo.ReturnTmd(wadfile);
-
- int contentcount = WadInfo.GetContentNum(wadfile);
-
- wadfile = ReEncryptAllContents(wadfile, oldtitlekey, newtitlekey);
-
- Tools.ChangeProgress(100);
- return wadfile;
- }
-
- ///
- /// Changes the title ID of the wad file
- ///
- ///
- ///
- public static void ChangeTitleID(string wadfile, string titleid)
- {
- byte[] wadarray = Tools.LoadFileToByteArray(wadfile);
- wadarray = ChangeTitleID(wadarray, titleid);
-
- using (FileStream fs = new FileStream(wadfile, FileMode.Open, FileAccess.Write))
- {
- fs.Seek(0, SeekOrigin.Begin);
- fs.Write(wadarray, 0, wadarray.Length);
- }
- }
-
- ///
- /// Clears the Signature of the Tik / Tmd to 0x00
- ///
- /// Wad, Tik or Tmd
- /// 0 = Tik, 1 = Tmd
- ///
- public static byte[] ClearSignature(byte[] wadtiktmd, int type)
- {
- int tmdtikpos = 0;
- int tmdtiksize = wadtiktmd.Length; ;
-
- if (WadInfo.IsThisWad(wadtiktmd) == true)
- {
- //It's a wad file, so get the tik or tmd position and length
- switch (type)
- {
- case 1:
- tmdtikpos = WadInfo.GetTmdPos(wadtiktmd);
- tmdtiksize = WadInfo.GetTmdSize(wadtiktmd);
- break;
- default:
- tmdtikpos = WadInfo.GetTikPos(wadtiktmd);
- tmdtiksize = WadInfo.GetTikSize(wadtiktmd);
- break;
- }
- }
-
- for (int i = 4; i < 260; i++)
- {
- wadtiktmd[tmdtikpos + i] = 0x00;
- }
-
- return wadtiktmd;
- }
-
- ///
- /// Trucha-Signs the Tik or Tmd
- ///
- /// Wad or Tik or Tmd
- /// 0 = Tik, 1 = Tmd
- ///
- public static void TruchaSign(string file, int type)
- {
- byte[] temp = Tools.LoadFileToByteArray(file);
- temp = TruchaSign(temp, type);
- Tools.SaveFileFromByteArray(temp, file);
- }
-
- ///
- /// Trucha-Signs the Tik or Tmd
- ///
- /// Wad or Tik or Tmd
- /// 0 = Tik, 1 = Tmd
- ///
- public static byte[] TruchaSign(byte[] wadtiktmd, int type)
- {
- SHA1Managed sha = new SHA1Managed();
- int[] position = new int[2] { 0x1f1, 0x1d4 }; //0x104 0x1c1
- int[] tosign = new int[2] { 0x140, 0x140 }; //0x104 0x140
- int tiktmdpos = 0;
- int tiktmdsize = wadtiktmd.Length;
-
- if (sha.ComputeHash(wadtiktmd, tiktmdpos + tosign[type], tiktmdsize - tosign[type])[0] != 0x00)
- {
- ClearSignature(wadtiktmd, type);
-
- if (WadInfo.IsThisWad(wadtiktmd) == true)
- {
- //It's a wad file
- if (type == 0) //Get Tik position and size
- {
- tiktmdpos = WadInfo.GetTikPos(wadtiktmd);
- tiktmdsize = WadInfo.GetTikSize(wadtiktmd);
- }
- else //Get Tmd position and size
- {
- tiktmdpos = WadInfo.GetTmdPos(wadtiktmd);
- tiktmdsize = WadInfo.GetTmdSize(wadtiktmd);
- }
- }
-
- byte[] sha1 = new byte[20];
-
- for (UInt16 i = 0; i < 65535; i++)
- {
- byte[] hex = BitConverter.GetBytes(i);
- wadtiktmd[tiktmdpos + position[type]] = hex[0];
- wadtiktmd[tiktmdpos + position[type] + 1] = hex[1];
-
- sha1 = sha.ComputeHash(wadtiktmd, tiktmdpos + tosign[type], tiktmdsize - tosign[type]);
- if (sha1[0] == 0x00) break;
- }
-
- return wadtiktmd;
- }
- else return wadtiktmd;
- }
-
- ///
- /// Decrypts the given content
- ///
- ///
- ///
- public static byte[] DecryptContent(byte[] wadfile, int contentcount, byte[] titlekey)
- {
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- byte[] iv = new byte[16];
- string[,] continfo = WadInfo.GetContentInfo(wadfile);
- int contentsize = Convert.ToInt32(continfo[contentcount, 3]);
- int paddedsize = Tools.AddPadding(contentsize, 16);
-
- int contentpos = 64 + Tools.AddPadding(WadInfo.GetCertSize(wadfile)) + Tools.AddPadding(WadInfo.GetTikSize(wadfile)) + Tools.AddPadding(WadInfo.GetTmdSize(wadfile));
-
- for (int x = 0; x < contentcount; x++)
- {
- contentpos += Tools.AddPadding(Convert.ToInt32(continfo[x, 3]));
- }
-
- iv[0] = wadfile[tmdpos + 0x1e8 + (0x24 * contentcount)];
- iv[1] = wadfile[tmdpos + 0x1e9 + (0x24 * contentcount)];
-
- RijndaelManaged decrypt = new RijndaelManaged();
- decrypt.Mode = CipherMode.CBC;
- decrypt.Padding = PaddingMode.None;
- decrypt.KeySize = 128;
- decrypt.BlockSize = 128;
- decrypt.Key = titlekey;
- decrypt.IV = iv;
-
- ICryptoTransform cryptor = decrypt.CreateDecryptor();
-
- MemoryStream memory = new MemoryStream(wadfile, contentpos, paddedsize);
- CryptoStream crypto = new CryptoStream(memory, cryptor, CryptoStreamMode.Read);
-
- bool fullread = false;
- byte[] buffer = new byte[16384];
- byte[] cont = new byte[1];
-
- using (MemoryStream ms = new MemoryStream())
- {
- while (fullread == false)
- {
- int len = 0;
- if ((len = crypto.Read(buffer, 0, buffer.Length)) <= 0)
- {
- fullread = true;
- cont = ms.ToArray();
- }
- ms.Write(buffer, 0, len);
- }
- }
-
- memory.Close();
- crypto.Close();
-
- Array.Resize(ref cont, contentsize);
-
- return cont;
- }
-
- ///
- /// Decrypts the given content
- ///
- ///
- ///
- ///
- ///
- ///
- public static byte[] DecryptContent(byte[] content, byte[] tmd, int contentcount, byte[] titlekey)
- {
- byte[] iv = new byte[16];
- string[,] continfo = WadInfo.GetContentInfo(tmd);
- int contentsize = content.Length;
- int paddedsize = Tools.AddPadding(contentsize, 16);
- Array.Resize(ref content, paddedsize);
-
- iv[0] = tmd[0x1e8 + (0x24 * contentcount)];
- iv[1] = tmd[0x1e9 + (0x24 * contentcount)];
-
- RijndaelManaged decrypt = new RijndaelManaged();
- decrypt.Mode = CipherMode.CBC;
- decrypt.Padding = PaddingMode.None;
- decrypt.KeySize = 128;
- decrypt.BlockSize = 128;
- decrypt.Key = titlekey;
- decrypt.IV = iv;
-
- ICryptoTransform cryptor = decrypt.CreateDecryptor();
-
- MemoryStream memory = new MemoryStream(content, 0, paddedsize);
- CryptoStream crypto = new CryptoStream(memory, cryptor, CryptoStreamMode.Read);
-
- bool fullread = false;
- byte[] buffer = new byte[memory.Length];
- byte[] cont = new byte[1];
-
- using (MemoryStream ms = new MemoryStream())
- {
- while (fullread == false)
- {
- int len = 0;
- if ((len = crypto.Read(buffer, 0, buffer.Length)) <= 0)
- {
- fullread = true;
- cont = ms.ToArray();
- }
- ms.Write(buffer, 0, len);
- }
- }
-
- memory.Close();
- crypto.Close();
-
- return cont;
- }
-
- ///
- /// Encrypts the given content and adds a padding to the next 64 bytes
- ///
- ///
- ///
- ///
- ///
- ///
- public static byte[] EncryptContent(byte[] content, byte[] tmd, int contentcount, byte[] titlekey, bool addpadding)
- {
- byte[] iv = new byte[16];
- string[,] continfo = WadInfo.GetContentInfo(tmd);
- int contentsize = content.Length;
- int paddedsize = Tools.AddPadding(contentsize, 16);
- Array.Resize(ref content, paddedsize);
-
- iv[0] = tmd[0x1e8 + (0x24 * contentcount)];
- iv[1] = tmd[0x1e9 + (0x24 * contentcount)];
-
- RijndaelManaged encrypt = new RijndaelManaged();
- encrypt.Mode = CipherMode.CBC;
- encrypt.Padding = PaddingMode.None;
- encrypt.KeySize = 128;
- encrypt.BlockSize = 128;
- encrypt.Key = titlekey;
- encrypt.IV = iv;
-
- ICryptoTransform cryptor = encrypt.CreateEncryptor();
-
- MemoryStream memory = new MemoryStream(content, 0, paddedsize);
- CryptoStream crypto = new CryptoStream(memory, cryptor, CryptoStreamMode.Read);
-
- bool fullread = false;
- byte[] buffer = new byte[memory.Length];
- byte[] cont = new byte[1];
-
- using (MemoryStream ms = new MemoryStream())
- {
- while (fullread == false)
- {
- int len = 0;
- if ((len = crypto.Read(buffer, 0, buffer.Length)) <= 0)
- {
- fullread = true;
- cont = ms.ToArray();
- }
- ms.Write(buffer, 0, len);
- }
- }
-
- memory.Close();
- crypto.Close();
-
- if (addpadding == true) { Array.Resize(ref cont, Tools.AddPadding(cont.Length)); }
- return cont;
- }
-
- ///
- /// Re-Encrypts the given content
- ///
- ///
- ///
- public static byte[] ReEncryptAllContents(byte[] wadfile, byte[] oldtitlekey, byte[] newtitlekey)
- {
- int contentnum = WadInfo.GetContentNum(wadfile);
- int certsize = WadInfo.GetCertSize(wadfile);
- int tiksize = WadInfo.GetTikSize(wadfile);
- int tmdsize = WadInfo.GetTmdSize(wadfile);
- int contentpos = 64 + Tools.AddPadding(certsize) + Tools.AddPadding(tiksize) + Tools.AddPadding(tmdsize);
-
- for (int i = 0; i < contentnum; i++)
- {
- byte[] tmd = WadInfo.ReturnTmd(wadfile);
- byte[] decryptedcontent = DecryptContent(wadfile, i, oldtitlekey);
- byte[] encryptedcontent = EncryptContent(decryptedcontent, tmd, i, newtitlekey, false);
-
- for (int j = 0; j < encryptedcontent.Length; j++)
- {
- wadfile[contentpos + j] = encryptedcontent[j];
- }
- contentpos += Tools.AddPadding(encryptedcontent.Length);
- }
-
- return wadfile;
- }
-
- ///
- /// Fixes the MD5 Sum in the IMET Header
- ///
- ///
- ///
- public static byte[] FixMD5InImet(byte[] file, out byte[] newmd5)
- {
- if (Convert.ToChar(file[128]) == 'I' &&
- Convert.ToChar(file[129]) == 'M' &&
- Convert.ToChar(file[130]) == 'E' &&
- Convert.ToChar(file[131]) == 'T')
- {
- byte[] buffer = new byte[1536];
-
- using (MemoryStream ms = new MemoryStream())
- {
- ms.Write(file, 0x40, 1536);
- buffer = ms.ToArray();
- }
-
- for (int i = 0; i < 16; i++)
- buffer[1520 + i] = 0x00;
-
- MD5 md5 = new MD5CryptoServiceProvider();
- byte[] hash = md5.ComputeHash(buffer);
-
- for (int i = 0; i < 16; i++)
- file[1584 + i] = hash[i];
-
- newmd5 = hash;
- return file;
- }
- else
- {
- byte[] oldmd5 = new byte[16];
-
- using (MemoryStream ms = new MemoryStream())
- {
- ms.Write(file, 1584, 16);
- oldmd5 = ms.ToArray();
- }
-
- newmd5 = oldmd5;
- return file;
- }
- }
-
- ///
- /// Fixes the MD5 Sum in the IMET Header.
- ///
- ///
- ///
- public static byte[] FixMD5InImet(byte[] file)
- {
- byte[] tmp = new byte[16];
- return FixMD5InImet(file, out tmp);
- }
-
- ///
- /// Updates the Content Info in the Tmd.
- /// Tmd and Contents must be in the same Directory
- ///
- ///
- public static void UpdateTmdContents(string tmdfile)
- {
- FileStream tmd = new FileStream(tmdfile, FileMode.Open, FileAccess.ReadWrite);
-
- tmd.Seek(0x1de, SeekOrigin.Begin);
- int contentcount = Tools.HexStringToInt(tmd.ReadByte().ToString("x2") + tmd.ReadByte().ToString("x2"));
-
- for (int i = 0; i < contentcount; i++)
- {
- int oldsize = 0;
- int contentpos = 0x1e4 + (36 * i);
-
- tmd.Seek(contentpos + 4, SeekOrigin.Begin);
- string index = "0000" + tmd.ReadByte().ToString("x2") + tmd.ReadByte().ToString("x2");
-
- tmd.Seek(contentpos + 8, SeekOrigin.Begin);
- try
- {
- oldsize = Tools.HexStringToInt(tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2") +
- tmd.ReadByte().ToString("x2"));
- }
- catch { }
-
- byte[] oldsha1 = new byte[20];
- tmd.Read(oldsha1, 0, oldsha1.Length);
-
- if (File.Exists(tmdfile.Remove(tmdfile.LastIndexOf('\\') + 1) + index + ".app"))
- {
- byte[] content = Wii.Tools.LoadFileToByteArray(tmdfile.Remove(tmdfile.LastIndexOf('\\') + 1) + index + ".app");
- int newsize = content.Length;
-
- if (newsize != oldsize)
- {
- byte[] changedsize = Tools.FileLengthToByteArray(newsize);
-
- tmd.Seek(contentpos + 8, SeekOrigin.Begin);
- for (int x = 8; x > changedsize.Length; x--) tmd.WriteByte(0x00);
- tmd.Write(changedsize, 0, changedsize.Length);
- }
-
- SHA1Managed sha1 = new SHA1Managed();
- byte[] newsha1 = sha1.ComputeHash(content);
- sha1.Clear();
-
- if (Tools.CompareByteArrays(newsha1, oldsha1) == false)
- {
- tmd.Seek(contentpos + 16, SeekOrigin.Begin);
- tmd.Write(newsha1, 0, newsha1.Length);
- }
- }
- else
- {
- throw new Exception("At least one content file wasn't found!");
- }
- }
-
- tmd.Close();
- }
-
- ///
- /// Changes the Boot Index in the Tmd to the given value
- ///
- ///
- ///
- public static byte[] ChangeTmdBootIndex(byte[] wadtmd, int newindex)
- {
- int tmdpos = 0;
-
- if (WadInfo.IsThisWad(wadtmd) == true)
- tmdpos = WadInfo.GetTmdPos(wadtmd);
-
- byte[] index = BitConverter.GetBytes((UInt16)newindex);
- wadtmd[tmdpos + 0x1e0] = index[1];
- wadtmd[tmdpos + 0x1e1] = index[0];
-
- return wadtmd;
- }
-
- ///
- /// Changes the Content Count in the Tmd
- ///
- ///
- ///
- ///
- public static byte[] ChangeTmdContentCount(byte[] wadtmd, int newcount)
- {
- int tmdpos = 0;
-
- if (WadInfo.IsThisWad(wadtmd) == true)
- tmdpos = WadInfo.GetTmdPos(wadtmd);
-
- byte[] count = BitConverter.GetBytes((UInt16)newcount);
- wadtmd[tmdpos + 0x1de] = count[1];
- wadtmd[tmdpos + 0x1df] = count[0];
-
- return wadtmd;
- }
-
- ///
- /// Changes the Slot where the IOS Wad will be installed to
- ///
- ///
- ///
- ///
- public static byte[] ChangeIosSlot(byte[] wadfile, int newslot)
- {
- Tools.ChangeProgress(0);
-
- int tikpos = WadInfo.GetTikPos(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- byte[] slot = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(newslot));
-
- byte[] oldtitlekey = WadInfo.GetTitleKey(wadfile);
-
- Tools.ChangeProgress(20);
-
- //Change the ID in the ticket
- wadfile[tikpos + 0x1e0] = slot[0];
- wadfile[tikpos + 0x1e1] = slot[1];
- wadfile[tikpos + 0x1e2] = slot[2];
- wadfile[tikpos + 0x1e3] = slot[3];
-
- //Change the ID in the tmd
- wadfile[tmdpos + 0x190] = slot[0];
- wadfile[tmdpos + 0x191] = slot[1];
- wadfile[tmdpos + 0x192] = slot[2];
- wadfile[tmdpos + 0x193] = slot[3];
-
- Tools.ChangeProgress(40);
-
- //Trucha-Sign both
- wadfile = TruchaSign(wadfile, 0);
-
- Tools.ChangeProgress(50);
-
- wadfile = TruchaSign(wadfile, 1);
-
- Tools.ChangeProgress(60);
-
- byte[] newtitlekey = WadInfo.GetTitleKey(wadfile);
- byte[] tmd = WadInfo.ReturnTmd(wadfile);
-
- int contentcount = WadInfo.GetContentNum(wadfile);
-
- wadfile = ReEncryptAllContents(wadfile, oldtitlekey, newtitlekey);
-
- Tools.ChangeProgress(100);
- return wadfile;
- }
-
- ///
- /// Changes the Title Version of a Wad or Tmd
- ///
- ///
- ///
- ///
- public static byte[] ChangeTitleVersion(byte[] wadtmd, int newversion)
- {
- if (newversion > 65535) throw new Exception("Version can be max. 65535");
-
- int offset = 0x1dc;
- int tmdpos = 0;
-
- if (WadInfo.IsThisWad(wadtmd))
- tmdpos = WadInfo.GetTmdPos(wadtmd);
-
- byte[] version = BitConverter.GetBytes((UInt16)newversion);
- Array.Reverse(version);
-
- wadtmd[tmdpos + offset] = version[0];
- wadtmd[tmdpos + offset + 1] = version[1];
-
- wadtmd = TruchaSign(wadtmd, 1);
-
- return wadtmd;
- }
- }
-
- public class WadUnpack
- {
- ///
- /// Unpacks the 00000000.app of a wad
- ///
- ///
- ///
- public static void UnpackNullApp(string wadfile, string destination)
- {
- if (!destination.EndsWith(".app")) destination += "\\00000000.app";
-
- byte[] wad = Tools.LoadFileToByteArray(wadfile);
- byte[] nullapp = UnpackNullApp(wad);
- Tools.SaveFileFromByteArray(nullapp, destination);
- }
-
- ///
- /// Unpacks the 00000000.app of a wad
- ///
- ///
- ///
- public static byte[] UnpackNullApp(byte[] wadfile)
- {
- int certsize = WadInfo.GetCertSize(wadfile);
- int tiksize = WadInfo.GetTikSize(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- int tmdsize = WadInfo.GetTmdSize(wadfile);
- int contentpos = 64 + Tools.AddPadding(certsize) + Tools.AddPadding(tiksize) + Tools.AddPadding(tmdsize);
-
- byte[] titlekey = WadInfo.GetTitleKey(wadfile);
- string[,] contents = WadInfo.GetContentInfo(wadfile);
-
- for (int i = 0; i < contents.GetLength(0); i++)
- {
- if (contents[i, 1] == "00000000")
- {
- return WadEdit.DecryptContent(wadfile, i, titlekey);
- }
- }
-
- throw new Exception("00000000.app couldn't be found in the Wad");
- }
-
- ///
- /// Unpacks the the wad file
- ///
- public static void UnpackWad(string pathtowad, string destinationpath)
- {
- byte[] wadfile = Tools.LoadFileToByteArray(pathtowad);
- UnpackWad(wadfile, destinationpath);
- }
-
- ///
- /// Unpacks the the wad file
- ///
- public static void UnpackWad(string pathtowad, string destinationpath, out bool hashesmatch)
- {
- byte[] wadfile = Tools.LoadFileToByteArray(pathtowad);
- UnpackWad(wadfile, destinationpath, out hashesmatch);
- }
-
- ///
- /// Unpacks the wad file to *wadpath*\wadunpack\
- ///
- ///
- public static void UnpackWad(string pathtowad)
- {
- string destinationpath = pathtowad.Remove(pathtowad.LastIndexOf('\\'));
- byte[] wadfile = Tools.LoadFileToByteArray(pathtowad);
- UnpackWad(wadfile, destinationpath);
- }
-
- ///
- /// Unpacks the wad file
- ///
- public static void UnpackWad(byte[] wadfile, string destinationpath)
- {
- bool temp;
- UnpackWad(wadfile, destinationpath, out temp);
- }
-
- ///
- /// Unpacks the wad file
- ///
- public static void UnpackWad(byte[] wadfile, string destinationpath, out bool hashesmatch)
- {
- if (destinationpath[destinationpath.Length - 1] != '\\')
- { destinationpath = destinationpath + "\\"; }
-
- hashesmatch = true;
-
- if (!Directory.Exists(destinationpath))
- { Directory.CreateDirectory(destinationpath); }
- if (Directory.GetFiles(destinationpath, "*.app").Length > 0)
- {
- throw new Exception("At least one of the files to unpack already exists!");
- }
-
- int certpos = 0x40;
- int certsize = WadInfo.GetCertSize(wadfile);
- int tikpos = WadInfo.GetTikPos(wadfile);
- int tiksize = WadInfo.GetTikSize(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- int tmdsize = WadInfo.GetTmdSize(wadfile);
- int contentlength = WadInfo.GetContentSize(wadfile);
- int footersize = WadInfo.GetFooterSize(wadfile);
- int footerpos = 64 + Tools.AddPadding(certsize) + Tools.AddPadding(tiksize) + Tools.AddPadding(tmdsize) + Tools.AddPadding(contentlength);
- string wadpath = WadInfo.GetNandPath(wadfile, 0).Remove(8, 1);
- string[,] contents = WadInfo.GetContentInfo(wadfile);
- byte[] titlekey = WadInfo.GetTitleKey(wadfile);
- int contentpos = 64 + Tools.AddPadding(certsize) + Tools.AddPadding(tiksize) + Tools.AddPadding(tmdsize);
-
- //unpack cert
- using (FileStream cert = new FileStream(destinationpath + wadpath + ".cert", FileMode.Create))
- {
- cert.Seek(0, SeekOrigin.Begin);
- cert.Write(wadfile, certpos, certsize);
- }
-
- //unpack ticket
- using (FileStream tik = new FileStream(destinationpath + wadpath + ".tik", FileMode.Create))
- {
- tik.Seek(0, SeekOrigin.Begin);
- tik.Write(wadfile, tikpos, tiksize);
- }
-
- //unpack tmd
- using (FileStream tmd = new FileStream(destinationpath + wadpath + ".tmd", FileMode.Create))
- {
- tmd.Seek(0, SeekOrigin.Begin);
- tmd.Write(wadfile, tmdpos, tmdsize);
- }
-
- //unpack trailer
- try
- {
- if (footersize > 0)
- {
- using (FileStream trailer = new FileStream(destinationpath + wadpath + ".trailer", FileMode.Create))
- {
- trailer.Seek(0, SeekOrigin.Begin);
- trailer.Write(wadfile, footerpos, footersize);
- }
- }
- }
- catch { } //who cares if the trailer doesn't extract properly?
-
- Tools.ChangeProgress(0);
-
- //unpack contents
- for (int i = 0; i < contents.GetLength(0); i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / contents.GetLength(0));
- byte[] thiscontent = WadEdit.DecryptContent(wadfile, i, titlekey);
- FileStream content = new FileStream(destinationpath + contents[i, 1] + ".app", FileMode.Create);
-
- content.Write(thiscontent, 0, thiscontent.Length);
- content.Close();
-
- contentpos += Tools.AddPadding(thiscontent.Length);
-
- //sha1 comparison
- SHA1Managed sha1 = new SHA1Managed();
- byte[] thishash = sha1.ComputeHash(thiscontent);
- byte[] tmdhash = Tools.HexStringToByteArray(contents[i, 4]);
-
- if (Tools.CompareByteArrays(thishash, tmdhash) == false) hashesmatch = false;
- // throw new Exception("At least one content's hash doesn't match the hash in the Tmd!");
- }
- }
-
- ///
- /// Unpacks the wad file to the given directory.
- /// Shared contents will be unpacked to /shared1
- ///
- ///
- ///
- public static void UnpackToNand(string wadfile, string nandpath)
- {
- byte[] wadarray = Tools.LoadFileToByteArray(wadfile);
- UnpackToNand(wadarray, nandpath);
- }
-
- ///
- /// Unpacks the wad file to the given directory.
- /// Shared contents will be unpacked to /shared1
- ///
- ///
- ///
- public static void UnpackToNand(byte[] wadfile, string nandpath)
- {
- string path = WadInfo.GetNandPath(wadfile, 0);
- string path1 = path.Remove(path.IndexOf('\\'));
- string path2 = path.Remove(0, path.IndexOf('\\') + 1);
-
- if (nandpath[nandpath.Length - 1] != '\\') { nandpath = nandpath + "\\"; }
-
- if (!Directory.Exists(nandpath + "ticket")) { Directory.CreateDirectory(nandpath + "ticket"); }
- if (!Directory.Exists(nandpath + "title")) { Directory.CreateDirectory(nandpath + "title"); }
- if (!Directory.Exists(nandpath + "ticket\\" + path1)) { Directory.CreateDirectory(nandpath + "ticket\\" + path1); }
- if (!Directory.Exists(nandpath + "title\\" + path1)) { Directory.CreateDirectory(nandpath + "title\\" + path1); }
- if (!Directory.Exists(nandpath + "title\\" + path1 + "\\" + path2)) { Directory.CreateDirectory(nandpath + "title\\" + path1 + "\\" + path2); }
- if (!Directory.Exists(nandpath + "title\\" + path1 + "\\" + path2 + "\\content")) { Directory.CreateDirectory(nandpath + "title\\" + path1 + "\\" + path2 + "\\content"); }
- if (!Directory.Exists(nandpath + "title\\" + path1 + "\\" + path2 + "\\data")) { Directory.CreateDirectory(nandpath + "title\\" + path1 + "\\" + path2 + "\\data"); }
- if (!Directory.Exists(nandpath + "shared1")) Directory.CreateDirectory(nandpath + "shared1");
-
- int certsize = WadInfo.GetCertSize(wadfile);
- int tikpos = WadInfo.GetTikPos(wadfile);
- int tiksize = WadInfo.GetTikSize(wadfile);
- int tmdpos = WadInfo.GetTmdPos(wadfile);
- int tmdsize = WadInfo.GetTmdSize(wadfile);
- int contentlength = WadInfo.GetContentSize(wadfile);
- string[,] contents = WadInfo.GetContentInfo(wadfile);
- byte[] titlekey = WadInfo.GetTitleKey(wadfile);
- int contentpos = 64 + Tools.AddPadding(certsize) + Tools.AddPadding(tiksize) + Tools.AddPadding(tmdsize);
-
- //unpack ticket
- using (FileStream tik = new FileStream(nandpath + "ticket\\" + path1 + "\\" + path2 + ".tik", FileMode.Create))
- {
- tik.Seek(0, SeekOrigin.Begin);
- tik.Write(wadfile, tikpos, tiksize);
- }
-
- //unpack tmd
- using (FileStream tmd = new FileStream(nandpath + "title\\" + path1 + "\\" + path2 + "\\content\\title.tmd", FileMode.Create))
- {
- tmd.Seek(0, SeekOrigin.Begin);
- tmd.Write(wadfile, tmdpos, tmdsize);
- }
-
- Tools.ChangeProgress(0);
-
- //unpack contents
- for (int i = 0; i < contents.GetLength(0); i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / contents.GetLength(0));
- byte[] thiscontent = WadEdit.DecryptContent(wadfile, i, titlekey);
-
- if (contents[i, 2] == "8001")
- {
- if (File.Exists(nandpath + "shared1\\content.map"))
- {
- byte[] contmap = Tools.LoadFileToByteArray(nandpath + "shared1\\content.map");
-
- if (ContentMap.CheckSharedContent(contmap, contents[i, 4]) == false)
- {
- string newname = ContentMap.GetNewSharedContentName(contmap);
-
- FileStream content = new FileStream(nandpath + "shared1\\" + newname + ".app", FileMode.Create);
- content.Write(thiscontent, 0, thiscontent.Length);
- content.Close();
- ContentMap.AddSharedContent(nandpath + "shared1\\content.map", newname, contents[i, 4]);
- }
- }
- else
- {
- FileStream content = new FileStream(nandpath + "shared1\\00000000.app", FileMode.Create);
- content.Write(thiscontent, 0, thiscontent.Length);
- content.Close();
- ContentMap.AddSharedContent(nandpath + "shared1\\content.map", "00000000", contents[i, 4]);
- }
- }
- else
- {
- FileStream content = new FileStream(nandpath + "title\\" + path1 + "\\" + path2 + "\\content\\" + contents[i, 0] + ".app", FileMode.Create);
-
- content.Write(thiscontent, 0, thiscontent.Length);
- content.Close();
- }
-
- contentpos += Tools.AddPadding(thiscontent.Length);
- }
-
- //add titleid to uid.sys, if it doesn't exist
- string titleid = WadInfo.GetFullTitleID(wadfile, 1);
-
- if (File.Exists(nandpath + "\\sys\\uid.sys"))
- {
- FileStream fs = new FileStream(nandpath + "\\sys\\uid.sys", FileMode.Open);
- byte[] uidsys = new byte[fs.Length];
- fs.Read(uidsys, 0, uidsys.Length);
- fs.Close();
-
- if (UID.CheckUID(uidsys, titleid) == false)
- {
- uidsys = UID.AddUID(uidsys, titleid);
- Tools.SaveFileFromByteArray(uidsys, nandpath + "\\sys\\uid.sys");
- }
- }
- else
- {
- if (!Directory.Exists(nandpath + "\\sys")) Directory.CreateDirectory(nandpath + "\\sys");
- byte[] uidsys = UID.AddUID(new byte[0], titleid);
- Tools.SaveFileFromByteArray(uidsys, nandpath + "\\sys\\uid.sys");
- }
- }
- }
-
- public class WadPack
- {
- public static byte[] wadheader = new byte[8] { 0x00, 0x00, 0x00, 0x20, 0x49, 0x73, 0x00, 0x00 };
-
- ///
- /// Packs the contents in the given directory and creates the destination wad file
- ///
- ///
- public static void PackWad(string contentdirectory, string destinationfile, bool includefooter)
- {
- if (contentdirectory[contentdirectory.Length - 1] != '\\') { contentdirectory = contentdirectory + "\\"; }
-
- if (!Directory.Exists(contentdirectory)) throw new DirectoryNotFoundException("The directory doesn't exists:\r\n" + contentdirectory);
- if (Directory.GetFiles(contentdirectory, "*.app").Length < 1) throw new Exception("No *.app file was found");
- if (Directory.GetFiles(contentdirectory, "*.cert").Length < 1) throw new Exception("No *.cert file was found");
- if (Directory.GetFiles(contentdirectory, "*.tik").Length < 1) throw new Exception("No *.tik file was found");
- if (Directory.GetFiles(contentdirectory, "*.tmd").Length < 1) throw new Exception("No *.tmd file was found");
- if (File.Exists(destinationfile)) throw new Exception("The destination file already exists!");
-
- string[] certfile = Directory.GetFiles(contentdirectory, "*.cert");
- string[] tikfile = Directory.GetFiles(contentdirectory, "*.tik");
- string[] tmdfile = Directory.GetFiles(contentdirectory, "*.tmd");
- string[] trailerfile = Directory.GetFiles(contentdirectory, "*.trailer");
-
- byte[] cert = Tools.LoadFileToByteArray(certfile[0]);
- byte[] tik = Tools.LoadFileToByteArray(tikfile[0]);
- byte[] tmd = Tools.LoadFileToByteArray(tmdfile[0]);
-
- string[,] contents = WadInfo.GetContentInfo(tmd);
-
- FileStream wadstream = new FileStream(destinationfile, FileMode.Create);
-
- //Trucha-Sign Tik and Tmd, if they aren't already
- WadEdit.TruchaSign(tik, 0);
- WadEdit.TruchaSign(tmd, 1);
-
- //Write Cert
- wadstream.Seek(64, SeekOrigin.Begin);
- wadstream.Write(cert, 0, cert.Length);
-
- //Write Tik
- wadstream.Seek(64 + Tools.AddPadding(cert.Length), SeekOrigin.Begin);
- wadstream.Write(tik, 0, tik.Length);
-
- //Write Tmd
- wadstream.Seek(64 + Tools.AddPadding(cert.Length) + Tools.AddPadding(tik.Length), SeekOrigin.Begin);
- wadstream.Write(tmd, 0, tmd.Length);
-
- //Write Content
- int allcont = 0;
- int contpos = 64 + Tools.AddPadding(cert.Length) + Tools.AddPadding(tik.Length) + Tools.AddPadding(tmd.Length);
- int contcount = WadInfo.GetContentNum(tmd);
-
- Tools.ChangeProgress(0);
- byte[] titlekey = WadInfo.GetTitleKey(tik);
-
- for (int i = 0; i < contents.GetLength(0); i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / contents.GetLength(0));
- byte[] thiscont = Tools.LoadFileToByteArray(contentdirectory + contents[i, 1] + ".app");
-
- //if (i == contents.GetLength(0) - 1) { thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, false); }
- //else { thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, true); }
- thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, true);
-
- wadstream.Seek(contpos, SeekOrigin.Begin);
- wadstream.Write(thiscont, 0, thiscont.Length);
- contpos += thiscont.Length;
- allcont += thiscont.Length;
- }
-
- //Write Trailer, if exists and includefooter = true
- int trailerlength = 0;
- if (trailerfile.Length > 0 && includefooter == true)
- {
- byte[] trailer = Tools.LoadFileToByteArray(trailerfile[0]);
- trailerlength = trailer.Length;
- Array.Resize(ref trailer, Tools.AddPadding(trailer.Length));
- wadstream.Seek(Tools.AddPadding(contpos), SeekOrigin.Begin);
- wadstream.Write(trailer, 0, trailer.Length);
- }
-
- //Write Header
- byte[] certsize = Tools.FileLengthToByteArray(cert.Length);
- byte[] tiksize = Tools.FileLengthToByteArray(tik.Length);
- byte[] tmdsize = Tools.FileLengthToByteArray(tmd.Length);
- byte[] allcontsize = Tools.FileLengthToByteArray(allcont);
- byte[] trailersize = Tools.FileLengthToByteArray(trailerlength);
-
- wadstream.Seek(0x00, SeekOrigin.Begin);
- wadstream.Write(wadheader, 0, wadheader.Length);
- wadstream.Seek(0x08, SeekOrigin.Begin);
- wadstream.Write(certsize, 0, certsize.Length);
- wadstream.Seek(0x10, SeekOrigin.Begin);
- wadstream.Write(tiksize, 0, tiksize.Length);
- wadstream.Seek(0x14, SeekOrigin.Begin);
- wadstream.Write(tmdsize, 0, tmdsize.Length);
- wadstream.Seek(0x18, SeekOrigin.Begin);
- wadstream.Write(allcontsize, 0, allcontsize.Length);
- wadstream.Seek(0x1c, SeekOrigin.Begin);
- wadstream.Write(trailersize, 0, trailersize.Length);
-
- wadstream.Close();
- }
-
- ///
- /// Packs a Wad from a title installed on Nand
- /// Returns: 0 = OK, 1 = Files missing, 2 = Shared contents missing, 3 = Cert missing
- ///
- ///
- /// XXXXXXXX\XXXXXXXX
- ///
- ///
- public static void PackWadFromNand(string nandpath, string path, string destinationfile)
- {
- if (nandpath[nandpath.Length - 1] != '\\') { nandpath = nandpath + "\\"; }
- string path1 = path.Remove(8);
- string path2 = path.Remove(0, 9);
- string ticketdir = nandpath + "ticket\\" + path1 + "\\";
- string contentdir = nandpath + "title\\" + path1 + "\\" + path2 + "\\content\\";
- string sharedir = nandpath + "shared1\\";
- string certdir = nandpath + "sys\\";
-
- if (!Directory.Exists(ticketdir) ||
- !Directory.Exists(contentdir)) throw new DirectoryNotFoundException("Directory doesn't exist:\r\n" + contentdir);
- if (!Directory.Exists(sharedir)) throw new DirectoryNotFoundException("Directory doesn't exist:\r\n" + sharedir);
- if (!File.Exists(certdir + "cert.sys")) throw new FileNotFoundException("File doesn't exist:\r\n" + certdir + "cert.sys");
-
- byte[] cert = Tools.LoadFileToByteArray(certdir + "cert.sys");
- byte[] tik = Tools.LoadFileToByteArray(ticketdir + path2 + ".tik");
- byte[] tmd = Tools.LoadFileToByteArray(contentdir + "title.tmd");
-
- string[,] contents = WadInfo.GetContentInfo(tmd);
-
- FileStream wadstream = new FileStream(destinationfile, FileMode.Create);
-
- //Trucha-Sign Tik and Tmd, if they aren't already
- WadEdit.TruchaSign(tik, 0);
- WadEdit.TruchaSign(tmd, 1);
-
- //Write Cert
- wadstream.Seek(64, SeekOrigin.Begin);
- wadstream.Write(cert, 0, cert.Length);
-
- //Write Tik
- wadstream.Seek(64 + Tools.AddPadding(cert.Length), SeekOrigin.Begin);
- wadstream.Write(tik, 0, tik.Length);
-
- //Write Tmd
- wadstream.Seek(64 + Tools.AddPadding(cert.Length) + Tools.AddPadding(tik.Length), SeekOrigin.Begin);
- wadstream.Write(tmd, 0, tmd.Length);
-
- //Write Content
- int allcont = 0;
- int contpos = 64 + Tools.AddPadding(cert.Length) + Tools.AddPadding(tik.Length) + Tools.AddPadding(tmd.Length);
- int contcount = WadInfo.GetContentNum(tmd);
-
- Tools.ChangeProgress(0);
- byte[] titlekey = WadInfo.GetTitleKey(tik);
- byte[] contentmap = Tools.LoadFileToByteArray(sharedir + "content.map");
-
- for (int i = 0; i < contents.GetLength(0); i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / contents.GetLength(0));
- byte[] thiscont = new byte[1];
-
- if (contents[i, 2] == "8001")
- {
- string contname = ContentMap.GetSharedContentName(contentmap, contents[i, 4]);
-
- if (contname == "fail")
- {
- wadstream.Close();
- File.Delete(destinationfile);
- throw new FileNotFoundException("At least one shared content is missing!");
- }
-
- thiscont = Tools.LoadFileToByteArray(sharedir + contname + ".app");
- }
- else thiscont = Tools.LoadFileToByteArray(contentdir + contents[i, 0] + ".app");
-
- //if (i == contents.GetLength(0) - 1) { thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, false); }
- //else { thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, true); }
- thiscont = WadEdit.EncryptContent(thiscont, tmd, i, titlekey, true);
-
- wadstream.Seek(contpos, SeekOrigin.Begin);
- wadstream.Write(thiscont, 0, thiscont.Length);
- contpos += thiscont.Length;
- allcont += thiscont.Length;
- }
-
- //Write Header
- byte[] certsize = Tools.FileLengthToByteArray(cert.Length);
- byte[] tiksize = Tools.FileLengthToByteArray(tik.Length);
- byte[] tmdsize = Tools.FileLengthToByteArray(tmd.Length);
- byte[] allcontsize = Tools.FileLengthToByteArray(allcont);
- byte[] trailersize = new byte[] { 0x00, 0x00, 0x00, 0x00 };
-
- wadstream.Seek(0x00, SeekOrigin.Begin);
- wadstream.Write(wadheader, 0, wadheader.Length);
- wadstream.Seek(0x08, SeekOrigin.Begin);
- wadstream.Write(certsize, 0, certsize.Length);
- wadstream.Seek(0x10, SeekOrigin.Begin);
- wadstream.Write(tiksize, 0, tiksize.Length);
- wadstream.Seek(0x14, SeekOrigin.Begin);
- wadstream.Write(tmdsize, 0, tmdsize.Length);
- wadstream.Seek(0x18, SeekOrigin.Begin);
- wadstream.Write(allcontsize, 0, allcontsize.Length);
- wadstream.Seek(0x1c, SeekOrigin.Begin);
- wadstream.Write(trailersize, 0, trailersize.Length);
-
- wadstream.Close();
- }
- }
-
- public class UID
- {
- ///
- /// Checks if the given Title ID exists in the uid.sys
- ///
- ///
- ///
- ///
- public static bool CheckUID(byte[] uidsys, string fulltitleid)
- {
- for (int i = 0; i < uidsys.Length; i += 12)
- {
- string temp = "";
-
- for (int y = i; y < i + 8; y++)
- temp += uidsys[y].ToString("x2");
-
- if (temp == fulltitleid) return true;
- }
-
- return false;
- }
-
- ///
- /// Gets a new UID
- ///
- ///
- ///
- public static string GetNewUID(byte[] uidsys)
- {
- string lastuid = uidsys[uidsys.Length - 4].ToString("x2") +
- uidsys[uidsys.Length - 3].ToString("x2") +
- uidsys[uidsys.Length - 2].ToString("x2") +
- uidsys[uidsys.Length - 1].ToString("x2");
-
- string newuid = (int.Parse(lastuid, System.Globalization.NumberStyles.HexNumber) + 1).ToString("x8");
- return newuid;
- }
-
- ///
- /// Adds a Title ID to uid.sys
- ///
- ///
- ///
- ///
- public static byte[] AddUID(byte[] uidsys, string fulltitleid)
- {
- if (uidsys.Length > 11)
- {
- MemoryStream uid = new MemoryStream();
- byte[] titleid = Tools.HexStringToByteArray(fulltitleid);
- byte[] newuid = Tools.HexStringToByteArray(GetNewUID(uidsys));
-
- uid.Write(uidsys, 0, uidsys.Length);
- uid.Write(titleid, 0, titleid.Length);
- uid.Write(newuid, 0, newuid.Length);
-
- return uid.ToArray();
- }
- else
- {
- MemoryStream uid = new MemoryStream();
- byte[] titleid = Tools.HexStringToByteArray(fulltitleid);
- byte[] newuid = new byte[] { 0x00, 0x00, 0x10, 0x00 };
-
- uid.Write(titleid, 0, titleid.Length);
- uid.Write(newuid, 0, newuid.Length);
-
- return uid.ToArray();
- }
- }
- }
-
- public class ContentMap
- {
- ///
- /// Gets the name of the shared content in /shared1/.
- /// Returns "fail", if the content doesn't exist
- ///
- ///
- ///
- ///
- public static string GetSharedContentName(byte[] contentmap, string sha1ofcontent)
- {
- int contindex = 0;
- string result = "";
-
- for (int i = 0; i < contentmap.Length - 19; i++)
- {
- string tmp = "";
- for (int y = 0; y < 20; y++)
- {
- tmp += contentmap[i + y].ToString("x2");
- }
-
- if (tmp == sha1ofcontent)
- {
- contindex = i;
- break;
- }
- }
-
- if (contindex == 0) return "fail";
-
- result += Convert.ToChar(contentmap[contindex - 8]);
- result += Convert.ToChar(contentmap[contindex - 7]);
- result += Convert.ToChar(contentmap[contindex - 6]);
- result += Convert.ToChar(contentmap[contindex - 5]);
- result += Convert.ToChar(contentmap[contindex - 4]);
- result += Convert.ToChar(contentmap[contindex - 3]);
- result += Convert.ToChar(contentmap[contindex - 2]);
- result += Convert.ToChar(contentmap[contindex - 1]);
-
- return result;
- }
-
- ///
- /// Checks, if the shared content exists
- ///
- ///
- ///
- ///
- public static bool CheckSharedContent(byte[] contentmap, string sha1ofcontent)
- {
- for (int i = 0; i < contentmap.Length - 19; i++)
- {
- string tmp = "";
- for (int y = 0; y < 20; y++)
- {
- tmp += contentmap[i + y].ToString("x2");
- }
-
- if (tmp == sha1ofcontent) return true;
- }
-
- return false;
- }
-
- public static string GetNewSharedContentName(byte[] contentmap)
- {
- string name = "";
-
- name += Convert.ToChar(contentmap[contentmap.Length - 28]);
- name += Convert.ToChar(contentmap[contentmap.Length - 27]);
- name += Convert.ToChar(contentmap[contentmap.Length - 26]);
- name += Convert.ToChar(contentmap[contentmap.Length - 25]);
- name += Convert.ToChar(contentmap[contentmap.Length - 24]);
- name += Convert.ToChar(contentmap[contentmap.Length - 23]);
- name += Convert.ToChar(contentmap[contentmap.Length - 22]);
- name += Convert.ToChar(contentmap[contentmap.Length - 21]);
-
- string newname = (int.Parse(name, System.Globalization.NumberStyles.HexNumber) + 1).ToString("x8");
-
- return newname;
- }
-
- public static void AddSharedContent(string contentmap, string contentname, string sha1ofcontent)
- {
- byte[] name = new byte[8];
- byte[] sha1 = new byte[20];
-
- for (int i = 0; i < 8; i++)
- {
- name[i] = (byte)contentname[i];
- }
-
- for (int i = 0; i < sha1ofcontent.Length; i += 2)
- {
- sha1[i / 2] = Convert.ToByte(sha1ofcontent.Substring(i, 2), 16);
- }
-
- using (FileStream map = new FileStream(contentmap, FileMode.OpenOrCreate, FileAccess.ReadWrite))
- {
- map.Seek(0, SeekOrigin.End);
- map.Write(name, 0, name.Length);
- map.Write(sha1, 0, sha1.Length);
- }
- }
- }
-
- public class U8
- {
- ///
- /// Checks if the given file is a U8 Archive
- ///
- ///
- ///
- public static bool CheckU8(byte[] file)
- {
- int length = 2500;
- if (file.Length < length) length = file.Length - 4;
-
- for (int i = 0; i < length; i++)
- {
- if (file[i] == 0x55 && file[i + 1] == 0xAA && file[i + 2] == 0x38 && file[i + 3] == 0x2D)
- return true;
- }
-
- return false;
- }
-
- ///
- /// Checks if the given file is a U8 Archive
- ///
- ///
- ///
- public static bool CheckU8(string file)
- {
- byte[] buff = Tools.LoadFileToByteArray(file, 0, 2500);
- return CheckU8(buff);
- }
-
- ///
- /// Gets all contents of a folder (including (sub-)files and (sub-)folders)
- ///
- ///
- ///
- ///
- public static string[] GetDirContent(string dir, bool root)
- {
- string[] files = Directory.GetFiles(dir);
- string[] dirs = Directory.GetDirectories(dir);
- string all = "";
-
- if (root == false)
- all += dir + "\n";
-
- for (int i = 0; i < files.Length; i++)
- all += files[i] + "\n";
-
- foreach (string thisDir in dirs)
- {
- string[] temp = GetDirContent(thisDir, false);
-
- foreach (string thisTemp in temp)
- all += thisTemp + "\n";
- }
-
- return all.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
- }
-
- ///
- /// Detecs if the U8 file has an IMD5 or IMET Header.
- /// Return: 0 = No Header, 1 = IMD5, 2 = IMET
- ///
- ///
- public static int DetectHeader(string file)
- {
- byte[] temp = Tools.LoadFileToByteArray(file, 0, 400);
- return DetectHeader(temp);
- }
-
- ///
- /// Detecs if the U8 file has an IMD5 or IMET Header.
- /// Return: 0 = No Header, 1 = IMD5, 2 = IMET
- ///
- ///
- public static int DetectHeader(byte[] file)
- {
- for (int i = 0; i < 16; i++) //Just to be safe
- {
- if (Convert.ToChar(file[i]) == 'I')
- if (Convert.ToChar(file[i + 1]) == 'M')
- if (Convert.ToChar(file[i + 2]) == 'D')
- if (Convert.ToChar(file[i + 3]) == '5')
- return 1;
- }
-
- int length = 400;
- if (file.Length < 400) length = file.Length - 4;
-
- for (int z = 0; z < length; z++)
- {
- if (Convert.ToChar(file[z]) == 'I')
- if (Convert.ToChar(file[z + 1]) == 'M')
- if (Convert.ToChar(file[z + 2]) == 'E')
- if (Convert.ToChar(file[z + 3]) == 'T')
- return 2;
- }
-
- return 0;
- }
-
- ///
- /// Adds an IMD5 Header to the given U8 Archive
- ///
- ///
- ///
- public static byte[] AddHeaderIMD5(byte[] u8archive)
- {
- MemoryStream ms = new MemoryStream();
- MD5 md5 = MD5.Create();
-
- byte[] imd5 = new byte[4];
- imd5[0] = (byte)'I';
- imd5[1] = (byte)'M';
- imd5[2] = (byte)'D';
- imd5[3] = (byte)'5';
-
- byte[] size = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(u8archive.Length));
- byte[] hash = md5.ComputeHash(u8archive, 0, u8archive.Length);
-
- ms.Seek(0, SeekOrigin.Begin);
- ms.Write(imd5, 0, imd5.Length);
- ms.Write(size, 0, size.Length);
-
- ms.Seek(0x10, SeekOrigin.Begin);
- ms.Write(hash, 0, hash.Length);
-
- ms.Write(u8archive, 0, u8archive.Length);
-
- md5.Clear();
- return ms.ToArray();
- }
-
- ///
- /// Adds an IMET Header to the given 00.app
- ///
- ///
- /// Order: Jap, Eng, Ger, Fra, Spa, Ita, Dut
- /// Order: Banner.bin, Icon.bin, Sound.bin
- ///
- public static byte[] AddHeaderIMET(byte[] nullapp, string[] channeltitles, int[] sizes)
- {
- if (channeltitles.Length < 7) return nullapp;
- for (int i = 0; i < channeltitles.Length; i++)
- if (channeltitles[i].Length > 20) return nullapp;
-
- MemoryStream ms = new MemoryStream();
- MD5 md5 = MD5.Create();
-
- byte[] imet = new byte[4];
- imet[0] = (byte)'I';
- imet[1] = (byte)'M';
- imet[2] = (byte)'E';
- imet[3] = (byte)'T';
-
- byte[] unknown = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(0x0000060000000003));
-
- byte[] iconsize = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(sizes[1]));
- byte[] bannersize = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(sizes[0]));
- byte[] soundsize = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(sizes[2]));
-
- byte[] japtitle = new byte[84];
- byte[] engtitle = new byte[84];
- byte[] gertitle = new byte[84];
- byte[] fratitle = new byte[84];
- byte[] spatitle = new byte[84];
- byte[] itatitle = new byte[84];
- byte[] duttitle = new byte[84];
-
- for (int i = 0; i < 20; i++)
- {
- if (channeltitles[0].Length > i)
- {
- japtitle[i * 2] = BitConverter.GetBytes(channeltitles[0][i])[1];
- japtitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[0][i])[0];
- }
- if (channeltitles[1].Length > i)
- {
- engtitle[i * 2] = BitConverter.GetBytes(channeltitles[1][i])[1];
- engtitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[1][i])[0];
- }
- if (channeltitles[2].Length > i)
- {
- gertitle[i * 2] = BitConverter.GetBytes(channeltitles[2][i])[1];
- gertitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[2][i])[0];
- }
- if (channeltitles[3].Length > i)
- {
- fratitle[i * 2] = BitConverter.GetBytes(channeltitles[3][i])[1];
- fratitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[3][i])[0];
- }
- if (channeltitles[4].Length > i)
- {
- spatitle[i * 2] = BitConverter.GetBytes(channeltitles[4][i])[1];
- spatitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[4][i])[0];
- }
- if (channeltitles[5].Length > i)
- {
- itatitle[i * 2] = BitConverter.GetBytes(channeltitles[5][i])[1];
- itatitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[5][i])[0];
- }
- if (channeltitles[6].Length > i)
- {
- duttitle[i * 2] = BitConverter.GetBytes(channeltitles[6][i])[1];
- duttitle[i * 2 + 1] = BitConverter.GetBytes(channeltitles[6][i])[0];
- }
- }
-
- byte[] crypto = new byte[16];
-
- ms.Seek(128, SeekOrigin.Begin);
- ms.Write(imet, 0, imet.Length);
- ms.Write(unknown, 0, unknown.Length);
- ms.Write(iconsize, 0, iconsize.Length);
- ms.Write(bannersize, 0, bannersize.Length);
- ms.Write(soundsize, 0, soundsize.Length);
-
- ms.Seek(4, SeekOrigin.Current);
- ms.Write(japtitle, 0, japtitle.Length);
- ms.Write(engtitle, 0, engtitle.Length);
- ms.Write(gertitle, 0, gertitle.Length);
- ms.Write(fratitle, 0, fratitle.Length);
- ms.Write(spatitle, 0, spatitle.Length);
- ms.Write(itatitle, 0, itatitle.Length);
- ms.Write(duttitle, 0, duttitle.Length);
-
- ms.Seek(0x348, SeekOrigin.Current);
- ms.Write(crypto, 0, crypto.Length);
-
- byte[] tohash = ms.ToArray();
- crypto = md5.ComputeHash(tohash, 0x40, 0x600);
-
- ms.Seek(-16, SeekOrigin.Current);
- ms.Write(crypto, 0, crypto.Length);
- ms.Write(nullapp, 0, nullapp.Length);
-
- md5.Clear();
- return ms.ToArray();
- }
-
- ///
- /// Packs a U8 Archive
- ///
- ///
- ///
- public static void PackU8(string folder, string outfile)
- {
- byte[] u8 = PackU8(folder);
-
- using (FileStream fs = new FileStream(outfile, FileMode.Create))
- fs.Write(u8, 0, u8.Length);
- }
-
- ///
- /// Packs a U8 Archive
- ///
- ///
- ///
- public static void PackU8(string folder, string outfile, bool addimd5header)
- {
- byte[] u8 = PackU8(folder);
-
- if (addimd5header == true)
- u8 = AddHeaderIMD5(u8);
-
- using (FileStream fs = new FileStream(outfile, FileMode.Create))
- fs.Write(u8, 0, u8.Length);
- }
-
- ///
- /// Packs a U8 Archive
- ///
- ///
- ///
- public static byte[] PackU8(string folder)
- {
- int a = 0, b = 0, c = 0;
- return PackU8(folder, out a, out b, out c);
- }
-
- ///
- /// Packs a U8 Archive
- ///
- ///
- ///
- public static byte[] PackU8(string folder, bool addimd5header)
- {
- byte[] u8 = PackU8(folder);
-
- if (addimd5header == true)
- u8 = AddHeaderIMD5(u8);
-
- return u8;
- }
-
- ///
- /// Packs a U8 Archive
- ///
- ///
- ///
- public static byte[] PackU8(string folder, out int bannersize, out int iconsize, out int soundsize)
- {
- int datapad = 32, stringtablepad = 32; //Biggie seems to use these paddings, so let's do it, too ;)
- string rootpath = folder;
- if (rootpath[rootpath.Length - 1] != '\\') rootpath = rootpath + "\\";
-
- bannersize = 0; iconsize = 0; soundsize = 0;
-
- string[] files = GetDirContent(folder, true);
- int nodecount = files.Length + 1; //All files and dirs + rootnode
- int recursion = 0;
- int currentnodes = 0;
- string name = string.Empty;
- string stringtable = "\0";
- byte[] tempnode = new byte[12];
-
- MemoryStream nodes = new MemoryStream();
- MemoryStream data = new MemoryStream();
- BinaryWriter writedata = new BinaryWriter(data);
-
- tempnode[0] = 0x01;
- tempnode[1] = 0x00;
- tempnode[2] = 0x00;
- tempnode[3] = 0x00;
- tempnode[4] = 0x00;
- tempnode[5] = 0x00;
- tempnode[6] = 0x00;
- tempnode[7] = 0x00;
-
- byte[] temp = BitConverter.GetBytes((UInt32)files.Length + 1); Array.Reverse(temp);
- tempnode[8] = temp[0];
- tempnode[9] = temp[1];
- tempnode[10] = temp[2];
- tempnode[11] = temp[3];
-
- nodes.Write(tempnode, 0, tempnode.Length);
-
- for (int i = 0; i < files.Length; i++)
- {
- files[i] = files[i].Remove(0, rootpath.Length - 1);
-
- recursion = Tools.CountCharsInString(files[i], '\\') - 1;
- name = files[i].Remove(0, files[i].LastIndexOf('\\') + 1);
-
- byte[] temp1 = BitConverter.GetBytes((UInt16)stringtable.Length); Array.Reverse(temp1);
- tempnode[2] = temp1[0];
- tempnode[3] = temp1[1];
-
- stringtable += name + "\0";
-
- if (Directory.Exists(rootpath + files[i])) //It's a dir
- {
- tempnode[0] = 0x01;
- tempnode[1] = 0x00;
-
- byte[] temp2 = BitConverter.GetBytes((UInt32)recursion); Array.Reverse(temp2);
- tempnode[4] = temp2[0];
- tempnode[5] = temp2[1];
- tempnode[6] = temp2[2];
- tempnode[7] = temp2[3];
-
- int size = currentnodes + 1;
-
- for (int j = i; j < files.Length; j++)
- if (files[j].Contains(files[i])) size++;
-
- byte[] temp3 = BitConverter.GetBytes((UInt32)size); Array.Reverse(temp3);
- tempnode[8] = temp3[0];
- tempnode[9] = temp3[1];
- tempnode[10] = temp3[2];
- tempnode[11] = temp3[3];
- }
- else //It's a file
- {
- byte[] tempfile = new byte[0x40];
- int lzoffset = -1;
-
- if (files[i].EndsWith("banner.bin"))
- {
- tempfile = Wii.Tools.LoadFileToByteArray(rootpath + files[i], 0, tempfile.Length);
-
- for (int x = 0; x < tempfile.Length; x++)
- {
- if (tempfile[x] == 'L')
- if (tempfile[x + 1] == 'Z')
- if (tempfile[x + 2] == '7')
- if (tempfile[x + 3] == '7')
- {
- lzoffset = x;
- break;
- }
- }
-
- if (lzoffset != -1)
- {
- bannersize = BitConverter.ToInt32(new byte[] { tempfile[lzoffset + 5], tempfile[lzoffset + 6], tempfile[lzoffset + 7], tempfile[lzoffset + 8] }, 0);
- }
- else
- {
- FileInfo fibanner = new FileInfo(rootpath + files[i]);
- bannersize = (int)fibanner.Length - 32;
- }
- }
- else if (files[i].EndsWith("icon.bin"))
- {tempfile = Wii.Tools.LoadFileToByteArray(rootpath + files[i], 0, tempfile.Length);
-
- for (int x = 0; x < tempfile.Length; x++)
- {
- if (tempfile[x] == 'L')
- if (tempfile[x + 1] == 'Z')
- if (tempfile[x + 2] == '7')
- if (tempfile[x + 3] == '7')
- {
- lzoffset = x;
- }
- }
-
- if (lzoffset != -1)
- {
- iconsize = BitConverter.ToInt32(new byte[] { tempfile[lzoffset + 5], tempfile[lzoffset + 6], tempfile[lzoffset + 7], tempfile[lzoffset + 8] }, 0);
- }
- else
- {
- FileInfo fiicon = new FileInfo(rootpath + files[i]);
- iconsize = (int)fiicon.Length - 32;
- }
- }
- else if (files[i].EndsWith("sound.bin"))
- {tempfile = Wii.Tools.LoadFileToByteArray(rootpath + files[i], 0, tempfile.Length);
-
- for (int x = 0; x < tempfile.Length; x++)
- {
- if (tempfile[x] == 'L')
- if (tempfile[x + 1] == 'Z')
- if (tempfile[x + 2] == '7')
- if (tempfile[x + 3] == '7')
- {
- lzoffset = x;
- break;
- }
- }
-
- if (lzoffset != -1)
- {
- soundsize = BitConverter.ToInt32(new byte[] { tempfile[lzoffset + 5], tempfile[lzoffset + 6], tempfile[lzoffset + 7], tempfile[lzoffset + 8] }, 0);
- }
- else
- {
- FileInfo fisound = new FileInfo(rootpath + files[i]);
- soundsize = (int)fisound.Length - 32;
- }
- }
-
- tempnode[0] = 0x00;
- tempnode[1] = 0x00;
-
- byte[] temp2 = BitConverter.GetBytes((UInt32)data.Position); Array.Reverse(temp2);
- tempnode[4] = temp2[0];
- tempnode[5] = temp2[1];
- tempnode[6] = temp2[2];
- tempnode[7] = temp2[3];
-
- FileInfo fi = new FileInfo(rootpath + files[i]);
- byte[] temp3 = BitConverter.GetBytes((UInt32)fi.Length); Array.Reverse(temp3);
- tempnode[8] = temp3[0];
- tempnode[9] = temp3[1];
- tempnode[10] = temp3[2];
- tempnode[11] = temp3[3];
-
- using (FileStream fs = new FileStream(rootpath + files[i], FileMode.Open))
- using (BinaryReader br = new BinaryReader(fs))
- writedata.Write(br.ReadBytes((int)br.BaseStream.Length));
-
- writedata.Seek(Tools.AddPadding((int)data.Position, datapad), SeekOrigin.Begin);
- }
-
- nodes.Write(tempnode, 0, tempnode.Length);
- currentnodes++;
- }
-
- byte[] type = new byte[2];
- byte[] curpos = new byte[4];
-
- for (int x = 0; x < nodecount * 12; x += 12)
- {
- nodes.Seek(x, SeekOrigin.Begin);
- nodes.Read(type, 0, 2);
-
- if (type[0] == 0x00 && type[1] == 0x00)
- {
- nodes.Seek(x + 4, SeekOrigin.Begin);
- nodes.Read(curpos, 0, 4);
- Array.Reverse(curpos);
-
- UInt32 newpos = BitConverter.ToUInt32(curpos, 0) + (UInt32)(Tools.AddPadding(0x20 + ((12 * nodecount) + stringtable.Length), stringtablepad));
-
- nodes.Seek(x + 4, SeekOrigin.Begin);
- byte[] temp2 = BitConverter.GetBytes(newpos); Array.Reverse(temp2);
- nodes.Write(temp2, 0, 4);
- }
- }
-
- writedata.Close();
- MemoryStream output = new MemoryStream();
- BinaryWriter writeout = new BinaryWriter(output);
-
- writeout.Write((UInt32)0x2d38aa55);
- writeout.Write(IPAddress.HostToNetworkOrder((ushort)0x20));
- writeout.Write(IPAddress.HostToNetworkOrder((ushort)((12 * nodecount) + stringtable.Length)));
- writeout.Write(IPAddress.HostToNetworkOrder((ushort)(Tools.AddPadding(0x20 + ((12 * nodecount) + stringtable.Length), stringtablepad))));
-
- writeout.Seek(0x10, SeekOrigin.Current);
-
- writeout.Write(nodes.ToArray());
- writeout.Write(ASCIIEncoding.ASCII.GetBytes(stringtable));
-
- writeout.Seek(Tools.AddPadding(0x20 + ((12 * nodecount) + stringtable.Length), stringtablepad), SeekOrigin.Begin);
-
- writeout.Write(data.ToArray());
-
- output.Seek(0, SeekOrigin.End);
- for (int i = (int)output.Position; i < Tools.AddPadding((int)output.Position, datapad); i++)
- output.WriteByte(0);
-
- writeout.Close();
- output.Close();
-
- return output.ToArray();
- }
-
- ///
- /// Unpacks the given U8 archive
- /// If the archive is Lz77 compressed, it will be decompressed first!
- ///
- ///
- ///
- public static void UnpackU8(string u8archive, string unpackpath)
- {
- byte[] u8 = Wii.Tools.LoadFileToByteArray(u8archive);
- UnpackU8(u8, unpackpath);
- }
-
- ///
- /// Unpacks the given U8 archive
- /// If the archive is Lz77 compressed, it will be decompressed first!
- ///
- ///
- ///
- public static void UnpackU8(byte[] u8archive, string unpackpath)
- {
- int lz77offset = Lz77.GetLz77Offset(u8archive);
- if (lz77offset != -1) { u8archive = Lz77.Decompress(u8archive, lz77offset); }
-
- if (unpackpath[unpackpath.Length - 1] != '\\') { unpackpath = unpackpath + "\\"; }
- if (!Directory.Exists(unpackpath)) Directory.CreateDirectory(unpackpath);
-
- int u8offset = -1;
- int length = 2500;
- if (u8archive.Length < length) length = u8archive.Length - 4;
-
- for (int i = 0; i < length; i++)
- {
- if (u8archive[i] == 0x55 && u8archive[i + 1] == 0xAA && u8archive[i + 2] == 0x38 && u8archive[i + 3] == 0x2D)
- {
- u8offset = i;
- break;
- }
- }
-
- if (u8offset == -1) throw new Exception("File is not a valid U8 Archive!");
-
- int nodecount = Tools.HexStringToInt(u8archive[u8offset + 0x28].ToString("x2") + u8archive[u8offset + 0x29].ToString("x2") + u8archive[u8offset + 0x2a].ToString("x2") + u8archive[u8offset + 0x2b].ToString("x2"));
- int nodeoffset = 0x20;
-
- string[,] nodes = new string[nodecount, 5];
-
- for (int j = 0; j < nodecount; j++)
- {
- nodes[j, 0] = u8archive[u8offset + nodeoffset].ToString("x2") + u8archive[u8offset + nodeoffset + 1].ToString("x2");
- nodes[j, 1] = u8archive[u8offset + nodeoffset + 2].ToString("x2") + u8archive[u8offset + nodeoffset + 3].ToString("x2");
- nodes[j, 2] = u8archive[u8offset + nodeoffset + 4].ToString("x2") + u8archive[u8offset + nodeoffset + 5].ToString("x2") + u8archive[u8offset + nodeoffset + 6].ToString("x2") + u8archive[u8offset + nodeoffset + 7].ToString("x2");
- nodes[j, 3] = u8archive[u8offset + nodeoffset + 8].ToString("x2") + u8archive[u8offset + nodeoffset + 9].ToString("x2") + u8archive[u8offset + nodeoffset + 10].ToString("x2") + u8archive[u8offset + nodeoffset + 11].ToString("x2");
-
- nodeoffset += 12;
- }
-
- int stringtablepos = u8offset + nodeoffset;
-
- for (int x = 0; x < nodecount; x++)
- {
- bool end = false;
- int nameoffset = Tools.HexStringToInt(nodes[x, 1]);
- string thisname = "";
-
- do
- {
- if (u8archive[stringtablepos + nameoffset] != 0x00)
- {
- char tempchar = Convert.ToChar(u8archive[stringtablepos + nameoffset]);
- thisname += tempchar.ToString();
- nameoffset++;
- }
- else end = true;
- } while (end == false);
-
- nodes[x, 4] = thisname;
- }
-
- string[] dirs = new string[nodecount];
- dirs[0] = unpackpath;
- int[] dircount = new int[nodecount];
- int dirindex = 0;
-
- try
- {
- for (int y = 1; y < nodecount; y++)
- {
- switch (nodes[y, 0])
- {
- case "0100":
- if (dirs[dirindex][dirs[dirindex].Length - 1] != '\\') { dirs[dirindex] = dirs[dirindex] + "\\"; }
- Directory.CreateDirectory(dirs[dirindex] + nodes[y, 4]);
- dirs[dirindex + 1] = dirs[dirindex] + nodes[y, 4];
- dirindex++;
- dircount[dirindex] = Tools.HexStringToInt(nodes[y, 3]);
- break;
- default:
- int filepos = u8offset + Tools.HexStringToInt(nodes[y, 2]);
- int filesize = Tools.HexStringToInt(nodes[y, 3]);
-
- using (FileStream fs = new FileStream(dirs[dirindex] + "\\" + nodes[y, 4], FileMode.Create))
- {
- fs.Write(u8archive, filepos, filesize);
- }
- break;
- }
-
- while (dirindex > 0 && dircount[dirindex] == (y + 1))
- {
- dirindex--;
- }
- }
- }
- catch { }
- }
-
- ///
- /// Gets the Banner.bin out of the 00000000.app
- ///
- ///
- ///
- public static byte[] GetBannerBin(byte[] nullapp)
- {
- int lz77offset = Lz77.GetLz77Offset(nullapp);
- if (lz77offset != -1) { nullapp = Lz77.Decompress(nullapp, lz77offset); }
-
- int u8offset = -1;
- for (int i = 0; i < 2500; i++)
- {
- if (nullapp[i] == 0x55 && nullapp[i + 1] == 0xAA && nullapp[i + 2] == 0x38 && nullapp[i + 3] == 0x2D)
- {
- u8offset = i;
- break;
- }
- }
-
- if (u8offset == -1) throw new Exception("File is not a valid U8 Archive!");
-
- int nodecount = Tools.HexStringToInt(nullapp[u8offset + 0x28].ToString("x2") + nullapp[u8offset + 0x29].ToString("x2") + nullapp[u8offset + 0x2a].ToString("x2") + nullapp[u8offset + 0x2b].ToString("x2"));
- int nodeoffset = 0x20;
-
- string[,] nodes = new string[nodecount, 5];
-
- for (int j = 0; j < nodecount; j++)
- {
- nodes[j, 0] = nullapp[u8offset + nodeoffset].ToString("x2") + nullapp[u8offset + nodeoffset + 1].ToString("x2");
- nodes[j, 1] = nullapp[u8offset + nodeoffset + 2].ToString("x2") + nullapp[u8offset + nodeoffset + 3].ToString("x2");
- nodes[j, 2] = nullapp[u8offset + nodeoffset + 4].ToString("x2") + nullapp[u8offset + nodeoffset + 5].ToString("x2") + nullapp[u8offset + nodeoffset + 6].ToString("x2") + nullapp[u8offset + nodeoffset + 7].ToString("x2");
- nodes[j, 3] = nullapp[u8offset + nodeoffset + 8].ToString("x2") + nullapp[u8offset + nodeoffset + 9].ToString("x2") + nullapp[u8offset + nodeoffset + 10].ToString("x2") + nullapp[u8offset + nodeoffset + 11].ToString("x2");
-
- nodeoffset += 12;
- }
-
- int stringtablepos = u8offset + nodeoffset;
-
- for (int x = 0; x < nodecount; x++)
- {
- bool end = false;
- int nameoffset = Tools.HexStringToInt(nodes[x, 1]);
- string thisname = "";
-
- while (end == false)
- {
- if (nullapp[stringtablepos + nameoffset] != 0x00)
- {
- char tempchar = Convert.ToChar(nullapp[stringtablepos + nameoffset]);
- thisname += tempchar.ToString();
- nameoffset++;
- }
- else end = true;
- }
-
- nodes[x, 4] = thisname;
- }
-
- for (int y = 1; y < nodecount; y++)
- {
- if (nodes[y, 4] == "banner.bin")
- {
- int filepos = u8offset + Tools.HexStringToInt(nodes[y, 2]);
- int filesize = Tools.HexStringToInt(nodes[y, 3]);
-
- MemoryStream ms = new MemoryStream(nullapp);
- byte[] banner = new byte[filesize];
- ms.Seek(filepos, SeekOrigin.Begin);
- ms.Read(banner, 0, filesize);
- ms.Close();
-
- return banner;
- }
- }
-
- throw new Exception("This file doesn't contain banner.bin!");
- }
-
- ///
- /// Gets the Icon.bin out of the 00000000.app
- ///
- ///
- ///
- public static byte[] GetIconBin(byte[] nullapp)
- {
- int lz77offset = Lz77.GetLz77Offset(nullapp);
- if (lz77offset != -1) { nullapp = Lz77.Decompress(nullapp, lz77offset); }
-
- int u8offset = -1;
- for (int i = 0; i < 2500; i++)
- {
- if (nullapp[i] == 0x55 && nullapp[i + 1] == 0xAA && nullapp[i + 2] == 0x38 && nullapp[i + 3] == 0x2D)
- {
- u8offset = i;
- break;
- }
- }
-
- if (u8offset == -1) throw new Exception("File is not a valid U8 Archive!");
-
- int nodecount = Tools.HexStringToInt(nullapp[u8offset + 0x28].ToString("x2") + nullapp[u8offset + 0x29].ToString("x2") + nullapp[u8offset + 0x2a].ToString("x2") + nullapp[u8offset + 0x2b].ToString("x2"));
- int nodeoffset = 0x20;
-
- string[,] nodes = new string[nodecount, 5];
-
- for (int j = 0; j < nodecount; j++)
- {
- nodes[j, 0] = nullapp[u8offset + nodeoffset].ToString("x2") + nullapp[u8offset + nodeoffset + 1].ToString("x2");
- nodes[j, 1] = nullapp[u8offset + nodeoffset + 2].ToString("x2") + nullapp[u8offset + nodeoffset + 3].ToString("x2");
- nodes[j, 2] = nullapp[u8offset + nodeoffset + 4].ToString("x2") + nullapp[u8offset + nodeoffset + 5].ToString("x2") + nullapp[u8offset + nodeoffset + 6].ToString("x2") + nullapp[u8offset + nodeoffset + 7].ToString("x2");
- nodes[j, 3] = nullapp[u8offset + nodeoffset + 8].ToString("x2") + nullapp[u8offset + nodeoffset + 9].ToString("x2") + nullapp[u8offset + nodeoffset + 10].ToString("x2") + nullapp[u8offset + nodeoffset + 11].ToString("x2");
-
- nodeoffset += 12;
- }
-
- int stringtablepos = u8offset + nodeoffset;
-
- for (int x = 0; x < nodecount; x++)
- {
- bool end = false;
- int nameoffset = Tools.HexStringToInt(nodes[x, 1]);
- string thisname = "";
-
- while (end == false)
- {
- if (nullapp[stringtablepos + nameoffset] != 0x00)
- {
- char tempchar = Convert.ToChar(nullapp[stringtablepos + nameoffset]);
- thisname += tempchar.ToString();
- nameoffset++;
- }
- else end = true;
- }
-
- nodes[x, 4] = thisname;
- }
-
- for (int y = 1; y < nodecount; y++)
- {
- if (nodes[y, 4] == "icon.bin")
- {
- int filepos = u8offset + Tools.HexStringToInt(nodes[y, 2]);
- int filesize = Tools.HexStringToInt(nodes[y, 3]);
-
- MemoryStream ms = new MemoryStream(nullapp);
- byte[] icon = new byte[filesize];
- ms.Seek(filepos, SeekOrigin.Begin);
- ms.Read(icon, 0, filesize);
- ms.Close();
-
- return icon;
- }
- }
-
- throw new Exception("This file doesn't contain icon.bin!");
- }
-
- ///
- /// Extracts all Tpl's to the given path
- ///
- ///
- ///
- public static void UnpackTpls(byte[] u8archive, string unpackpath)
- {
- int lz77offset = Lz77.GetLz77Offset(u8archive);
- if (lz77offset != -1) { u8archive = Lz77.Decompress(u8archive, lz77offset); }
-
- if (unpackpath[unpackpath.Length - 1] != '\\') { unpackpath = unpackpath + "\\"; }
- if (!Directory.Exists(unpackpath)) Directory.CreateDirectory(unpackpath);
-
- int u8offset = -1;
- int length = 2500;
- if (u8archive.Length < 2500) length = u8archive.Length - 4;
-
- for (int i = 0; i < 2500; i++)
- {
- if (u8archive[i] == 0x55 && u8archive[i + 1] == 0xAA && u8archive[i + 2] == 0x38 && u8archive[i + 3] == 0x2D)
- {
- u8offset = i;
- break;
- }
- }
-
- if (u8offset == -1) throw new Exception("File is not a valid U8 Archive!");
-
- int nodecount = Tools.HexStringToInt(u8archive[u8offset + 0x28].ToString("x2") + u8archive[u8offset + 0x29].ToString("x2") + u8archive[u8offset + 0x2a].ToString("x2") + u8archive[u8offset + 0x2b].ToString("x2"));
- int nodeoffset = 0x20;
-
- string[,] nodes = new string[nodecount, 5];
-
- for (int j = 0; j < nodecount; j++)
- {
- nodes[j, 0] = u8archive[u8offset + nodeoffset].ToString("x2") + u8archive[u8offset + nodeoffset + 1].ToString("x2");
- nodes[j, 1] = u8archive[u8offset + nodeoffset + 2].ToString("x2") + u8archive[u8offset + nodeoffset + 3].ToString("x2");
- nodes[j, 2] = u8archive[u8offset + nodeoffset + 4].ToString("x2") + u8archive[u8offset + nodeoffset + 5].ToString("x2") + u8archive[u8offset + nodeoffset + 6].ToString("x2") + u8archive[u8offset + nodeoffset + 7].ToString("x2");
- nodes[j, 3] = u8archive[u8offset + nodeoffset + 8].ToString("x2") + u8archive[u8offset + nodeoffset + 9].ToString("x2") + u8archive[u8offset + nodeoffset + 10].ToString("x2") + u8archive[u8offset + nodeoffset + 11].ToString("x2");
-
- nodeoffset += 12;
- }
-
- int stringtablepos = u8offset + nodeoffset;
-
- for (int x = 0; x < nodecount; x++)
- {
- bool end = false;
- int nameoffset = Tools.HexStringToInt(nodes[x, 1]);
- string thisname = "";
-
- while (end == false)
- {
- if (u8archive[stringtablepos + nameoffset] != 0x00)
- {
- char tempchar = Convert.ToChar(u8archive[stringtablepos + nameoffset]);
- thisname += tempchar.ToString();
- nameoffset++;
- }
- else end = true;
- }
-
- nodes[x, 4] = thisname;
- }
-
- for (int y = 1; y < nodecount; y++)
- {
- if (nodes[y, 4].Contains("."))
- {
- if (nodes[y, 4].Remove(0, nodes[y, 4].LastIndexOf('.')) == ".tpl")
- {
- int filepos = u8offset + Tools.HexStringToInt(nodes[y, 2]);
- int filesize = Tools.HexStringToInt(nodes[y, 3]);
-
- using (FileStream fs = new FileStream(unpackpath + nodes[y, 4], FileMode.Create))
- {
- fs.Write(u8archive, filepos, filesize);
- }
- }
- }
- }
- }
- }
-
- public class Lz77
- {
- private const int N = 4096;
- private const int F = 18;
- private const int threshold = 2;
- private static int[] lson = new int[N + 1];
- private static int[] rson = new int[N + 257];
- private static int[] dad = new int[N + 1];
- private static ushort[] text_buf = new ushort[N + 17];
- private static int match_position = 0, match_length = 0;
- private static int textsize = 0;
- private static int codesize = 0;
-
- ///
- /// Returns the Offset to the Lz77 Header
- /// -1 will be returned, if the file is not Lz77 compressed
- ///
- ///
- ///
- public static int GetLz77Offset(byte[] data)
- {
- int length = 5000;
- if (data.Length < 5000) length = data.Length - 4;
-
- for (int i = 0; i < length; i++)
- {
- if (data[i] == 0x55 && data[i + 1] == 0xAA && data[i + 2] == 0x38 && data[i + 3] == 0x2D)
- {
- break;
- }
-
- UInt32 tmp = BitConverter.ToUInt32(data, i);
- if (tmp == 0x37375a4c) return i;
- }
-
- return -1;
- }
-
- ///
- /// Decompresses the given file
- ///
- ///
- ///
- public static void Decompress(string infile, string outfile)
- {
- byte[] input = Tools.LoadFileToByteArray(infile);
- int offset = GetLz77Offset(input);
- if (offset == -1) throw new Exception("File is not Lz77 compressed!");
- Tools.SaveFileFromByteArray(Decompress(input, offset), outfile);
- }
-
- ///
- /// Decompresses the given data
- ///
- ///
- ///
- ///
- public static byte[] Decompress(byte[] compressed, int offset)
- {
- int i, j, k, r, c, z;
- uint flags;
- UInt32 decomp_size;
- UInt32 cur_size = 0;
-
- MemoryStream infile = new MemoryStream(compressed);
- MemoryStream outfile = new MemoryStream();
-
- UInt32 gbaheader = new UInt32();
- byte[] temp = new byte[4];
- infile.Seek(offset + 4, SeekOrigin.Begin);
- infile.Read(temp, 0, 4);
- gbaheader = BitConverter.ToUInt32(temp, 0);
-
- decomp_size = gbaheader >> 8;
- byte[] text_buf = new byte[N + 17];
-
- for (i = 0; i < N - F; i++) text_buf[i] = 0xdf;
- r = N - F; flags = 7; z = 7;
-
- while (true)
- {
- flags <<= 1;
- z++;
- if (z == 8)
- {
- if ((c = (char)infile.ReadByte()) == -1) break;
- flags = (uint)c;
- z = 0;
- }
- if ((flags & 0x80) == 0)
- {
- if ((c = infile.ReadByte()) == infile.Length - 1) break;
- if (cur_size < decomp_size) outfile.WriteByte((byte)c);
- text_buf[r++] = (byte)c;
- r &= (N - 1);
- cur_size++;
- }
- else
- {
- if ((i = infile.ReadByte()) == -1) break;
- if ((j = infile.ReadByte()) == -1) break;
- j = j | ((i << 8) & 0xf00);
- i = ((i >> 4) & 0x0f) + threshold;
- for (k = 0; k <= i; k++)
- {
- c = text_buf[(r - j - 1) & (N - 1)];
- if (cur_size < decomp_size) outfile.WriteByte((byte)c); text_buf[r++] = (byte)c; r &= (N - 1); cur_size++;
- }
- }
- }
-
- return outfile.ToArray();
- }
-
- public static void InitTree()
- {
- int i;
- for (i = N + 1; i <= N + 256; i++) rson[i] = N;
- for (i = 0; i < N; i++) dad[i] = N;
- }
-
- public static void InsertNode(int r)
- {
- int i, p, cmp;
- cmp = 1;
- p = N + 1 + (text_buf[r] == 0xffff ? 0 : text_buf[r]); //text_buf[r];
- rson[r] = lson[r] = N; match_length = 0;
- for (; ; )
- {
- if (cmp >= 0)
- {
- if (rson[p] != N) p = rson[p];
- else { rson[p] = r; dad[r] = p; return; }
- }
- else
- {
- if (lson[p] != N) p = lson[p];
- else { lson[p] = r; dad[r] = p; return; }
- }
- for (i = 1; i < F; i++)
- if ((cmp = text_buf[r + i] - text_buf[p + i]) != 0) break;
- if (i > match_length)
- {
- match_position = p;
- if ((match_length = i) >= F) break;
- }
- }
- dad[r] = dad[p]; lson[r] = lson[p]; rson[r] = rson[p];
- dad[lson[p]] = r; dad[rson[p]] = r;
- if (rson[dad[p]] == p) rson[dad[p]] = r;
- else lson[dad[p]] = r;
- dad[p] = N;
- }
-
- public static void DeleteNode(int p)
- {
- int q;
-
- if (dad[p] == N) return; /* not in tree */
- if (rson[p] == N) q = lson[p];
- else if (lson[p] == N) q = rson[p];
- else
- {
- q = lson[p];
- if (rson[q] != N)
- {
- do { q = rson[q]; } while (rson[q] != N);
- rson[dad[q]] = lson[q]; dad[lson[q]] = dad[q];
- lson[q] = lson[p]; dad[lson[p]] = q;
- }
- rson[q] = rson[p]; dad[rson[p]] = q;
- }
- dad[q] = dad[p];
- if (rson[dad[p]] == p) rson[dad[p]] = q; else lson[dad[p]] = q;
- dad[p] = N;
- }
-
- ///
- /// Lz77 compresses the given File
- ///
- ///
- ///
- public static void Compress(string infile, string outfile)
- {
- byte[] thisfile = Tools.LoadFileToByteArray(infile);
- thisfile = Compress(thisfile);
- Tools.SaveFileFromByteArray(thisfile, outfile);
- }
-
- ///
- /// Lz77 compresses the given and saves it to the given Path
- ///
- ///
- ///
- public static void Compress(byte[] file, string outfile)
- {
- byte[] temp = Compress(file);
- Tools.SaveFileFromByteArray(temp, outfile);
- }
-
- ///
- /// Lz77 compresses the given Byte Array
- ///
- ///
- ///
- public static byte[] Compress(byte[] file)
- {
- int i, c, len, r, s, last_match_length, code_buf_ptr;
- int[] code_buf = new int[17];
- int mask;
- UInt32 filesize = ((Convert.ToUInt32(file.Length)) << 8) + 0x10;
- byte[] filesizebytes = BitConverter.GetBytes(filesize);
-
- MemoryStream output = new MemoryStream();
- output.WriteByte((byte)'L'); output.WriteByte((byte)'Z'); output.WriteByte((byte)'7'); output.WriteByte((byte)'7');
- MemoryStream infile = new MemoryStream(file);
-
- output.Write(filesizebytes, 0, filesizebytes.Length);
-
- InitTree();
- code_buf[0] = 0;
- code_buf_ptr = 1;
- mask = 0x80;
- s = 0;
- r = N - F;
-
- for (i = s; i < r; i++) text_buf[i] = 0xffff;
- for (len = 0; len < F && (c = (int)infile.ReadByte()) != -1; len++)
- text_buf[r + len] = (ushort)c;
-
- if ((textsize = len) == 0) return file;
-
- for (i = 1; i <= F; i++) InsertNode(r - i);
-
- InsertNode(r);
-
- do
- {
- if (match_length > len) match_length = len;
-
- if (match_length <= threshold)
- {
- match_length = 1;
- code_buf[code_buf_ptr++] = text_buf[r];
- }
- else
- {
- code_buf[0] |= mask;
-
- code_buf[code_buf_ptr++] = (char)
- (((r - match_position - 1) >> 8) & 0x0f) |
- ((match_length - (threshold + 1)) << 4);
-
- code_buf[code_buf_ptr++] = (char)((r - match_position - 1) & 0xff);
- }
- if ((mask >>= 1) == 0)
- {
- for (i = 0; i < code_buf_ptr; i++)
- output.WriteByte((byte)code_buf[i]);
- codesize += code_buf_ptr;
- code_buf[0] = 0; code_buf_ptr = 1;
- mask = 0x80;
- }
-
- last_match_length = match_length;
- for (i = 0; i < last_match_length &&
- (c = (int)infile.ReadByte()) != -1; i++)
- {
- DeleteNode(s);
- text_buf[s] = (ushort)c;
- if (s < F - 1) text_buf[s + N] = (ushort)c;
- s = (s + 1) & (N - 1); r = (r + 1) & (N - 1);
- InsertNode(r);
- }
-
- while (i++ < last_match_length)
- {
- DeleteNode(s);
- s = (s + 1) & (N - 1); r = (r + 1) & (N - 1);
- if (--len != 0) InsertNode(r);
- }
- } while (len > 0);
-
-
- if (code_buf_ptr > 1)
- {
- for (i = 0; i < code_buf_ptr; i++) output.WriteByte((byte)code_buf[i]);
- codesize += code_buf_ptr;
- }
-
- if (codesize % 4 != 0)
- for (i = 0; i < 4 - (codesize % 4); i++)
- output.WriteByte(0x00);
-
- infile.Close();
- return output.ToArray();
- }
- }
-
- public class TPL
- {
- ///
- /// Converts a Tpl to a Bitmap
- ///
- ///
- ///
- public static Bitmap ConvertFromTPL(string tpl)
- {
- byte[] tplarray = Wii.Tools.LoadFileToByteArray(tpl);
- return ConvertFromTPL(tplarray);
- }
-
- ///
- /// Converts a Tpl to a Bitmap
- ///
- ///
- ///
- public static Bitmap ConvertFromTPL(byte[] tpl)
- {
- if (GetTextureCount(tpl) > 1) throw new Exception("Tpl's containing more than one Texture are not supported!");
-
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int format = GetTextureFormat(tpl);
- if (format == -1) throw new Exception("The Texture has an unsupported format!");
-
- switch (format)
- {
- case 0:
- byte[] temp0 = FromI4(tpl);
- return ConvertPixelToBitmap(temp0, width, height);
- case 1:
- byte[] temp1 = FromI8(tpl);
- return ConvertPixelToBitmap(temp1, width, height);
- case 2:
- byte[] temp2 = FromIA4(tpl);
- return ConvertPixelToBitmap(temp2, width, height);
- case 3:
- byte[] temp3 = FromIA8(tpl);
- return ConvertPixelToBitmap(temp3, width, height);
- case 4:
- byte[] temp4 = FromRGB565(tpl);
- return ConvertPixelToBitmap(temp4, width, height);
- case 5:
- byte[] temp5 = FromRGB5A3(tpl);
- return ConvertPixelToBitmap(temp5, width, height);
- case 6:
- byte[] temp6 = FromRGBA8(tpl);
- return ConvertPixelToBitmap(temp6, width, height);
- case 14:
- byte[] temp14 = FromCMP(tpl);
- return ConvertPixelToBitmap(temp14, width, height);
- default:
- throw new Exception("The Texture has an unsupported format!");
- }
- }
-
- ///
- /// Converts the Pixel Data into a Png Image
- ///
- /// Byte array with pixel data
- public static System.Drawing.Bitmap ConvertPixelToBitmap(byte[] data, int width, int height)
- {
- if (width == 0) width = 1;
- if (height == 0) height = 1;
-
- System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
- System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(
- new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height),
- System.Drawing.Imaging.ImageLockMode.WriteOnly, bmp.PixelFormat);
-
- System.Runtime.InteropServices.Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
- bmp.UnlockBits(bmpData);
- return bmp;
- }
-
- ///
- /// Gets the Number of Textures in a Tpl
- ///
- ///
- ///
- public static int GetTextureCount(byte[] tpl)
- {
- byte[] tmp = new byte[4];
- tmp[3] = tpl[4];
- tmp[2] = tpl[5];
- tmp[1] = tpl[6];
- tmp[0] = tpl[7];
- UInt32 count = BitConverter.ToUInt32(tmp, 0);
- return (int)count;
- }
-
- ///
- /// Gets the Format of the Texture in the Tpl
- ///
- ///
- ///
- public static int GetTextureFormat(string tpl)
- {
- byte[] temp = Tools.LoadFileToByteArray(tpl, 0, 50);
- return GetTextureFormat(temp);
- }
-
- ///
- /// Gets the Format of the Texture in the Tpl
- ///
- ///
- ///
- public static int GetTextureFormat(byte[] tpl)
- {
- byte[] tmp = new byte[4];
- tmp[3] = tpl[24];
- tmp[2] = tpl[25];
- tmp[1] = tpl[26];
- tmp[0] = tpl[27];
- UInt32 format = BitConverter.ToUInt32(tmp, 0);
-
- if (format == 0 ||
- format == 1 ||
- format == 2 ||
- format == 3 ||
- format == 4 ||
- format == 5 ||
- format == 6 ||
- format == 14) return (int)format;
-
- else return -1; //Unsupported Format
- }
-
- ///
- /// Gets the Format Name of the Texture in the Tpl
- ///
- ///
- ///
- public static string GetTextureFormatName(byte[] tpl)
- {
- switch (GetTextureFormat(tpl))
- {
- case 0:
- return "I4";
- case 1:
- return "I8";
- case 2:
- return "IA4";
- case 3:
- return "IA8";
- case 4:
- return "RGB565";
- case 5:
- return "RGB5A3";
- case 6:
- return "RGBA8";
- case 14:
- return "CMP";
- default:
- return "Unknown";
- }
- }
-
- public static int avg(int w0, int w1, int c0, int c1)
- {
- int a0 = c0 >> 11;
- int a1 = c1 >> 11;
- int a = (w0 * a0 + w1 * a1) / (w0 + w1);
- int c = (a << 11) & 0xffff;
-
- a0 = (c0 >> 5) & 63;
- a1 = (c1 >> 5) & 63;
- a = (w0 * a0 + w1 * a1) / (w0 + w1);
- c = c | ((a << 5) & 0xffff);
-
- a0 = c0 & 31;
- a1 = c1 & 31;
- a = (w0 * a0 + w1 * a1) / (w0 + w1);
- c = c | a;
-
- return c;
- }
-
- ///
- /// Gets the Width of the Texture in the Tpl
- ///
- ///
- ///
- public static int GetTextureWidth(byte[] tpl)
- {
- byte[] tmp = new byte[2];
- tmp[1] = tpl[22];
- tmp[0] = tpl[23];
- UInt16 width = BitConverter.ToUInt16(tmp, 0);
- return (int)width;
- }
-
- ///
- /// Gets the Height of the Texture in the Tpl
- ///
- ///
- ///
- public static int GetTextureHeight(byte[] tpl)
- {
- byte[] tmp = new byte[2];
- tmp[1] = tpl[20];
- tmp[0] = tpl[21];
- UInt16 height = BitConverter.ToUInt16(tmp, 0);
- return (int)height;
- }
-
- ///
- /// Gets the offset to the Texturedata in the Tpl
- ///
- ///
- ///
- public static int GetTextureOffset(byte[] tpl)
- {
- byte[] tmp = new byte[4];
- tmp[3] = tpl[28];
- tmp[2] = tpl[29];
- tmp[1] = tpl[30];
- tmp[0] = tpl[31];
- UInt32 offset = BitConverter.ToUInt32(tmp, 0);
- return (int)offset;
- }
-
- ///
- /// Converts RGBA8 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromRGBA8(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 4)
- {
- for (int k = 0; k < 2; k++)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 4; x1++)
- {
- byte[] pixelbytes = new byte[2];
- pixelbytes[1] = tpl[offset + inp * 2];
- pixelbytes[0] = tpl[offset + inp * 2 + 1];
- UInt16 pixel = BitConverter.ToUInt16(pixelbytes, 0);
- inp++;
-
- if ((x1 >= width) || (y1 >= height))
- continue;
-
- if (k == 0)
- {
- int a = (pixel >> 8) & 0xff;
- int r = (pixel >> 0) & 0xff;
- output[x1 + (y1 * width)] |= (UInt32)((r << 16) | (a << 24));
- }
- else
- {
- int g = (pixel >> 8) & 0xff;
- int b = (pixel >> 0) & 0xff;
- output[x1 + (y1 * width)] |= (UInt32)((g << 8) | (b << 0));
- }
- }
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts RGB5A3 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromRGB5A3(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- int r, g, b;
- int a = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 4)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 4; x1++)
- {
- byte[] pixelbytes = new byte[2];
- pixelbytes[1] = tpl[offset + inp * 2];
- pixelbytes[0] = tpl[offset + inp * 2 + 1];
- UInt16 pixel = BitConverter.ToUInt16(pixelbytes, 0);
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- if ((pixel & (1 << 15)) != 0)
- {
- b = (((pixel >> 10) & 0x1F) * 255) / 31;
- g = (((pixel >> 5) & 0x1F) * 255) / 31;
- r = (((pixel >> 0) & 0x1F) * 255) / 31;
- a = 255;
- }
- else
- {
- a = (((pixel >> 12) & 0x07) * 255) / 7;
- b = (((pixel >> 8) & 0x0F) * 255) / 15;
- g = (((pixel >> 4) & 0x0F) * 255) / 15;
- r = (((pixel >> 0) & 0x0F) * 255) / 15;
- }
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[(y1 * width) + x1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts RGB565 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromRGB565(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 4)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 4; x1++)
- {
- byte[] pixelbytes = new byte[2];
- pixelbytes[1] = tpl[offset + inp * 2];
- pixelbytes[0] = tpl[offset + inp * 2 + 1];
- UInt16 pixel = BitConverter.ToUInt16(pixelbytes, 0);
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- int b = (((pixel >> 11) & 0x1F) << 3) & 0xff;
- int g = (((pixel >> 5) & 0x3F) << 2) & 0xff;
- int r = (((pixel >> 0) & 0x1F) << 3) & 0xff;
- int a = 255;
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts I4 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromI4(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 8)
- {
- for (int x = 0; x < width; x += 8)
- {
- for (int y1 = y; y1 < y + 8; y1++)
- {
- for (int x1 = x; x1 < x + 8; x1 += 2)
- {
- int pixel = tpl[offset + inp];
-
- if (y1 >= height || x1 >= width)
- continue;
-
- int r = (pixel >> 4) * 255 / 15;
- int g = (pixel >> 4) * 255 / 15;
- int b = (pixel >> 4) * 255 / 15;
- int a = (pixel >> 4) * 255 / 15;
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1] = (UInt32)rgba;
-
- pixel = tpl[offset + inp];
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- r = (pixel & 0x0F) * 255 / 15;
- g = (pixel & 0x0F) * 255 / 15;
- b = (pixel & 0x0F) * 255 / 15;
- a = (pixel & 0x0F) * 255 / 15;
-
- rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1 + 1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts IA4 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromIA4(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 8)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 8; x1++)
- {
- int pixel = tpl[offset + inp];
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- int r = ((pixel & 0x0F) * 255 / 15) & 0xff;
- int g = ((pixel & 0x0F) * 255 / 15) & 0xff;
- int b = ((pixel & 0x0F) * 255 / 15) & 0xff;
- int a = (((pixel >> 4) * 255) / 15) & 0xff;
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts I8 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromI8(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 8)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 8; x1++)
- {
- int pixel = tpl[offset + inp];
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- int r = pixel;
- int g = pixel;
- int b = pixel;
- int a = 255;
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts IA8 Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromIA8(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- int inp = 0;
- for (int y = 0; y < height; y += 4)
- {
- for (int x = 0; x < width; x += 4)
- {
- for (int y1 = y; y1 < y + 4; y1++)
- {
- for (int x1 = x; x1 < x + 4; x1++)
- {
- byte[] pixelbytes = new byte[2];
- pixelbytes[1] = tpl[offset + inp * 2];
- pixelbytes[0] = tpl[offset + inp * 2 + 1];
- UInt16 pixel = BitConverter.ToUInt16(pixelbytes, 0);
- inp++;
-
- if (y1 >= height || x1 >= width)
- continue;
-
- int r = (pixel >> 8);// &0xff;
- int g = (pixel >> 8);// &0xff;
- int b = (pixel >> 8);// &0xff;
- int a = (pixel >> 8) & 0xff;
-
- int rgba = (r << 0) | (g << 8) | (b << 16) | (a << 24);
- output[y1 * width + x1] = (UInt32)rgba;
- }
- }
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Converts CMP Tpl Array to RGBA Byte Array
- ///
- ///
- ///
- public static byte[] FromCMP(byte[] tpl)
- {
- int width = GetTextureWidth(tpl);
- int height = GetTextureHeight(tpl);
- int offset = GetTextureOffset(tpl);
- UInt32[] output = new UInt32[width * height];
- UInt16[] c = new UInt16[4];
- int[] pix = new int[3];
- int inp = 0;
-
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < width; x++)
- {
- int ww = Tools.AddPadding(width, 8);
-
- int x0 = x & 0x03;
- int x1 = (x >> 2) & 0x01;
- int x2 = x >> 3;
-
- int y0 = y & 0x03;
- int y1 = (y >> 2) & 0x01;
- int y2 = y >> 3;
-
- int off = (8 * x1) + (16 * y1) + (32 * x2) + (4 * ww * y2);
-
- byte[] tmp1 = new byte[2];
- tmp1[1] = tpl[offset + off];
- tmp1[0] = tpl[offset + off + 1];
- c[0] = BitConverter.ToUInt16(tmp1, 0);
- tmp1[1] = tpl[offset + off + 2];
- tmp1[0] = tpl[offset + off + 3];
- c[1] = BitConverter.ToUInt16(tmp1, 0);
-
- if (c[0] > c[1])
- {
- c[2] = (UInt16)avg(2, 1, c[0], c[1]);
- c[3] = (UInt16)avg(1, 2, c[0], c[1]);
- }
- else
- {
- c[2] = (UInt16)avg(1, 1, c[0], c[1]);
- c[3] = 0;
- }
-
- byte[] pixeldata = new byte[4];
- pixeldata[3] = tpl[offset + off + 4];
- pixeldata[2] = tpl[offset + off + 5];
- pixeldata[1] = tpl[offset + off + 6];
- pixeldata[0] = tpl[offset + off + 7];
- UInt32 pixel = BitConverter.ToUInt32(pixeldata, 0);
-
- int ix = x0 + (4 * y0);
- int raw = c[(pixel >> (30 - (2 * ix))) & 0x03];
-
- pix[0] = (raw >> 8) & 0xf8;
- pix[1] = (raw >> 3) & 0xf8;
- pix[2] = (raw << 3) & 0xf8;
-
- int intout = (pix[0] << 16) | (pix[1] << 8) | (pix[2] << 0) | (255 << 24);
- output[inp] = (UInt32)intout;
- inp++;
- }
- }
-
- return Tools.UInt32ArrayToByteArray(output);
- }
-
- ///
- /// Gets the pixel data of a Bitmap as an Byte Array
- ///
- ///
- ///
- public static uint[] BitmapToRGBA(Bitmap img)
- {
- int x = img.Width;
- int y = img.Height;
- UInt32[] rgba = new UInt32[x * y];
-
- for (int i = 0; i < y; i += 4)
- {
- for (int j = 0; j < x; j += 4)
- {
- for (int y1 = i; y1 < i + 4; y1++)
- {
- for (int x1 = j; x1 < j + 4; x1++)
- {
- if (y1 >= y || x1 >= x)
- continue;
-
- Color color = img.GetPixel(x1, y1);
- rgba[x1 + (y1 * x)] = (UInt32)color.ToArgb();
- }
- }
- }
- }
-
- return rgba;
- }
-
- ///
- /// Converts an Image to a Tpl
- ///
- ///
- /// 4 = RGB565, 5 = RGB5A3, 6 = RGBA8
- ///
- public static void ConvertToTPL(Bitmap img, string destination, int format)
- {
- byte[] tpl = ConvertToTPL(img, format);
-
- using (FileStream fs = new FileStream(destination, FileMode.Create))
- {
- fs.Write(tpl, 0, tpl.Length);
- }
- }
-
- ///
- /// Converts an Image to a Tpl
- ///
- ///
- /// 4 = RGB565, 5 = RGB5A3, 6 = RGBA8
- ///
- public static void ConvertToTPL(Image img, string destination, int format)
- {
- byte[] tpl = ConvertToTPL((Bitmap)img, format);
-
- using (FileStream fs = new FileStream(destination, FileMode.Create))
- {
- fs.Write(tpl, 0, tpl.Length);
- }
- }
-
- ///
- /// Converts an Image to a Tpl
- ///
- ///
- /// 4 = RGB565, 5 = RGB5A3, 6 = RGBA8
- ///
- public static byte[] ConvertToTPL(Image img, int format)
- {
- return ConvertToTPL((Bitmap)img, format);
- }
-
- ///
- /// Converts an Image to a Tpl
- ///
- ///
- /// 4 = RGB565, 5 = RGB5A3, 6 = RGBA8
- ///
- public static byte[] ConvertToTPL(Bitmap img, int format)
- {
- using (MemoryStream ms = new MemoryStream())
- {
- byte[] rgbaData;
-
- UInt32 tplmagic = 0x20af30;
- UInt32 ntextures = 0x1;
- UInt32 headersize = 0xc;
- UInt32 texheaderoff = 0x14;
- UInt32 texpaletteoff = 0x0;
-
- UInt16 texheight = (UInt16)img.Height;
- UInt16 texwidth = (UInt16)img.Width;
- UInt32 texformat;
- UInt32 texdataoffset = 0x40;
- byte[] rest = new byte[] { 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 };
- //This should do it for our needs.. rest includes padding
-
- switch (format)
- {
- case 4: //RGB565
- texformat = 0x4;
- rgbaData = ToRGB565(img);
- break;
- case 5: //RGB5A3
- texformat = 0x5;
- rgbaData = ToRGB5A3(img);
- break;
- default: //RGBA8 = 6
- texformat = 0x6;
- rgbaData = ToRGBA8(img);
- break;
- }
-
- byte[] buffer = BitConverter.GetBytes(tplmagic); Array.Reverse(buffer);
- ms.Seek(0, SeekOrigin.Begin);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(ntextures); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(headersize); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texheaderoff); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texpaletteoff); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texheight); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texwidth); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texformat); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- buffer = BitConverter.GetBytes(texdataoffset); Array.Reverse(buffer);
- ms.Write(buffer, 0, buffer.Length);
-
- ms.Write(rest, 0, rest.Length);
-
- ms.Write(rgbaData, 0, rgbaData.Length);
-
- return ms.ToArray();
- }
- }
-
- ///
- /// Converts an Image to RGBA8 Tpl data
- ///
- ///
- ///
- public static byte[] ToRGBA8(Bitmap img)
- {
- uint[] pixeldata = BitmapToRGBA(img);
- int w = img.Width;
- int h = img.Height;
- int z = 0, iv = 0;
- byte[] output = new byte[Tools.AddPadding(w, 4) * Tools.AddPadding(h, 4) * 4];
- uint[] lr = new uint[32], lg = new uint[32], lb = new uint[32], la = new uint[32];
-
- for (int y1 = 0; y1 < h; y1 += 4)
- {
- for (int x1 = 0; x1 < w; x1 += 4)
- {
- for (int y = y1; y < (y1 + 4); y++)
- {
- for (int x = x1; x < (x1 + 4); x++)
- {
- UInt32 rgba;
-
- if (y >= h || x >= w)
- {
- rgba = 0;
- }
- else
- {
- rgba = pixeldata[x + (y * w)];
- }
-
- lr[z] = (uint)(rgba >> 16) & 0xff;
- lg[z] = (uint)(rgba >> 8) & 0xff;
- lb[z] = (uint)(rgba >> 0) & 0xff;
- la[z] = (uint)(rgba >> 24) & 0xff;
-
- z++;
- }
- }
-
- if (z == 16)
- {
- for (int i = 0; i < 16; i++)
- {
- output[iv++] = (byte)(la[i]);
- output[iv++] = (byte)(lr[i]);
- }
- for (int i = 0; i < 16; i++)
- {
- output[iv++] = (byte)(lg[i]);
- output[iv++] = (byte)(lb[i]);
- }
-
- z = 0;
- }
- }
- }
-
-
- return output;
- }
-
- ///
- /// Converts an Image to RGBA565 Tpl data
- ///
- ///
- ///
- public static byte[] ToRGB565(Bitmap img)
- {
- uint[] pixeldata = BitmapToRGBA(img);
- int w = img.Width;
- int h = img.Height;
- int z = -1;
- byte[] output = new byte[Tools.AddPadding(w, 4) * Tools.AddPadding(h, 4) * 2];
-
- for (int y1 = 0; y1 < h; y1 += 4)
- {
- for (int x1 = 0; x1 < w; x1 += 4)
- {
- for (int y = y1; y < y1 + 4; y++)
- {
- for (int x = x1; x < x1 + 4; x++)
- {
- UInt16 newpixel;
-
- if (y >= h || x >= w)
- {
- newpixel = 0;
- }
- else
- {
- uint rgba = pixeldata[x + (y * w)];
-
- uint b = (rgba >> 16) & 0xff;
- uint g = (rgba >> 8) & 0xff;
- uint r = (rgba >> 0) & 0xff;
-
- newpixel = (UInt16)(((b >> 3) << 11) | ((g >> 2) << 5) | ((r >> 3) << 0));
- }
-
- byte[] temp = BitConverter.GetBytes(newpixel);
- Array.Reverse(temp);
-
- output[++z] = temp[0];
- output[++z] = temp[1];
- }
- }
- }
- }
-
- return output;
- }
-
- ///
- /// Converts an Image to RGBA5A3 Tpl data
- ///
- ///
- ///
- public static byte[] ToRGB5A3(Bitmap img)
- {
- uint[] pixeldata = BitmapToRGBA(img);
- int w = img.Width;
- int h = img.Height;
- int z = -1;
- byte[] output = new byte[Tools.AddPadding(w, 4) * Tools.AddPadding(h, 4) * 2];
-
- for (int y1 = 0; y1 < h; y1 += 4)
- {
- for (int x1 = 0; x1 < w; x1 += 4)
- {
- for (int y = y1; y < y1 + 4; y++)
- {
- for (int x = x1; x < x1 + 4; x++)
- {
- int newpixel;
-
- if (y >= h || x >= w)
- {
- newpixel = 0;
- }
- else
- {
- int rgba = (int)pixeldata[x + (y * w)];
- newpixel = 0;
-
- int r = (rgba >> 16) & 0xff;
- int g = (rgba >> 8) & 0xff;
- int b = (rgba >> 0) & 0xff;
- int a = (rgba >> 24) & 0xff;
-
- if (a <= 0xda)
- {
- //RGB4A3
-
- newpixel &= ~(1 << 15);
-
- r = ((r * 15) / 255) & 0xf;
- g = ((g * 15) / 255) & 0xf;
- b = ((b * 15) / 255) & 0xf;
- a = ((a * 7) / 255) & 0x7;
-
- newpixel |= a << 12;
- newpixel |= b << 0;
- newpixel |= g << 4;
- newpixel |= r << 8;
- }
- else
- {
- //RGB5
-
- newpixel |= (1 << 15);
-
- r = ((r * 31) / 255) & 0x1f;
- g = ((g * 31) / 255) & 0x1f;
- b = ((b * 31) / 255) & 0x1f;
-
- newpixel |= b << 0;
- newpixel |= g << 5;
- newpixel |= r << 10;
- }
- }
-
- byte[] temp = BitConverter.GetBytes((UInt16)newpixel);
- Array.Reverse(temp);
-
- output[++z] = temp[0];
- output[++z] = temp[1];
- }
- }
- }
- }
-
- return output;
- }
- }
-
- public class NAND
- {
- ///
- /// Backups all Saves from a NAND Backup
- ///
- ///
- ///
- public static void BackupSaves(string nandpath, string destinationpath)
- {
- string titlefolder = nandpath + "\\title";
- string[] lowerdirs = Directory.GetDirectories(titlefolder);
- Tools.ChangeProgress(0);
-
- for (int i = 0; i < lowerdirs.Length; i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / lowerdirs.Length);
- string[] upperdirs = Directory.GetDirectories(lowerdirs[i]);
-
- for (int j = 0; j < upperdirs.Length; j++)
- {
- if (Directory.Exists(upperdirs[j] + "\\data"))
- {
- if (Directory.GetFiles(upperdirs[j] + "\\data").Length > 0 ||
- Directory.GetDirectories(upperdirs[j] + "\\data").Length > 0)
- {
- Tools.CopyDirectory(upperdirs[j] + "\\data", (upperdirs[j] + "\\data").Replace(nandpath, destinationpath).Replace("\\title", ""));
- }
- }
- }
- }
- }
-
- ///
- /// Restores all Saves for existing titles to a NAND Backup
- ///
- ///
- ///
- public static void RestoreSaves(string backuppath, string nandpath)
- {
- string titlefolder = nandpath + "\\title";
- string[] lowerdirs = Directory.GetDirectories(backuppath);
- Tools.ChangeProgress(0);
-
- for (int i = 0; i < lowerdirs.Length; i++)
- {
- Tools.ChangeProgress((i + 1) * 100 / lowerdirs.Length);
- string[] upperdirs = Directory.GetDirectories(lowerdirs[i]);
-
- for (int j = 0; j < upperdirs.Length; j++)
- {
- string[] datafiles = Directory.GetFiles(upperdirs[j] + "\\data");
- string upperdirnand = upperdirs[j].Replace(backuppath, titlefolder);
-
- if (Directory.Exists(upperdirnand) &&
- (Directory.GetFiles(upperdirs[j] + "\\data").Length > 0 ||
- Directory.GetDirectories(upperdirs[j] + "\\data").Length > 0))
- {
- if (!Directory.Exists(upperdirnand + "\\data")) Directory.CreateDirectory(upperdirnand + "\\data");
- Tools.CopyDirectory(upperdirs[j] + "\\data", (upperdirs[j] + "\\data").Replace(backuppath, titlefolder));
- }
- }
- }
-
- Tools.ChangeProgress(100);
- }
-
- ///
- /// Backups a single Save
- ///
- ///
- /// Format: XXXXXXXX\XXXXXXXX
- ///
- public static void BackupSingleSave(string nandpath, string titlepath, string destinationpath)
- {
- string datafolder = nandpath + "\\title\\" + titlepath + "\\data";
-
- if (Directory.GetFiles(datafolder).Length > 0 ||
- Directory.GetDirectories(datafolder).Length > 0)
- {
- string savefolder = datafolder.Replace(nandpath, destinationpath).Replace("\\title", "");
- if (!Directory.Exists(savefolder)) Directory.CreateDirectory(savefolder);
-
- Tools.CopyDirectory(datafolder, savefolder);
- }
- else
- {
- throw new Exception("No save data was found!");
- }
- }
-
- ///
- /// Restores a singe Save, if the title exists on NAND Backup
- ///
- ///
- /// Format: XXXXXXXX\XXXXXXXX
- ///
- public static void RestoreSingleSave(string backuppath, string titlepath, string nandpath)
- {
- string titlefoldernand = nandpath + "\\title\\" + titlepath;
- string titlefolder = titlefoldernand.Replace(nandpath, backuppath).Replace("\\title", "");
-
- if (Directory.Exists(titlefoldernand) &&
- (Directory.GetFiles(titlefolder + "\\data").Length > 0 ||
- Directory.GetDirectories(titlefolder + "\\data").Length > 0))
- {
- if (!Directory.Exists(titlefoldernand + "\\data")) Directory.CreateDirectory(titlefoldernand + "\\data");
- Tools.CopyDirectory(titlefolder + "\\data", titlefoldernand + "\\data");
- }
- else
- {
- throw new Exception("Title not found in NAND Backup!");
- }
- }
-
- ///
- /// Checks, if save data exists in the given title folder
- ///
- ///
- /// Format: XXXXXXXX\XXXXXXXX
- public static bool CheckForSaveData(string nandpath, string titlepath)
- {
- string datafolder = nandpath + "\\title\\" + titlepath + "\\data";
-
- if (!Directory.Exists(datafolder)) return false;
- else
- {
- string[] datafiles = Directory.GetFiles(datafolder);
-
- if (datafiles.Length > 0) return true;
- else return false;
- }
- }
-
- ///
- /// Checks, if save data exists in the given title folder
- ///
- ///
- /// Format: XXXXXXXX\XXXXXXXX
- public static bool CheckForBackupData(string backuppath, string titlepath)
- {
- string datafolder = backuppath + "\\" + titlepath + "\\data";
-
- if (!Directory.Exists(datafolder)) return false;
- else
- {
- string[] datafiles = Directory.GetFiles(datafolder);
-
- if (datafiles.Length > 0) return true;
- else return false;
- }
- }
- }
-
- public class Sound
- {
- ///
- /// Checks if the given Wave is a proper PCM WAV file
- ///
- ///
- ///
- public static bool CheckWave(string wavefile)
- {
- byte[] wave = Tools.LoadFileToByteArray(wavefile, 0, 256);
- return CheckWave(wave);
- }
-
- ///
- /// Checks if the given Wave is a proper PCM WAV file
- ///
- ///
- ///
- public static bool CheckWave(byte[] wavefile)
- {
- if (wavefile[0] != 'R' ||
- wavefile[1] != 'I' ||
- wavefile[2] != 'F' ||
- wavefile[3] != 'F' ||
-
- wavefile[8] != 'W' ||
- wavefile[9] != 'A' ||
- wavefile[10] != 'V' ||
- wavefile[11] != 'E' ||
-
- wavefile[12] != 'f' ||
- wavefile[13] != 'm' ||
- wavefile[14] != 't' ||
-
- wavefile[20] != 0x01 || //Format = PCM
- wavefile[21] != 0x00 ||
-
- wavefile[34] != 0x10 || //Bitrate (16bit)
- wavefile[35] != 0x00
- ) return false;
-
- return true;
- }
-
- ///
- /// Returns the playlength of the Wave file in seconds
- ///
- ///
- ///
- public static int GetWaveLength(string wavefile)
- {
- byte[] wave = Tools.LoadFileToByteArray(wavefile, 0, 256);
- return GetWaveLength(wave);
- }
-
- ///
- /// Returns the playlength of the Wave file in seconds
- ///
- ///
- ///
- public static int GetWaveLength(byte[] wavefile)
- {
- if (CheckWave(wavefile) == true)
- {
- byte[] BytesPerSec = new byte[] { wavefile[28], wavefile[29], wavefile[30], wavefile[31] };
- int bps = BitConverter.ToInt32(BytesPerSec, 0);
-
- byte[] Chunksize = new byte[] { wavefile[4], wavefile[5], wavefile[6], wavefile[7] };
- int chunks = BitConverter.ToInt32(Chunksize, 0);
-
- return Math.Abs(chunks / bps);
- }
- else
- throw new Exception("This is not a supported PCM Wave file!");
- }
-
- ///
- /// Converts a wave file to a sound.bin
- ///
- ///
- ///
- public static void WaveToSoundBin(string wavefile, string soundbin, bool compress)
- {
- if (CheckWave(wavefile) == true)
- {
- byte[] sound = Tools.LoadFileToByteArray(wavefile);
- if (compress == true) sound = Lz77.Compress(sound);
- sound = U8.AddHeaderIMD5(sound);
- Wii.Tools.SaveFileFromByteArray(sound, soundbin);
- }
- else
- throw new Exception("This is not a supported 16bit PCM Wave file!");
- }
-
- ///
- /// Converts a sound.bin to a wave file
- ///
- ///
- ///
- public static void SoundBinToAudio(string soundbin, string audiofile)
- {
- FileStream fs = new FileStream(soundbin, FileMode.Open);
- byte[] audio = new byte[fs.Length - 32];
- int offset = 0;
-
- fs.Seek(32, SeekOrigin.Begin);
- fs.Read(audio, 0, audio.Length);
- fs.Close();
-
- if ((offset = Lz77.GetLz77Offset(audio)) != -1)
- audio = Lz77.Decompress(audio, offset);
-
- Tools.SaveFileFromByteArray(audio, audiofile);
- }
-
- ///
- /// Converts a BNS file to a sound.bin
- ///
- ///
- ///
- public static void BnsToSoundBin(string bnsFile, string soundBin, bool compress)
- {
- byte[] bns = Tools.LoadFileToByteArray(bnsFile);
-
- if (bns[0] != 'B' || bns[1] != 'N' || bns[2] != 'S')
- throw new Exception("This is not a supported BNS file!");
-
- if (compress) bns = Lz77.Compress(bns);
- bns = U8.AddHeaderIMD5(bns);
-
- Tools.SaveFileFromByteArray(bns, soundBin);
- }
-
- ///
- /// Returns the length of the BNS audio file in seconds
- ///
- ///
- ///
- public static int GetBnsLength(string bnsFile)
- {
- byte[] temp = Tools.LoadFileToByteArray(bnsFile, 0, 100);
- return GetBnsLength(temp);
- }
-
- ///
- /// Returns the length of the BNS audio file in seconds
- ///
- ///
- ///
- public static int GetBnsLength(byte[] bnsFile)
- {
- byte[] temp = new byte[4];
- temp[0] = bnsFile[45];
- temp[1] = bnsFile[44];
-
- int sampleRate = BitConverter.ToInt16(temp, 0);
-
- temp[0] = bnsFile[55];
- temp[1] = bnsFile[54];
- temp[2] = bnsFile[53];
- temp[3] = bnsFile[52];
-
- int sampleCount = BitConverter.ToInt32(temp, 0);
-
- return sampleCount / sampleRate;
- }
- }
-
- public class Brlyt
- {
- ///
- /// Checks, if the TPLs match the TPLs specified in the brlyt
- ///
- ///
- ///
- ///
- public static bool CheckBrlytTpls(string brlyt, string[] tpls)
- {
- byte[] brlytArray = Tools.LoadFileToByteArray(brlyt);
- return CheckBrlytTpls(brlytArray, tpls);
- }
-
- ///
- /// Checks, if the TPLs match the TPLs specified in the brlyt
- ///
- ///
- ///
- ///
- public static bool CheckBrlytTpls(byte[] brlyt, string[] tpls)
- {
- int texcount = Tools.HexStringToInt(brlyt[44].ToString("x2") + brlyt[45].ToString("x2"));
- if (tpls.Length != texcount) return false;
-
- int texnamepos = 48 + (texcount * 8);
- for (int i = 0; i < texcount; i++)
- {
- string thisTex = "";
- while (brlyt[texnamepos] != 0x00)
- {
- thisTex += Convert.ToChar(brlyt[texnamepos]);
- texnamepos++;
- }
- texnamepos++;
-
- bool exists = Array.Exists(tpls,tpl => tpl == thisTex);
- if (exists == false) return false;
- }
-
- return true;
- }
-
- ///
- /// Checks, if one or more Tpls specified in the brlyt are missing and returns
- /// the names of the missing ones.
- ///
- ///
- ///
- ///
- ///
- public static bool CheckForMissingTpls(string brlyt, string[] tpls, out string[] missingtpls)
- {
- byte[] brlytArray = Tools.LoadFileToByteArray(brlyt);
- return CheckForMissingTpls(brlytArray, tpls, out missingtpls);
- }
-
- ///
- /// Checks, if one or more Tpls specified in the brlyt are missing and returns
- /// the names of the missing ones.
- ///
- ///
- ///
- ///
- ///
- public static bool CheckForMissingTpls(byte[] brlyt, string[] tpls, out string[] missingtpls)
- {
- List missings = new List();
- string[] brlytTpls = GetBrlytTpls(brlyt);
- bool missing = false;
-
- for (int i = 0; i < brlytTpls.Length; i++)
- {
- if (Tools.StringExistsInStringArray(brlytTpls[i], tpls) == false)
- {
- missings.Add(brlytTpls[i]);
- missing = true;
- }
- }
-
- missingtpls = missings.ToArray();
- return missing;
- }
-
- ///
- /// Checks, if one or more Tpls are not specified in the brlyt and returns
- /// the names of the missing ones.
- ///
- ///
- ///
- ///
- ///
- public static bool CheckForUnusedTpls(string brlyt, string[] tpls, out string[] unusedtpls)
- {
- byte[] brlytArray = Tools.LoadFileToByteArray(brlyt);
- return CheckForUnusedTpls(brlytArray, tpls, out unusedtpls);
- }
-
- ///
- /// Checks, if one or more Tpls are not specified in the brlyt and returns
- /// the names of the missing ones.
- ///
- ///
- ///
- ///
- ///
- public static bool CheckForUnusedTpls(byte[] brlyt, string[] tpls, out string[] unusedtpls)
- {
- List unuseds = new List();
- string[] brlytTpls = GetBrlytTpls(brlyt);
- bool missing = false;
-
- for (int i = 0; i < tpls.Length; i++)
- {
- if (Tools.StringExistsInStringArray(tpls[i], brlytTpls) == false)
- {
- string wonum = tpls[i].Remove(tpls[i].LastIndexOf('.') - 1) + "00.tpl";
- string wonum2 = tpls[i].Remove(tpls[i].LastIndexOf('.') - 2) + "00.tpl";
-
- if (Tools.StringExistsInStringArray(wonum, brlytTpls) == false &&
- Tools.StringExistsInStringArray(wonum2, brlytTpls) == false)
- {
- unuseds.Add(tpls[i]);
- missing = true;
- }
- }
- }
-
- unusedtpls = unuseds.ToArray();
- return missing;
- }
-
- ///
- /// Returns the name of all Tpls specified in the brlyt
- ///
- ///
- ///
- public static string[] GetBrlytTpls(string brlyt)
- {
- byte[] temp = Tools.LoadFileToByteArray(brlyt);
- return GetBrlytTpls(temp);
- }
-
- ///
- /// Returns the name of all Tpls specified in the brlyt
- ///
- ///
- ///
- public static string[] GetBrlytTpls(byte[] brlyt)
- {
- int texcount = Tools.HexStringToInt(brlyt[44].ToString("x2") + brlyt[45].ToString("x2"));
- int texnamepos = 48 + (texcount * 8);
- List Tpls = new List();
-
- for (int i = 0; i < texcount; i++)
- {
- string thisTex = "";
- while (brlyt[texnamepos] != 0x00)
- {
- thisTex += Convert.ToChar(brlyt[texnamepos]);
- texnamepos++;
- }
- Tpls.Add(thisTex);
- texnamepos++;
- }
-
- return Tpls.ToArray();
- }
-
- ///
- /// Returns true, if the given Tpl is specified in the brlyt.
- /// TplName must end with ".tpl"!
- ///
- ///
- ///
- ///
- public static bool IsTplInBrlyt(byte[] brlyt, string TplName)
- {
- string[] brlytTpls = GetBrlytTpls(brlyt);
- bool exists = Array.Exists(brlytTpls, Tpl => Tpl == TplName);
- return exists;
- }
- }
-
- public class ProgressChangedEventArgs : EventArgs
- {
- private readonly int p_Percent = 0;
-
- public int PercentProgress
- {
- get { return p_Percent; }
- }
-
- internal ProgressChangedEventArgs(int PercentProgress)
- : base()
- {
- this.p_Percent = PercentProgress;
- }
- }
-}
\ No newline at end of file
diff --git a/FCE_Ultra_Leathl.wad b/FCE_Ultra_Leathl.wad
new file mode 100644
index 0000000..5c7db2b
Binary files /dev/null and b/FCE_Ultra_Leathl.wad differ
diff --git a/FCE_Ultra_wilsoff.wad b/FCE_Ultra_wilsoff.wad
new file mode 100644
index 0000000..dff14ce
Binary files /dev/null and b/FCE_Ultra_wilsoff.wad differ
diff --git a/ForwardMii-Plugin/ForwardMii-Plugin.csproj b/ForwardMii-Plugin/ForwardMii-Plugin.csproj
deleted file mode 100644
index c1cf5fa..0000000
--- a/ForwardMii-Plugin/ForwardMii-Plugin.csproj
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {20CB2CA7-6767-4758-97FA-97395F47CD6B}
- Library
- Properties
- ForwardMii
- ForwardMii
- v2.0
- 512
-
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ForwardMii-Plugin/ForwardMii.cs b/ForwardMii-Plugin/ForwardMii.cs
deleted file mode 100644
index b337dce..0000000
--- a/ForwardMii-Plugin/ForwardMii.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-
-namespace ForwardMii
-{
- public class ForwardMii_Plugin
- {
- const string version = "1.02"; //Hint for myself: Never use a char in the Version (UpdateCheck)!
-
- public static string GetVersion()
- {
- return version;
- }
-
- public static bool CheckDevKit()
- {
- if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DEVKITPRO")) ||
- string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DEVKITPPC"))) return false;
-
- if (!System.IO.Directory.Exists(Environment.GetEnvironmentVariable("DEVKITPRO").Remove(0, 1).Insert(1, ":") + "/libogc")) return false;
-
- return true;
- }
- }
-}
diff --git a/ForwardMii-Plugin/ForwardMii_BaseEdit.cs b/ForwardMii-Plugin/ForwardMii_BaseEdit.cs
deleted file mode 100644
index 6ea9336..0000000
--- a/ForwardMii-Plugin/ForwardMii_BaseEdit.cs
+++ /dev/null
@@ -1,1564 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.IO;
-
-namespace ForwardMii
-{
- internal class SDSDHC_ConvertBaseStream
- {
- internal static MemoryStream ConvertTo5Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(69738, SeekOrigin.Begin);
- BaseStream.WriteByte(0x01);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x48);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(99082, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(100662, SeekOrigin.Begin);
- BaseStream.WriteByte(0x05);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(100850, SeekOrigin.Begin);
- BaseStream.WriteByte(0x06);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x68);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0x78);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0x78);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(146794, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0e);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(153442, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0f);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
-
- return BaseStream;
- }
-
- internal static MemoryStream ConvertTo9Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x68);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x54);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x50);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(97170, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(98074, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x3c);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x50);
- BaseStream.Seek(101506, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x64);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x74);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x68);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
-
- return BaseStream;
- }
-
- internal static MemoryStream ConvertTo10Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(69695, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(70371, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(97170, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(98074, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x54);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(100618, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x54);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x74);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(101062, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(101066, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(101506, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x3c);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x54);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
-
- return BaseStream;
- }
-
- internal static MemoryStream ConvertTo13Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(69695, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x74);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(70371, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x64);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(97170, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(98074, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(100618, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb8);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x48);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x78);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(101046, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(101062, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(101066, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x50);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(101506, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x3c);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(144734, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0e);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x74);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
-
- return BaseStream;
- }
-
- internal static MemoryStream ConvertTo14Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(69695, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(69998, SeekOrigin.Begin);
- BaseStream.WriteByte(0x02);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x68);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x3c);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x64);
- BaseStream.Seek(70371, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(97170, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(98074, SeekOrigin.Begin);
- BaseStream.WriteByte(0x03);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(100618, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(100630, SeekOrigin.Begin);
- BaseStream.WriteByte(0x05);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x90);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x50);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x80);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(101042, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(101046, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(101062, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(101066, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x64);
- BaseStream.Seek(101506, SeekOrigin.Begin);
- BaseStream.WriteByte(0x07);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x24);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x48);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa0);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x60);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x78);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc8);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf0);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(144734, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0e);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0x98);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x7c);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc4);
-
- return BaseStream;
- }
-
- internal static MemoryStream ConvertTo18Chars(MemoryStream BaseStream)
- {
- BaseStream.Seek(16823, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(16939, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(17067, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(17439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(17835, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(21203, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(29399, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(33439, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(69695, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(69739, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(69767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(69799, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(69815, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(69839, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(69855, SeekOrigin.Begin);
- BaseStream.WriteByte(0xc0);
- BaseStream.Seek(69871, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(69999, SeekOrigin.Begin);
- BaseStream.WriteByte(0x10);
- BaseStream.Seek(70011, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(70047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x38);
- BaseStream.Seek(70071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x74);
- BaseStream.Seek(70279, SeekOrigin.Begin);
- BaseStream.WriteByte(0x48);
- BaseStream.Seek(70319, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(70351, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(70371, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(70795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x78);
- BaseStream.Seek(71315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(71627, SeekOrigin.Begin);
- BaseStream.WriteByte(0xdc);
- BaseStream.Seek(71655, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(72171, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe8);
- BaseStream.Seek(91719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(93627, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(94039, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(95527, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(95895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(96383, SeekOrigin.Begin);
- BaseStream.WriteByte(0x34);
- BaseStream.Seek(96667, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(97171, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(98075, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(98711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(99071, SeekOrigin.Begin);
- BaseStream.WriteByte(0x40);
- BaseStream.Seek(99079, SeekOrigin.Begin);
- BaseStream.WriteByte(0x58);
- BaseStream.Seek(99083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(100619, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(100631, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(100663, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(100687, SeekOrigin.Begin);
- BaseStream.WriteByte(0x3c);
- BaseStream.Seek(100723, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(100755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x9c);
- BaseStream.Seek(100787, SeekOrigin.Begin);
- BaseStream.WriteByte(0xcc);
- BaseStream.Seek(100819, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(100851, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(100883, SeekOrigin.Begin);
- BaseStream.WriteByte(0x5c);
- BaseStream.Seek(100915, SeekOrigin.Begin);
- BaseStream.WriteByte(0x8c);
- BaseStream.Seek(100947, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(100975, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(101019, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(101043, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(101047, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(101063, SeekOrigin.Begin);
- BaseStream.WriteByte(0x18);
- BaseStream.Seek(101067, SeekOrigin.Begin);
- BaseStream.WriteByte(0x1c);
- BaseStream.Seek(101287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(101311, SeekOrigin.Begin);
- BaseStream.WriteByte(0x64);
- BaseStream.Seek(101315, SeekOrigin.Begin);
- BaseStream.WriteByte(0x70);
- BaseStream.Seek(101507, SeekOrigin.Begin);
- BaseStream.WriteByte(0x20);
- BaseStream.Seek(101523, SeekOrigin.Begin);
- BaseStream.WriteByte(0x30);
- BaseStream.Seek(101615, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(101803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(102259, SeekOrigin.Begin);
- BaseStream.WriteByte(0x54);
- BaseStream.Seek(102283, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102299, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102311, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102327, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102343, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102359, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(102391, SeekOrigin.Begin);
- BaseStream.WriteByte(0xac);
- BaseStream.Seek(106287, SeekOrigin.Begin);
- BaseStream.WriteByte(0x28);
- BaseStream.Seek(114255, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(116755, SeekOrigin.Begin);
- BaseStream.WriteByte(0x6c);
- BaseStream.Seek(116767, SeekOrigin.Begin);
- BaseStream.WriteByte(0x84);
- BaseStream.Seek(120895, SeekOrigin.Begin);
- BaseStream.WriteByte(0x50);
- BaseStream.Seek(128803, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd4);
- BaseStream.Seek(129483, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(136707, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(137175, SeekOrigin.Begin);
- BaseStream.WriteByte(0xfc);
- BaseStream.Seek(140083, SeekOrigin.Begin);
- BaseStream.WriteByte(0x94);
- BaseStream.Seek(140535, SeekOrigin.Begin);
- BaseStream.WriteByte(0xbc);
- BaseStream.Seek(140846, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0c);
- BaseStream.Seek(140847, SeekOrigin.Begin);
- BaseStream.WriteByte(0x00);
- BaseStream.Seek(140855, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(140859, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe4);
- BaseStream.Seek(144215, SeekOrigin.Begin);
- BaseStream.WriteByte(0xec);
- BaseStream.Seek(144735, SeekOrigin.Begin);
- BaseStream.WriteByte(0x14);
- BaseStream.Seek(144951, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(145071, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa8);
- BaseStream.Seek(145235, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(145315, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb4);
- BaseStream.Seek(145395, SeekOrigin.Begin);
- BaseStream.WriteByte(0xa4);
- BaseStream.Seek(145563, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(145687, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(145847, SeekOrigin.Begin);
- BaseStream.WriteByte(0xb0);
- BaseStream.Seek(145955, SeekOrigin.Begin);
- BaseStream.WriteByte(0x88);
- BaseStream.Seek(146127, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd8);
- BaseStream.Seek(146251, SeekOrigin.Begin);
- BaseStream.WriteByte(0xe0);
- BaseStream.Seek(146375, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf4);
- BaseStream.Seek(146647, SeekOrigin.Begin);
- BaseStream.WriteByte(0xf8);
- BaseStream.Seek(146795, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(146922, SeekOrigin.Begin);
- BaseStream.WriteByte(0x0f);
- BaseStream.Seek(146923, SeekOrigin.Begin);
- BaseStream.WriteByte(0x04);
- BaseStream.Seek(147151, SeekOrigin.Begin);
- BaseStream.WriteByte(0x08);
- BaseStream.Seek(153443, SeekOrigin.Begin);
- BaseStream.WriteByte(0x2c);
- BaseStream.Seek(153719, SeekOrigin.Begin);
- BaseStream.WriteByte(0x4c);
- BaseStream.Seek(178711, SeekOrigin.Begin);
- BaseStream.WriteByte(0x44);
- BaseStream.Seek(178715, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178719, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178723, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178727, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178731, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178735, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178739, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178743, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
- BaseStream.Seek(178747, SeekOrigin.Begin);
- BaseStream.WriteByte(0xd0);
-
- return BaseStream;
- }
- }
-}
diff --git a/ForwardMii-Plugin/ForwardMii_GX.cs b/ForwardMii-Plugin/ForwardMii_GX.cs
deleted file mode 100644
index 2094e36..0000000
--- a/ForwardMii-Plugin/ForwardMii_GX.cs
+++ /dev/null
@@ -1,320 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Reflection;
-using System.Text;
-using System.Runtime.InteropServices;
-
-namespace ForwardMii
-{
- public class GXForwarder
- {
- private readonly string TempDir = Path.GetTempPath() + "ForwardMii_Temp\\" + Guid.NewGuid() + "\\";
- private string thisAppFolder;
- private bool elfFirst = false;
- private bool usbFirst = false;
- private string image43;
- private string image169;
- public string AppFolder { get { return thisAppFolder; } set { thisAppFolder = value; } }
- public bool ElfFirst { get { return elfFirst; } set { elfFirst = value; } }
- public bool UsbFirst { get { return usbFirst; } set { usbFirst = value; } }
- public string Image43 { get { return image43; } set { image43 = value; } }
- public string Image169 { get { return image169; } set { image169 = value; } }
-
- public GXForwarder()
- {
-
- }
-
- public GXForwarder(string AppFolder)
- {
- if (ForwardMii_Plugin.CheckDevKit() == false) throw new Exception("DevkitPro or one of it's components wasn't found!");
- thisAppFolder = AppFolder;
- }
-
- public GXForwarder(string AppFolder, bool UsbFirst)
- {
- if (ForwardMii_Plugin.CheckDevKit() == false) throw new Exception("DevkitPro or one of it's components wasn't found!");
- thisAppFolder = AppFolder;
- usbFirst = UsbFirst;
- }
-
- public GXForwarder(string AppFolder, string Image43, string Image169)
- {
- if (ForwardMii_Plugin.CheckDevKit() == false) throw new Exception("DevkitPro or one of it's components wasn't found!");
- thisAppFolder = AppFolder;
- image43 = Image43;
- image169 = Image169;
- }
-
- public GXForwarder(string AppFolder, bool UsbFirst, bool ElfFirst)
- {
- if (ForwardMii_Plugin.CheckDevKit() == false) throw new Exception("DevkitPro or one of it's components wasn't found!");
- thisAppFolder = AppFolder;
- usbFirst = UsbFirst;
- elfFirst = ElfFirst;
- }
-
- public GXForwarder(string AppFolder, bool UsbFirst, bool ElfFirst, string Image43, string Image169)
- {
- if (ForwardMii_Plugin.CheckDevKit() == false) throw new Exception("DevkitPro or one of it's components wasn't found!");
- thisAppFolder = AppFolder;
- image43 = Image43;
- image169 = Image169;
- usbFirst = UsbFirst;
- elfFirst = ElfFirst;
- }
-
- public void Clear()
- {
- thisAppFolder = string.Empty;
- elfFirst = false;
- usbFirst = false;
- image43 = string.Empty;
- image169 = string.Empty;
- }
-
- public void Save(string Destionation)
- {
- Save(Destionation, false);
- }
-
- public void Save(string Destination, bool Overwrite)
- {
- byte[] theForwarder = ToByteArray();
-
- if (Path.HasExtension(Destination) == false) Destination += ".dol";
-
- if (File.Exists(Destination))
- {
- if (Overwrite == true)
- File.Delete(Destination);
- else
- throw new Exception("The destination file already exists!");
- }
-
- using (FileStream fs = new FileStream(Destination, FileMode.Create))
- {
- fs.Write(theForwarder, 0, theForwarder.Length);
- }
- }
-
- public byte[] ToByteArray()
- {
- MemoryStream ms = this.ToMemoryStream();
- return ms.ToArray();
- }
-
- public MemoryStream ToMemoryStream()
- {
- try
- {
- if (Directory.Exists(TempDir)) Directory.Delete(TempDir, true);
- CopyResources();
- EditMainCpp();
- CopyImages();
- if (Compile() == false) throw new Exception("An error occured during compiling!");
- byte[] fileTemp = File.ReadAllBytes(TempDir + "boot.dol");
-
- try { Directory.Delete(TempDir, true); }
- catch { }
-
- return new MemoryStream(fileTemp);
- }
- catch (Exception ex)
- {
- if (Directory.Exists(TempDir)) Directory.Delete(TempDir, true);
- throw new Exception(ex.Message);
- }
- }
-
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- static extern uint GetShortPathName([MarshalAs(UnmanagedType.LPTStr)] string lpszLongPath,
- [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpszShortPath, uint cchBuffer);
-
- public static string GetShortPathName(string longPath)
- {
- uint size = 256;
- StringBuilder buffer = new StringBuilder((int)size);
- uint result = GetShortPathName(longPath, buffer, size);
- return buffer.ToString();
- }
-
- private bool Compile()
- {
- try
- {
- string tempDir = TempDir;
- if (tempDir.Contains(" ")) { tempDir = GetShortPathName(tempDir); }
-
- ProcessStartInfo makeI = new ProcessStartInfo("make", "-C " + tempDir);
- makeI.UseShellExecute = false;
- makeI.CreateNoWindow = true;
-
- Process make = Process.Start(makeI);
- make.WaitForExit();
- make.Close();
-
- if (File.Exists(TempDir + "boot.dol") && File.Exists(TempDir + "boot.elf"))
- {
- return true;
- }
- else return false;
- }
- catch { return false; }
- }
-
- private void CopyImages()
- {
- if (!string.IsNullOrEmpty(image43) && File.Exists(image43))
- {
- try
- {
- Image img = Image.FromFile(image43);
- if (img.Width != 640 || img.Height != 480)
- img = ResizeImage(img, 640, 480);
- img.Save(TempDir + "\\source\\images\\background.png", System.Drawing.Imaging.ImageFormat.Png);
- }
- catch
- {
- Bitmap img = new Bitmap(640, 480);
- img.Save(TempDir + "\\source\\images\\background.png", System.Drawing.Imaging.ImageFormat.Png);
- }
- }
- else
- {
- Bitmap img = new Bitmap(640, 480);
- img.Save(TempDir + "\\source\\images\\background.png", System.Drawing.Imaging.ImageFormat.Png);
- }
-
- if (!string.IsNullOrEmpty(image169) && File.Exists(image169))
- {
- try
- {
- Image img = Image.FromFile(image169);
- if (img.Width != 640 || img.Height != 480)
- img = ResizeImage(img, 640, 480);
- img.Save(TempDir + "\\source\\images\\background169.png", System.Drawing.Imaging.ImageFormat.Png);
- }
- catch
- {
- Bitmap img = new Bitmap(640, 480);
- img.Save(TempDir + "\\source\\images\\background169.png", System.Drawing.Imaging.ImageFormat.Png);
- }
- }
- else
- {
- Bitmap img = new Bitmap(640, 480);
- img.Save(TempDir + "\\source\\images\\background169.png", System.Drawing.Imaging.ImageFormat.Png);
- }
- }
-
- private Image ResizeImage(Image img, int x, int y)
- {
- Image newimage = new Bitmap(x, y);
- using (Graphics gfx = Graphics.FromImage(newimage))
- {
- gfx.DrawImage(img, 0, 0, x, y);
- }
- return newimage;
- }
-
- private void EditMainCpp()
- {
- Stream maincpp = GetReourceStream("main.cpp");
- StreamReader reader = new StreamReader(maincpp);
- List tempLines = new List();
- string tempLine;
-
- while ((tempLine = reader.ReadLine()) != null)
- {
- tempLines.Add(tempLine);
- }
-
- string[] lines = tempLines.ToArray();
-
- for (int i = 0; i < lines.Length; i++)
- {
- if (lines[i].Contains("appfolder"))
- lines[i] = lines[i].Replace("appfolder", thisAppFolder);
- else if (lines[i].Contains("#define USB_FIRST"))
- lines[i] = lines[i].Replace("false", usbFirst.ToString().ToLower());
- else if (lines[i].Contains("#define ELF_FIRST"))
- lines[i] = lines[i].Replace("false", elfFirst.ToString().ToLower());
- }
-
- using (FileStream fs = new FileStream(TempDir + "source\\main.cpp", FileMode.Create))
- {
- using (StreamWriter writer = new StreamWriter(fs))
- {
- foreach (string thisLine in lines)
- {
- writer.WriteLine(thisLine);
- }
- }
- }
- }
-
- private void CopyResources()
- {
- if (Directory.Exists(TempDir)) Directory.Delete(TempDir, true);
- Directory.CreateDirectory(TempDir + "source\\images");
- string[] Resources = new string[] { "dolloader.c", "dolloader.h", "elf_abi.h", "elfloader.c",
- "elfloader.h", "fatmounter.c", "fatmounter.h", "filelist.h", "video.cpp", "video.h" };
-
- foreach (string thisResource in Resources)
- {
- Stream tempStream = GetReourceStream(thisResource);
- StreamToFile(tempStream, TempDir + "source\\" + thisResource);
- }
-
- Stream makefile = GetReourceStream("Makefile");
- StreamToFile(makefile, TempDir + "Makefile");
- }
-
- private void StreamToFile(Stream theStream, string Destination)
- {
- using (FileStream fs = new FileStream(Destination, FileMode.Create))
- {
- byte[] temp = new byte[theStream.Length];
- theStream.Read(temp, 0, temp.Length);
- fs.Write(temp, 0, temp.Length);
-
- //int count = 0;
- //int length = 4096;
- //byte[] buffer = new byte[length];
-
- //while ((count = theStream.Read(buffer, 0, length)) != 0)
- // fs.Write(buffer, 0, length);
- }
-
- }
-
- private MemoryStream GetReourceStream(string theResource)
- {
- Stream thisStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ForwardMii.Resources.GX." + theResource);
- byte[] thisArray = new byte[thisStream.Length];
- thisStream.Read(thisArray, 0, thisArray.Length);
- return new MemoryStream(thisArray);
- }
- }
-}
diff --git a/ForwardMii-Plugin/ForwardMii_SDSDHC.cs b/ForwardMii-Plugin/ForwardMii_SDSDHC.cs
deleted file mode 100644
index 90f3e2f..0000000
--- a/ForwardMii-Plugin/ForwardMii_SDSDHC.cs
+++ /dev/null
@@ -1,439 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.IO;
-using System.Reflection;
-
-namespace ForwardMii
-{
- public class SDSDHC_Forwarder
- {
- private string thisAppFolder;
- private bool toElf = false;
- public string AppFolder { get { return thisAppFolder; } set { thisAppFolder = value; } }
- public bool ForwardToElf { get { return toElf; } set { toElf = value; } }
-
- public SDSDHC_Forwarder()
- {
-
- }
-
- public SDSDHC_Forwarder(string AppFolder)
- {
- if (AppFolder.Length > 18 || AppFolder.Length < 3) throw new Exception("Application folder must be 3 - 18 chars!");
- thisAppFolder = AppFolder;
- }
-
- public SDSDHC_Forwarder(string AppFolder, bool ForwardToElf)
- {
- if (AppFolder.Length > 18 || AppFolder.Length < 3) throw new Exception("Application folder must be 3 - 18 chars!");
- thisAppFolder = AppFolder;
- toElf = ForwardToElf;
- }
-
- public void Clear()
- {
- thisAppFolder = string.Empty;
- toElf = false;
- }
-
- public void Save(string Destionation)
- {
- Save(Destionation, false);
- }
-
- public void Save(string Destination, bool Overwrite)
- {
- byte[] theForwarder = ToByteArray();
-
- if (Path.HasExtension(Destination) == false) Destination += ".dol";
-
- if (File.Exists(Destination))
- {
- if (Overwrite == true)
- File.Delete(Destination);
- else
- throw new Exception("The destination file already exists!");
- }
-
- using (FileStream fs = new FileStream(Destination, FileMode.Create))
- {
- fs.Write(theForwarder, 0, theForwarder.Length);
- }
- }
-
- public byte[] ToByteArray()
- {
- MemoryStream ms = this.ToMemoryStream();
- return ms.ToArray();
- }
-
- public MemoryStream ToMemoryStream()
- {
- MemoryStream BaseStream = GetBase();
- MemoryStream TailStream = GetTail();
-
- BaseStream = ConvertBase(BaseStream);
- TailStream = EditTailFolder(TailStream);
-
- byte[] BaseArray = BaseStream.ToArray();
- byte[] TailArray = TailStream.ToArray();
-
- MemoryStream Result = new MemoryStream();
- Result.Seek(0, SeekOrigin.End);
- Result.Write(BaseArray, 0, BaseArray.Length);
- Result.Write(TailArray, 0, TailArray.Length);
-
- return Result;
- }
-
- private MemoryStream EditTailFolder(MemoryStream TailStream)
- {
- char[] FolderChars = thisAppFolder.ToCharArray();
- int[] Offsets = GetOffsets(FolderChars.Length);
-
- TailStream.Seek(1, SeekOrigin.Begin);
- foreach (char thisChar in FolderChars)
- TailStream.WriteByte((byte)thisChar);
-
- TailStream.Seek(Offsets[0], SeekOrigin.Begin);
- foreach (char thisChar in FolderChars)
- TailStream.WriteByte((byte)thisChar);
-
- TailStream.Seek(Offsets[1], SeekOrigin.Begin);
- foreach (char thisChar in FolderChars)
- TailStream.WriteByte((byte)thisChar);
-
- if (toElf == true)
- TailStream = EditTailToElf(TailStream);
-
- return TailStream;
- }
-
- private MemoryStream EditTailToElf(MemoryStream TailStream)
- {
- int[] Offsets = GetDolOffsets(thisAppFolder.Length);
- byte[] Elf = new byte[] { 0x65, 0x6c, 0x66 };
-
- foreach (int thisOffset in Offsets)
- {
- TailStream.Seek(thisOffset, SeekOrigin.Begin);
- TailStream.Write(Elf, 0, Elf.Length);
- }
-
- return TailStream;
- }
-
- private int[] GetDolOffsets(int CharCount)
- {
- int[] Offsets = new int[5];
-
- switch (CharCount)
- {
- case 3:
- Offsets[0] = 10;
- Offsets[1] = 25;
- Offsets[2] = 87;
- Offsets[3] = 336;
- Offsets[4] = 344;
- break;
- case 4:
- Offsets[0] = 11;
- Offsets[1] = 25;
- Offsets[2] = 87;
- Offsets[3] = 336;
- Offsets[4] = 344;
- break;
- case 5:
- Offsets[0] = 12;
- Offsets[1] = 25;
- Offsets[2] = 91;
- Offsets[3] = 340;
- Offsets[4] = 348;
- break;
- case 6:
- Offsets[0] = 13;
- Offsets[1] = 29;
- Offsets[2] = 95;
- Offsets[3] = 348;
- Offsets[4] = 356;
- break;
- case 7:
- Offsets[0] = 14;
- Offsets[1] = 29;
- Offsets[2] = 95;
- Offsets[3] = 348;
- Offsets[4] = 356;
- break;
- case 8:
- Offsets[0] = 15;
- Offsets[1] = 29;
- Offsets[2] = 95;
- Offsets[3] = 348;
- Offsets[4] = 356;
- break;
- case 9:
- Offsets[0] = 16;
- Offsets[1] = 29;
- Offsets[2] = 99;
- Offsets[3] = 352;
- Offsets[4] = 360;
- break;
- case 10:
- Offsets[0] = 17;
- Offsets[1] = 33;
- Offsets[2] = 103;
- Offsets[3] = 360;
- Offsets[4] = 368;
- break;
- case 11:
- Offsets[0] = 18;
- Offsets[1] = 33;
- Offsets[2] = 103;
- Offsets[3] = 360;
- Offsets[4] = 368;
- break;
- case 12:
- Offsets[0] = 19;
- Offsets[1] = 33;
- Offsets[2] = 103;
- Offsets[3] = 360;
- Offsets[4] = 368;
- break;
- case 13:
- Offsets[0] = 20;
- Offsets[1] = 33;
- Offsets[2] = 107;
- Offsets[3] = 364;
- Offsets[4] = 372;
- break;
- case 14:
- Offsets[0] = 21;
- Offsets[1] = 37;
- Offsets[2] = 111;
- Offsets[3] = 372;
- Offsets[4] = 380;
- break;
- case 15:
- Offsets[0] = 22;
- Offsets[1] = 37;
- Offsets[2] = 11;
- Offsets[3] = 372;
- Offsets[4] = 380;
- break;
- case 16:
- Offsets[0] = 23;
- Offsets[1] = 37;
- Offsets[2] = 111;
- Offsets[3] = 372;
- Offsets[4] = 380;
- break;
- case 17:
- Offsets[0] = 24;
- Offsets[1] = 37;
- Offsets[2] = 115;
- Offsets[3] = 376;
- Offsets[4] = 384;
- break;
- case 18:
- Offsets[0] = 25;
- Offsets[1] = 41;
- Offsets[2] = 119;
- Offsets[3] = 384;
- Offsets[4] = 392;
- break;
- default:
- throw new Exception();
- }
-
- return Offsets;
- }
-
- private int[] GetOffsets(int CharCount)
- {
- int First = 0;
- int Second = 0;
-
- switch (CharCount)
- {
- case 3:
- case 4:
- First = 57;
- Second = 100;
- break;
- case 5:
- First = 57;
- Second = 104;
- break;
- case 6:
- case 7:
- case 8:
- First = 61;
- Second = 108;
- break;
- case 9:
- First = 61;
- Second = 112;
- break;
- case 10:
- case 11:
- case 12:
- case 13:
- First = 65;
- Second = 120;
- break;
- case 14:
- case 15:
- case 16:
- First = 69;
- Second = 124;
- break;
- case 17:
- First = 69;
- Second = 128;
- break;
- case 18:
- First = 73;
- Second = 132;
- break;
- default:
- throw new Exception();
- }
-
- return new int[] { First, Second };
- }
-
- private MemoryStream GetBase()
- {
- switch (thisAppFolder.Length)
- {
- case 3:
- case 4:
- case 5:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.3CharsBase.bin");
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.6CharsBase.bin");
- case 17:
- case 18:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.17CharsBase.bin");
- default:
- throw new Exception();
- }
- }
-
- private MemoryStream GetTail()
- {
- switch (thisAppFolder.Length)
- {
- case 3:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.3CharsTail.bin");
- case 4:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.4CharsTail.bin");
- case 5:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.5CharsTail.bin");
- case 6:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.6CharsTail.bin");
- case 7:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.7CharsTail.bin");
- case 8:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.8CharsTail.bin");
- case 9:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.9CharsTail.bin");
- case 10:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.10CharsTail.bin");
- case 11:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.11CharsTail.bin");
- case 12:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.12CharsTail.bin");
- case 13:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.13CharsTail.bin");
- case 14:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.14CharsTail.bin");
- case 15:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.15CharsTail.bin");
- case 16:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.16CharsTail.bin");
- case 17:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.17CharsTail.bin");
- case 18:
- return GetReourceStream("ForwardMii.Resources.SDSDHC.18CharsTail.bin");
- default:
- throw new Exception();
- }
- }
-
- private MemoryStream ConvertBase(MemoryStream BaseStream)
- {
- switch (thisAppFolder.Length)
- {
- case 3:
- return BaseStream;
- case 4:
- return BaseStream;
- case 5:
- return SDSDHC_ConvertBaseStream.ConvertTo5Chars(BaseStream);
- case 6:
- return BaseStream;
- case 7:
- return BaseStream;
- case 8:
- return BaseStream;
- case 9:
- return SDSDHC_ConvertBaseStream.ConvertTo9Chars(BaseStream);
- case 10:
- return SDSDHC_ConvertBaseStream.ConvertTo10Chars(BaseStream);
- case 11:
- return SDSDHC_ConvertBaseStream.ConvertTo10Chars(BaseStream);
- case 12:
- return SDSDHC_ConvertBaseStream.ConvertTo10Chars(BaseStream);
- case 13:
- return SDSDHC_ConvertBaseStream.ConvertTo13Chars(BaseStream);
- case 14:
- return SDSDHC_ConvertBaseStream.ConvertTo14Chars(BaseStream);
- case 15:
- return SDSDHC_ConvertBaseStream.ConvertTo14Chars(BaseStream);
- case 16:
- return SDSDHC_ConvertBaseStream.ConvertTo14Chars(BaseStream);
- case 17:
- return BaseStream;
- case 18:
- return SDSDHC_ConvertBaseStream.ConvertTo18Chars(BaseStream);
- default:
- throw new Exception();
- }
- }
-
- private MemoryStream GetReourceStream(string theResource)
- {
- Stream thisStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(theResource);
- byte[] thisArray = new byte[thisStream.Length];
- thisStream.Read(thisArray, 0, thisArray.Length);
- return new MemoryStream(thisArray);
- }
- }
-}
diff --git a/ForwardMii-Plugin/License.txt b/ForwardMii-Plugin/License.txt
deleted file mode 100644
index 94a9ed0..0000000
--- a/ForwardMii-Plugin/License.txt
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program 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.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/ForwardMii-Plugin/Properties/AssemblyInfo.cs b/ForwardMii-Plugin/Properties/AssemblyInfo.cs
deleted file mode 100644
index 933195f..0000000
--- a/ForwardMii-Plugin/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of CustomizeMii
- * Copyright (C) 2009 Leathl
- *
- * CustomizeMii is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * CustomizeMii is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// Allgemeine Informationen über eine Assembly werden über die folgenden
-// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
-// die mit einer Assembly verknüpft sind.
-[assembly: AssemblyTitle("ForwardMii")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ForwardMii")]
-[assembly: AssemblyCopyright("Copyright © Leathl 2009")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
-// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
-// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
-[assembly: ComVisible(false)]
-
-// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
-[assembly: Guid("4a706a44-9612-4717-8da0-0ca789a9c632")]
-
-// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
-//
-// Hauptversion
-// Nebenversion
-// Buildnummer
-// Revision
-//
-// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
-// übernehmen, indem Sie "*" eingeben:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.2.0")]
-[assembly: AssemblyFileVersion("1.0.2.0")]
diff --git a/ForwardMii-Plugin/Readme_ForwardMii.txt b/ForwardMii-Plugin/Readme_ForwardMii.txt
deleted file mode 100644
index 5266ccf..0000000
--- a/ForwardMii-Plugin/Readme_ForwardMii.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-This is a plugin for CustomizeMii to create forwarders. Put it in CustomizeMii's directory.
-
-It can create simple SD / SDHC forwarders that will point to one ELF or DOL file.
-It's also able to create complex forwarders based on the official USB Loader GX
-forwarder (Needs devkitPPC + libOGC installed). It will look for the DOL or ELF
-in the specified folder on USB and SD, you can change the order it searches.
-It can also display an image while loading.
-If it fails to compile, you may have the wrong libOGC, try the one downloadable on
-the CustomizeMii project page.
-
------------------------------------------------------------------------------------------
-Changelog:
-
-Version 1.02
- - Compiling now works, if a space is in your Windows Username
-
-Version 1.01
- - Fixed bug that caused an object error while creating forwarders
-
-Version 1.0
- - Initial Release
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-Disclaimer:
-
-Editing WAD files can result in a brick of your Wii.
-Only use this application if you have a bricksafe Wii, meaning either Preloader or
-BootMii/boot2 is installed, and if you know what you're doing.
-
-This application comes without any express or implied warranty.
-The author can't be held responsible for any damages arising from the use of it.
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-Thanks:
-
-Xuzz for his idea and hard work
-Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py
-SquidMan for Zetsubou
-Andre Perrot for gbalzss
-comex and Waninkoko for both their NAND Loader
-djdynamite123 for the forwarder base files
-The USB Loader GX Team for their forwarder source
------------------------------------------------------------------------------------------
-
------------------------------------------------------------------------------------------
-License:
-
-Copyright (C) 2009 Leathl
-
-CustomizeMii is free software: you can redistribute it and/or
-modify it under the terms of the GNU General Public License as published
-by the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-CustomizeMii is distributed in the hope that it will be
-useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/ForwardMii-Plugin/Resources/GX/Makefile b/ForwardMii-Plugin/Resources/GX/Makefile
deleted file mode 100644
index 795229b..0000000
--- a/ForwardMii-Plugin/Resources/GX/Makefile
+++ /dev/null
@@ -1,146 +0,0 @@
-#---------------------------------------------------------------------------------
-# Clear the implicit built in rules
-#---------------------------------------------------------------------------------
-.SUFFIXES:
-#---------------------------------------------------------------------------------
-ifeq ($(strip $(DEVKITPPC)),)
-$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC")
-endif
-
-include $(DEVKITPPC)/wii_rules
-
-#---------------------------------------------------------------------------------
-# TARGET is the name of the output
-# BUILD is the directory where object files & intermediate files will be placed
-# SOURCES is a list of directories containing source code
-# INCLUDES is a list of directories containing extra header files
-#---------------------------------------------------------------------------------
-TARGET := boot
-BUILD := build
-SOURCES := source source/images
-DATA := data
-INCLUDES :=
-
-#---------------------------------------------------------------------------------
-# options for code generation
-#---------------------------------------------------------------------------------
-
-CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
-CXXFLAGS = $(CFLAGS)
-
-#---------------------------------------------------------------------------------
-# move loader to another location - THANKS CREDIAR - 0x81330000 for HBC
-#---------------------------------------------------------------------------------
-LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x81230000
-#LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
-#LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x80003f00
-
-#---------------------------------------------------------------------------------
-# any extra libraries we wish to link with the project
-#---------------------------------------------------------------------------------
-LIBS := -lfat -lpngu -lpng -lz -lbte -logc -lm
-
-#---------------------------------------------------------------------------------
-# list of directories containing libraries, this must be the top level containing
-# include and lib
-#---------------------------------------------------------------------------------
-LIBDIRS := $(CURDIR)
-
-#---------------------------------------------------------------------------------
-# no real need to edit anything past this point unless you need to add additional
-# rules for different file extensions
-#---------------------------------------------------------------------------------
-ifneq ($(BUILD),$(notdir $(CURDIR)))
-#---------------------------------------------------------------------------------
-
-export OUTPUT := $(CURDIR)/$(TARGET)
-
-export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
- $(foreach dir,$(DATA),$(CURDIR)/$(dir))
-
-export DEPSDIR := $(CURDIR)/$(BUILD)
-
-#---------------------------------------------------------------------------------
-# automatically build a list of object files for our project
-#---------------------------------------------------------------------------------
-CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
-CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
-sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
-SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
-BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
-PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
-
-#---------------------------------------------------------------------------------
-# use CXX for linking C++ projects, CC for standard C
-#---------------------------------------------------------------------------------
-ifeq ($(strip $(CPPFILES)),)
- export LD := $(CC)
-else
- export LD := $(CXX)
-endif
-
-export OFILES := $(addsuffix .o,$(BINFILES)) \
- $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
- $(sFILES:.s=.o) $(SFILES:.S=.o) \
- $(PNGFILES:.png=.png.o)
-
-#---------------------------------------------------------------------------------
-# build a list of include paths
-#---------------------------------------------------------------------------------
-export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
- $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
- -I$(CURDIR)/$(BUILD) \
- -I$(LIBOGC_INC)
-
-#---------------------------------------------------------------------------------
-# build a list of library paths
-#---------------------------------------------------------------------------------
-export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
- -L$(LIBOGC_LIB)
-
-export OUTPUT := $(CURDIR)/$(TARGET)
-.PHONY: $(BUILD) clean
-
-#---------------------------------------------------------------------------------
-$(BUILD):
- @[ -d $@ ] || mkdir -p $@
- @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
-
-#---------------------------------------------------------------------------------
-clean:
- @echo clean ...
- @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
-
-#---------------------------------------------------------------------------------
-run:
- wiiload $(TARGET).dol
-
-
-#---------------------------------------------------------------------------------
-pack:
- zip -9 loadMii.zip $(TARGET).dol ../icon.png ../meta.xml ../README
-
-
-#---------------------------------------------------------------------------------
-else
-
-DEPENDS := $(OFILES:.o=.d)
-
-#---------------------------------------------------------------------------------
-# main targets
-#---------------------------------------------------------------------------------
-$(OUTPUT).dol: $(OUTPUT).elf
-$(OUTPUT).elf: $(OFILES)
-
-#---------------------------------------------------------------------------------
-# This rule links in binary data with the .jpg extension
-#---------------------------------------------------------------------------------
-%.png.o : %.png
- @echo $(notdir $<)
- $(bin2o)
-
--include $(DEPENDS)
-
-#---------------------------------------------------------------------------------
-endif
-#---------------------------------------------------------------------------------
diff --git a/ForwardMii-Plugin/Resources/GX/dolloader.c b/ForwardMii-Plugin/Resources/GX/dolloader.c
deleted file mode 100644
index 7a6629d..0000000
--- a/ForwardMii-Plugin/Resources/GX/dolloader.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "dolloader.h"
-
-typedef struct _dolheader {
- u32 text_pos[7];
- u32 data_pos[11];
- u32 text_start[7];
- u32 data_start[11];
- u32 text_size[7];
- u32 data_size[11];
- u32 bss_start;
- u32 bss_size;
- u32 entry_point;
-} dolheader;
-
-u32 load_dol_image (void *dolstart, struct __argv *argv) {
- u32 i;
- dolheader *dolfile;
-
- if (dolstart) {
- dolfile = (dolheader *) dolstart;
- for (i = 0; i < 7; i++) {
- if ((!dolfile->text_size[i]) || (dolfile->text_start[i] < 0x100)) continue;
- VIDEO_WaitVSync();
- ICInvalidateRange ((void *) dolfile->text_start[i],dolfile->text_size[i]);
- memmove ((void *) dolfile->text_start[i],dolstart+dolfile->text_pos[i],dolfile->text_size[i]);
- }
-
- for(i = 0; i < 11; i++) {
- if ((!dolfile->data_size[i]) || (dolfile->data_start[i] < 0x100)) continue;
- VIDEO_WaitVSync();
- memmove ((void *) dolfile->data_start[i],dolstart+dolfile->data_pos[i],dolfile->data_size[i]);
- DCFlushRangeNoSync ((void *) dolfile->data_start[i],dolfile->data_size[i]);
- }
-
- memset ((void *) dolfile->bss_start, 0, dolfile->bss_size);
- DCFlushRange((void *) dolfile->bss_start, dolfile->bss_size);
-
- if (argv && argv->argvMagic == ARGV_MAGIC) {
- void *new_argv = (void *)(dolfile->entry_point + 8);
- memmove(new_argv, argv, sizeof(*argv));
- DCFlushRange(new_argv, sizeof(*argv));
- }
- return dolfile->entry_point;
- }
- return 0;
-}
diff --git a/ForwardMii-Plugin/Resources/GX/dolloader.h b/ForwardMii-Plugin/Resources/GX/dolloader.h
deleted file mode 100644
index 7dcc292..0000000
--- a/ForwardMii-Plugin/Resources/GX/dolloader.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _DOLLOADER_H_
-#define _DOLLOADER_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-// Apps goes here
-#define EXECUTABLE_MEM_ADDR 0x92000000
-/* dol header */
-
-extern void __exception_closeall();
-typedef void (*entrypoint) (void);
-
-u32 load_dol_image (void *dolstart, struct __argv *argv);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/ForwardMii-Plugin/Resources/GX/elf_abi.h b/ForwardMii-Plugin/Resources/GX/elf_abi.h
deleted file mode 100644
index c9e705e..0000000
--- a/ForwardMii-Plugin/Resources/GX/elf_abi.h
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * Copyright (c) 1995, 1996, 2001, 2002
- * Erik Theisen. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * This is the ELF ABI header file
- * formerly known as "elf_abi.h".
- */
-
-#ifndef _ELF_ABI_H
-#define _ELF_ABI_H
-
-#include
-
-/*
- * This version doesn't work for 64-bit ABIs - Erik.
- */
-
-/*
- * These typedefs need to be handled better.
- */
-typedef u32 Elf32_Addr; /* Unsigned program address */
-typedef u32 Elf32_Off; /* Unsigned file offset */
-typedef s32 Elf32_Sword; /* Signed large integer */
-typedef u32 Elf32_Word; /* Unsigned large integer */
-typedef u16 Elf32_Half; /* Unsigned medium integer */
-
-/* e_ident[] identification indexes */
-#define EI_MAG0 0 /* file ID */
-#define EI_MAG1 1 /* file ID */
-#define EI_MAG2 2 /* file ID */
-#define EI_MAG3 3 /* file ID */
-#define EI_CLASS 4 /* file class */
-#define EI_DATA 5 /* data encoding */
-#define EI_VERSION 6 /* ELF header version */
-#define EI_OSABI 7 /* OS/ABI specific ELF extensions */
-#define EI_ABIVERSION 8 /* ABI target version */
-#define EI_PAD 9 /* start of pad bytes */
-#define EI_NIDENT 16 /* Size of e_ident[] */
-
-/* e_ident[] magic number */
-#define ELFMAG0 0x7f /* e_ident[EI_MAG0] */
-#define ELFMAG1 'E' /* e_ident[EI_MAG1] */
-#define ELFMAG2 'L' /* e_ident[EI_MAG2] */
-#define ELFMAG3 'F' /* e_ident[EI_MAG3] */
-#define ELFMAG "\177ELF" /* magic */
-#define SELFMAG 4 /* size of magic */
-
-/* e_ident[] file class */
-#define ELFCLASSNONE 0 /* invalid */
-#define ELFCLASS32 1 /* 32-bit objs */
-#define ELFCLASS64 2 /* 64-bit objs */
-#define ELFCLASSNUM 3 /* number of classes */
-
-/* e_ident[] data encoding */
-#define ELFDATANONE 0 /* invalid */
-#define ELFDATA2LSB 1 /* Little-Endian */
-#define ELFDATA2MSB 2 /* Big-Endian */
-#define ELFDATANUM 3 /* number of data encode defines */
-
-/* e_ident[] OS/ABI specific ELF extensions */
-#define ELFOSABI_NONE 0 /* No extension specified */
-#define ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */
-#define ELFOSABI_NETBSD 2 /* NetBSD */
-#define ELFOSABI_LINUX 3 /* Linux */
-#define ELFOSABI_SOLARIS 6 /* Sun Solaris */
-#define ELFOSABI_AIX 7 /* AIX */
-#define ELFOSABI_IRIX 8 /* IRIX */
-#define ELFOSABI_FREEBSD 9 /* FreeBSD */
-#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */
-#define ELFOSABI_MODESTO 11 /* Novell Modesto */
-#define ELFOSABI_OPENBSD 12 /* OpenBSD */
-/* 64-255 Architecture-specific value range */
-
-/* e_ident[] ABI Version */
-#define ELFABIVERSION 0
-
-/* e_ident */
-#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
- (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
- (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
- (ehdr).e_ident[EI_MAG3] == ELFMAG3)
-
-/* ELF Header */
-typedef struct elfhdr{
- unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
- Elf32_Half e_type; /* object file type */
- Elf32_Half e_machine; /* machine */
- Elf32_Word e_version; /* object file version */
- Elf32_Addr e_entry; /* virtual entry point */
- Elf32_Off e_phoff; /* program header table offset */
- Elf32_Off e_shoff; /* section header table offset */
- Elf32_Word e_flags; /* processor-specific flags */
- Elf32_Half e_ehsize; /* ELF header size */
- Elf32_Half e_phentsize; /* program header entry size */
- Elf32_Half e_phnum; /* number of program header entries */
- Elf32_Half e_shentsize; /* section header entry size */
- Elf32_Half e_shnum; /* number of section header entries */
- Elf32_Half e_shstrndx; /* section header table's "section
- header string table" entry offset */
-} Elf32_Ehdr;
-
-/* e_type */
-#define ET_NONE 0 /* No file type */
-#define ET_REL 1 /* relocatable file */
-#define ET_EXEC 2 /* executable file */
-#define ET_DYN 3 /* shared object file */
-#define ET_CORE 4 /* core file */
-#define ET_NUM 5 /* number of types */
-#define ET_LOOS 0xfe00 /* reserved range for operating */
-#define ET_HIOS 0xfeff /* system specific e_type */
-#define ET_LOPROC 0xff00 /* reserved range for processor */
-#define ET_HIPROC 0xffff /* specific e_type */
-
-/* e_machine */
-#define EM_NONE 0 /* No Machine */
-#define EM_M32 1 /* AT&T WE 32100 */
-#define EM_SPARC 2 /* SPARC */
-#define EM_386 3 /* Intel 80386 */
-#define EM_68K 4 /* Motorola 68000 */
-#define EM_88K 5 /* Motorola 88000 */
-#if 0
-#define EM_486 6 /* RESERVED - was Intel 80486 */
-#endif
-#define EM_860 7 /* Intel 80860 */
-#define EM_MIPS 8 /* MIPS R3000 Big-Endian only */
-#define EM_S370 9 /* IBM System/370 Processor */
-#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */
-#if 0
-#define EM_SPARC64 11 /* RESERVED - was SPARC v9
- 64-bit unoffical */
-#endif
-/* RESERVED 11-14 for future use */
-#define EM_PARISC 15 /* HPPA */
-/* RESERVED 16 for future use */
-#define EM_VPP500 17 /* Fujitsu VPP500 */
-#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
-#define EM_960 19 /* Intel 80960 */
-#define EM_PPC 20 /* PowerPC */
-#define EM_PPC64 21 /* 64-bit PowerPC */
-#define EM_S390 22 /* IBM System/390 Processor */
-/* RESERVED 23-35 for future use */
-#define EM_V800 36 /* NEC V800 */
-#define EM_FR20 37 /* Fujitsu FR20 */
-#define EM_RH32 38 /* TRW RH-32 */
-#define EM_RCE 39 /* Motorola RCE */
-#define EM_ARM 40 /* Advanced Risc Machines ARM */
-#define EM_ALPHA 41 /* Digital Alpha */
-#define EM_SH 42 /* Hitachi SH */
-#define EM_SPARCV9 43 /* SPARC Version 9 */
-#define EM_TRICORE 44 /* Siemens TriCore embedded processor */
-#define EM_ARC 45 /* Argonaut RISC Core */
-#define EM_H8_300 46 /* Hitachi H8/300 */
-#define EM_H8_300H 47 /* Hitachi H8/300H */
-#define EM_H8S 48 /* Hitachi H8S */
-#define EM_H8_500 49 /* Hitachi H8/500 */
-#define EM_IA_64 50 /* Intel Merced */
-#define EM_MIPS_X 51 /* Stanford MIPS-X */
-#define EM_COLDFIRE 52 /* Motorola Coldfire */
-#define EM_68HC12 53 /* Motorola M68HC12 */
-#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/
-#define EM_PCP 55 /* Siemens PCP */
-#define EM_NCPU 56 /* Sony nCPU embeeded RISC */
-#define EM_NDR1 57 /* Denso NDR1 microprocessor */
-#define EM_STARCORE 58 /* Motorola Start*Core processor */
-#define EM_ME16 59 /* Toyota ME16 processor */
-#define EM_ST100 60 /* STMicroelectronic ST100 processor */
-#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/
-#define EM_X86_64 62 /* AMD x86-64 */
-#define EM_PDSP 63 /* Sony DSP Processor */
-/* RESERVED 64,65 for future use */
-#define EM_FX66 66 /* Siemens FX66 microcontroller */
-#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */
-#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */
-#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */
-#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */
-#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */
-#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */
-#define EM_SVX 73 /* Silicon Graphics SVx */
-#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */
-#define EM_VAX 75 /* Digital VAX */
-#define EM_CHRIS 76 /* Axis Communications embedded proc. */
-#define EM_JAVELIN 77 /* Infineon Technologies emb. proc. */
-#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */
-#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */
-#define EM_MMIX 80 /* Donald Knuth's edu 64-bit proc. */
-#define EM_HUANY 81 /* Harvard University mach-indep objs */
-#define EM_PRISM 82 /* SiTera Prism */
-#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */
-#define EM_FR30 84 /* Fujitsu FR30 */
-#define EM_D10V 85 /* Mitsubishi DV10V */
-#define EM_D30V 86 /* Mitsubishi DV30V */
-#define EM_V850 87 /* NEC v850 */
-#define EM_M32R 88 /* Mitsubishi M32R */
-#define EM_MN10300 89 /* Matsushita MN10200 */
-#define EM_MN10200 90 /* Matsushita MN10200 */
-#define EM_PJ 91 /* picoJava */
-#define EM_NUM 92 /* number of machine types */
-
-/* Version */
-#define EV_NONE 0 /* Invalid */
-#define EV_CURRENT 1 /* Current */
-#define EV_NUM 2 /* number of versions */
-
-/* Section Header */
-typedef struct {
- Elf32_Word sh_name; /* name - index into section header
- string table section */
- Elf32_Word sh_type; /* type */
- Elf32_Word sh_flags; /* flags */
- Elf32_Addr sh_addr; /* address */
- Elf32_Off sh_offset; /* file offset */
- Elf32_Word sh_size; /* section size */
- Elf32_Word sh_link; /* section header table index link */
- Elf32_Word sh_info; /* extra information */
- Elf32_Word sh_addralign; /* address alignment */
- Elf32_Word sh_entsize; /* section entry size */
-} Elf32_Shdr;
-
-/* Special Section Indexes */
-#define SHN_UNDEF 0 /* undefined */
-#define SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */
-#define SHN_LOPROC 0xff00 /* reserved range for processor */
-#define SHN_HIPROC 0xff1f /* specific section indexes */
-#define SHN_LOOS 0xff20 /* reserved range for operating */
-#define SHN_HIOS 0xff3f /* specific semantics */
-#define SHN_ABS 0xfff1 /* absolute value */
-#define SHN_COMMON 0xfff2 /* common symbol */
-#define SHN_XINDEX 0xffff /* Index is an extra table */
-#define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */
-
-/* sh_type */
-#define SHT_NULL 0 /* inactive */
-#define SHT_PROGBITS 1 /* program defined information */
-#define SHT_SYMTAB 2 /* symbol table section */
-#define SHT_STRTAB 3 /* string table section */
-#define SHT_RELA 4 /* relocation section with addends*/
-#define SHT_HASH 5 /* symbol hash table section */
-#define SHT_DYNAMIC 6 /* dynamic section */
-#define SHT_NOTE 7 /* note section */
-#define SHT_NOBITS 8 /* no space section */
-#define SHT_REL 9 /* relation section without addends */
-#define SHT_SHLIB 10 /* reserved - purpose unknown */
-#define SHT_DYNSYM 11 /* dynamic symbol table section */
-#define SHT_INIT_ARRAY 14 /* Array of constructors */
-#define SHT_FINI_ARRAY 15 /* Array of destructors */
-#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
-#define SHT_GROUP 17 /* Section group */
-#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */
-#define SHT_NUM 19 /* number of section types */
-#define SHT_LOOS 0x60000000 /* Start OS-specific */
-#define SHT_HIOS 0x6fffffff /* End OS-specific */
-#define SHT_LOPROC 0x70000000 /* reserved range for processor */
-#define SHT_HIPROC 0x7fffffff /* specific section header types */
-#define SHT_LOUSER 0x80000000 /* reserved range for application */
-#define SHT_HIUSER 0xffffffff /* specific indexes */
-
-/* Section names */
-#define ELF_BSS ".bss" /* uninitialized data */
-#define ELF_COMMENT ".comment" /* version control information */
-#define ELF_DATA ".data" /* initialized data */
-#define ELF_DATA1 ".data1" /* initialized data */
-#define ELF_DEBUG ".debug" /* debug */
-#define ELF_DYNAMIC ".dynamic" /* dynamic linking information */
-#define ELF_DYNSTR ".dynstr" /* dynamic string table */
-#define ELF_DYNSYM ".dynsym" /* dynamic symbol table */
-#define ELF_FINI ".fini" /* termination code */
-#define ELF_FINI_ARRAY ".fini_array" /* Array of destructors */
-#define ELF_GOT ".got" /* global offset table */
-#define ELF_HASH ".hash" /* symbol hash table */
-#define ELF_INIT ".init" /* initialization code */
-#define ELF_INIT_ARRAY ".init_array" /* Array of constuctors */
-#define ELF_INTERP ".interp" /* Pathname of program interpreter */
-#define ELF_LINE ".line" /* Symbolic line numnber information */
-#define ELF_NOTE ".note" /* Contains note section */
-#define ELF_PLT ".plt" /* Procedure linkage table */
-#define ELF_PREINIT_ARRAY ".preinit_array" /* Array of pre-constructors */
-#define ELF_REL_DATA ".rel.data" /* relocation data */
-#define ELF_REL_FINI ".rel.fini" /* relocation termination code */
-#define ELF_REL_INIT ".rel.init" /* relocation initialization code */
-#define ELF_REL_DYN ".rel.dyn" /* relocaltion dynamic link info */
-#define ELF_REL_RODATA ".rel.rodata" /* relocation read-only data */
-#define ELF_REL_TEXT ".rel.text" /* relocation code */
-#define ELF_RODATA ".rodata" /* read-only data */
-#define ELF_RODATA1 ".rodata1" /* read-only data */
-#define ELF_SHSTRTAB ".shstrtab" /* section header string table */
-#define ELF_STRTAB ".strtab" /* string table */
-#define ELF_SYMTAB ".symtab" /* symbol table */
-#define ELF_SYMTAB_SHNDX ".symtab_shndx"/* symbol table section index */
-#define ELF_TBSS ".tbss" /* thread local uninit data */
-#define ELF_TDATA ".tdata" /* thread local init data */
-#define ELF_TDATA1 ".tdata1" /* thread local init data */
-#define ELF_TEXT ".text" /* code */
-
-/* Section Attribute Flags - sh_flags */
-#define SHF_WRITE 0x1 /* Writable */
-#define SHF_ALLOC 0x2 /* occupies memory */
-#define SHF_EXECINSTR 0x4 /* executable */
-#define SHF_MERGE 0x10 /* Might be merged */
-#define SHF_STRINGS 0x20 /* Contains NULL terminated strings */
-#define SHF_INFO_LINK 0x40 /* sh_info contains SHT index */
-#define SHF_LINK_ORDER 0x80 /* Preserve order after combining*/
-#define SHF_OS_NONCONFORMING 0x100 /* Non-standard OS specific handling */
-#define SHF_GROUP 0x200 /* Member of section group */
-#define SHF_TLS 0x400 /* Thread local storage */
-#define SHF_MASKOS 0x0ff00000 /* OS specific */
-#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */
- /* specific section attributes */
-
-/* Section Group Flags */
-#define GRP_COMDAT 0x1 /* COMDAT group */
-#define GRP_MASKOS 0x0ff00000 /* Mask OS specific flags */
-#define GRP_MASKPROC 0xf0000000 /* Mask processor specific flags */
-
-/* Symbol Table Entry */
-typedef struct elf32_sym {
- Elf32_Word st_name; /* name - index into string table */
- Elf32_Addr st_value; /* symbol value */
- Elf32_Word st_size; /* symbol size */
- unsigned char st_info; /* type and binding */
- unsigned char st_other; /* 0 - no defined meaning */
- Elf32_Half st_shndx; /* section header index */
-} Elf32_Sym;
-
-/* Symbol table index */
-#define STN_UNDEF 0 /* undefined */
-
-/* Extract symbol info - st_info */
-#define ELF32_ST_BIND(x) ((x) >> 4)
-#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
-#define ELF32_ST_INFO(b,t) (((b) << 4) + ((t) & 0xf))
-#define ELF32_ST_VISIBILITY(x) ((x) & 0x3)
-
-/* Symbol Binding - ELF32_ST_BIND - st_info */
-#define STB_LOCAL 0 /* Local symbol */
-#define STB_GLOBAL 1 /* Global symbol */
-#define STB_WEAK 2 /* like global - lower precedence */
-#define STB_NUM 3 /* number of symbol bindings */
-#define STB_LOOS 10 /* reserved range for operating */
-#define STB_HIOS 12 /* system specific symbol bindings */
-#define STB_LOPROC 13 /* reserved range for processor */
-#define STB_HIPROC 15 /* specific symbol bindings */
-
-/* Symbol type - ELF32_ST_TYPE - st_info */
-#define STT_NOTYPE 0 /* not specified */
-#define STT_OBJECT 1 /* data object */
-#define STT_FUNC 2 /* function */
-#define STT_SECTION 3 /* section */
-#define STT_FILE 4 /* file */
-#define STT_NUM 5 /* number of symbol types */
-#define STT_TLS 6 /* Thread local storage symbol */
-#define STT_LOOS 10 /* reserved range for operating */
-#define STT_HIOS 12 /* system specific symbol types */
-#define STT_LOPROC 13 /* reserved range for processor */
-#define STT_HIPROC 15 /* specific symbol types */
-
-/* Symbol visibility - ELF32_ST_VISIBILITY - st_other */
-#define STV_DEFAULT 0 /* Normal visibility rules */
-#define STV_INTERNAL 1 /* Processor specific hidden class */
-#define STV_HIDDEN 2 /* Symbol unavailable in other mods */
-#define STV_PROTECTED 3 /* Not preemptible, not exported */
-
-
-/* Relocation entry with implicit addend */
-typedef struct
-{
- Elf32_Addr r_offset; /* offset of relocation */
- Elf32_Word r_info; /* symbol table index and type */
-} Elf32_Rel;
-
-/* Relocation entry with explicit addend */
-typedef struct
-{
- Elf32_Addr r_offset; /* offset of relocation */
- Elf32_Word r_info; /* symbol table index and type */
- Elf32_Sword r_addend;
-} Elf32_Rela;
-
-/* Extract relocation info - r_info */
-#define ELF32_R_SYM(i) ((i) >> 8)
-#define ELF32_R_TYPE(i) ((unsigned char) (i))
-#define ELF32_R_INFO(s,t) (((s) << 8) + (unsigned char)(t))
-
-/* Program Header */
-typedef struct {
- Elf32_Word p_type; /* segment type */
- Elf32_Off p_offset; /* segment offset */
- Elf32_Addr p_vaddr; /* virtual address of segment */
- Elf32_Addr p_paddr; /* physical address - ignored? */
- Elf32_Word p_filesz; /* number of bytes in file for seg. */
- Elf32_Word p_memsz; /* number of bytes in mem. for seg. */
- Elf32_Word p_flags; /* flags */
- Elf32_Word p_align; /* memory alignment */
-} Elf32_Phdr;
-
-/* Segment types - p_type */
-#define PT_NULL 0 /* unused */
-#define PT_LOAD 1 /* loadable segment */
-#define PT_DYNAMIC 2 /* dynamic linking section */
-#define PT_INTERP 3 /* the RTLD */
-#define PT_NOTE 4 /* auxiliary information */
-#define PT_SHLIB 5 /* reserved - purpose undefined */
-#define PT_PHDR 6 /* program header */
-#define PT_TLS 7 /* Thread local storage template */
-#define PT_NUM 8 /* Number of segment types */
-#define PT_LOOS 0x60000000 /* reserved range for operating */
-#define PT_HIOS 0x6fffffff /* system specific segment types */
-#define PT_LOPROC 0x70000000 /* reserved range for processor */
-#define PT_HIPROC 0x7fffffff /* specific segment types */
-
-/* Segment flags - p_flags */
-#define PF_X 0x1 /* Executable */
-#define PF_W 0x2 /* Writable */
-#define PF_R 0x4 /* Readable */
-#define PF_MASKOS 0x0ff00000 /* OS specific segment flags */
-#define PF_MASKPROC 0xf0000000 /* reserved bits for processor */
- /* specific segment flags */
-/* Dynamic structure */
-typedef struct
-{
- Elf32_Sword d_tag; /* controls meaning of d_val */
- union
- {
- Elf32_Word d_val; /* Multiple meanings - see d_tag */
- Elf32_Addr d_ptr; /* program virtual address */
- } d_un;
-} Elf32_Dyn;
-
-extern Elf32_Dyn _DYNAMIC[];
-
-/* Dynamic Array Tags - d_tag */
-#define DT_NULL 0 /* marks end of _DYNAMIC array */
-#define DT_NEEDED 1 /* string table offset of needed lib */
-#define DT_PLTRELSZ 2 /* size of relocation entries in PLT */
-#define DT_PLTGOT 3 /* address PLT/GOT */
-#define DT_HASH 4 /* address of symbol hash table */
-#define DT_STRTAB 5 /* address of string table */
-#define DT_SYMTAB 6 /* address of symbol table */
-#define DT_RELA 7 /* address of relocation table */
-#define DT_RELASZ 8 /* size of relocation table */
-#define DT_RELAENT 9 /* size of relocation entry */
-#define DT_STRSZ 10 /* size of string table */
-#define DT_SYMENT 11 /* size of symbol table entry */
-#define DT_INIT 12 /* address of initialization func. */
-#define DT_FINI 13 /* address of termination function */
-#define DT_SONAME 14 /* string table offset of shared obj */
-#define DT_RPATH 15 /* string table offset of library
- search path */
-#define DT_SYMBOLIC 16 /* start sym search in shared obj. */
-#define DT_REL 17 /* address of rel. tbl. w addends */
-#define DT_RELSZ 18 /* size of DT_REL relocation table */
-#define DT_RELENT 19 /* size of DT_REL relocation entry */
-#define DT_PLTREL 20 /* PLT referenced relocation entry */
-#define DT_DEBUG 21 /* bugger */
-#define DT_TEXTREL 22 /* Allow rel. mod. to unwritable seg */
-#define DT_JMPREL 23 /* add. of PLT's relocation entries */
-#define DT_BIND_NOW 24 /* Process relocations of object */
-#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */
-#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */
-#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */
-#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */
-#define DT_RUNPATH 29 /* Library search path */
-#define DT_FLAGS 30 /* Flags for the object being loaded */
-#define DT_ENCODING 32 /* Start of encoded range */
-#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
-#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
-#define DT_NUM 34 /* Number used. */
-#define DT_LOOS 0x60000000 /* reserved range for OS */
-#define DT_HIOS 0x6fffffff /* specific dynamic array tags */
-#define DT_LOPROC 0x70000000 /* reserved range for processor */
-#define DT_HIPROC 0x7fffffff /* specific dynamic array tags */
-
-/* Dynamic Tag Flags - d_un.d_val */
-#define DF_ORIGIN 0x01 /* Object may use DF_ORIGIN */
-#define DF_SYMBOLIC 0x02 /* Symbol resolutions starts here */
-#define DF_TEXTREL 0x04 /* Object contains text relocations */
-#define DF_BIND_NOW 0x08 /* No lazy binding for this object */
-#define DF_STATIC_TLS 0x10 /* Static thread local storage */
-
-/* Standard ELF hashing function */
-unsigned long elf_hash(const unsigned char *name);
-
-#define ELF_TARG_VER 1 /* The ver for which this code is intended */
-
-/*
- * XXX - PowerPC defines really don't belong in here,
- * but we'll put them in for simplicity.
- */
-
-/* Values for Elf32/64_Ehdr.e_flags. */
-#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
-
-/* Cygnus local bits below */
-#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/
-#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib
- flag */
-
-/* PowerPC relocations defined by the ABIs */
-#define R_PPC_NONE 0
-#define R_PPC_ADDR32 1 /* 32bit absolute address */
-#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
-#define R_PPC_ADDR16 3 /* 16bit absolute address */
-#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
-#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
-#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
-#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
-#define R_PPC_ADDR14_BRTAKEN 8
-#define R_PPC_ADDR14_BRNTAKEN 9
-#define R_PPC_REL24 10 /* PC relative 26 bit */
-#define R_PPC_REL14 11 /* PC relative 16 bit */
-#define R_PPC_REL14_BRTAKEN 12
-#define R_PPC_REL14_BRNTAKEN 13
-#define R_PPC_GOT16 14
-#define R_PPC_GOT16_LO 15
-#define R_PPC_GOT16_HI 16
-#define R_PPC_GOT16_HA 17
-#define R_PPC_PLTREL24 18
-#define R_PPC_COPY 19
-#define R_PPC_GLOB_DAT 20
-#define R_PPC_JMP_SLOT 21
-#define R_PPC_RELATIVE 22
-#define R_PPC_LOCAL24PC 23
-#define R_PPC_UADDR32 24
-#define R_PPC_UADDR16 25
-#define R_PPC_REL32 26
-#define R_PPC_PLT32 27
-#define R_PPC_PLTREL32 28
-#define R_PPC_PLT16_LO 29
-#define R_PPC_PLT16_HI 30
-#define R_PPC_PLT16_HA 31
-#define R_PPC_SDAREL16 32
-#define R_PPC_SECTOFF 33
-#define R_PPC_SECTOFF_LO 34
-#define R_PPC_SECTOFF_HI 35
-#define R_PPC_SECTOFF_HA 36
-/* Keep this the last entry. */
-#define R_PPC_NUM 37
-
-/* The remaining relocs are from the Embedded ELF ABI, and are not
- in the SVR4 ELF ABI. */
-#define R_PPC_EMB_NADDR32 101
-#define R_PPC_EMB_NADDR16 102
-#define R_PPC_EMB_NADDR16_LO 103
-#define R_PPC_EMB_NADDR16_HI 104
-#define R_PPC_EMB_NADDR16_HA 105
-#define R_PPC_EMB_SDAI16 106
-#define R_PPC_EMB_SDA2I16 107
-#define R_PPC_EMB_SDA2REL 108
-#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
-#define R_PPC_EMB_MRKREF 110
-#define R_PPC_EMB_RELSEC16 111
-#define R_PPC_EMB_RELST_LO 112
-#define R_PPC_EMB_RELST_HI 113
-#define R_PPC_EMB_RELST_HA 114
-#define R_PPC_EMB_BIT_FLD 115
-#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
-
-/* Diab tool relocations. */
-#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
-#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
-#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
-#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
-#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
-#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
-
-/* This is a phony reloc to handle any old fashioned TOC16 references
- that may still be in object files. */
-#define R_PPC_TOC16 255
-
-#endif /* _ELF_H */
-
diff --git a/ForwardMii-Plugin/Resources/GX/elfloader.c b/ForwardMii-Plugin/Resources/GX/elfloader.c
deleted file mode 100644
index 651a1ee..0000000
--- a/ForwardMii-Plugin/Resources/GX/elfloader.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2001 William L. Pitts
- * Modifications (c) 2004 Felix Domke
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
-
-#include
-#include
-
-#include
-
-#include "elf_abi.h"
-
-/* ======================================================================
- * Determine if a valid ELF image exists at the given memory location.
- * First looks at the ELF header magic field, the makes sure that it is
- * executable and makes sure that it is for a PowerPC.
- * ====================================================================== */
-s32 valid_elf_image (void *addr)
-{
- Elf32_Ehdr *ehdr; /* Elf header structure pointer */
-
- ehdr = (Elf32_Ehdr *) addr;
-
- if (!IS_ELF (*ehdr))
- return 0;
-
- if (ehdr->e_type != ET_EXEC)
- return -1;
-
- if (ehdr->e_machine != EM_PPC)
- return -1;
-
- return 1;
-}
-
-
-/* ======================================================================
- * A very simple elf loader, assumes the image is valid, returns the
- * entry point address.
- * ====================================================================== */
-u32 load_elf_image (void *addr)
-{
- Elf32_Ehdr *ehdr;
- Elf32_Shdr *shdr;
- u8 *strtab = 0;
- u8 *image;
- int i;
-
- ehdr = (Elf32_Ehdr *) addr;
- /* Find the section header string table for output info */
- shdr = (Elf32_Shdr *) (addr + ehdr->e_shoff +
- (ehdr->e_shstrndx * sizeof (Elf32_Shdr)));
-
- if (shdr->sh_type == SHT_STRTAB)
- strtab = (u8 *) (addr + shdr->sh_offset);
-
- /* Load each appropriate section */
- for (i = 0; i < ehdr->e_shnum; ++i) {
- shdr = (Elf32_Shdr *) (addr + ehdr->e_shoff +
- (i * sizeof (Elf32_Shdr)));
-
- if (!(shdr->sh_flags & SHF_ALLOC)
- || shdr->sh_addr == 0 || shdr->sh_size == 0) {
- continue;
- }
-
- shdr->sh_addr &= 0x3FFFFFFF;
- shdr->sh_addr |= 0x80000000;
-
- if (strtab) {
- /*printf ("%sing section %s @ 0x%08x (0x%08x bytes)\n",
- (shdr->sh_type == SHT_NOBITS) ?
- "clear" : "load",
- &strtab[shdr->sh_name],
- (u32) shdr->sh_addr,
- (u32) shdr->sh_size);*/
- }
-
- if (shdr->sh_type == SHT_NOBITS) {
- memset ((void *) shdr->sh_addr, 0, shdr->sh_size);
- } else {
- image = (u8 *) addr + shdr->sh_offset;
- memcpy ((void *) shdr->sh_addr,
- (const void *) image,
- shdr->sh_size);
- }
- DCFlushRangeNoSync ((void *) shdr->sh_addr, shdr->sh_size);
- }
-
- return (ehdr->e_entry & 0x3FFFFFFF) | 0x80000000;
-}
-
diff --git a/ForwardMii-Plugin/Resources/GX/elfloader.h b/ForwardMii-Plugin/Resources/GX/elfloader.h
deleted file mode 100644
index d378fe4..0000000
--- a/ForwardMii-Plugin/Resources/GX/elfloader.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _ELFLOADER_H_
-#define _ELFLOADER_H_
-
-#include
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-s32 valid_elf_image (void *addr);
-u32 load_elf_image (void *addr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/ForwardMii-Plugin/Resources/GX/fatmounter.c b/ForwardMii-Plugin/Resources/GX/fatmounter.c
deleted file mode 100644
index 0009cef..0000000
--- a/ForwardMii-Plugin/Resources/GX/fatmounter.c
+++ /dev/null
@@ -1,184 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-//these are the only stable and speed is good
-#define CACHE 8
-#define SECTORS 64
-
-enum BPB {
- BPB_jmpBoot = 0x00,
- BPB_OEMName = 0x03,
- // BIOS Parameter Block
- BPB_bytesPerSector = 0x0B,
- BPB_sectorsPerCluster = 0x0D,
- BPB_reservedSectors = 0x0E,
- BPB_numFATs = 0x10,
- BPB_rootEntries = 0x11,
- BPB_numSectorsSmall = 0x13,
- BPB_mediaDesc = 0x15,
- BPB_sectorsPerFAT = 0x16,
- BPB_sectorsPerTrk = 0x18,
- BPB_numHeads = 0x1A,
- BPB_numHiddenSectors = 0x1C,
- BPB_numSectors = 0x20,
- // Ext BIOS Parameter Block for FAT16
- BPB_FAT16_driveNumber = 0x24,
- BPB_FAT16_reserved1 = 0x25,
- BPB_FAT16_extBootSig = 0x26,
- BPB_FAT16_volumeID = 0x27,
- BPB_FAT16_volumeLabel = 0x2B,
- BPB_FAT16_fileSysType = 0x36,
- // Bootcode
- BPB_FAT16_bootCode = 0x3E,
- // FAT32 extended block
- BPB_FAT32_sectorsPerFAT32 = 0x24,
- BPB_FAT32_extFlags = 0x28,
- BPB_FAT32_fsVer = 0x2A,
- BPB_FAT32_rootClus = 0x2C,
- BPB_FAT32_fsInfo = 0x30,
- BPB_FAT32_bkBootSec = 0x32,
- // Ext BIOS Parameter Block for FAT32
- BPB_FAT32_driveNumber = 0x40,
- BPB_FAT32_reserved1 = 0x41,
- BPB_FAT32_extBootSig = 0x42,
- BPB_FAT32_volumeID = 0x43,
- BPB_FAT32_volumeLabel = 0x47,
- BPB_FAT32_fileSysType = 0x52,
- // Bootcode
- BPB_FAT32_bootCode = 0x5A,
- BPB_bootSig_55 = 0x1FE,
- BPB_bootSig_AA = 0x1FF
-};
-
-static const char FAT_SIG[3] = {'F', 'A', 'T'};
-
-#define BYTES_PER_READ 512
-
-static bool _FAT_partition_isFAT(const DISC_INTERFACE* disc, sec_t startSector)
-{
- uint8_t sectorBuffer[BYTES_PER_READ] = {0};
- if (!disc->readSectors(startSector, 1, sectorBuffer)) {
- return false;
- }
- // Make sure it is a valid BPB
- if ( (sectorBuffer[BPB_bootSig_55] != 0x55) || (sectorBuffer[BPB_bootSig_AA] != 0xAA)) {
- return false;
- }
-
- // Now verify that this is indeed a FAT partition
- if (memcmp(sectorBuffer + BPB_FAT16_fileSysType, FAT_SIG, sizeof(FAT_SIG)) &&
- memcmp(sectorBuffer + BPB_FAT32_fileSysType, FAT_SIG, sizeof(FAT_SIG)))
- {
- return false;
- }
-
- // check again for the last two cases to make sure that we really have a FAT filesystem here
- // and won't corrupt any data
- if(memcmp(sectorBuffer + BPB_FAT16_fileSysType, "FAT", 3) != 0 && memcmp(sectorBuffer + BPB_FAT32_fileSysType, "FAT32", 5) != 0)
- {
- return false;
- }
- return true;
-}
-static inline uint32_t u8array_to_u32 (const uint8_t* item, int offset) {
- return ( item[offset] | (item[offset + 1] << 8) | (item[offset + 2] << 16) | (item[offset + 3] << 24));
-}
-
-sec_t GetFATPartition(const DISC_INTERFACE* disc)
-{
- int i;
- uint8_t sectorBuffer[BYTES_PER_READ] = {0};
- sec_t startSector = 0;
-
- if(!disc->startup())
- return 0;
-
- // Read first sector of disc
- if (!disc->readSectors(0, 1, sectorBuffer))
- startSector = 0;
-
- // Make sure it is a valid MBR or boot sector
- if ( (sectorBuffer[BPB_bootSig_55] != 0x55) || (sectorBuffer[BPB_bootSig_AA] != 0xAA))
- startSector = 0;
-
- if (!memcmp(sectorBuffer + BPB_FAT16_fileSysType, FAT_SIG, sizeof(FAT_SIG)))
- {
- // Check if there is a FAT string, which indicates this is a boot sector
- startSector = 0;
- }
- else if (!memcmp(sectorBuffer + BPB_FAT32_fileSysType, FAT_SIG, sizeof(FAT_SIG)))
- {
- // Check for FAT32
- startSector = 0;
- }
- else
- {
- // This is an MBR
- // Find first valid partition from MBR
- // First check for an active partition
- for (i=0x1BE; (i < 0x1FE) && (sectorBuffer[i] != 0x80); i+= 0x10);
- // If it find an active partition, check for FAT-Partition
- if ( i != 0x1FE && !_FAT_partition_isFAT(disc, u8array_to_u32(sectorBuffer, 0x8 + i)) )
- i = 0x1FE;
-
- // If it didn't find an active partition, search for any valid partition
- if (i == 0x1FE)
- {
- for (i=0x1BE; i < 0x1FE; i+= 0x10)
- {
- if ( sectorBuffer[i+0x04] != 0x00 && _FAT_partition_isFAT(disc, u8array_to_u32(sectorBuffer, 0x8 + i)) )
- break;
- }
- }
- if (i != 0x1FE)
- startSector = u8array_to_u32(sectorBuffer, 0x8 + i);;
- }
- disc->shutdown();
- return startSector;
-}
-
-int USBDevice_Init()
-{
- //closing all open Files write back the cache and then shutdown em!
- fatUnmount("USB:/");
- //right now mounts first FAT-partition
- if (fatMount("USB", &__io_usbstorage, GetFATPartition(&__io_usbstorage), CACHE, SECTORS)) {
- //try first mount with libogc
- return 1;
- }
- return -1;
-}
-
-void USBDevice_deInit()
-{
- //closing all open Files write back the cache and then shutdown em!
- fatUnmount("USB:/");
-}
-
-int isSdInserted()
-{
- return __io_wiisd.isInserted();
-}
-
-int SDCard_Init()
-{
- //closing all open Files write back the cache and then shutdown em!
- fatUnmount("SD:/");
- //right now mounts first FAT-partition
- if (fatMount("SD", &__io_wiisd, GetFATPartition(&__io_wiisd), CACHE, SECTORS))
- return 1;
- return -1;
-}
-
-void SDCard_deInit()
-{
- //closing all open Files write back the cache and then shutdown em!
- fatUnmount("SD:/");
-}
diff --git a/ForwardMii-Plugin/Resources/GX/fatmounter.h b/ForwardMii-Plugin/Resources/GX/fatmounter.h
deleted file mode 100644
index e235702..0000000
--- a/ForwardMii-Plugin/Resources/GX/fatmounter.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef _FATMOUNTER_H_
-#define _FATMOUNTER_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-int USBDevice_Init();
-void USBDevice_deInit();
-int isSdInserted();
-int SDCard_Init();
-void SDCard_deInit();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/ForwardMii-Plugin/Resources/GX/filelist.h b/ForwardMii-Plugin/Resources/GX/filelist.h
deleted file mode 100644
index e0af26c..0000000
--- a/ForwardMii-Plugin/Resources/GX/filelist.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/****************************************************************************
- * libwiigui Template
- * Tantric 2009
- *
- * imagelist.h
- * Contains a list of all of the files in the images, fonts, sounds folders
- ***************************************************************************/
-
-#ifndef _FILELIST_H_
-#define _FILELIST_H_
-
-#include
-
-extern const u8 background_png[];
-extern const u32 background_png_size;
-
-extern const u8 background169_png[];
-extern const u32 background169_png_size;
-
-#endif
diff --git a/ForwardMii-Plugin/Resources/GX/main.cpp b/ForwardMii-Plugin/Resources/GX/main.cpp
deleted file mode 100644
index c1d79b3..0000000
--- a/ForwardMii-Plugin/Resources/GX/main.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * loadMii loader v0.3
- * main.c
- * http://code.google.com/p/loadmii
- *
- * Copyright 2009 The Lemon Man
- * Thanks to luccax, Wiipower, Aurelio and crediar
- * GX added by dimok (thanks to Tantric)
- * usbGecko powered by Nuke
- * little modifications by Leathl
- *
- * This program 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 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "pngu/pngu.h"
-#include "video.h"
-#include "filelist.h"
-#include "dolloader.h"
-#include "elfloader.h"
-#include "fatmounter.h"
-
-/*edit these*/
-#define USB_FIRST false
-#define ELF_FIRST false
-
-#define SD_DOL "SD:/apps/appfolder/boot.dol"
-#define SD_ELF "SD:/apps/appfolder/boot.elf"
-#define USB_DOL "USB:/apps/appfolder/boot.dol"
-#define USB_ELF "USB:/apps/appfolder/boot.elf"
-
-static PNGUPROP imgProp;
-static IMGCTX ctx;
-
-
-u8 * GetImageData(void) {
-
- u8 * data = NULL;
-
- int ret;
-
- if (CONF_GetAspectRatio()) {
- ctx = PNGU_SelectImageFromBuffer(background169_png);
- if (!ctx)
- return NULL;
- } else {
- ctx = PNGU_SelectImageFromBuffer(background_png);
- if (!ctx)
- return NULL;
- }
-
- ret = PNGU_GetImageProperties(ctx, &imgProp);
- if (ret != PNGU_OK)
- return NULL;
-
- int len = imgProp.imgWidth * imgProp.imgHeight * 4;
-
- if(len%32) len += (32-len%32);
- data = (u8 *)memalign (32, len);
- ret = PNGU_DecodeTo4x4RGBA8 (ctx, imgProp.imgWidth, imgProp.imgHeight, data, 255);
- DCFlushRange(data, len);
-
- PNGU_ReleaseImageContext(ctx);
-
- return data;
-}
-
-void Background_Show(int x, int y, int z, u8 * data, int angle, int scaleX, int scaleY, int alpha)
-{
- /* Draw image */
- Menu_DrawImg(x, y, z, imgProp.imgWidth, imgProp.imgHeight, data, angle, scaleX, scaleY, alpha);
-}
-
-
-int main(int argc, char **argv)
-{
- u32 cookie;
- FILE *exeFile = NULL;
- void *exeBuffer = (void *)EXECUTABLE_MEM_ADDR;
- int exeSize = 0;
- u32 exeEntryPointAddress = 0;
- entrypoint exeEntryPoint;
- char cfgpath[256], first[256], second[256], third[256], fourth[256];
-
- /* int videomod */
- InitVideo();
- /* get imagedata */
- u8 * imgdata = GetImageData();
- /* fadein of image */
- for(int i = 0; i < 255; i = i+10)
- {
- if(i>255) i = 255;
- Background_Show(0, 0, 0, imgdata, 0, 1, 1, i);
- Menu_Render();
- }
-
- /*set order*/
- if (USB_FIRST && ELF_FIRST)
- {
- sprintf(first, USB_ELF);
- sprintf(second, USB_DOL);
- sprintf(third, SD_ELF);
- sprintf(fourth, SD_DOL);
- }
- else if (USB_FIRST)
- {
- sprintf(first, USB_DOL);
- sprintf(second, USB_ELF);
- sprintf(third, SD_DOL);
- sprintf(fourth, SD_ELF);
- }
- else if (ELF_FIRST)
- {
- sprintf(first, SD_ELF);
- sprintf(second, SD_DOL);
- sprintf(third, USB_ELF);
- sprintf(fourth, USB_DOL);
- }
- else
- {
- sprintf(first, SD_DOL);
- sprintf(second, SD_ELF);
- sprintf(third, USB_DOL);
- sprintf(fourth, USB_ELF);
- }
-
- /* check devices */
- SDCard_Init();
- USBDevice_Init();
-
- /* Open dol File and check exist */
- sprintf(cfgpath, first);
- exeFile = fopen (cfgpath ,"rb");
- if (exeFile==NULL)
- {
- sprintf(cfgpath, second);
- exeFile = fopen (cfgpath ,"rb");
- }
- if (exeFile==NULL)
- {
- sprintf(cfgpath, third);
- exeFile = fopen (cfgpath ,"rb");
- }
- if (exeFile==NULL)
- {
- sprintf(cfgpath, fourth);
- exeFile = fopen (cfgpath ,"rb");
- }
- // if nothing found exiting
- if (exeFile==NULL) {
- printf("\n\n\t\tCan't find DOL File...\n");
- Menu_Render();
- sleep(3);
- fclose (exeFile);
- SDCard_deInit();
- USBDevice_deInit();
- StopGX();
- SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
- }
-
- fseek (exeFile, 0, SEEK_END);
- exeSize = ftell(exeFile);
- fseek (exeFile, 0, SEEK_SET);
-
- if(fread (exeBuffer, 1, exeSize, exeFile) != (unsigned int) exeSize)
- {
- printf("\n\n\t\tCan't open DOL File...\n");
- Menu_Render();
- fclose (exeFile);
- sleep(3);
- SDCard_deInit();
- USBDevice_deInit();
- StopGX();
- SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
- }
- fclose (exeFile);
-
- /* load entry point */
- struct __argv args;
- bzero(&args, sizeof(args));
- args.argvMagic = ARGV_MAGIC;
- args.length = strlen(cfgpath) + 2;
- args.commandLine = (char*)malloc(args.length);
- if (!args.commandLine) SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
- strcpy(args.commandLine, cfgpath);
- args.commandLine[args.length - 1] = '\0';
- args.argc = 1;
- args.argv = &args.commandLine;
- args.endARGV = args.argv + 1;
-
- int ret = valid_elf_image(exeBuffer);
- if (ret == 1)
- exeEntryPointAddress = load_elf_image(exeBuffer);
- else
- exeEntryPointAddress = load_dol_image(exeBuffer, &args);
-
- /* fadeout of image */
- for(int i = 255; i > 1; i = i-7)
- {
- if(i < 0) i = 0;
- Background_Show(0, 0, 0, imgdata, 0, 1, 1, i);
- Menu_Render();
- }
- SDCard_deInit();
- USBDevice_deInit();
- StopGX();
- if (exeEntryPointAddress == 0) {
- printf("EntryPointAddress failed...\n");
- Menu_Render();
- sleep(3);
- fclose (exeFile);
- SDCard_deInit();
- USBDevice_deInit();
- StopGX();
- SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);;
- }
- exeEntryPoint = (entrypoint) exeEntryPointAddress;
- /* cleaning up and load dol */
- SYS_ResetSystem(SYS_SHUTDOWN, 0, 0);
- _CPU_ISR_Disable (cookie);
- __exception_closeall ();
- exeEntryPoint ();
- _CPU_ISR_Restore (cookie);
- return 0;
-}
diff --git a/ForwardMii-Plugin/Resources/GX/video.cpp b/ForwardMii-Plugin/Resources/GX/video.cpp
deleted file mode 100644
index 345bcf0..0000000
--- a/ForwardMii-Plugin/Resources/GX/video.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/****************************************************************************
- * libwiigui Template
- * Tantric 2009
- *
- * video.cpp
- * Video routines
- ***************************************************************************/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#define DEFAULT_FIFO_SIZE 256 * 1024
-static unsigned int *xfb[2] = { NULL, NULL }; // Double buffered
-static int whichfb = 0; // Switch
-static GXRModeObj *vmode; // Menu video mode
-static unsigned char gp_fifo[DEFAULT_FIFO_SIZE] ATTRIBUTE_ALIGN (32);
-static Mtx GXmodelView2D;
-
-/****************************************************************************
- * StartGX
- *
- * Initialises GX and sets it up for use
- ***************************************************************************/
-static void
-StartGX ()
-{
- GXColor background = { 0, 0, 0, 0xff };
-
- /*** Clear out FIFO area ***/
- memset (&gp_fifo, 0, DEFAULT_FIFO_SIZE);
-
- /*** Initialise GX ***/
- GX_Init (&gp_fifo, DEFAULT_FIFO_SIZE);
- GX_SetCopyClear (background, 0x00ffffff);
-
- GX_SetDispCopyGamma (GX_GM_1_0);
- GX_SetCullMode (GX_CULL_NONE);
-}
-
-/****************************************************************************
- * ResetVideo_Menu
- *
- * Reset the video/rendering mode for the menu
-****************************************************************************/
-void
-ResetVideo_Menu()
-{
- Mtx44 p;
- f32 yscale;
- u32 xfbHeight;
-
- VIDEO_Configure (vmode);
- VIDEO_Flush();
- VIDEO_WaitVSync();
- if (vmode->viTVMode & VI_NON_INTERLACE)
- VIDEO_WaitVSync();
- else
- while (VIDEO_GetNextField())
- VIDEO_WaitVSync();
-
- // clears the bg to color and clears the z buffer
- GXColor background = {0, 0, 0, 255};
- GX_SetCopyClear (background, 0x00ffffff);
-
- yscale = GX_GetYScaleFactor(vmode->efbHeight,vmode->xfbHeight);
- xfbHeight = GX_SetDispCopyYScale(yscale);
- GX_SetScissor(0,0,vmode->fbWidth,vmode->efbHeight);
- GX_SetDispCopySrc(0,0,vmode->fbWidth,vmode->efbHeight);
- GX_SetDispCopyDst(vmode->fbWidth,xfbHeight);
- GX_SetCopyFilter(vmode->aa,vmode->sample_pattern,GX_TRUE,vmode->vfilter);
- GX_SetFieldMode(vmode->field_rendering,((vmode->viHeight==2*vmode->xfbHeight)?GX_ENABLE:GX_DISABLE));
-
- if (vmode->aa)
- GX_SetPixelFmt(GX_PF_RGB565_Z16, GX_ZC_LINEAR);
- else
- GX_SetPixelFmt(GX_PF_RGB8_Z24, GX_ZC_LINEAR);
-
- // setup the vertex descriptor
- // tells the flipper to expect direct data
- GX_ClearVtxDesc();
- GX_InvVtxCache ();
- GX_InvalidateTexAll();
-
- GX_SetVtxDesc(GX_VA_TEX0, GX_NONE);
- GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
- GX_SetVtxDesc (GX_VA_CLR0, GX_DIRECT);
-
- GX_SetVtxAttrFmt (GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
- GX_SetVtxAttrFmt (GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
- GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
- GX_SetZMode (GX_FALSE, GX_LEQUAL, GX_TRUE);
-
- GX_SetNumChans(1);
- GX_SetNumTexGens(1);
- GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
- GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
- GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
-
- guMtxIdentity(GXmodelView2D);
- guMtxTransApply (GXmodelView2D, GXmodelView2D, 0.0F, 0.0F, -200.0F);
- GX_LoadPosMtxImm(GXmodelView2D,GX_PNMTX0);
-
- guOrtho(p,0,479,0,639,0,300);
- GX_LoadProjectionMtx(p, GX_ORTHOGRAPHIC);
-
- GX_SetViewport(0,0,vmode->fbWidth,vmode->efbHeight,0,1);
- GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
- GX_SetAlphaUpdate(GX_TRUE);
-}
-
-/****************************************************************************
- * InitVideo
- *
- * This function MUST be called at startup.
- * - also sets up menu video mode
- ***************************************************************************/
-
-void
-InitVideo ()
-{
- VIDEO_Init();
- vmode = VIDEO_GetPreferredMode(NULL); // get default video mode
-
- VIDEO_Configure (vmode);
-
- // Allocate the video buffers
- xfb[0] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (vmode));
- xfb[1] = (u32 *) MEM_K0_TO_K1 (SYS_AllocateFramebuffer (vmode));
-
- // A console is always useful while debugging
- console_init (xfb[0], 20, 64, vmode->fbWidth, vmode->xfbHeight, vmode->fbWidth * 2);
-
- // Clear framebuffers etc.
- VIDEO_ClearFrameBuffer (vmode, xfb[0], COLOR_BLACK);
- VIDEO_ClearFrameBuffer (vmode, xfb[1], COLOR_BLACK);
- VIDEO_SetNextFramebuffer (xfb[0]);
-
- VIDEO_SetBlack (FALSE);
- VIDEO_Flush ();
- VIDEO_WaitVSync ();
- if (vmode->viTVMode & VI_NON_INTERLACE)
- VIDEO_WaitVSync ();
-
- StartGX();
- ResetVideo_Menu();
- // Finally, the video is up and ready for use :)
-}
-
-/****************************************************************************
- * StopGX
- *
- * Stops GX (when exiting)
- ***************************************************************************/
-void StopGX()
-{
- GX_AbortFrame();
- GX_Flush();
-
- VIDEO_SetBlack(TRUE);
- VIDEO_Flush();
-}
-
-/****************************************************************************
- * Menu_Render
- *
- * Renders everything current sent to GX, and flushes video
- ***************************************************************************/
-void Menu_Render()
-{
- GX_DrawDone ();
-
- whichfb ^= 1; // flip framebuffer
- GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
- GX_SetColorUpdate(GX_TRUE);
- GX_CopyDisp(xfb[whichfb],GX_TRUE);
- VIDEO_SetNextFramebuffer(xfb[whichfb]);
- VIDEO_Flush();
- VIDEO_WaitVSync();
-}
-
-/****************************************************************************
- * Menu_DrawImg
- *
- * Draws the specified image on screen using GX
- ***************************************************************************/
-void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u8 data[],
- f32 degrees, f32 scaleX, f32 scaleY, u8 alpha)
-{
- if(data == NULL)
- return;
-
- GXTexObj texObj;
-
- GX_InitTexObj(&texObj, data, width,height, GX_TF_RGBA8,GX_CLAMP, GX_CLAMP,GX_FALSE);
- GX_LoadTexObj(&texObj, GX_TEXMAP0);
- GX_InvalidateTexAll();
-
- GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE);
- GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);
-
- Mtx m,m1,m2, mv;
- width *=.5;
- height*=.5;
- guMtxIdentity (m1);
- guMtxScaleApply(m1,m1,scaleX,scaleY,1.0);
- Vector axis = (Vector) {0 , 0, 1 };
- guMtxRotAxisDeg (m2, &axis, degrees);
- guMtxConcat(m1,m2,m);
-
- guMtxTransApply(m,m, xpos+width+0.5,ypos+height+0.5,zpos);
- guMtxConcat (GXmodelView2D, m, mv);
- GX_LoadPosMtxImm (mv, GX_PNMTX0);
-
- GX_Begin(GX_QUADS, GX_VTXFMT0,4);
- GX_Position3f32(-width, -height, 0);
- GX_Color4u8(0xFF,0xFF,0xFF,alpha);
- GX_TexCoord2f32(0, 0);
-
- GX_Position3f32(width, -height, 0);
- GX_Color4u8(0xFF,0xFF,0xFF,alpha);
- GX_TexCoord2f32(1, 0);
-
- GX_Position3f32(width, height, 0);
- GX_Color4u8(0xFF,0xFF,0xFF,alpha);
- GX_TexCoord2f32(1, 1);
-
- GX_Position3f32(-width, height, 0);
- GX_Color4u8(0xFF,0xFF,0xFF,alpha);
- GX_TexCoord2f32(0, 1);
- GX_End();
- GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);
-
- GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
- GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);
-}
diff --git a/ForwardMii-Plugin/Resources/GX/video.h b/ForwardMii-Plugin/Resources/GX/video.h
deleted file mode 100644
index fb45f0a..0000000
--- a/ForwardMii-Plugin/Resources/GX/video.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/****************************************************************************
- * libwiigui Template
- * Tantric 2009
- *
- * video.h
- * Video routines
- ***************************************************************************/
-
-#ifndef _VIDEO_H_
-#define _VIDEO_H_
-
-#include
-
-void InitVideo ();
-void StopGX();
-void ResetVideo_Menu();
-void Menu_Render();
-void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u8 data[], f32 degrees, f32 scaleX, f32 scaleY, u8 alphaF );
-
-#endif
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/10CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/10CharsTail.bin
deleted file mode 100644
index 266d5d3..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/10CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/11CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/11CharsTail.bin
deleted file mode 100644
index 22e9232..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/11CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/12CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/12CharsTail.bin
deleted file mode 100644
index fe084a8..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/12CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/13CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/13CharsTail.bin
deleted file mode 100644
index 47ee8b7..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/13CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/14CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/14CharsTail.bin
deleted file mode 100644
index 4036d7d..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/14CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/15CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/15CharsTail.bin
deleted file mode 100644
index d040888..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/15CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/16CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/16CharsTail.bin
deleted file mode 100644
index 0abcb09..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/16CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/17CharsBase.bin b/ForwardMii-Plugin/Resources/SDSDHC/17CharsBase.bin
deleted file mode 100644
index 5a50866..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/17CharsBase.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/17CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/17CharsTail.bin
deleted file mode 100644
index 4762dae..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/17CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/18CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/18CharsTail.bin
deleted file mode 100644
index 2a8d124..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/18CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/3CharsBase.bin b/ForwardMii-Plugin/Resources/SDSDHC/3CharsBase.bin
deleted file mode 100644
index a63f9d1..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/3CharsBase.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/3CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/3CharsTail.bin
deleted file mode 100644
index 273a244..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/3CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/4CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/4CharsTail.bin
deleted file mode 100644
index c2f12b9..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/4CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/5CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/5CharsTail.bin
deleted file mode 100644
index be5e492..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/5CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/6CharsBase.bin b/ForwardMii-Plugin/Resources/SDSDHC/6CharsBase.bin
deleted file mode 100644
index 0026f4d..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/6CharsBase.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/6CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/6CharsTail.bin
deleted file mode 100644
index 5d08011..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/6CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/7CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/7CharsTail.bin
deleted file mode 100644
index 2aa8595..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/7CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/8CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/8CharsTail.bin
deleted file mode 100644
index 9b67ecf..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/8CharsTail.bin and /dev/null differ
diff --git a/ForwardMii-Plugin/Resources/SDSDHC/9CharsTail.bin b/ForwardMii-Plugin/Resources/SDSDHC/9CharsTail.bin
deleted file mode 100644
index f04c671..0000000
Binary files a/ForwardMii-Plugin/Resources/SDSDHC/9CharsTail.bin and /dev/null differ
diff --git a/MPlayer_CE_Long.wad b/MPlayer_CE_Long.wad
new file mode 100644
index 0000000..22c1c01
Binary files /dev/null and b/MPlayer_CE_Long.wad differ
diff --git a/MPlayer_CE_Short.wad b/MPlayer_CE_Short.wad
new file mode 100644
index 0000000..561a60b
Binary files /dev/null and b/MPlayer_CE_Short.wad differ
diff --git a/Snes9xGX.wad b/Snes9xGX.wad
new file mode 100644
index 0000000..fee49c3
Binary files /dev/null and b/Snes9xGX.wad differ
diff --git a/StaticBase.wad b/StaticBase.wad
new file mode 100644
index 0000000..060e4c5
Binary files /dev/null and b/StaticBase.wad differ
diff --git a/UniiLoader.wad b/UniiLoader.wad
new file mode 100644
index 0000000..b1979f8
Binary files /dev/null and b/UniiLoader.wad differ
diff --git a/WADder_Base_1.wad b/WADder_Base_1.wad
new file mode 100644
index 0000000..a28cc3b
Binary files /dev/null and b/WADder_Base_1.wad differ
diff --git a/WADder_Base_2.wad b/WADder_Base_2.wad
new file mode 100644
index 0000000..833535e
Binary files /dev/null and b/WADder_Base_2.wad differ
diff --git a/WADder_Base_3.wad b/WADder_Base_3.wad
new file mode 100644
index 0000000..ff28de5
Binary files /dev/null and b/WADder_Base_3.wad differ
diff --git a/Wii64.wad b/Wii64.wad
new file mode 100644
index 0000000..6a20c1a
Binary files /dev/null and b/Wii64.wad differ
diff --git a/WiiSX_Full.wad b/WiiSX_Full.wad
new file mode 100644
index 0000000..2ad69b3
Binary files /dev/null and b/WiiSX_Full.wad differ
diff --git a/WiiSX_Retro.wad b/WiiSX_Retro.wad
new file mode 100644
index 0000000..c667605
Binary files /dev/null and b/WiiSX_Retro.wad differ