Unverified Commit f36357b4 authored by piratesephiroth's avatar piratesephiroth Committed by GitHub
Browse files

Add files via upload

parent 748ea5e7

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.16
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeconMoon's WiiVC Injector", "TeconMoon's WiiVC Injector\TeconMoon's WiiVC Injector.csproj", "{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {03A3BE64-2666-450F-A28D-333D71299683}
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
namespace TeconMoon_s_WiiVC_Injector
{
partial class WiiVC_Injector
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WiiVC_Injector));
this.MainTableLayout = new System.Windows.Forms.TableLayoutPanel();
this.WiiRetail = new System.Windows.Forms.RadioButton();
this.MainTabs = new System.Windows.Forms.TabControl();
this.SourceFilesTab = new System.Windows.Forms.TabPage();
this.RepoDownload = new System.Windows.Forms.Button();
this.TitleIDLabel = new System.Windows.Forms.Label();
this.GameNameLabel = new System.Windows.Forms.Label();
this.ITIDText = new System.Windows.Forms.Label();
this.IGNText = new System.Windows.Forms.Label();
this.BannerPreviewText = new System.Windows.Forms.Label();
this.BannerPreviewBox = new System.Windows.Forms.PictureBox();
this.IconPreviewText = new System.Windows.Forms.Label();
this.IconPreviewBox = new System.Windows.Forms.PictureBox();
this.BannerSourceDirectory = new System.Windows.Forms.Label();
this.BannerSourceButton = new System.Windows.Forms.Button();
this.IconSourceDirectory = new System.Windows.Forms.Label();
this.IconSourceButton = new System.Windows.Forms.Button();
this.GameSourceDirectory = new System.Windows.Forms.Label();
this.GameSourceButton = new System.Windows.Forms.Button();
this.SourceFilesTab2 = new System.Windows.Forms.TabPage();
this.GC2SourceDirectory = new System.Windows.Forms.Label();
this.GC2SourceButton = new System.Windows.Forms.Button();
this.ToggleBootSoundLoop = new System.Windows.Forms.CheckBox();
this.BootSoundPreviewText = new System.Windows.Forms.Label();
this.LogoPreviewText = new System.Windows.Forms.Label();
this.LogoPreviewBox = new System.Windows.Forms.PictureBox();
this.DrcPreviewText = new System.Windows.Forms.Label();
this.DrcPreviewBox = new System.Windows.Forms.PictureBox();
this.BootSoundDirectory = new System.Windows.Forms.Label();
this.BootSoundButton = new System.Windows.Forms.Button();
this.LogoSourceDirectory = new System.Windows.Forms.Label();
this.LogoSourceButton = new System.Windows.Forms.Button();
this.DrcSourceDirectory = new System.Windows.Forms.Label();
this.DrcSourceButton = new System.Windows.Forms.Button();
this.BootSoundPreviewButton = new System.Windows.Forms.Button();
this.MetaTab = new System.Windows.Forms.TabPage();
this.LRPatch = new System.Windows.Forms.CheckBox();
this.TutorialLink = new System.Windows.Forms.LinkLabel();
this.AdvancedLabel5 = new System.Windows.Forms.Label();
this.GamePadEmuLayout = new System.Windows.Forms.TableLayoutPanel();
this.ForceCC = new System.Windows.Forms.RadioButton();
this.NoGamePadEmu = new System.Windows.Forms.RadioButton();
this.CCEmu = new System.Windows.Forms.RadioButton();
this.ForceNoCC = new System.Windows.Forms.RadioButton();
this.HorWiiMote = new System.Windows.Forms.RadioButton();
this.VerWiiMote = new System.Windows.Forms.RadioButton();
this.GamePadModeText = new System.Windows.Forms.Label();
this.PackedTitleIDLine = new System.Windows.Forms.TextBox();
this.PackedTitleIDText = new System.Windows.Forms.Label();
this.EnablePackedLine2 = new System.Windows.Forms.CheckBox();
this.PackedTitleLine2 = new System.Windows.Forms.TextBox();
this.PackedTitleLine1 = new System.Windows.Forms.TextBox();
this.PackedTitleText = new System.Windows.Forms.Label();
this.AdvancedTab = new System.Windows.Forms.TabPage();
this.Wiimmfi = new System.Windows.Forms.CheckBox();
this.WiiVMC = new System.Windows.Forms.CheckBox();
this.DisableGamePad = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.SaveAncastKeyButton = new System.Windows.Forms.Button();
this.DisableNintendontAutoboot = new System.Windows.Forms.CheckBox();
this.DisableTrimming = new System.Windows.Forms.CheckBox();
this.Force43NAND = new System.Windows.Forms.CheckBox();
this.DisablePassthrough = new System.Windows.Forms.CheckBox();
this.MainDolLabel = new System.Windows.Forms.Label();
this.CustomMainDol = new System.Windows.Forms.CheckBox();
this.MainDolSourceButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.Force43NINTENDONT = new System.Windows.Forms.CheckBox();
this.sign_c2w_patcher_link = new System.Windows.Forms.LinkLabel();
this.AdvancedLabel2 = new System.Windows.Forms.Label();
this.C2WPatchFlag = new System.Windows.Forms.CheckBox();
this.AncastKey = new System.Windows.Forms.TextBox();
this.AdvancedLabel1 = new System.Windows.Forms.Label();
this.BuildTab = new System.Windows.Forms.TabPage();
this.AdvanceCheck = new System.Windows.Forms.Label();
this.BuildStatus = new System.Windows.Forms.Label();
this.BuildProgress = new System.Windows.Forms.ProgressBar();
this.SaveTitleKeyButton = new System.Windows.Forms.Button();
this.SaveCommonKeyButton = new System.Windows.Forms.Button();
this.TheBigOneTM = new System.Windows.Forms.Button();
this.KeysCheck = new System.Windows.Forms.Label();
this.MetaCheck = new System.Windows.Forms.Label();
this.SourceCheck = new System.Windows.Forms.Label();
this.RequirementsLabel = new System.Windows.Forms.Label();
this.TitleKey = new System.Windows.Forms.TextBox();
this.RHFKeyLabel = new System.Windows.Forms.Label();
this.CommonLabel = new System.Windows.Forms.Label();
this.WiiUCommonKey = new System.Windows.Forms.TextBox();
this.SDCardStuff = new System.Windows.Forms.Button();
this.GCRetail = new System.Windows.Forms.RadioButton();
this.WiiNAND = new System.Windows.Forms.RadioButton();
this.WiiHomebrew = new System.Windows.Forms.RadioButton();
this.OpenIcon = new System.Windows.Forms.OpenFileDialog();
this.OpenBanner = new System.Windows.Forms.OpenFileDialog();
this.OpenGame = new System.Windows.Forms.OpenFileDialog();
this.OpenDrc = new System.Windows.Forms.OpenFileDialog();
this.OpenLogo = new System.Windows.Forms.OpenFileDialog();
this.OpenBootSound = new System.Windows.Forms.OpenFileDialog();
this.OpenMainDol = new System.Windows.Forms.OpenFileDialog();
this.OutputFolderSelect = new System.Windows.Forms.FolderBrowserDialog();
this.OpenGC2 = new System.Windows.Forms.OpenFileDialog();
this.MainTableLayout.SuspendLayout();
this.MainTabs.SuspendLayout();
this.SourceFilesTab.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.BannerPreviewBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreviewBox)).BeginInit();
this.SourceFilesTab2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.LogoPreviewBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.DrcPreviewBox)).BeginInit();
this.MetaTab.SuspendLayout();
this.GamePadEmuLayout.SuspendLayout();
this.AdvancedTab.SuspendLayout();
this.BuildTab.SuspendLayout();
this.SuspendLayout();
//
// MainTableLayout
//
this.MainTableLayout.ColumnCount = 3;
this.MainTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F));
this.MainTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.MainTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
this.MainTableLayout.Controls.Add(this.WiiRetail, 0, 0);
this.MainTableLayout.Controls.Add(this.MainTabs, 0, 2);
this.MainTableLayout.Controls.Add(this.SDCardStuff, 2, 1);
this.MainTableLayout.Controls.Add(this.GCRetail, 2, 0);
this.MainTableLayout.Controls.Add(this.WiiNAND, 0, 1);
this.MainTableLayout.Controls.Add(this.WiiHomebrew, 1, 0);
this.MainTableLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainTableLayout.Location = new System.Drawing.Point(0, 0);
this.MainTableLayout.Name = "MainTableLayout";
this.MainTableLayout.RowCount = 3;
this.MainTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.MainTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.MainTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.MainTableLayout.Size = new System.Drawing.Size(485, 427);
this.MainTableLayout.TabIndex = 0;
//
// WiiRetail
//
this.WiiRetail.AutoSize = true;
this.WiiRetail.Checked = true;
this.WiiRetail.ForeColor = System.Drawing.Color.Black;
this.WiiRetail.Location = new System.Drawing.Point(3, 3);
this.WiiRetail.Name = "WiiRetail";
this.WiiRetail.Size = new System.Drawing.Size(113, 17);
this.WiiRetail.TabIndex = 0;
this.WiiRetail.TabStop = true;
this.WiiRetail.Text = "Wii Retail Injection";
this.WiiRetail.UseVisualStyleBackColor = true;
this.WiiRetail.CheckedChanged += new System.EventHandler(this.WiiRetail_CheckedChanged);
//
// MainTabs
//
this.MainTableLayout.SetColumnSpan(this.MainTabs, 3);
this.MainTabs.Controls.Add(this.SourceFilesTab);
this.MainTabs.Controls.Add(this.SourceFilesTab2);
this.MainTabs.Controls.Add(this.MetaTab);
this.MainTabs.Controls.Add(this.AdvancedTab);
this.MainTabs.Controls.Add(this.BuildTab);
this.MainTabs.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainTabs.Location = new System.Drawing.Point(3, 53);
this.MainTabs.Name = "MainTabs";
this.MainTabs.SelectedIndex = 0;
this.MainTabs.Size = new System.Drawing.Size(479, 371);
this.MainTabs.TabIndex = 4;
this.MainTabs.SelectedIndexChanged += new System.EventHandler(this.MainTabs_SelectedIndexChanged);
//
// SourceFilesTab
//
this.SourceFilesTab.BackColor = System.Drawing.Color.Gainsboro;
this.SourceFilesTab.Controls.Add(this.RepoDownload);
this.SourceFilesTab.Controls.Add(this.TitleIDLabel);
this.SourceFilesTab.Controls.Add(this.GameNameLabel);
this.SourceFilesTab.Controls.Add(this.ITIDText);
this.SourceFilesTab.Controls.Add(this.IGNText);
this.SourceFilesTab.Controls.Add(this.BannerPreviewText);
this.SourceFilesTab.Controls.Add(this.BannerPreviewBox);
this.SourceFilesTab.Controls.Add(this.IconPreviewText);
this.SourceFilesTab.Controls.Add(this.IconPreviewBox);
this.SourceFilesTab.Controls.Add(this.BannerSourceDirectory);
this.SourceFilesTab.Controls.Add(this.BannerSourceButton);
this.SourceFilesTab.Controls.Add(this.IconSourceDirectory);
this.SourceFilesTab.Controls.Add(this.IconSourceButton);
this.SourceFilesTab.Controls.Add(this.GameSourceDirectory);
this.SourceFilesTab.Controls.Add(this.GameSourceButton);
this.SourceFilesTab.Location = new System.Drawing.Point(4, 22);
this.SourceFilesTab.Name = "SourceFilesTab";
this.SourceFilesTab.Size = new System.Drawing.Size(471, 345);
this.SourceFilesTab.TabIndex = 0;
this.SourceFilesTab.Text = "Required Source Files";
//
// RepoDownload
//
this.RepoDownload.BackColor = System.Drawing.Color.Silver;
this.RepoDownload.Location = new System.Drawing.Point(8, 140);
this.RepoDownload.Name = "RepoDownload";
this.RepoDownload.Size = new System.Drawing.Size(128, 49);
this.RepoDownload.TabIndex = 14;
this.RepoDownload.Text = "Download images from cucholix\'s repo";
this.RepoDownload.UseVisualStyleBackColor = false;
this.RepoDownload.Click += new System.EventHandler(this.RepoDownload_Click);
//
// TitleIDLabel
//
this.TitleIDLabel.BackColor = System.Drawing.Color.LightGray;
this.TitleIDLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.TitleIDLabel.Cursor = System.Windows.Forms.Cursors.Default;
this.TitleIDLabel.Location = new System.Drawing.Point(132, 111);
this.TitleIDLabel.Name = "TitleIDLabel";
this.TitleIDLabel.Size = new System.Drawing.Size(212, 16);
this.TitleIDLabel.TabIndex = 13;
//
// GameNameLabel
//
this.GameNameLabel.BackColor = System.Drawing.Color.LightGray;
this.GameNameLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.GameNameLabel.Cursor = System.Windows.Forms.Cursors.Default;
this.GameNameLabel.Location = new System.Drawing.Point(132, 93);
this.GameNameLabel.Name = "GameNameLabel";
this.GameNameLabel.Size = new System.Drawing.Size(212, 16);
this.GameNameLabel.TabIndex = 12;
//
// ITIDText
//
this.ITIDText.AutoSize = true;
this.ITIDText.Location = new System.Drawing.Point(13, 112);
this.ITIDText.Name = "ITIDText";
this.ITIDText.Size = new System.Drawing.Size(113, 13);
this.ITIDText.TabIndex = 11;
this.ITIDText.Text = "Internal Game Title ID:";
this.ITIDText.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// IGNText
//
this.IGNText.Location = new System.Drawing.Point(13, 94);
this.IGNText.Name = "IGNText";
this.IGNText.Size = new System.Drawing.Size(113, 13);
this.IGNText.TabIndex = 10;
this.IGNText.Text = "Internal Game Name:";
//
// BannerPreviewText
//
this.BannerPreviewText.Location = new System.Drawing.Point(144, 140);
this.BannerPreviewText.Name = "BannerPreviewText";
this.BannerPreviewText.Size = new System.Drawing.Size(320, 15);
this.BannerPreviewText.TabIndex = 9;
this.BannerPreviewText.Text = "Banner Preview (1280x720)";
this.BannerPreviewText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// BannerPreviewBox
//
this.BannerPreviewBox.BackColor = System.Drawing.Color.DimGray;
this.BannerPreviewBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.BannerPreviewBox.Location = new System.Drawing.Point(144, 158);
this.BannerPreviewBox.Name = "BannerPreviewBox";
this.BannerPreviewBox.Size = new System.Drawing.Size(320, 180);
this.BannerPreviewBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.BannerPreviewBox.TabIndex = 8;
this.BannerPreviewBox.TabStop = false;
//
// IconPreviewText
//
this.IconPreviewText.Location = new System.Drawing.Point(8, 192);
this.IconPreviewText.Name = "IconPreviewText";
this.IconPreviewText.Size = new System.Drawing.Size(128, 15);
this.IconPreviewText.TabIndex = 7;
this.IconPreviewText.Text = "Icon Preview (128x128)";
this.IconPreviewText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// IconPreviewBox
//
this.IconPreviewBox.BackColor = System.Drawing.Color.DimGray;
this.IconPreviewBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.IconPreviewBox.Location = new System.Drawing.Point(8, 210);
this.IconPreviewBox.Name = "IconPreviewBox";
this.IconPreviewBox.Size = new System.Drawing.Size(128, 128);
this.IconPreviewBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.IconPreviewBox.TabIndex = 6;
this.IconPreviewBox.TabStop = false;
//
// BannerSourceDirectory
//
this.BannerSourceDirectory.AutoEllipsis = true;
this.BannerSourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.BannerSourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.BannerSourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.BannerSourceDirectory.ForeColor = System.Drawing.Color.Red;
this.BannerSourceDirectory.Location = new System.Drawing.Point(72, 68);
this.BannerSourceDirectory.Name = "BannerSourceDirectory";
this.BannerSourceDirectory.Size = new System.Drawing.Size(395, 16);
this.BannerSourceDirectory.TabIndex = 5;
this.BannerSourceDirectory.Text = "Banner has not been specified";
//
// BannerSourceButton
//
this.BannerSourceButton.BackColor = System.Drawing.Color.Silver;
this.BannerSourceButton.Location = new System.Drawing.Point(6, 64);
this.BannerSourceButton.Name = "BannerSourceButton";
this.BannerSourceButton.Size = new System.Drawing.Size(60, 23);
this.BannerSourceButton.TabIndex = 4;
this.BannerSourceButton.Text = "Banner...";
this.BannerSourceButton.UseVisualStyleBackColor = false;
this.BannerSourceButton.Click += new System.EventHandler(this.BannerSourceButton_Click);
//
// IconSourceDirectory
//
this.IconSourceDirectory.AutoEllipsis = true;
this.IconSourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.IconSourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.IconSourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.IconSourceDirectory.ForeColor = System.Drawing.Color.Red;
this.IconSourceDirectory.Location = new System.Drawing.Point(71, 40);
this.IconSourceDirectory.Name = "IconSourceDirectory";
this.IconSourceDirectory.Size = new System.Drawing.Size(395, 16);
this.IconSourceDirectory.TabIndex = 3;
this.IconSourceDirectory.Text = "Icon has not been specified";
//
// IconSourceButton
//
this.IconSourceButton.BackColor = System.Drawing.Color.Silver;
this.IconSourceButton.Location = new System.Drawing.Point(6, 35);
this.IconSourceButton.Name = "IconSourceButton";
this.IconSourceButton.Size = new System.Drawing.Size(60, 23);
this.IconSourceButton.TabIndex = 2;
this.IconSourceButton.Text = "Icon...";
this.IconSourceButton.UseVisualStyleBackColor = false;
this.IconSourceButton.Click += new System.EventHandler(this.IconSourceButton_Click);
//
// GameSourceDirectory
//
this.GameSourceDirectory.AutoEllipsis = true;
this.GameSourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.GameSourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.GameSourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.GameSourceDirectory.ForeColor = System.Drawing.Color.Red;
this.GameSourceDirectory.Location = new System.Drawing.Point(71, 10);
this.GameSourceDirectory.Name = "GameSourceDirectory";
this.GameSourceDirectory.Size = new System.Drawing.Size(395, 16);
this.GameSourceDirectory.TabIndex = 1;
this.GameSourceDirectory.Text = "Game file has not been specified";
//
// GameSourceButton
//
this.GameSourceButton.BackColor = System.Drawing.Color.Silver;
this.GameSourceButton.Location = new System.Drawing.Point(6, 6);
this.GameSourceButton.Name = "GameSourceButton";
this.GameSourceButton.Size = new System.Drawing.Size(60, 23);
this.GameSourceButton.TabIndex = 0;
this.GameSourceButton.Text = "Game...";
this.GameSourceButton.UseVisualStyleBackColor = false;
this.GameSourceButton.Click += new System.EventHandler(this.GameSourceButton_Click);
//
// SourceFilesTab2
//
this.SourceFilesTab2.BackColor = System.Drawing.Color.Gainsboro;
this.SourceFilesTab2.Controls.Add(this.GC2SourceDirectory);
this.SourceFilesTab2.Controls.Add(this.GC2SourceButton);
this.SourceFilesTab2.Controls.Add(this.ToggleBootSoundLoop);
this.SourceFilesTab2.Controls.Add(this.BootSoundPreviewText);
this.SourceFilesTab2.Controls.Add(this.LogoPreviewText);
this.SourceFilesTab2.Controls.Add(this.LogoPreviewBox);
this.SourceFilesTab2.Controls.Add(this.DrcPreviewText);
this.SourceFilesTab2.Controls.Add(this.DrcPreviewBox);
this.SourceFilesTab2.Controls.Add(this.BootSoundDirectory);
this.SourceFilesTab2.Controls.Add(this.BootSoundButton);
this.SourceFilesTab2.Controls.Add(this.LogoSourceDirectory);
this.SourceFilesTab2.Controls.Add(this.LogoSourceButton);
this.SourceFilesTab2.Controls.Add(this.DrcSourceDirectory);
this.SourceFilesTab2.Controls.Add(this.DrcSourceButton);
this.SourceFilesTab2.Controls.Add(this.BootSoundPreviewButton);
this.SourceFilesTab2.Location = new System.Drawing.Point(4, 22);
this.SourceFilesTab2.Margin = new System.Windows.Forms.Padding(4);
this.SourceFilesTab2.Name = "SourceFilesTab2";
this.SourceFilesTab2.Padding = new System.Windows.Forms.Padding(4);
this.SourceFilesTab2.Size = new System.Drawing.Size(471, 345);
this.SourceFilesTab2.TabIndex = 5;
this.SourceFilesTab2.Text = "Optional Source Files";
//
// GC2SourceDirectory
//
this.GC2SourceDirectory.AutoEllipsis = true;
this.GC2SourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.GC2SourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.GC2SourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.GC2SourceDirectory.ForeColor = System.Drawing.Color.Red;
this.GC2SourceDirectory.Location = new System.Drawing.Point(122, 10);
this.GC2SourceDirectory.Name = "GC2SourceDirectory";
this.GC2SourceDirectory.Size = new System.Drawing.Size(342, 16);
this.GC2SourceDirectory.TabIndex = 20;
this.GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
//
// GC2SourceButton
//
this.GC2SourceButton.BackColor = System.Drawing.Color.Silver;
this.GC2SourceButton.Enabled = false;
this.GC2SourceButton.Location = new System.Drawing.Point(6, 6);
this.GC2SourceButton.Name = "GC2SourceButton";
this.GC2SourceButton.Size = new System.Drawing.Size(110, 23);
this.GC2SourceButton.TabIndex = 19;
this.GC2SourceButton.Text = "2nd GC Disc";
this.GC2SourceButton.UseVisualStyleBackColor = false;
this.GC2SourceButton.Click += new System.EventHandler(this.GC2SourceButton_Click);
//
// ToggleBootSoundLoop
//
this.ToggleBootSoundLoop.Location = new System.Drawing.Point(7, 119);
this.ToggleBootSoundLoop.Name = "ToggleBootSoundLoop";
this.ToggleBootSoundLoop.Size = new System.Drawing.Size(110, 17);
this.ToggleBootSoundLoop.TabIndex = 18;
this.ToggleBootSoundLoop.Text = "Loop Boot Sound";
this.ToggleBootSoundLoop.UseVisualStyleBackColor = true;
this.ToggleBootSoundLoop.CheckedChanged += new System.EventHandler(this.ToggleBootSoundLoop_CheckedChanged);
//
// BootSoundPreviewText
//
this.BootSoundPreviewText.Location = new System.Drawing.Point(8, 192);
this.BootSoundPreviewText.Name = "BootSoundPreviewText";
this.BootSoundPreviewText.Size = new System.Drawing.Size(128, 15);
this.BootSoundPreviewText.TabIndex = 16;
this.BootSoundPreviewText.Text = "Sound Preview";
this.BootSoundPreviewText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// LogoPreviewText
//
this.LogoPreviewText.Location = new System.Drawing.Point(8, 139);
this.LogoPreviewText.Name = "LogoPreviewText";
this.LogoPreviewText.Size = new System.Drawing.Size(128, 16);
this.LogoPreviewText.TabIndex = 15;
this.LogoPreviewText.Text = "Logo Preview (170x42)";
this.LogoPreviewText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// LogoPreviewBox
//
this.LogoPreviewBox.BackColor = System.Drawing.Color.DimGray;
this.LogoPreviewBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.LogoPreviewBox.Location = new System.Drawing.Point(8, 158);
this.LogoPreviewBox.Name = "LogoPreviewBox";
this.LogoPreviewBox.Size = new System.Drawing.Size(128, 30);
this.LogoPreviewBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.LogoPreviewBox.TabIndex = 14;
this.LogoPreviewBox.TabStop = false;
//
// DrcPreviewText
//
this.DrcPreviewText.Location = new System.Drawing.Point(144, 140);
this.DrcPreviewText.Name = "DrcPreviewText";
this.DrcPreviewText.Size = new System.Drawing.Size(320, 15);
this.DrcPreviewText.TabIndex = 13;
this.DrcPreviewText.Text = "GamePad Banner Preview (854x480)";
this.DrcPreviewText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// DrcPreviewBox
//
this.DrcPreviewBox.BackColor = System.Drawing.Color.DimGray;
this.DrcPreviewBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.DrcPreviewBox.Location = new System.Drawing.Point(144, 158);
this.DrcPreviewBox.Name = "DrcPreviewBox";
this.DrcPreviewBox.Size = new System.Drawing.Size(320, 180);
this.DrcPreviewBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.DrcPreviewBox.TabIndex = 12;
this.DrcPreviewBox.TabStop = false;
//
// BootSoundDirectory
//
this.BootSoundDirectory.AutoEllipsis = true;
this.BootSoundDirectory.BackColor = System.Drawing.Color.LightGray;
this.BootSoundDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.BootSoundDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.BootSoundDirectory.ForeColor = System.Drawing.Color.Red;
this.BootSoundDirectory.Location = new System.Drawing.Point(122, 97);
this.BootSoundDirectory.Name = "BootSoundDirectory";
this.BootSoundDirectory.Size = new System.Drawing.Size(342, 16);
this.BootSoundDirectory.TabIndex = 11;
this.BootSoundDirectory.Text = "Boot Sound has not been specified";
//
// BootSoundButton
//
this.BootSoundButton.BackColor = System.Drawing.Color.Silver;
this.BootSoundButton.Location = new System.Drawing.Point(6, 93);
this.BootSoundButton.Name = "BootSoundButton";
this.BootSoundButton.Size = new System.Drawing.Size(110, 23);
this.BootSoundButton.TabIndex = 10;
this.BootSoundButton.Text = "Boot Sound...";
this.BootSoundButton.UseVisualStyleBackColor = false;
this.BootSoundButton.Click += new System.EventHandler(this.BootSoundButton_Click);
//
// LogoSourceDirectory
//
this.LogoSourceDirectory.AutoEllipsis = true;
this.LogoSourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.LogoSourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.LogoSourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.LogoSourceDirectory.ForeColor = System.Drawing.Color.Red;
this.LogoSourceDirectory.Location = new System.Drawing.Point(122, 68);
this.LogoSourceDirectory.Name = "LogoSourceDirectory";
this.LogoSourceDirectory.Size = new System.Drawing.Size(342, 16);
this.LogoSourceDirectory.TabIndex = 9;
this.LogoSourceDirectory.Text = "Boot Logo has not been specified";
//
// LogoSourceButton
//
this.LogoSourceButton.BackColor = System.Drawing.Color.Silver;
this.LogoSourceButton.Location = new System.Drawing.Point(6, 64);
this.LogoSourceButton.Name = "LogoSourceButton";
this.LogoSourceButton.Size = new System.Drawing.Size(110, 23);
this.LogoSourceButton.TabIndex = 8;
this.LogoSourceButton.Text = "Boot Logo...";
this.LogoSourceButton.UseVisualStyleBackColor = false;
this.LogoSourceButton.Click += new System.EventHandler(this.LogoSourceButton_Click);
//
// DrcSourceDirectory
//
this.DrcSourceDirectory.AutoEllipsis = true;
this.DrcSourceDirectory.BackColor = System.Drawing.Color.LightGray;
this.DrcSourceDirectory.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.DrcSourceDirectory.Cursor = System.Windows.Forms.Cursors.Default;
this.DrcSourceDirectory.ForeColor = System.Drawing.Color.Red;
this.DrcSourceDirectory.Location = new System.Drawing.Point(122, 40);
this.DrcSourceDirectory.Name = "DrcSourceDirectory";
this.DrcSourceDirectory.Size = new System.Drawing.Size(342, 16);
this.DrcSourceDirectory.TabIndex = 7;
this.DrcSourceDirectory.Text = "GamePad Banner has not been specified";
//
// DrcSourceButton
//
this.DrcSourceButton.BackColor = System.Drawing.Color.Silver;
this.DrcSourceButton.Location = new System.Drawing.Point(6, 35);
this.DrcSourceButton.Name = "DrcSourceButton";
this.DrcSourceButton.Size = new System.Drawing.Size(110, 23);
this.DrcSourceButton.TabIndex = 6;
this.DrcSourceButton.Text = "GamePad Banner...";
this.DrcSourceButton.UseVisualStyleBackColor = false;
this.DrcSourceButton.Click += new System.EventHandler(this.DrcSourceButton_Click);
//
// BootSoundPreviewButton
//
this.BootSoundPreviewButton.BackColor = System.Drawing.Color.Silver;
this.BootSoundPreviewButton.Enabled = false;
this.BootSoundPreviewButton.Location = new System.Drawing.Point(8, 210);
this.BootSoundPreviewButton.Name = "BootSoundPreviewButton";
this.BootSoundPreviewButton.Size = new System.Drawing.Size(128, 128);
this.BootSoundPreviewButton.TabIndex = 17;
this.BootSoundPreviewButton.Text = "Play Sound";
this.BootSoundPreviewButton.UseVisualStyleBackColor = false;
this.BootSoundPreviewButton.Click += new System.EventHandler(this.BootSoundPreviewButton_Click);
//
// MetaTab
//
this.MetaTab.BackColor = System.Drawing.Color.Gainsboro;
this.MetaTab.Controls.Add(this.LRPatch);
this.MetaTab.Controls.Add(this.TutorialLink);
this.MetaTab.Controls.Add(this.AdvancedLabel5);
this.MetaTab.Controls.Add(this.GamePadEmuLayout);
this.MetaTab.Controls.Add(this.GamePadModeText);
this.MetaTab.Controls.Add(this.PackedTitleIDLine);
this.MetaTab.Controls.Add(this.PackedTitleIDText);
this.MetaTab.Controls.Add(this.EnablePackedLine2);
this.MetaTab.Controls.Add(this.PackedTitleLine2);
this.MetaTab.Controls.Add(this.PackedTitleLine1);
this.MetaTab.Controls.Add(this.PackedTitleText);
this.MetaTab.Location = new System.Drawing.Point(4, 22);
this.MetaTab.Margin = new System.Windows.Forms.Padding(4);
this.MetaTab.Name = "MetaTab";
this.MetaTab.Padding = new System.Windows.Forms.Padding(4);
this.MetaTab.Size = new System.Drawing.Size(471, 345);
this.MetaTab.TabIndex = 2;
this.MetaTab.Text = "GamePad/Meta Options";
//
// LRPatch
//
this.LRPatch.AutoSize = true;
this.LRPatch.Enabled = false;
this.LRPatch.Location = new System.Drawing.Point(9, 228);
this.LRPatch.Name = "LRPatch";
this.LRPatch.Size = new System.Drawing.Size(147, 17);
this.LRPatch.TabIndex = 17;
this.LRPatch.Text = "Swap L && R with ZL && ZR";
this.LRPatch.UseVisualStyleBackColor = true;
//
// TutorialLink
//
this.TutorialLink.AutoSize = true;
this.TutorialLink.BackColor = System.Drawing.Color.Gainsboro;
this.TutorialLink.Location = new System.Drawing.Point(392, 327);
this.TutorialLink.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.TutorialLink.Name = "TutorialLink";
this.TutorialLink.Size = new System.Drawing.Size(61, 13);
this.TutorialLink.TabIndex = 16;
this.TutorialLink.TabStop = true;
this.TutorialLink.Text = "Instructions";
this.TutorialLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.TutorialLink_LinkClicked);
//
// AdvancedLabel5
//
this.AdvancedLabel5.Location = new System.Drawing.Point(6, 248);
this.AdvancedLabel5.Name = "AdvancedLabel5";
this.AdvancedLabel5.Size = new System.Drawing.Size(457, 93);
this.AdvancedLabel5.TabIndex = 14;
this.AdvancedLabel5.Text = resources.GetString("AdvancedLabel5.Text");
this.AdvancedLabel5.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// GamePadEmuLayout
//
this.GamePadEmuLayout.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.OutsetDouble;
this.GamePadEmuLayout.ColumnCount = 2;
this.GamePadEmuLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 53.125F));
this.GamePadEmuLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 46.875F));
this.GamePadEmuLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 27F));
this.GamePadEmuLayout.Controls.Add(this.ForceCC, 0, 2);
this.GamePadEmuLayout.Controls.Add(this.NoGamePadEmu, 0, 0);
this.GamePadEmuLayout.Controls.Add(this.CCEmu, 1, 0);
this.GamePadEmuLayout.Controls.Add(this.ForceNoCC, 1, 2);
this.GamePadEmuLayout.Controls.Add(this.HorWiiMote, 1, 1);
this.GamePadEmuLayout.Controls.Add(this.VerWiiMote, 0, 1);
this.GamePadEmuLayout.Location = new System.Drawing.Point(8, 140);
this.GamePadEmuLayout.Name = "GamePadEmuLayout";
this.GamePadEmuLayout.RowCount = 3;
this.GamePadEmuLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.GamePadEmuLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.GamePadEmuLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.GamePadEmuLayout.Size = new System.Drawing.Size(455, 81);
this.GamePadEmuLayout.TabIndex = 8;
//
// ForceCC
//
this.ForceCC.AutoSize = true;
this.ForceCC.Location = new System.Drawing.Point(6, 58);
this.ForceCC.Name = "ForceCC";
this.ForceCC.Size = new System.Drawing.Size(198, 17);
this.ForceCC.TabIndex = 8;
this.ForceCC.Text = "**Force Classic Controller Connected";
this.ForceCC.UseVisualStyleBackColor = true;
this.ForceCC.CheckedChanged += new System.EventHandler(this.ForceCC_CheckedChanged);
//
// NoGamePadEmu
//
this.NoGamePadEmu.AutoSize = true;
this.NoGamePadEmu.Checked = true;
this.NoGamePadEmu.Location = new System.Drawing.Point(6, 6);
this.NoGamePadEmu.Name = "NoGamePadEmu";
this.NoGamePadEmu.Size = new System.Drawing.Size(225, 17);
this.NoGamePadEmu.TabIndex = 10;
this.NoGamePadEmu.TabStop = true;
this.NoGamePadEmu.Text = "No GamePad emulation, Wii Remotes only";
this.NoGamePadEmu.UseVisualStyleBackColor = true;
this.NoGamePadEmu.CheckedChanged += new System.EventHandler(this.NoGamePadEmu_CheckedChanged);
//
// CCEmu
//
this.CCEmu.AutoSize = true;
this.CCEmu.Location = new System.Drawing.Point(245, 6);
this.CCEmu.Name = "CCEmu";
this.CCEmu.Size = new System.Drawing.Size(154, 17);
this.CCEmu.TabIndex = 11;
this.CCEmu.Text = "Classic Controller Emulation";
this.CCEmu.UseVisualStyleBackColor = true;
this.CCEmu.CheckedChanged += new System.EventHandler(this.CCEmu_CheckedChanged);
//
// ForceNoCC
//
this.ForceNoCC.AutoSize = true;
this.ForceNoCC.Location = new System.Drawing.Point(245, 58);
this.ForceNoCC.Name = "ForceNoCC";
this.ForceNoCC.Size = new System.Drawing.Size(160, 17);
this.ForceNoCC.TabIndex = 9;
this.ForceNoCC.Text = "**Force No Classic Controller";
this.ForceNoCC.UseVisualStyleBackColor = true;
this.ForceNoCC.CheckedChanged += new System.EventHandler(this.ForceWiiMote_CheckedChanged);
//
// HorWiiMote
//
this.HorWiiMote.AutoSize = true;
this.HorWiiMote.Location = new System.Drawing.Point(245, 32);
this.HorWiiMote.Name = "HorWiiMote";
this.HorWiiMote.Size = new System.Drawing.Size(182, 17);
this.HorWiiMote.TabIndex = 13;
this.HorWiiMote.Text = "*Horizontal Wii Remote emulation";
this.HorWiiMote.UseVisualStyleBackColor = true;
this.HorWiiMote.CheckedChanged += new System.EventHandler(this.HorWiiMote_CheckedChanged);
//
// VerWiiMote
//
this.VerWiiMote.AutoSize = true;
this.VerWiiMote.Location = new System.Drawing.Point(6, 32);
this.VerWiiMote.Name = "VerWiiMote";
this.VerWiiMote.Size = new System.Drawing.Size(171, 17);
this.VerWiiMote.TabIndex = 12;
this.VerWiiMote.Text = "*Vertical Wii Remote Emulation";
this.VerWiiMote.UseVisualStyleBackColor = true;
this.VerWiiMote.CheckedChanged += new System.EventHandler(this.VerWiiMote_CheckedChanged);
//
// GamePadModeText
//
this.GamePadModeText.Location = new System.Drawing.Point(0, 124);
this.GamePadModeText.Name = "GamePadModeText";
this.GamePadModeText.Size = new System.Drawing.Size(471, 13);
this.GamePadModeText.TabIndex = 7;
this.GamePadModeText.Text = "GamePad Emulation Mode (Only applicable for Wii Retail Injections / vWii NAND Tit" +
"le Launcher)";
this.GamePadModeText.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// PackedTitleIDLine
//
this.PackedTitleIDLine.Location = new System.Drawing.Point(6, 91);
this.PackedTitleIDLine.MaxLength = 16;
this.PackedTitleIDLine.Name = "PackedTitleIDLine";
this.PackedTitleIDLine.Size = new System.Drawing.Size(265, 20);
this.PackedTitleIDLine.TabIndex = 5;
//
// PackedTitleIDText
//
this.PackedTitleIDText.AutoSize = true;
this.PackedTitleIDText.Location = new System.Drawing.Point(3, 74);
this.PackedTitleIDText.Name = "PackedTitleIDText";
this.PackedTitleIDText.Size = new System.Drawing.Size(282, 13);
this.PackedTitleIDText.TabIndex = 4;
this.PackedTitleIDText.Text = "Pre-generated Title ID (Changing this is not recommended)";
//
// EnablePackedLine2
//
this.EnablePackedLine2.AutoSize = true;
this.EnablePackedLine2.Location = new System.Drawing.Point(279, 52);
this.EnablePackedLine2.Name = "EnablePackedLine2";
this.EnablePackedLine2.Size = new System.Drawing.Size(77, 17);
this.EnablePackedLine2.TabIndex = 3;
this.EnablePackedLine2.Text = "Use Line 2";
this.EnablePackedLine2.UseVisualStyleBackColor = true;
this.EnablePackedLine2.CheckedChanged += new System.EventHandler(this.EnablePackedLine2_CheckedChanged);
//
// PackedTitleLine2
//
this.PackedTitleLine2.BackColor = System.Drawing.Color.Silver;
this.PackedTitleLine2.Location = new System.Drawing.Point(6, 50);
this.PackedTitleLine2.MaxLength = 32;
this.PackedTitleLine2.Name = "PackedTitleLine2";
this.PackedTitleLine2.ReadOnly = true;
this.PackedTitleLine2.Size = new System.Drawing.Size(265, 20);
this.PackedTitleLine2.TabIndex = 2;
this.PackedTitleLine2.Text = "(Optional) Line 2";
//
// PackedTitleLine1
//
this.PackedTitleLine1.Location = new System.Drawing.Point(6, 23);
this.PackedTitleLine1.MaxLength = 32;
this.PackedTitleLine1.Name = "PackedTitleLine1";
this.PackedTitleLine1.Size = new System.Drawing.Size(265, 20);
this.PackedTitleLine1.TabIndex = 1;
//
// PackedTitleText
//
this.PackedTitleText.AutoSize = true;
this.PackedTitleText.Location = new System.Drawing.Point(3, 6);
this.PackedTitleText.Name = "PackedTitleText";
this.PackedTitleText.Size = new System.Drawing.Size(381, 13);
this.PackedTitleText.TabIndex = 0;
this.PackedTitleText.Text = "Name to use for Packaged Title (ACCENT CHARACTERS NOT SUPPORTED)";
//
// AdvancedTab
//
this.AdvancedTab.BackColor = System.Drawing.Color.Gainsboro;
this.AdvancedTab.Controls.Add(this.Wiimmfi);
this.AdvancedTab.Controls.Add(this.WiiVMC);
this.AdvancedTab.Controls.Add(this.DisableGamePad);
this.AdvancedTab.Controls.Add(this.label2);
this.AdvancedTab.Controls.Add(this.SaveAncastKeyButton);
this.AdvancedTab.Controls.Add(this.DisableNintendontAutoboot);
this.AdvancedTab.Controls.Add(this.DisableTrimming);
this.AdvancedTab.Controls.Add(this.Force43NAND);
this.AdvancedTab.Controls.Add(this.DisablePassthrough);
this.AdvancedTab.Controls.Add(this.MainDolLabel);
this.AdvancedTab.Controls.Add(this.CustomMainDol);
this.AdvancedTab.Controls.Add(this.MainDolSourceButton);
this.AdvancedTab.Controls.Add(this.label1);
this.AdvancedTab.Controls.Add(this.Force43NINTENDONT);
this.AdvancedTab.Controls.Add(this.sign_c2w_patcher_link);
this.AdvancedTab.Controls.Add(this.AdvancedLabel2);
this.AdvancedTab.Controls.Add(this.C2WPatchFlag);
this.AdvancedTab.Controls.Add(this.AncastKey);
this.AdvancedTab.Controls.Add(this.AdvancedLabel1);
this.AdvancedTab.Location = new System.Drawing.Point(4, 22);
this.AdvancedTab.Margin = new System.Windows.Forms.Padding(4);
this.AdvancedTab.Name = "AdvancedTab";
this.AdvancedTab.Padding = new System.Windows.Forms.Padding(4);
this.AdvancedTab.Size = new System.Drawing.Size(471, 345);
this.AdvancedTab.TabIndex = 3;
this.AdvancedTab.Text = "Advanced";
//
// Wiimmfi
//
this.Wiimmfi.AutoSize = true;
this.Wiimmfi.Location = new System.Drawing.Point(10, 307);
this.Wiimmfi.Name = "Wiimmfi";
this.Wiimmfi.Size = new System.Drawing.Size(348, 17);
this.Wiimmfi.TabIndex = 27;
this.Wiimmfi.Text = "Patch game to use the Wiimmfi server for online play (Wii Retail only)";
this.Wiimmfi.UseVisualStyleBackColor = true;
//
// WiiVMC
//
this.WiiVMC.AutoSize = true;
this.WiiVMC.Location = new System.Drawing.Point(10, 284);
this.WiiVMC.Name = "WiiVMC";
this.WiiVMC.Size = new System.Drawing.Size(447, 17);
this.WiiVMC.TabIndex = 26;
this.WiiVMC.Text = "Patch video mode with Wii-VMC (Wii Retail only, opens a new window during convers" +
"ion)";
this.WiiVMC.UseVisualStyleBackColor = true;
//
// DisableGamePad
//
this.DisableGamePad.AutoSize = true;
this.DisableGamePad.Location = new System.Drawing.Point(10, 137);
this.DisableGamePad.Name = "DisableGamePad";
this.DisableGamePad.Size = new System.Drawing.Size(300, 17);
this.DisableGamePad.TabIndex = 25;
this.DisableGamePad.Text = "Don\'t use GamePad as controller (Won\'t prompt for usage)";
this.DisableGamePad.UseVisualStyleBackColor = true;
this.DisableGamePad.CheckedChanged += new System.EventHandler(this.DisableGamePad_CheckedChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(6, 245);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(329, 13);
this.label2.TabIndex = 24;
this.label2.Text = "Wii Retail Injection / vWii NAND Title Launcher Patches";
//
// SaveAncastKeyButton
//
this.SaveAncastKeyButton.BackColor = System.Drawing.Color.Silver;
this.SaveAncastKeyButton.Enabled = false;
this.SaveAncastKeyButton.Location = new System.Drawing.Point(281, 181);
this.SaveAncastKeyButton.Name = "SaveAncastKeyButton";
this.SaveAncastKeyButton.Size = new System.Drawing.Size(63, 23);
this.SaveAncastKeyButton.TabIndex = 23;
this.SaveAncastKeyButton.Text = "Save Key";
this.SaveAncastKeyButton.UseVisualStyleBackColor = false;
this.SaveAncastKeyButton.Click += new System.EventHandler(this.SaveAncastKeyButton_Click);
//
// DisableNintendontAutoboot
//
this.DisableNintendontAutoboot.AutoSize = true;
this.DisableNintendontAutoboot.Location = new System.Drawing.Point(10, 70);
this.DisableNintendontAutoboot.Name = "DisableNintendontAutoboot";
this.DisableNintendontAutoboot.Size = new System.Drawing.Size(107, 17);
this.DisableNintendontAutoboot.TabIndex = 22;
this.DisableNintendontAutoboot.Text = "Disable Autoboot";
this.DisableNintendontAutoboot.UseVisualStyleBackColor = true;
this.DisableNintendontAutoboot.CheckedChanged += new System.EventHandler(this.NintendontAutoboot_CheckedChanged);
//
// DisableTrimming
//
this.DisableTrimming.AutoSize = true;
this.DisableTrimming.Location = new System.Drawing.Point(10, 261);
this.DisableTrimming.Name = "DisableTrimming";
this.DisableTrimming.Size = new System.Drawing.Size(208, 17);
this.DisableTrimming.TabIndex = 21;
this.DisableTrimming.Text = "Don\'t trim game output (Wii Retail only)";
this.DisableTrimming.UseVisualStyleBackColor = true;
this.DisableTrimming.CheckedChanged += new System.EventHandler(this.DisableTrimming_CheckedChanged);
//
// Force43NAND
//
this.Force43NAND.AutoSize = true;
this.Force43NAND.Location = new System.Drawing.Point(225, 261);
this.Force43NAND.Name = "Force43NAND";
this.Force43NAND.Size = new System.Drawing.Size(185, 17);
this.Force43NAND.TabIndex = 20;
this.Force43NAND.Text = "Force 4:3 (vWii NAND Titles only)";
this.Force43NAND.UseVisualStyleBackColor = true;
//
// DisablePassthrough
//
this.DisablePassthrough.AutoSize = true;
this.DisablePassthrough.Location = new System.Drawing.Point(10, 114);
this.DisablePassthrough.Name = "DisablePassthrough";
this.DisablePassthrough.Size = new System.Drawing.Size(270, 17);
this.DisablePassthrough.TabIndex = 19;
this.DisablePassthrough.Text = "Disable Wii Remote passthrough in GamePad mode";
this.DisablePassthrough.UseVisualStyleBackColor = true;
this.DisablePassthrough.CheckedChanged += new System.EventHandler(this.DisablePassthrough_CheckedChanged);
//
// MainDolLabel
//
this.MainDolLabel.AutoEllipsis = true;
this.MainDolLabel.BackColor = System.Drawing.Color.LightGray;
this.MainDolLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.MainDolLabel.Cursor = System.Windows.Forms.Cursors.Default;
this.MainDolLabel.Location = new System.Drawing.Point(255, 44);
this.MainDolLabel.Name = "MainDolLabel";
this.MainDolLabel.Size = new System.Drawing.Size(211, 20);
this.MainDolLabel.TabIndex = 18;
this.MainDolLabel.Text = "<- Specify custom main.dol file";
this.MainDolLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// CustomMainDol
//
this.CustomMainDol.AutoSize = true;
this.CustomMainDol.Location = new System.Drawing.Point(10, 47);
this.CustomMainDol.Name = "CustomMainDol";
this.CustomMainDol.Size = new System.Drawing.Size(203, 17);
this.CustomMainDol.TabIndex = 17;
this.CustomMainDol.Text = "Specify custom Nintendont Forwarder";
this.CustomMainDol.UseVisualStyleBackColor = true;
this.CustomMainDol.CheckedChanged += new System.EventHandler(this.CustomMainDol_CheckedChanged);
//
// MainDolSourceButton
//
this.MainDolSourceButton.AutoSize = true;
this.MainDolSourceButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.MainDolSourceButton.BackColor = System.Drawing.Color.LightGray;
this.MainDolSourceButton.Enabled = false;
this.MainDolSourceButton.Location = new System.Drawing.Point(223, 41);
this.MainDolSourceButton.Name = "MainDolSourceButton";
this.MainDolSourceButton.Size = new System.Drawing.Size(26, 23);
this.MainDolSourceButton.TabIndex = 16;
this.MainDolSourceButton.Text = "...";
this.MainDolSourceButton.UseVisualStyleBackColor = false;
this.MainDolSourceButton.Click += new System.EventHandler(this.MainDolSourceButton_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(6, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(116, 13);
this.label1.TabIndex = 15;
this.label1.Text = "Nintendont Options";
//
// Force43NINTENDONT
//
this.Force43NINTENDONT.AutoSize = true;
this.Force43NINTENDONT.Location = new System.Drawing.Point(10, 24);
this.Force43NINTENDONT.Name = "Force43NINTENDONT";
this.Force43NINTENDONT.Size = new System.Drawing.Size(441, 17);
this.Force43NINTENDONT.TabIndex = 14;
this.Force43NINTENDONT.Text = "Force 4:3 for Nintendont - (Disables \"Force Widescreen\" and \"WiiU Widescreen\" Fla" +
"gs)";
this.Force43NINTENDONT.UseVisualStyleBackColor = true;
this.Force43NINTENDONT.CheckedChanged += new System.EventHandler(this.Force43NINTENDONT_CheckedChanged);
//
// sign_c2w_patcher_link
//
this.sign_c2w_patcher_link.AutoSize = true;
this.sign_c2w_patcher_link.Location = new System.Drawing.Point(303, 219);
this.sign_c2w_patcher_link.Name = "sign_c2w_patcher_link";
this.sign_c2w_patcher_link.Size = new System.Drawing.Size(94, 13);
this.sign_c2w_patcher_link.TabIndex = 10;
this.sign_c2w_patcher_link.TabStop = true;
this.sign_c2w_patcher_link.Text = "sign_c2w_patcher";
this.sign_c2w_patcher_link.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.sign_c2w_patcher_link_LinkClicked);
//
// AdvancedLabel2
//
this.AdvancedLabel2.Location = new System.Drawing.Point(7, 206);
this.AdvancedLabel2.Name = "AdvancedLabel2";
this.AdvancedLabel2.Size = new System.Drawing.Size(457, 32);
this.AdvancedLabel2.TabIndex = 4;
this.AdvancedLabel2.Text = "cafe2wii patching unlocks the vWii clock speed for supported homebrew like WiiSXR" +
" or Nintendont. cafe2wii patched titles MUST be launched using:";
//
// C2WPatchFlag
//
this.C2WPatchFlag.AutoSize = true;
this.C2WPatchFlag.Location = new System.Drawing.Point(10, 160);
this.C2WPatchFlag.Name = "C2WPatchFlag";
this.C2WPatchFlag.Size = new System.Drawing.Size(266, 17);
this.C2WPatchFlag.TabIndex = 3;
this.C2WPatchFlag.Text = "Enable cafe2wii patching (NOT RECOMMENDED)";
this.C2WPatchFlag.UseVisualStyleBackColor = true;
this.C2WPatchFlag.CheckedChanged += new System.EventHandler(this.C2WPatchFlag_CheckedChanged);
//
// AncastKey
//
this.AncastKey.BackColor = System.Drawing.Color.Silver;
this.AncastKey.Location = new System.Drawing.Point(9, 183);
this.AncastKey.MaxLength = 32;
this.AncastKey.Name = "AncastKey";
this.AncastKey.ReadOnly = true;
this.AncastKey.Size = new System.Drawing.Size(266, 20);
this.AncastKey.TabIndex = 2;
this.AncastKey.Text = "Wii U Starbuck Ancast Key Required";
//
// AdvancedLabel1
//
this.AdvancedLabel1.AutoSize = true;
this.AdvancedLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.AdvancedLabel1.Location = new System.Drawing.Point(7, 98);
this.AdvancedLabel1.Name = "AdvancedLabel1";
this.AdvancedLabel1.Size = new System.Drawing.Size(138, 13);
this.AdvancedLabel1.TabIndex = 0;
this.AdvancedLabel1.Text = "Wii Homebrew Patches";
//
// BuildTab
//
this.BuildTab.BackColor = System.Drawing.Color.Gainsboro;
this.BuildTab.Controls.Add(this.AdvanceCheck);
this.BuildTab.Controls.Add(this.BuildStatus);
this.BuildTab.Controls.Add(this.BuildProgress);
this.BuildTab.Controls.Add(this.SaveTitleKeyButton);
this.BuildTab.Controls.Add(this.SaveCommonKeyButton);
this.BuildTab.Controls.Add(this.TheBigOneTM);
this.BuildTab.Controls.Add(this.KeysCheck);
this.BuildTab.Controls.Add(this.MetaCheck);
this.BuildTab.Controls.Add(this.SourceCheck);
this.BuildTab.Controls.Add(this.RequirementsLabel);
this.BuildTab.Controls.Add(this.TitleKey);
this.BuildTab.Controls.Add(this.RHFKeyLabel);
this.BuildTab.Controls.Add(this.CommonLabel);
this.BuildTab.Controls.Add(this.WiiUCommonKey);
this.BuildTab.Location = new System.Drawing.Point(4, 22);
this.BuildTab.Margin = new System.Windows.Forms.Padding(4);
this.BuildTab.Name = "BuildTab";
this.BuildTab.Padding = new System.Windows.Forms.Padding(4);
this.BuildTab.Size = new System.Drawing.Size(471, 345);
this.BuildTab.TabIndex = 4;
this.BuildTab.Text = "Build Title";
//
// AdvanceCheck
//
this.AdvanceCheck.AutoSize = true;
this.AdvanceCheck.BackColor = System.Drawing.Color.Transparent;
this.AdvanceCheck.ForeColor = System.Drawing.Color.Red;
this.AdvanceCheck.Location = new System.Drawing.Point(8, 170);
this.AdvanceCheck.Name = "AdvanceCheck";
this.AdvanceCheck.Size = new System.Drawing.Size(160, 13);
this.AdvanceCheck.TabIndex = 16;
this.AdvanceCheck.Text = "No advanced options conflicting";
//
// BuildStatus
//
this.BuildStatus.BackColor = System.Drawing.Color.Gainsboro;
this.BuildStatus.Location = new System.Drawing.Point(8, 196);
this.BuildStatus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.BuildStatus.Name = "BuildStatus";
this.BuildStatus.Size = new System.Drawing.Size(455, 13);
this.BuildStatus.TabIndex = 15;
//
// BuildProgress
//
this.BuildProgress.BackColor = System.Drawing.Color.Gainsboro;
this.BuildProgress.Location = new System.Drawing.Point(7, 213);
this.BuildProgress.Margin = new System.Windows.Forms.Padding(4);
this.BuildProgress.Name = "BuildProgress";
this.BuildProgress.Size = new System.Drawing.Size(456, 28);
this.BuildProgress.TabIndex = 14;
//
// SaveTitleKeyButton
//
this.SaveTitleKeyButton.AutoSize = true;
this.SaveTitleKeyButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.SaveTitleKeyButton.BackColor = System.Drawing.Color.Silver;
this.SaveTitleKeyButton.Location = new System.Drawing.Point(300, 78);
this.SaveTitleKeyButton.Name = "SaveTitleKeyButton";
this.SaveTitleKeyButton.Size = new System.Drawing.Size(63, 23);
this.SaveTitleKeyButton.TabIndex = 13;
this.SaveTitleKeyButton.Text = "Save Key";
this.SaveTitleKeyButton.UseVisualStyleBackColor = false;
this.SaveTitleKeyButton.Click += new System.EventHandler(this.SaveTitleKeyButton_Click);
//
// SaveCommonKeyButton
//
this.SaveCommonKeyButton.AutoSize = true;
this.SaveCommonKeyButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.SaveCommonKeyButton.BackColor = System.Drawing.Color.Silver;
this.SaveCommonKeyButton.Location = new System.Drawing.Point(300, 22);
this.SaveCommonKeyButton.Name = "SaveCommonKeyButton";
this.SaveCommonKeyButton.Size = new System.Drawing.Size(63, 23);
this.SaveCommonKeyButton.TabIndex = 12;
this.SaveCommonKeyButton.Text = "Save Key";
this.SaveCommonKeyButton.UseVisualStyleBackColor = false;
this.SaveCommonKeyButton.Click += new System.EventHandler(this.SaveCommonKeyButton_Click);
//
// TheBigOneTM
//
this.TheBigOneTM.BackColor = System.Drawing.Color.Silver;
this.TheBigOneTM.Enabled = false;
this.TheBigOneTM.Font = new System.Drawing.Font("Microsoft Sans Serif", 50F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TheBigOneTM.Location = new System.Drawing.Point(7, 248);
this.TheBigOneTM.Name = "TheBigOneTM";
this.TheBigOneTM.Size = new System.Drawing.Size(457, 90);
this.TheBigOneTM.TabIndex = 11;
this.TheBigOneTM.Text = "BUILD";
this.TheBigOneTM.UseVisualStyleBackColor = false;
this.TheBigOneTM.Click += new System.EventHandler(this.TheBigOneTM_Click);
//
// KeysCheck
//
this.KeysCheck.AutoSize = true;
this.KeysCheck.BackColor = System.Drawing.Color.Transparent;
this.KeysCheck.ForeColor = System.Drawing.Color.Red;
this.KeysCheck.Location = new System.Drawing.Point(8, 183);
this.KeysCheck.Name = "KeysCheck";
this.KeysCheck.Size = new System.Drawing.Size(178, 13);
this.KeysCheck.TabIndex = 10;
this.KeysCheck.Text = "Required keys are properly specified";
//
// MetaCheck
//
this.MetaCheck.AutoSize = true;
this.MetaCheck.BackColor = System.Drawing.Color.Transparent;
this.MetaCheck.ForeColor = System.Drawing.Color.Red;
this.MetaCheck.Location = new System.Drawing.Point(8, 157);
this.MetaCheck.Name = "MetaCheck";
this.MetaCheck.Size = new System.Drawing.Size(111, 13);
this.MetaCheck.TabIndex = 8;
this.MetaCheck.Text = "Meta options are valid";
//
// SourceCheck
//
this.SourceCheck.AutoSize = true;
this.SourceCheck.BackColor = System.Drawing.Color.Transparent;
this.SourceCheck.ForeColor = System.Drawing.Color.Red;
this.SourceCheck.Location = new System.Drawing.Point(8, 144);
this.SourceCheck.Name = "SourceCheck";
this.SourceCheck.Size = new System.Drawing.Size(168, 13);
this.SourceCheck.TabIndex = 7;
this.SourceCheck.Text = "Source Files are properly specified";
//
// RequirementsLabel
//
this.RequirementsLabel.AutoSize = true;
this.RequirementsLabel.BackColor = System.Drawing.Color.Transparent;
this.RequirementsLabel.Location = new System.Drawing.Point(4, 131);
this.RequirementsLabel.Name = "RequirementsLabel";
this.RequirementsLabel.Size = new System.Drawing.Size(246, 13);
this.RequirementsLabel.TabIndex = 6;
this.RequirementsLabel.Text = "Requirements: RED = NOT MET / GREEN = MET";
//
// TitleKey
//
this.TitleKey.Location = new System.Drawing.Point(6, 78);
this.TitleKey.MaxLength = 32;
this.TitleKey.Name = "TitleKey";
this.TitleKey.Size = new System.Drawing.Size(288, 20);
this.TitleKey.TabIndex = 4;
//
// RHFKeyLabel
//
this.RHFKeyLabel.AutoSize = true;
this.RHFKeyLabel.BackColor = System.Drawing.Color.Transparent;
this.RHFKeyLabel.Location = new System.Drawing.Point(6, 62);
this.RHFKeyLabel.Name = "RHFKeyLabel";
this.RHFKeyLabel.Size = new System.Drawing.Size(357, 13);
this.RHFKeyLabel.TabIndex = 3;
this.RHFKeyLabel.Text = "Rhythm Heaven Fever [USA] Title Key - (Find it on \"that one title key site\")";
//
// CommonLabel
//
this.CommonLabel.AutoSize = true;
this.CommonLabel.BackColor = System.Drawing.Color.Transparent;
this.CommonLabel.Location = new System.Drawing.Point(6, 6);
this.CommonLabel.Name = "CommonLabel";
this.CommonLabel.Size = new System.Drawing.Size(155, 13);
this.CommonLabel.TabIndex = 1;
this.CommonLabel.Text = "Wii U Common Key - (Google it)";
//
// WiiUCommonKey
//
this.WiiUCommonKey.Location = new System.Drawing.Point(6, 22);
this.WiiUCommonKey.MaxLength = 32;
this.WiiUCommonKey.Name = "WiiUCommonKey";
this.WiiUCommonKey.Size = new System.Drawing.Size(288, 20);
this.WiiUCommonKey.TabIndex = 0;
//
// SDCardStuff
//
this.SDCardStuff.Location = new System.Drawing.Point(325, 28);
this.SDCardStuff.Name = "SDCardStuff";
this.SDCardStuff.Size = new System.Drawing.Size(157, 19);
this.SDCardStuff.TabIndex = 5;
this.SDCardStuff.Text = "Nintendont SD Card Menu";
this.SDCardStuff.UseVisualStyleBackColor = true;
this.SDCardStuff.Click += new System.EventHandler(this.SDCardStuff_Click);
//
// GCRetail
//
this.GCRetail.AutoSize = true;
this.GCRetail.Location = new System.Drawing.Point(325, 3);
this.GCRetail.Name = "GCRetail";
this.GCRetail.Size = new System.Drawing.Size(113, 17);
this.GCRetail.TabIndex = 3;
this.GCRetail.Text = "GC Retail Injection";
this.GCRetail.UseVisualStyleBackColor = true;
this.GCRetail.CheckedChanged += new System.EventHandler(this.GCRetail_CheckedChanged);
//
// WiiNAND
//
this.WiiNAND.AutoSize = true;
this.WiiNAND.Location = new System.Drawing.Point(3, 28);
this.WiiNAND.Name = "WiiNAND";
this.WiiNAND.Size = new System.Drawing.Size(151, 17);
this.WiiNAND.TabIndex = 2;
this.WiiNAND.Text = "vWii NAND Title Launcher";
this.WiiNAND.UseVisualStyleBackColor = true;
this.WiiNAND.CheckedChanged += new System.EventHandler(this.WiiNAND_CheckedChanged);
//
// WiiHomebrew
//
this.WiiHomebrew.AutoSize = true;
this.WiiHomebrew.Location = new System.Drawing.Point(164, 3);
this.WiiHomebrew.Name = "WiiHomebrew";
this.WiiHomebrew.Size = new System.Drawing.Size(137, 17);
this.WiiHomebrew.TabIndex = 1;
this.WiiHomebrew.Text = "Wii Homebrew Injection";
this.WiiHomebrew.UseVisualStyleBackColor = true;
this.WiiHomebrew.CheckedChanged += new System.EventHandler(this.WiiHomebrew_CheckedChanged);
//
// OpenIcon
//
this.OpenIcon.FileName = "iconTex";
this.OpenIcon.Filter = resources.GetString("OpenIcon.Filter");
this.OpenIcon.Title = "Your image will be converted to PNG (Lossless) to be later processed.";
//
// OpenBanner
//
this.OpenBanner.FileName = "bootTvTex";
this.OpenBanner.Filter = resources.GetString("OpenBanner.Filter");
this.OpenBanner.Title = "Your image will be converted to PNG (Lossless) to be later processed.";
//
// OpenGame
//
this.OpenGame.FileName = "game";
this.OpenGame.Filter = "Wii Dumps (*.iso,*.wbfs,*.iso.dec)|*.iso;*.wbfs;*.iso.dec";
this.OpenGame.Title = "Specify your game file";
//
// OpenDrc
//
this.OpenDrc.FileName = "bootDrcTex";
this.OpenDrc.Filter = resources.GetString("OpenDrc.Filter");
this.OpenDrc.Title = "Your image will be converted to PNG (Lossless) to be later processed.";
//
// OpenLogo
//
this.OpenLogo.FileName = "bootLogoTex";
this.OpenLogo.Filter = resources.GetString("OpenLogo.Filter");
this.OpenLogo.Title = "Your image will be converted to PNG (Lossless) to be later processed.";
//
// OpenBootSound
//
this.OpenBootSound.FileName = "BootSound";
this.OpenBootSound.Filter = "Supported Sound Files (*.wav)|*wav";
this.OpenBootSound.Title = "Specify your boot sound";
//
// OpenMainDol
//
this.OpenMainDol.FileName = "main";
this.OpenMainDol.Filter = "Nintendont Forwarder (*.dol)|*.dol";
this.OpenMainDol.Title = "Specify your replacement Nintendont Forwarder";
//
// OpenGC2
//
this.OpenGC2.FileName = "disc2";
this.OpenGC2.Filter = "GameCube Disk 2 (*.gcm,*.iso)|*.gcm;*.iso";
this.OpenGC2.Title = "Specify your GameCube game\'s 2nd disc";
//
// WiiVC_Injector
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(485, 427);
this.Controls.Add(this.MainTableLayout);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.Name = "WiiVC_Injector";
this.Text = "TeconMoon\'s WiiVC Injector - [3.0.7]";
this.MainTableLayout.ResumeLayout(false);
this.MainTableLayout.PerformLayout();
this.MainTabs.ResumeLayout(false);
this.SourceFilesTab.ResumeLayout(false);
this.SourceFilesTab.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.BannerPreviewBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreviewBox)).EndInit();
this.SourceFilesTab2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.LogoPreviewBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.DrcPreviewBox)).EndInit();
this.MetaTab.ResumeLayout(false);
this.MetaTab.PerformLayout();
this.GamePadEmuLayout.ResumeLayout(false);
this.GamePadEmuLayout.PerformLayout();
this.AdvancedTab.ResumeLayout(false);
this.AdvancedTab.PerformLayout();
this.BuildTab.ResumeLayout(false);
this.BuildTab.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel MainTableLayout;
private System.Windows.Forms.RadioButton WiiRetail;
private System.Windows.Forms.RadioButton WiiHomebrew;
private System.Windows.Forms.RadioButton WiiNAND;
private System.Windows.Forms.RadioButton GCRetail;
private System.Windows.Forms.TabControl MainTabs;
private System.Windows.Forms.TabPage SourceFilesTab;
private System.Windows.Forms.TabPage MetaTab;
private System.Windows.Forms.TabPage AdvancedTab;
private System.Windows.Forms.TabPage BuildTab;
private System.Windows.Forms.Label GameSourceDirectory;
private System.Windows.Forms.Button GameSourceButton;
private System.Windows.Forms.Label BannerPreviewText;
private System.Windows.Forms.PictureBox BannerPreviewBox;
private System.Windows.Forms.Label IconPreviewText;
private System.Windows.Forms.PictureBox IconPreviewBox;
private System.Windows.Forms.Label BannerSourceDirectory;
private System.Windows.Forms.Button BannerSourceButton;
private System.Windows.Forms.Label IconSourceDirectory;
private System.Windows.Forms.Button IconSourceButton;
private System.Windows.Forms.Label IGNText;
private System.Windows.Forms.Label ITIDText;
private System.Windows.Forms.Label TitleIDLabel;
private System.Windows.Forms.Label GameNameLabel;
private System.Windows.Forms.TextBox PackedTitleLine2;
private System.Windows.Forms.TextBox PackedTitleLine1;
private System.Windows.Forms.Label PackedTitleText;
private System.Windows.Forms.CheckBox EnablePackedLine2;
private System.Windows.Forms.Label GamePadModeText;
private System.Windows.Forms.TextBox PackedTitleIDLine;
private System.Windows.Forms.Label PackedTitleIDText;
private System.Windows.Forms.Label AdvancedLabel2;
private System.Windows.Forms.CheckBox C2WPatchFlag;
private System.Windows.Forms.TextBox AncastKey;
private System.Windows.Forms.Label AdvancedLabel1;
private System.Windows.Forms.LinkLabel sign_c2w_patcher_link;
private System.Windows.Forms.Button TheBigOneTM;
private System.Windows.Forms.Label KeysCheck;
private System.Windows.Forms.Label MetaCheck;
private System.Windows.Forms.Label SourceCheck;
private System.Windows.Forms.Label RequirementsLabel;
private System.Windows.Forms.TextBox TitleKey;
private System.Windows.Forms.Label RHFKeyLabel;
private System.Windows.Forms.Label CommonLabel;
private System.Windows.Forms.TextBox WiiUCommonKey;
private System.Windows.Forms.TabPage SourceFilesTab2;
private System.Windows.Forms.CheckBox Force43NINTENDONT;
private System.Windows.Forms.CheckBox Force43NAND;
private System.Windows.Forms.CheckBox DisablePassthrough;
private System.Windows.Forms.Label MainDolLabel;
private System.Windows.Forms.CheckBox CustomMainDol;
private System.Windows.Forms.Button MainDolSourceButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label BootSoundDirectory;
private System.Windows.Forms.Button BootSoundButton;
private System.Windows.Forms.Label LogoSourceDirectory;
private System.Windows.Forms.Button LogoSourceButton;
private System.Windows.Forms.Label DrcSourceDirectory;
private System.Windows.Forms.Button DrcSourceButton;
private System.Windows.Forms.Label DrcPreviewText;
private System.Windows.Forms.PictureBox DrcPreviewBox;
private System.Windows.Forms.CheckBox ToggleBootSoundLoop;
private System.Windows.Forms.Button BootSoundPreviewButton;
private System.Windows.Forms.Label BootSoundPreviewText;
private System.Windows.Forms.Label LogoPreviewText;
private System.Windows.Forms.PictureBox LogoPreviewBox;
private System.Windows.Forms.OpenFileDialog OpenIcon;
private System.Windows.Forms.OpenFileDialog OpenBanner;
private System.Windows.Forms.OpenFileDialog OpenGame;
private System.Windows.Forms.OpenFileDialog OpenDrc;
private System.Windows.Forms.OpenFileDialog OpenLogo;
private System.Windows.Forms.OpenFileDialog OpenBootSound;
private System.Windows.Forms.CheckBox DisableTrimming;
private System.Windows.Forms.LinkLabel TutorialLink;
private System.Windows.Forms.Label AdvancedLabel5;
private System.Windows.Forms.TableLayoutPanel GamePadEmuLayout;
private System.Windows.Forms.RadioButton ForceCC;
private System.Windows.Forms.RadioButton NoGamePadEmu;
private System.Windows.Forms.RadioButton CCEmu;
private System.Windows.Forms.RadioButton HorWiiMote;
private System.Windows.Forms.RadioButton VerWiiMote;
private System.Windows.Forms.RadioButton ForceNoCC;
private System.Windows.Forms.Button RepoDownload;
private System.Windows.Forms.CheckBox DisableNintendontAutoboot;
private System.Windows.Forms.OpenFileDialog OpenMainDol;
private System.Windows.Forms.Button SaveAncastKeyButton;
private System.Windows.Forms.Button SaveTitleKeyButton;
private System.Windows.Forms.Button SaveCommonKeyButton;
private System.Windows.Forms.ProgressBar BuildProgress;
private System.Windows.Forms.Label BuildStatus;
private System.Windows.Forms.Label AdvanceCheck;
private System.Windows.Forms.FolderBrowserDialog OutputFolderSelect;
private System.Windows.Forms.Button SDCardStuff;
private System.Windows.Forms.Label GC2SourceDirectory;
private System.Windows.Forms.Button GC2SourceButton;
private System.Windows.Forms.OpenFileDialog OpenGC2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.CheckBox DisableGamePad;
private System.Windows.Forms.CheckBox LRPatch;
private System.Windows.Forms.CheckBox WiiVMC;
private System.Windows.Forms.CheckBox Wiimmfi;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Media;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
using System.Security.Cryptography;
using System.Net;
using System.IO.Compression;
using System.Diagnostics;
using Microsoft.VisualBasic.FileIO;
using System.Runtime.InteropServices;
namespace TeconMoon_s_WiiVC_Injector
{
public partial class WiiVC_Injector : Form
{
public WiiVC_Injector()
{
InitializeComponent();
//Check for if .Net v3.5 component is installed
CheckForNet35();
//Delete Temporary Root Folder if it exists
if (Directory.Exists(TempRootPath))
{
Directory.Delete(TempRootPath, true);
}
Directory.CreateDirectory(TempRootPath);
//Extract Tools to temp folder
File.WriteAllBytes(TempRootPath + "TOOLDIR.zip", Properties.Resources.TOOLDIR);
ZipFile.ExtractToDirectory(TempRootPath + "TOOLDIR.zip", TempRootPath);
File.Delete(TempRootPath + "TOOLDIR.zip");
//Create Source and Build directories
Directory.CreateDirectory(TempSourcePath);
Directory.CreateDirectory(TempBuildPath);
}
//Testing
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int GetShortPathName(String pathName, StringBuilder shortName, int cbShortName);
public string ShortenPath(string pathtomakesafe)
{
StringBuilder sb = new StringBuilder(1000);
long n = GetShortPathName(pathtomakesafe, sb, 1000);
if (n == 0) // check for errors
{
return Marshal.GetLastWin32Error().ToString();
}
else
{
return sb.ToString();
}
}
//Specify public variables for later use (ASK ALAN)
string SystemType = "wii";
string TitleIDHex;
string TitleIDText;
string InternalGameName;
string TempString = "";
bool FlagWBFS;
bool FlagNKIT;
bool FlagNASOS;
bool FlagGameSpecified;
bool FlagGC2Specified;
bool FlagIconSpecified;
bool FlagBannerSpecified;
bool FlagDrcSpecified;
bool FlagLogoSpecified;
bool FlagBootSoundSpecified;
bool BuildFlagSource;
bool BuildFlagMeta;
bool BuildFlagAdvance = true;
bool BuildFlagKeys;
bool CommonKeyGood;
bool TitleKeyGood;
bool AncastKeyGood;
bool FlagRepo;
bool HideProcess = true;
int TitleIDInt;
long GameType;
char TempChar;
string CucholixRepoID = "";
string sSourceData;
byte[] tmpSource;
byte[] tmpHash;
string AncastKeyHash;
string WiiUCommonKeyHash;
string TitleKeyHash;
string DRCUSE = "1";
string pngtemppath;
string LoopString = " -noLoop";
string nfspatchflag = "";
string passpatch = " -passthrough";
string wiimmfiOption = " --wiimmfi";
ProcessStartInfo Launcher;
string LauncherExeFile;
string LauncherExeArgs;
string JNUSToolDownloads = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\JNUSToolDownloads\\";
string TempRootPath = Path.GetTempPath() + "WiiVCInjector\\";
string TempSourcePath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\";
string TempBuildPath = Path.GetTempPath() + "WiiVCInjector\\BUILDDIR\\";
string TempToolsPath = Path.GetTempPath() + "WiiVCInjector\\TOOLDIR\\";
string TempIconPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png";
string TempBannerPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png";
string TempDrcPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootDrcTex.png";
string TempLogoPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootLogoTex.png";
string TempSoundPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootSound.wav";
string OGfilepath;
//call options
public void LaunchProgram()
{
Launcher = new ProcessStartInfo(LauncherExeFile);
Launcher.Arguments = LauncherExeArgs;
if (HideProcess)
{
Launcher.WindowStyle = ProcessWindowStyle.Hidden;
}
Process.Start(Launcher).WaitForExit();
}
public static bool CheckForInternetConnection()
{
try
{
using (var client = new WebClient())
{
using (client.OpenRead("http://clients3.google.com/generate_204"))
{
return true;
}
}
}
catch
{
return false;
}
}
public static string GetFullPath(string fileName)
{
var values = Environment.GetEnvironmentVariable("PATH");
foreach (var path in values.Split(';'))
{
var fullPath = Path.Combine(path, fileName);
if (File.Exists(fullPath))
return fullPath;
}
return null;
}
public void CleanUp()
{
var sourceFilesToDelete = Directory.EnumerateFiles(TempSourcePath, "*.*", System.IO.SearchOption.AllDirectories);
var buildFilesToDelete = Directory.EnumerateFiles(TempBuildPath, "*.*", System.IO.SearchOption.AllDirectories);
foreach (var file in sourceFilesToDelete)
File.Delete(file);
foreach (var file in buildFilesToDelete)
File.Delete(file);
IconPreviewBox.Image = null;
BannerPreviewBox.Image = null;
FlagIconSpecified = false;
FlagBannerSpecified = false;
IconSourceDirectory.Text = "Icon file has not been specified";
BannerSourceDirectory.Text = "Banner file has not been specified";
}
public void DownloadFromRepo()
{
var client = new WebClient();
IconPreviewBox.Load("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID + "/iconTex.png");
if (File.Exists(Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png")) { File.Delete(Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png"); }
client.DownloadFile(IconPreviewBox.ImageLocation, Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png");
IconSourceDirectory.Text = "iconTex.png downloaded from Cucholix's Repo";
IconSourceDirectory.ForeColor = Color.Black;
FlagIconSpecified = true;
BannerPreviewBox.Load("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID + "/bootTvTex.png");
if (File.Exists(Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png")) { File.Delete(Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png"); }
client.DownloadFile(BannerPreviewBox.ImageLocation, Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png");
BannerSourceDirectory.Text = "bootTvTex.png downloaded from Cucholix's Repo";
BannerSourceDirectory.ForeColor = Color.Black;
FlagBannerSpecified = true;
FlagRepo = true;
}
//Called from RepoDownload_Click to check if files exist before downloading
private bool RemoteFileExists(string url)
{
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
return false;
}
}
private void CheckForNet35()
{
if (Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5") == null)
{
MessageBox.Show(".NET Framework 3.5 was not detected on your machine, which is required by programs used during the build process." +
"\n\nYou should be able to enable this in \"Programs and Features\" under \"Turn Windows features on or off\", or download it from Microsoft." +
"\n\nClick OK to close the injector and open \"Programs and Features\"...", ".NET Framework v3.5 not found..."
, MessageBoxButtons.OK
, MessageBoxIcon.Exclamation
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
HideProcess = false;
LauncherExeFile = "appwiz.cpl";
LauncherExeArgs = "";
LaunchProgram();
Environment.Exit(0);
}
}
//Cleanup when program is closed
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown) { Directory.Delete(TempRootPath, true); return; }
// Confirm user wants to close
switch (MessageBox.Show(this, "Are you sure you want to close?"
, "Closing"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Question
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000))
{
case DialogResult.No:
e.Cancel = true;
break;
default:
Directory.Delete(TempRootPath, true);
break;
}
}
//Radio Buttons for desired injection type (Check with Alan on having one command to clear variables instead of specifying them all 4 times)
private void WiiRetail_CheckedChanged(object sender, EventArgs e)
{
if (WiiRetail.Checked)
{
WiiVMC.Enabled = true;
Wiimmfi.Enabled = true;
RepoDownload.Enabled = true;
GameSourceButton.Enabled = true;
GameSourceButton.Text = "Game...";
OpenGame.FileName = "game";
OpenGame.Filter = "Wii Dumps (*.iso,*.wbfs,*.iso.dec)|*.iso;*.wbfs;*.iso.dec";
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
SystemType = "wii";
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
GC2SourceButton.Enabled = false;
GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
GC2SourceDirectory.ForeColor = Color.Red;
FlagGC2Specified = false;
if (NoGamePadEmu.Checked == false & CCEmu.Checked == false & HorWiiMote.Checked == false & VerWiiMote.Checked == false & ForceCC.Checked == false & ForceNoCC.Checked == false)
{
NoGamePadEmu.Checked = true;
GamePadEmuLayout.Enabled = true;
DRCUSE = "1";
}
Force43NINTENDONT.Checked = false;
Force43NINTENDONT.Enabled = false;
CustomMainDol.Checked = false;
CustomMainDol.Enabled = false;
DisableNintendontAutoboot.Checked = false;
DisableNintendontAutoboot.Enabled = false;
DisablePassthrough.Checked = false;
DisablePassthrough.Enabled = false;
DisableGamePad.Checked = false;
DisableGamePad.Enabled = false;
C2WPatchFlag.Checked = false;
C2WPatchFlag.Enabled = false;
if (ForceCC.Checked) { DisableTrimming.Checked = false; DisableTrimming.Enabled = false; } else { DisableTrimming.Enabled = true; }
Force43NAND.Checked = false;
Force43NAND.Enabled = false;
}
}
private void WiiHomebrew_CheckedChanged(object sender, EventArgs e)
{
if (WiiHomebrew.Checked)
{
WiiVMC.Checked = false;
WiiVMC.Enabled = false;
Wiimmfi.Checked = false;
Wiimmfi.Enabled = false;
RepoDownload.Enabled = false;
GameSourceButton.Enabled = true;
GameSourceButton.Text = "Game...";
OpenGame.FileName = "boot.dol";
OpenGame.Filter = "DOL Files (*.dol)|*.dol";
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
SystemType = "dol";
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
DRCUSE = "65537";
GC2SourceButton.Enabled = false;
GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
GC2SourceDirectory.ForeColor = Color.Red;
FlagGC2Specified = false;
NoGamePadEmu.Checked = false;
CCEmu.Checked = false;
HorWiiMote.Checked = false;
VerWiiMote.Checked = false;
ForceCC.Checked = false;
ForceNoCC.Checked = false;
GamePadEmuLayout.Enabled = false;
LRPatch.Checked = false;
LRPatch.Enabled = false;
Force43NINTENDONT.Checked = false;
Force43NINTENDONT.Enabled = false;
CustomMainDol.Checked = false;
CustomMainDol.Enabled = false;
DisableNintendontAutoboot.Checked = false;
DisableNintendontAutoboot.Enabled = false;
DisablePassthrough.Enabled = true;
DisableGamePad.Enabled = true;
C2WPatchFlag.Enabled = true;
DisableTrimming.Checked = false;
DisableTrimming.Enabled = false;
Force43NAND.Checked = false;
Force43NAND.Enabled = false;
}
}
private void WiiNAND_CheckedChanged(object sender, EventArgs e)
{
if (WiiNAND.Checked)
{
WiiNANDLoopback:
WiiVMC.Checked = false;
WiiVMC.Enabled = false;
Wiimmfi.Checked = false;
Wiimmfi.Enabled = false;
RepoDownload.Enabled = true;
GameSourceButton.Enabled = false;
GameSourceButton.Text = "TitleID...";
OpenGame.FileName = "NULL";
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
GC2SourceButton.Enabled = false;
GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
GC2SourceDirectory.ForeColor = Color.Red;
FlagGC2Specified = false;
Force43NINTENDONT.Checked = false;
Force43NINTENDONT.Enabled = false;
CustomMainDol.Checked = false;
CustomMainDol.Enabled = false;
DisableNintendontAutoboot.Checked = false;
DisableNintendontAutoboot.Enabled = false;
DisablePassthrough.Checked = false;
DisablePassthrough.Enabled = false;
DisableGamePad.Checked = false;
DisableGamePad.Enabled = false;
C2WPatchFlag.Checked = false;
C2WPatchFlag.Enabled = false;
DisableTrimming.Checked = false;
DisableTrimming.Enabled = false;
Force43NAND.Enabled = true;
if (NoGamePadEmu.Checked == false & CCEmu.Checked == false & HorWiiMote.Checked == false & VerWiiMote.Checked == false & ForceCC.Checked == false & ForceNoCC.Checked == false)
{
NoGamePadEmu.Checked = true;
GamePadEmuLayout.Enabled = true;
DRCUSE = "1";
}
GameSourceDirectory.Text = Microsoft.VisualBasic.Interaction.InputBox("Enter your installed Wii Channel's 4-letter Title ID. If you don't know it, open a WAD for the channel in something like ShowMiiWads to view it.", "Enter your WAD's Title ID", "XXXX", 0, 0);
if (GameSourceDirectory.Text == "")
{
GameSourceDirectory.ForeColor = Color.Red;
GameSourceDirectory.Text = "Title ID specification cancelled, reselect vWii NAND Title Launcher to specify";
FlagGameSpecified = false;
goto skipWiiNandLoopback;
}
if (GameSourceDirectory.Text.Length == 4)
{
GameSourceDirectory.Text = GameSourceDirectory.Text.ToUpper();
GameSourceDirectory.ForeColor = Color.Black;
FlagGameSpecified = true;
SystemType = "wiiware";
GameNameLabel.Text = "N/A";
TitleIDLabel.Text = "N/A";
TitleIDText = GameSourceDirectory.Text;
CucholixRepoID = GameSourceDirectory.Text;
char[] HexIDBuild = GameSourceDirectory.Text.ToCharArray();
StringBuilder stringBuilder = new StringBuilder();
foreach (char c in HexIDBuild)
{
stringBuilder.Append(((Int16)c).ToString("X"));
}
PackedTitleIDLine.Text = "00050002" + stringBuilder.ToString();
}
else
{
GameSourceDirectory.ForeColor = Color.Red;
GameSourceDirectory.Text = "Invalid Title ID";
FlagGameSpecified = false;
MessageBox.Show("Only 4 characters can be used, try again. Example: The Star Fox 64 (USA) Channel's Title ID is NADE01, so you would specify NADE as the Title ID"
, "Invalid Title ID"
, MessageBoxButtons.OK
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1,
(MessageBoxOptions)0x40000);
goto WiiNANDLoopback;
}
skipWiiNandLoopback:;
}
}
private void GCRetail_CheckedChanged(object sender, EventArgs e)
{
if (GCRetail.Checked)
{
WiiVMC.Checked = false;
WiiVMC.Enabled = false;
Wiimmfi.Checked = false;
Wiimmfi.Enabled = false;
RepoDownload.Enabled = true;
GameSourceButton.Enabled = true;
GameSourceButton.Text = "Game...";
OpenGame.FileName = "game";
OpenGame.Filter = "GameCube Dumps (*.gcm,*.iso)|*.gcm;*.iso";
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
SystemType = "gcn";
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
DRCUSE = "65537";
GC2SourceButton.Enabled = true;
NoGamePadEmu.Checked = false;
CCEmu.Checked = false;
HorWiiMote.Checked = false;
VerWiiMote.Checked = false;
ForceCC.Checked = false;
ForceNoCC.Checked = false;
GamePadEmuLayout.Enabled = false;
LRPatch.Checked = false;
LRPatch.Enabled = false;
Force43NINTENDONT.Enabled = true;
CustomMainDol.Enabled = true;
DisableNintendontAutoboot.Enabled = true;
DisablePassthrough.Checked = false;
DisablePassthrough.Enabled = false;
DisableGamePad.Enabled = true;
C2WPatchFlag.Checked = false;
C2WPatchFlag.Enabled = false;
DisableTrimming.Checked = false;
DisableTrimming.Enabled = false;
Force43NAND.Checked = false;
Force43NAND.Enabled = false;
}
}
private void SDCardStuff_Click(object sender, EventArgs e)
{
new SDCardMenu().Show();
}
//Performs actions when switching tabs
private void MainTabs_SelectedIndexChanged(object sender, EventArgs e)
{
//Disables Radio buttons when switching away from the main tab
if (MainTabs.SelectedTab == SourceFilesTab)
{
WiiRetail.Enabled = true;
WiiHomebrew.Enabled = true;
WiiNAND.Enabled = true;
GCRetail.Enabled = true;
}
else
{
WiiRetail.Enabled = false;
WiiHomebrew.Enabled = false;
WiiNAND.Enabled = false;
GCRetail.Enabled = false;
}
//Check for building requirements when switching to the Build tab
if (MainTabs.SelectedTab == BuildTab)
{
//Initialize Registry values if they don't exist and pull values from them if they do
if (Registry.CurrentUser.CreateSubKey("WiiVCInjector").GetValue("WiiUCommonKey") == null)
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("WiiUCommonKey", "00000000000000000000000000000000");
}
WiiUCommonKey.Text = Registry.CurrentUser.OpenSubKey("WiiVCInjector").GetValue("WiiUCommonKey").ToString();
if (Registry.CurrentUser.CreateSubKey("WiiVCInjector").GetValue("TitleKey") == null)
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("TitleKey", "00000000000000000000000000000000");
}
TitleKey.Text = Registry.CurrentUser.OpenSubKey("WiiVCInjector").GetValue("TitleKey").ToString();
Registry.CurrentUser.OpenSubKey("WiiVCInjector").Close();
//Generate MD5 hashes for loaded keys and check them
WiiUCommonKey.Text = WiiUCommonKey.Text.ToUpper();
sSourceData = WiiUCommonKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
WiiUCommonKeyHash = BitConverter.ToString(tmpHash);
if (WiiUCommonKeyHash == "35-AC-59-94-97-22-79-33-1D-97-09-4F-A2-FB-97-FC")
{
CommonKeyGood = true;
WiiUCommonKey.ReadOnly = true;
WiiUCommonKey.BackColor = Color.Lime;
}
else
{
CommonKeyGood = false;
WiiUCommonKey.ReadOnly = false;
WiiUCommonKey.BackColor = Color.White;
}
TitleKey.Text = TitleKey.Text.ToUpper();
sSourceData = TitleKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
TitleKeyHash = BitConverter.ToString(tmpHash);
if (TitleKeyHash == "F9-4B-D8-8E-BB-7A-A9-38-67-E6-30-61-5F-27-1C-9F")
{
TitleKeyGood = true;
TitleKey.ReadOnly = true;
TitleKey.BackColor = Color.Lime;
}
else
{
TitleKeyGood = false;
TitleKey.ReadOnly = false;
TitleKey.BackColor = Color.White;
}
AncastKey.Text = AncastKey.Text.ToUpper();
sSourceData = AncastKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
AncastKeyHash = BitConverter.ToString(tmpHash);
if (AncastKeyHash == "31-8D-1F-9D-98-FB-08-E7-7C-7F-E1-77-AA-49-05-43")
{
AncastKeyGood = true;
}
else
{
AncastKeyGood = false;
}
//Final check for if all requirements are good
if (FlagGameSpecified & FlagIconSpecified & FlagBannerSpecified)
{
SourceCheck.ForeColor = Color.Green;
BuildFlagSource = true;
}
else
{
SourceCheck.ForeColor = Color.Red;
BuildFlagSource = false;
}
if (PackedTitleLine1.Text != "" & PackedTitleIDLine.TextLength == 16)
{
MetaCheck.ForeColor = Color.Green;
BuildFlagMeta = true;
}
else
{
MetaCheck.ForeColor = Color.Red;
BuildFlagMeta = false;
}
if (CustomMainDol.Checked == false)
{
AdvanceCheck.ForeColor = Color.Green;
BuildFlagAdvance = true;
}
else
{
if (Path.GetExtension(OpenMainDol.FileName) == ".dol")
{
AdvanceCheck.ForeColor = Color.Green;
BuildFlagAdvance = true;
}
else
{
AdvanceCheck.ForeColor = Color.Red;
BuildFlagAdvance = false;
}
}
//Skip Ancast Key if box not checked in advanced
if (C2WPatchFlag.Checked == false)
{
if (CommonKeyGood & TitleKeyGood)
{
KeysCheck.ForeColor = Color.Green;
BuildFlagKeys = true;
}
else
{
KeysCheck.ForeColor = Color.Red;
BuildFlagKeys = false;
}
}
else
{
if (CommonKeyGood & TitleKeyGood & AncastKeyGood)
{
KeysCheck.ForeColor = Color.Green;
BuildFlagKeys = true;
}
else
{
KeysCheck.ForeColor = Color.Red;
BuildFlagKeys = false;
}
}
//Enable Build Button
if (BuildFlagSource & BuildFlagMeta & BuildFlagAdvance & BuildFlagKeys)
{
TheBigOneTM.Enabled = true;
}
else
{
TheBigOneTM.Enabled = false;
}
}
}
//Events for the "Required Source Files" Tab
private void GameSourceButton_Click(object sender, EventArgs e)
{
if (OpenGame.ShowDialog() == DialogResult.OK)
{
// delete any previous files
CleanUp();
GameSourceDirectory.Text = OpenGame.FileName;
GameSourceDirectory.ForeColor = Color.Black;
FlagGameSpecified = true;
byte[] idBytes = new byte[4];
//Get values from game file
using (var reader = new BinaryReader(File.OpenRead(OpenGame.FileName)))
{
reader.BaseStream.Position = 0;
TitleIDInt = reader.ReadInt32();
idBytes = BitConverter.GetBytes(TitleIDInt);
if (!BitConverter.IsLittleEndian)
{
Array.Reverse(idBytes);
}
string idString = new string(Encoding.ASCII.GetChars(idBytes));
//WBFS Check
if (idString == "WBFS") //Performs actions if the header indicates a WBFS file
{
FlagWBFS = true;
reader.BaseStream.Position = 0x200;
TitleIDInt = reader.ReadInt32();
reader.BaseStream.Position = 0x218;
GameType = reader.ReadInt64();
TempString = "";
reader.BaseStream.Position = 0x220;
while ((int)(TempChar = reader.ReadChar()) != 0) TempString = TempString + TempChar;
InternalGameName = TempString;
TempString = "";
reader.BaseStream.Position = 0x200;
while ((int)(TempChar = reader.ReadChar()) != 0) TempString = TempString + TempChar;
CucholixRepoID = TempString;
}
else
{
if (TitleIDInt == 65536) //Performs actions if the header indicates a DOL file
{
reader.BaseStream.Position = 0x2A0;
TitleIDInt = reader.ReadInt32();
InternalGameName = "N/A";
}
else //Performs actions if the header indicates a normal Wii / GC iso
{
FlagWBFS = false;
FlagNKIT = false;
FlagNASOS = false;
uint startOffset = 0;
// NASOS check
if (idString == "WII5")
{
FlagNASOS = true;
startOffset = 0x1182800;
}
else if (idString == "WII9")
{
FlagNASOS = true;
startOffset = 0x1FB5000;
}
// read game info
reader.BaseStream.Position = startOffset;
TitleIDInt = reader.ReadInt32();
reader.BaseStream.Position = startOffset + 0x18;
GameType = reader.ReadInt64();
TempString = "";
reader.BaseStream.Position = startOffset + 0x20;
while ((int)(TempChar = reader.ReadChar()) != 0)
{
TempString = TempString + TempChar;
}
InternalGameName = TempString;
TempString = "";
reader.BaseStream.Position = startOffset + 0x00;
while ((int)(TempChar = reader.ReadChar()) != 0)
{
TempString = TempString + TempChar;
}
CucholixRepoID = TempString;
// NKIT check
if(!FlagNASOS)
{
reader.BaseStream.Position = 0x200;
idBytes = reader.ReadBytes(4);
idString = new string(Encoding.ASCII.GetChars(idBytes));
if (idString == "NKIT")
{
FlagNKIT = true;
}
}
}
}
}
//Flag if GameType Int doesn't match current SystemType
if (SystemType == "wii" && GameType != 2745048157)
{
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
MessageBox.Show("This is not a Wii image. It will not be loaded."
, "Error"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
goto EndOfGameSelection;
}
if (SystemType == "gcn" && GameType != 4440324665927270400)
{
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
MessageBox.Show("This is not a GameCube image. It will not be loaded."
, "Error"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
goto EndOfGameSelection;
}
GameNameLabel.Text = InternalGameName;
PackedTitleLine1.Text = InternalGameName;
//Convert pulled Title ID Int to Hex for use with Wii U Title ID
idBytes = BitConverter.GetBytes(TitleIDInt);
if (!BitConverter.IsLittleEndian)
{
Array.Reverse(idBytes);
}
TitleIDHex = BitConverter.ToString(idBytes).Replace("-", "");
if (SystemType == "dol")
{
TitleIDLabel.Text = TitleIDHex;
PackedTitleIDLine.Text = ("00050002" + TitleIDHex);
TitleIDText = "BOOT";
}
else
{
TitleIDText = string.Join("", System.Text.RegularExpressions.Regex.Split(TitleIDHex, "(?<=\\G..)(?!$)").Select(x => (char)Convert.ToByte(x, 16)));
TitleIDLabel.Text = (TitleIDText + " / " + TitleIDHex);
PackedTitleIDLine.Text = ("00050002" + TitleIDHex);
}
}
else
{
GameSourceDirectory.Text = "Game file has not been specified";
GameSourceDirectory.ForeColor = Color.Red;
FlagGameSpecified = false;
GameNameLabel.Text = "";
TitleIDLabel.Text = "";
TitleIDInt = 0;
TitleIDHex = "";
GameType = 0;
CucholixRepoID = "";
PackedTitleLine1.Text = "";
PackedTitleIDLine.Text = "";
goto EndOfGameSelection;
}
EndOfGameSelection:;
}
private void IconSourceButton_Click(object sender, EventArgs e)
{
if (FlagRepo)
{
IconPreviewBox.Image = null;
BannerPreviewBox.Image = null;
FlagIconSpecified = false;
FlagBannerSpecified = false;
FlagRepo = false;
pngtemppath = "";
}
MessageBox.Show("Make sure your icon is 128x128 (1:1) to prevent distortion"
, "Icon Size Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OpenIcon.ShowDialog() == DialogResult.OK)
{
if (Path.GetExtension(OpenIcon.FileName) == ".tga")
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
LauncherExeFile = TempToolsPath + "IMG\\tga2pngcmd.exe";
LauncherExeArgs = "-i \"" + OpenIcon.FileName + "\" -o \"" + Path.GetDirectoryName(pngtemppath) + "\"";
LaunchProgram();
File.Move(Path.GetDirectoryName(pngtemppath) + "\\" + Path.GetFileNameWithoutExtension(OpenIcon.FileName) + ".png", pngtemppath);
}
else
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\iconTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
Image.FromFile(OpenIcon.FileName).Save(pngtemppath, System.Drawing.Imaging.ImageFormat.Png);
}
FileStream tempstream = new FileStream(pngtemppath, FileMode.Open);
var tempimage = Image.FromStream(tempstream);
IconPreviewBox.Image = tempimage;
tempstream.Close();
IconSourceDirectory.Text = OpenIcon.FileName;
IconSourceDirectory.ForeColor = Color.Black;
FlagIconSpecified = true;
FlagRepo = false;
}
else
{
IconPreviewBox.Image = null;
IconSourceDirectory.Text = "Icon has not been specified";
IconSourceDirectory.ForeColor = Color.Red;
FlagIconSpecified = false;
FlagRepo = false;
pngtemppath = "";
}
}
private void BannerSourceButton_Click(object sender, EventArgs e)
{
if (FlagRepo)
{
BannerPreviewBox.Image = null;
BannerPreviewBox.Image = null;
FlagBannerSpecified = false;
FlagBannerSpecified = false;
FlagRepo = false;
pngtemppath = "";
}
MessageBox.Show("Make sure your Banner is 1280x720 (16:9) to prevent distortion"
, "Banner Size Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OpenBanner.ShowDialog() == DialogResult.OK)
{
if (Path.GetExtension(OpenBanner.FileName) == ".tga")
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
LauncherExeFile = TempToolsPath + "IMG\\tga2pngcmd.exe";
LauncherExeArgs = "-i \"" + OpenBanner.FileName + "\" -o \"" + Path.GetDirectoryName(pngtemppath) + "\"";
LaunchProgram();
File.Move(Path.GetDirectoryName(pngtemppath) + "\\" + Path.GetFileNameWithoutExtension(OpenBanner.FileName) + ".png", pngtemppath);
}
else
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootTvTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
Image.FromFile(OpenBanner.FileName).Save(pngtemppath, System.Drawing.Imaging.ImageFormat.Png);
}
FileStream tempstream = new FileStream(pngtemppath, FileMode.Open);
var tempimage = Image.FromStream(tempstream);
BannerPreviewBox.Image = tempimage;
tempstream.Close();
BannerSourceDirectory.Text = OpenBanner.FileName;
BannerSourceDirectory.ForeColor = Color.Black;
FlagBannerSpecified = true;
FlagRepo = false;
}
else
{
BannerPreviewBox.Image = null;
BannerSourceDirectory.Text = "Banner has not been specified";
BannerSourceDirectory.ForeColor = Color.Red;
FlagBannerSpecified = false;
FlagRepo = false;
pngtemppath = "";
}
}
private void RepoDownload_Click(object sender, EventArgs e)
{
if (CucholixRepoID == "")
{
MessageBox.Show("Please select your game before using this option"
, "No game specified"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
FlagRepo = false;
}
else
{
if (SystemType == "wiiware")
{
if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID + "/iconTex.png") == true)
{
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "E" + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "E";
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "P" + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "P";
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "J" + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "J";
DownloadFromRepo();
}
else
{
FlagRepo = false;
if (MessageBox.Show("Cucholix's Repo does not have assets for your game. You will need to provide your own. Would you like to visit the GBAtemp request thread?"
, "Game not found on Repo"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Asterisk
, MessageBoxDefaultButton.Button1,
(MessageBoxOptions)0x40000) == DialogResult.Yes)
{
System.Diagnostics.Process.Start("https://gbatemp.net/threads/483080/");
}
}
}
else
{
if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID + "/iconTex.png") == true)
{
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "E" + CucholixRepoID.Substring(4, 2) + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "E" + CucholixRepoID.Substring(4, 2);
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "P" + CucholixRepoID.Substring(4, 2) + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "P" + CucholixRepoID.Substring(4, 2);
DownloadFromRepo();
}
else if (RemoteFileExists("https://raw.githubusercontent.com/cucholix/wiivc-bis/master/" + SystemType + "/image/" + CucholixRepoID.Substring(0, 3) + "J" + CucholixRepoID.Substring(4, 2) + "/iconTex.png") == true)
{
CucholixRepoID = CucholixRepoID.Substring(0, 3) + "J" + CucholixRepoID.Substring(4, 2);
DownloadFromRepo();
}
else
{
FlagRepo = false;
if (MessageBox.Show("Cucholix's Repo does not have assets for your game. You will need to provide your own. Would you like to visit the GBAtemp request thread?"
, "Game not found on Repo"
, MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000) == DialogResult.Yes)
{
System.Diagnostics.Process.Start("https://gbatemp.net/threads/483080/");
}
}
}
}
}
//Events for the "Optional Source Files" Tab
private void GC2SourceButton_Click(object sender, EventArgs e)
{
if (OpenGC2.ShowDialog() == DialogResult.OK)
{
using (var reader = new BinaryReader(File.OpenRead(OpenGC2.FileName)))
{
reader.BaseStream.Position = 0x18;
long GC2GameType = reader.ReadInt64();
if (GC2GameType != 4440324665927270400)
{
MessageBox.Show("This is not a GameCube image. It will not be loaded."
, "Error"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
GC2SourceDirectory.ForeColor = Color.Red;
FlagGC2Specified = false;
}
else
{
GC2SourceDirectory.Text = OpenGC2.FileName;
GC2SourceDirectory.ForeColor = Color.Black;
FlagGC2Specified = true;
}
}
}
else
{
GC2SourceDirectory.Text = "2nd GameCube Disc Image has not been specified";
GC2SourceDirectory.ForeColor = Color.Red;
FlagGC2Specified = false;
}
}
private void DrcSourceButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Make sure your GamePad Banner is 854x480 (16:9) to prevent distortion"
, "Banner Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OpenDrc.ShowDialog() == DialogResult.OK)
{
if (Path.GetExtension(OpenDrc.FileName) == ".tga")
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootDrcTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
LauncherExeFile = TempToolsPath + "IMG\\tga2pngcmd.exe";
LauncherExeArgs = "-i \"" + OpenDrc.FileName + "\" -o \"" + Path.GetDirectoryName(pngtemppath) + "\"";
LaunchProgram();
File.Move(Path.GetDirectoryName(pngtemppath) + "\\" + Path.GetFileNameWithoutExtension(OpenDrc.FileName) + ".png", pngtemppath);
}
else
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootDrcTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
Image.FromFile(OpenDrc.FileName).Save(pngtemppath, System.Drawing.Imaging.ImageFormat.Png);
}
FileStream tempstream = new FileStream(pngtemppath, FileMode.Open);
var tempimage = Image.FromStream(tempstream);
DrcPreviewBox.Image = tempimage;
tempstream.Close();
DrcSourceDirectory.Text = OpenDrc.FileName;
DrcSourceDirectory.ForeColor = Color.Black;
FlagDrcSpecified = true;
FlagRepo = false;
}
else
{
DrcPreviewBox.Image = null;
DrcSourceDirectory.Text = "GamePad Banner has not been specified";
DrcSourceDirectory.ForeColor = Color.Red;
pngtemppath = "";
}
}
private void LogoSourceButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Make sure your Logo is 170x42 to prevent distortion"
, "Logo Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OpenLogo.ShowDialog() == DialogResult.OK)
{
if (Path.GetExtension(OpenLogo.FileName) == ".tga")
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootLogoTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
LauncherExeFile = TempToolsPath + "IMG\\tga2pngcmd.exe";
LauncherExeArgs = "-i \"" + OpenLogo.FileName + "\" -o \"" + Path.GetDirectoryName(pngtemppath) + "\"";
LaunchProgram();
File.Move(Path.GetDirectoryName(pngtemppath) + "\\" + Path.GetFileNameWithoutExtension(OpenLogo.FileName) + ".png", pngtemppath);
}
else
{
pngtemppath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\bootLogoTex.png";
if (File.Exists(pngtemppath)) { File.Delete(pngtemppath); }
Image.FromFile(OpenLogo.FileName).Save(pngtemppath, System.Drawing.Imaging.ImageFormat.Png);
}
FileStream tempstream = new FileStream(pngtemppath, FileMode.Open);
var tempimage = Image.FromStream(tempstream);
LogoPreviewBox.Image = tempimage;
tempstream.Close();
LogoSourceDirectory.Text = OpenLogo.FileName;
LogoSourceDirectory.ForeColor = Color.Black;
FlagLogoSpecified = true;
FlagRepo = false;
}
else
{
LogoPreviewBox.Image = null;
LogoSourceDirectory.Text = "GamePad Banner has not been specified";
LogoSourceDirectory.ForeColor = Color.Red;
pngtemppath = "";
}
}
private void BootSoundButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Your sound file will be cut off if it's longer than 6 seconds to prevent the Wii U from not loading it. When the Wii U plays the boot sound, it will fade out once it's done loading the game (usually after about 5 seconds). You can not change this."
, "Boot Sound Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OpenBootSound.ShowDialog() == DialogResult.OK)
{
using (var reader = new BinaryReader(File.OpenRead(OpenBootSound.FileName)))
{
reader.BaseStream.Position = 0x00;
long WAVHeader1 = reader.ReadInt32();
reader.BaseStream.Position = 0x08;
long WAVHeader2 = reader.ReadInt32();
if (WAVHeader1 == 1179011410 & WAVHeader2 == 1163280727)
{
BootSoundDirectory.Text = OpenBootSound.FileName;
BootSoundDirectory.ForeColor = Color.Black;
BootSoundPreviewButton.Enabled = true;
FlagBootSoundSpecified = true;
}
else
{
MessageBox.Show("This is not a valid WAV file. It will not be loaded. \nConsider converting it with something like Audacity."
, "Not a WAV File"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
BootSoundDirectory.Text = "Boot Sound has not been specified";
BootSoundDirectory.ForeColor = Color.Red;
BootSoundPreviewButton.Enabled = false;
FlagBootSoundSpecified = false;
}
}
}
else
{
if (BootSoundPreviewButton.Text != "Stop Sound")
{
BootSoundDirectory.Text = "Boot Sound has not been specified";
BootSoundDirectory.ForeColor = Color.Red;
BootSoundPreviewButton.Enabled = false;
FlagBootSoundSpecified = false;
}
}
}
private void ToggleBootSoundLoop_CheckedChanged(object sender, EventArgs e)
{
if (ToggleBootSoundLoop.Checked)
{
LoopString = "";
}
else
{
LoopString = " -noLoop";
}
}
private void BootSoundPreviewButton_Click(object sender, EventArgs e)
{
var simpleSound = new SoundPlayer(OpenBootSound.FileName);
if (BootSoundPreviewButton.Text == "Stop Sound")
{
simpleSound.Stop();
BootSoundPreviewButton.Text = "Play Sound";
}
else
{
if (ToggleBootSoundLoop.Checked)
{
simpleSound.PlayLooping();
BootSoundPreviewButton.Text = "Stop Sound";
}
else
{
simpleSound.Play();
}
}
}
//Events for the "GamePad/Meta Options" Tab
private void EnablePackedLine2_CheckedChanged(object sender, EventArgs e)
{
if (EnablePackedLine2.Checked)
{
PackedTitleLine2.Text = "";
PackedTitleLine2.BackColor = Color.White;
PackedTitleLine2.ReadOnly = false;
}
else
{
PackedTitleLine2.Text = "(Optional) Line 2";
PackedTitleLine2.BackColor = Color.Silver;
PackedTitleLine2.ReadOnly = true;
}
}
//Radio Buttons for GamePad Emulation Mode
private void NoGamePadEmu_CheckedChanged(object sender, EventArgs e)
{
if (NoGamePadEmu.Checked)
{
DRCUSE = "1";
nfspatchflag = "";
LRPatch.Checked = false;
LRPatch.Enabled = false;
}
}
private void CCEmu_CheckedChanged(object sender, EventArgs e)
{
if (CCEmu.Checked)
{
DRCUSE = "65537";
nfspatchflag = "";
LRPatch.Enabled = true;
}
}
private void HorWiiMote_CheckedChanged(object sender, EventArgs e)
{
if (HorWiiMote.Checked)
{
DRCUSE = "65537";
nfspatchflag = " -horizontal";
LRPatch.Checked = false;
LRPatch.Enabled = false;
}
}
private void VerWiiMote_CheckedChanged(object sender, EventArgs e)
{
if (VerWiiMote.Checked)
{
DRCUSE = "65537";
nfspatchflag = " -wiimote";
LRPatch.Checked = false;
LRPatch.Enabled = false;
}
}
private void ForceCC_CheckedChanged(object sender, EventArgs e)
{
if (ForceCC.Checked)
{
DRCUSE = "65537";
nfspatchflag = " -instantcc";
DisableTrimming.Checked = false;
DisableTrimming.Enabled = false;
LRPatch.Enabled = true;
}
}
private void ForceWiiMote_CheckedChanged(object sender, EventArgs e)
{
if (ForceNoCC.Checked)
{
DRCUSE = "65537";
nfspatchflag = " -nocc";
LRPatch.Checked = false;
LRPatch.Enabled = false;
}
}
private void TutorialLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start("http://www.google.com");
}
//Events for the Advanced Tab
private void Force43NINTENDONT_CheckedChanged(object sender, EventArgs e)
{
if (Force43NINTENDONT.Checked)
{
CustomMainDol.Checked = false;
CustomMainDol.Enabled = false;
DisableNintendontAutoboot.Checked = false;
DisableNintendontAutoboot.Enabled = false;
}
else
{
CustomMainDol.Enabled = true;
DisableNintendontAutoboot.Enabled = true;
}
}
private void CustomMainDol_CheckedChanged(object sender, EventArgs e)
{
if (CustomMainDol.Checked)
{
MainDolSourceButton.Enabled = true;
Force43NINTENDONT.Checked = false;
Force43NINTENDONT.Enabled = false;
DisableNintendontAutoboot.Checked = false;
DisableNintendontAutoboot.Enabled = false;
}
else
{
MainDolSourceButton.Enabled = false;
MainDolLabel.Text = "<- Specify custom main.dol file";
Force43NINTENDONT.Enabled = true;
DisableNintendontAutoboot.Enabled = true;
OpenMainDol.FileName = null;
}
}
private void NintendontAutoboot_CheckedChanged(object sender, EventArgs e)
{
if (DisableNintendontAutoboot.Checked)
{
Force43NINTENDONT.Checked = false;
Force43NINTENDONT.Enabled = false;
CustomMainDol.Checked = false;
CustomMainDol.Enabled = false;
}
else
{
Force43NINTENDONT.Enabled = true;
CustomMainDol.Enabled = true;
}
}
private void MainDolSourceButton_Click(object sender, EventArgs e)
{
if (OpenMainDol.ShowDialog() == DialogResult.OK)
{
MainDolLabel.Text = OpenMainDol.FileName;
}
else
{
MainDolLabel.Text = "<- Specify custom main.dol file";
}
}
private void DisablePassthrough_CheckedChanged(object sender, EventArgs e)
{
if (DisablePassthrough.Checked)
{
passpatch = "";
}
else
{
passpatch = " -passthrough";
}
}
private void DisableGamePad_CheckedChanged(object sender, EventArgs e)
{
if (DisableGamePad.Checked)
{
if (SystemType == "gcn")
{
DRCUSE = "1";
}
else if (SystemType == "dol")
{
DRCUSE = "1";
}
}
else
{
if (SystemType == "gcn")
{
DRCUSE = "65537";
}
else if (SystemType == "dol")
{
DRCUSE = "65537";
}
}
}
private void C2WPatchFlag_CheckedChanged(object sender, EventArgs e)
{
if (C2WPatchFlag.Checked)
{
AncastKey.ReadOnly = false;
AncastKey.BackColor = Color.White;
SaveAncastKeyButton.Enabled = true;
if (Registry.CurrentUser.CreateSubKey("WiiVCInjector").GetValue("AncastKey") == null)
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("AncastKey", "00000000000000000000000000000000");
}
AncastKey.Text = Registry.CurrentUser.OpenSubKey("WiiVCInjector").GetValue("AncastKey").ToString();
Registry.CurrentUser.OpenSubKey("WiiVCInjector").Close();
//If key is correct, lock text box for edits
AncastKey.Text = AncastKey.Text.ToUpper();
sSourceData = AncastKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
AncastKeyHash = BitConverter.ToString(tmpHash);
if (AncastKeyHash == "31-8D-1F-9D-98-FB-08-E7-7C-7F-E1-77-AA-49-05-43")
{
AncastKey.ReadOnly = true;
AncastKey.BackColor = Color.Lime;
}
else
{
AncastKey.ReadOnly = false;
AncastKey.BackColor = Color.White;
}
}
else
{
AncastKey.BackColor = Color.Silver;
AncastKey.ReadOnly = true;
SaveAncastKeyButton.Enabled = false;
}
}
private void SaveAncastKeyButton_Click(object sender, EventArgs e)
{
//Verify Title Key MD5 Hash
AncastKey.Text = AncastKey.Text.ToUpper();
sSourceData = AncastKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
AncastKeyHash = BitConverter.ToString(tmpHash);
if (AncastKeyHash == "31-8D-1F-9D-98-FB-08-E7-7C-7F-E1-77-AA-49-05-43")
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("AncastKey", AncastKey.Text);
Registry.CurrentUser.CreateSubKey("WiiVCInjector").Close();
MessageBox.Show("The Wii U Starbuck Ancast Key has been verified."
, "Success"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
AncastKey.ReadOnly = true;
AncastKey.BackColor = Color.Lime;
}
else
{
MessageBox.Show("The Wii U Starbuck Ancast Key you have provided is incorrect" + "\n" + "(MD5 Hash verification failed)"
, "Invalid Starbuck Ancast Keyn"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
}
private void sign_c2w_patcher_link_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start("https://github.com/FIX94/sign_c2w_patcher");
}
private void DisableTrimming_CheckedChanged(object sender, EventArgs e)
{
if (DisableTrimming.Checked)
{
WiiVMC.Checked = false;
WiiVMC.Enabled = false;
Wiimmfi.Checked = false;
Wiimmfi.Enabled = false;
}
else
{
if (SystemType == "wii")
{
WiiVMC.Enabled = true;
Wiimmfi.Enabled = true;
}
else
{
WiiVMC.Checked = false;
WiiVMC.Enabled = false;
Wiimmfi.Checked = false;
Wiimmfi.Enabled = false;
}
}
}
//Events for the "Build Title" Tab
private void SaveCommonKeyButton_Click(object sender, EventArgs e)
{
//Verify Wii U Common Key MD5 Hash
WiiUCommonKey.Text = WiiUCommonKey.Text.ToUpper();
sSourceData = WiiUCommonKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
WiiUCommonKeyHash = BitConverter.ToString(tmpHash);
if (WiiUCommonKeyHash == "35-AC-59-94-97-22-79-33-1D-97-09-4F-A2-FB-97-FC")
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("WiiUCommonKey", WiiUCommonKey.Text);
Registry.CurrentUser.CreateSubKey("WiiVCInjector").Close();
MessageBox.Show("The Wii U Common Key has been verified."
, "Success"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
MainTabs.SelectedTab = AdvancedTab;
MainTabs.SelectedTab = BuildTab;
}
else
{
MessageBox.Show("The Wii U Common Key you have provided is incorrect" + "\n" + "(MD5 Hash verification failed)"
, "Invalid Wii U Common Key"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
}
private void SaveTitleKeyButton_Click(object sender, EventArgs e)
{
//Verify Title Key MD5 Hash
TitleKey.Text = TitleKey.Text.ToUpper();
sSourceData = TitleKey.Text;
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
TitleKeyHash = BitConverter.ToString(tmpHash);
if (TitleKeyHash == "F9-4B-D8-8E-BB-7A-A9-38-67-E6-30-61-5F-27-1C-9F")
{
Registry.CurrentUser.CreateSubKey("WiiVCInjector").SetValue("TitleKey", TitleKey.Text);
Registry.CurrentUser.CreateSubKey("WiiVCInjector").Close();
MessageBox.Show("The Title Key has been verified."
, "Success"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
MainTabs.SelectedTab = AdvancedTab;
MainTabs.SelectedTab = BuildTab;
}
else
{
MessageBox.Show("The Title Key you have provided is incorrect" + "\n" + "(MD5 Hash verification failed)"
, "Invalid Title Key"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
}
//Events for the actual "Build" Button
private void TheBigOneTM_Click(object sender, EventArgs e)
{
//Initialize Build Process
//Disable form elements so navigation can't be attempted during build process
MainTabs.Enabled = false;
//Check for free space
if (SystemType == "wii")
{
long gamesize = new FileInfo(OpenGame.FileName).Length;
var drive = new DriveInfo(TempRootPath);
long freeSpaceInBytes = drive.AvailableFreeSpace;
if (freeSpaceInBytes < gamesize * 2 + 5000000000)
{
DialogResult dialogResult = MessageBox.Show("Your hard drive may be low on space. The conversion process involves temporary files" +
"that can amount to more than double the size of your game. If you continue without" +
"clearing some hard drive space, the conversion may fail. Do you want to continue anyway?",
"Check your hard drive space"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
{
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildStatus.Refresh();
BuildProgress.Value = 0;
goto BuildProcessFin;
}
}
}
if (SystemType == "dol")
{
var drive = new DriveInfo(TempRootPath);
long freeSpaceInBytes = drive.AvailableFreeSpace;
if (freeSpaceInBytes < 6000000000)
{
DialogResult dialogResult = MessageBox.Show("Your hard drive may be low on space. Even for small programs," +
"the conversion process can use almost 5 GB of temporary storage." +
"If you continue without clearing some hard drive space, the conversion may fail." +
"Do you want to continue anyway?"
, "Check your hard drive space"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
{
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildStatus.Refresh();
BuildProgress.Value = 0;
goto BuildProcessFin;
}
}
}
if (SystemType == "wiiware")
{
var drive = new DriveInfo(TempRootPath);
long freeSpaceInBytes = drive.AvailableFreeSpace;
if (freeSpaceInBytes < 6000000000)
{
DialogResult dialogResult = MessageBox.Show("Your hard drive may be low on space. Even for small programs," +
"the conversion process can use almost 5 GB of temporary storage." +
"If you continue without clearing some hard drive space, the conversion may fail." +
"Do you want to continue anyway?"
, "Check your hard drive space"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
{
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildStatus.Refresh();
BuildProgress.Value = 0;
goto BuildProcessFin;
}
}
}
if (SystemType == "gcn")
{
long gamesize = new FileInfo(OpenGame.FileName).Length;
var drive = new DriveInfo(TempRootPath);
long freeSpaceInBytes = drive.AvailableFreeSpace;
if (freeSpaceInBytes < gamesize * 2 + 6000000000)
{
DialogResult dialogResult = MessageBox.Show("Your hard drive may be low on space. The conversion process involves temporary files" +
"that can amount to more than double the size of your game. If you continue without" +
"clearing some hard drive space, the conversion may fail. Do you want to continue anyway?",
"Check your hard drive space"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
if (dialogResult == DialogResult.No)
{
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildStatus.Refresh();
BuildProgress.Value = 0;
goto BuildProcessFin;
}
}
}
//Specify Path Variables to be called later
if (OutputFolderSelect.ShowDialog() == DialogResult.Cancel)
{
MessageBox.Show("Output folder selection has been cancelled, conversion will not continue."
, "Cancelled"
, MessageBoxButtons.OK
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
MainTabs.Enabled = true;
goto BuildProcessFin;
}
BuildProgress.Value = 2;
//////////////////////////
//Download base files with JNUSTool, store them for future use
if (Directory.Exists(JNUSToolDownloads) == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "0005001010004000\\code\\deint.txt") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "0005001010004000\\code\\font.bin") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\c2w.img") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\boot.bin") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\dmcu.d.hex") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\cos.xml") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\frisbiiU.rpx") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\fw.img") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\fw.tmd") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\htk.bin") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\nn_hai_user.rpl") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\content\\assets\\shaders\\cafe\\banner.gsh") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\content\\assets\\shaders\\cafe\\fade.gsh") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootMovie.h264") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootLogoTex.tga") == false)
{
goto JNUSStuff;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootSound.btsnd") == false)
{
goto JNUSStuff;
}
goto SkipJNUS;
JNUSStuff:;
if (CheckForInternetConnection() == false)
{
DialogResult dialogResult = MessageBox.Show("Your internet connection could not be verified, do you wish to try and download" +
"the necessary base files from Nintendo anyway? (This is a one-time download)"
, "Internet Connection Verification Failed"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Warning
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
{
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildStatus.Refresh();
BuildProgress.Value = 0;
goto BuildProcessFin;
}
}
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo...";
BuildStatus.Refresh();
string[] JNUSToolConfig = { "http://ccs.cdn.wup.shop.nintendo.net/ccs/download", WiiUCommonKey.Text };
File.WriteAllLines(TempToolsPath + "JAR\\config", JNUSToolConfig);
Directory.SetCurrentDirectory(TempToolsPath + "JAR");
BuildProgress.Value = 10;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (deint.txt)";
BuildStatus.Refresh();
LauncherExeFile = "JNUSTool.exe";
LauncherExeArgs = "0005001010004000 -file /code/deint.txt";
LaunchProgram();
BuildProgress.Value = 12;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (font.bin)";
BuildStatus.Refresh();
LauncherExeArgs = "0005001010004000 -file /code/font.bin";
LaunchProgram();
BuildProgress.Value = 15;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (c2w.img)";
BuildStatus.Refresh();
LauncherExeArgs = "0005001010004001 -file /code/c2w.img";
LaunchProgram();
BuildProgress.Value = 17;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (boot.bin)";
BuildStatus.Refresh();
LauncherExeArgs = "0005001010004001 -file /code/boot.bin";
LaunchProgram();
BuildProgress.Value = 20;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (dmcu.d.hex)";
BuildStatus.Refresh();
LauncherExeArgs = "0005001010004001 -file /code/dmcu.d.hex";
LaunchProgram();
BuildProgress.Value = 23;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (cos.xml)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/cos.xml";
LaunchProgram();
BuildProgress.Value = 25;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (frisbiiU.rpx)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/frisbiiU.rpx";
LaunchProgram();
BuildProgress.Value = 27;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (fw.img)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/fw.img";
LaunchProgram();
BuildProgress.Value = 30;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (fw.tmd)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/fw.tmd";
LaunchProgram();
BuildProgress.Value = 32;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (htk.bin)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/htk.bin";
LaunchProgram();
BuildProgress.Value = 35;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (nn_hai_user.rpl)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /code/nn_hai_user.rpl";
LaunchProgram();
BuildProgress.Value = 37;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (banner.gsh / fade.gsh)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /content/assets/.*";
LaunchProgram();
BuildProgress.Value = 40;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (bootMovie.h264)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /meta/bootMovie.h264";
LaunchProgram();
BuildProgress.Value = 42;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (bootLogoTex.tga)";
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /meta/bootLogoTex.tga";
LaunchProgram();
BuildProgress.Value = 45;
BuildStatus.Text = "(One-Time Download) Downloading base files from Nintendo... (bootSound.btsnd)";
BuildStatus.Refresh();
LauncherExeArgs = "00050000101b0700 " + TitleKey.Text + " -file /meta/bootSound.btsnd";
LaunchProgram();
BuildProgress.Value = 47;
BuildStatus.Text = "Saving files from Nintendo for future use...";
BuildStatus.Refresh();
Directory.CreateDirectory(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]");
Directory.CreateDirectory(JNUSToolDownloads + "0005001010004000");
Directory.CreateDirectory(JNUSToolDownloads + "0005001010004001");
FileSystem.CopyDirectory("Rhythm Heaven Fever [VAKE01]", JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]");
FileSystem.CopyDirectory("0005001010004000", JNUSToolDownloads + "0005001010004000");
FileSystem.CopyDirectory("0005001010004001", JNUSToolDownloads + "0005001010004001");
Directory.Delete("Rhythm Heaven Fever [VAKE01]", true);
Directory.Delete("0005001010004000", true);
Directory.Delete("0005001010004001", true);
File.Delete("config");
//Check if files exist after they were supposed to be downloaded
bool JNUSFail = false;
if (File.Exists(JNUSToolDownloads + "0005001010004000\\code\\deint.txt") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "0005001010004000\\code\\font.bin") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\c2w.img") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\boot.bin") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "0005001010004001\\code\\dmcu.d.hex") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\cos.xml") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\frisbiiU.rpx") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\fw.img") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\fw.tmd") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\htk.bin") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\code\\nn_hai_user.rpl") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\content\\assets\\shaders\\cafe\\banner.gsh") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\content\\assets\\shaders\\cafe\\fade.gsh") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootMovie.h264") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootLogoTex.tga") == false)
{
JNUSFail = true;
}
if (File.Exists(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]\\meta\\bootSound.btsnd") == false)
{
JNUSFail = true;
}
if (JNUSFail)
{
MessageBox.Show("Failed to download base files using JNUSTool, conversion will not continue"
, "Error"
, MessageBoxButtons.OK
, MessageBoxIcon.Error
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
MainTabs.Enabled = true;
BuildStatus.Text = "";
BuildProgress.Value = 0;
goto BuildProcessFin;
}
Directory.SetCurrentDirectory(TempRootPath);
SkipJNUS:;
///////////////////////////////////
//Copy downloaded files to the build directory
BuildStatus.Text = "Copying base files to temporary build directory...";
BuildStatus.Refresh();
FileSystem.CopyDirectory(JNUSToolDownloads + "Rhythm Heaven Fever [VAKE01]", TempBuildPath);
if (C2WPatchFlag.Checked)
{
FileSystem.CopyDirectory(JNUSToolDownloads + "0005001010004000", TempBuildPath);
FileSystem.CopyDirectory(JNUSToolDownloads + "0005001010004001", TempBuildPath);
string[] AncastKeyCopy = { AncastKey.Text };
File.WriteAllLines(TempToolsPath + "C2W\\starbuck_key.txt", AncastKeyCopy);
File.Copy(TempBuildPath + "code\\c2w.img", TempToolsPath + "C2W\\c2w.img");
Directory.SetCurrentDirectory(TempToolsPath + "C2W");
LauncherExeFile = "c2w_patcher.exe";
LauncherExeArgs = "-nc";
LaunchProgram();
File.Delete(TempBuildPath + "code\\c2w.img");
File.Copy(TempToolsPath + "C2W\\c2p.img", TempBuildPath + "code\\c2w.img", true);
File.Delete(TempToolsPath + "C2W\\c2p.img");
File.Delete(TempToolsPath + "C2W\\c2w.img");
File.Delete(TempToolsPath + "C2W\\starbuck_key.txt");
}
BuildProgress.Value = 50;
//////////////////////////////////////////////
//Generate app.xml & meta.xml
BuildStatus.Text = "Generating app.xml and meta.xml";
BuildStatus.Refresh();
string[] AppXML = { "<?xml version=\"1.0\" encoding=\"utf-8\"?>", "<app type=\"complex\" access=\"777\">", " <version type=\"unsignedInt\" length=\"4\">16</version>", " <os_version type=\"hexBinary\" length=\"8\">000500101000400A</os_version>", " <title_id type=\"hexBinary\" length=\"8\">" + PackedTitleIDLine.Text + "</title_id>", " <title_version type=\"hexBinary\" length=\"2\">0000</title_version>", " <sdk_version type=\"unsignedInt\" length=\"4\">21204</sdk_version>", " <app_type type=\"hexBinary\" length=\"4\">8000002E</app_type>", " <group_id type=\"hexBinary\" length=\"4\">" + TitleIDHex + "</group_id>", " <os_mask type=\"hexBinary\" length=\"32\">0000000000000000000000000000000000000000000000000000000000000000</os_mask>", " <common_id type=\"hexBinary\" length=\"8\">0000000000000000</common_id>", "</app>"};
File.WriteAllLines(TempBuildPath + "code\\app.xml", AppXML);
if (EnablePackedLine2.Checked)
{
string[] MetaXML = { "<?xml version=\"1.0\" encoding=\"utf-8\"?>", "<menu type=\"complex\" access=\"777\">", " <version type=\"unsignedInt\" length=\"4\">33</version>", " <product_code type=\"string\" length=\"32\">WUP-N-" + TitleIDText + "</product_code>", " <content_platform type=\"string\" length=\"32\">WUP</content_platform>", " <company_code type=\"string\" length=\"8\">0001</company_code>", " <mastering_date type=\"string\" length=\"32\"></mastering_date>", " <logo_type type=\"unsignedInt\" length=\"4\">0</logo_type>", " <app_launch_type type=\"hexBinary\" length=\"4\">00000000</app_launch_type>", " <invisible_flag type=\"hexBinary\" length=\"4\">00000000</invisible_flag>", " <no_managed_flag type=\"hexBinary\" length=\"4\">00000000</no_managed_flag>", " <no_event_log type=\"hexBinary\" length=\"4\">00000002</no_event_log>", " <no_icon_database type=\"hexBinary\" length=\"4\">00000000</no_icon_database>", " <launching_flag type=\"hexBinary\" length=\"4\">00000004</launching_flag>", " <install_flag type=\"hexBinary\" length=\"4\">00000000</install_flag>", " <closing_msg type=\"unsignedInt\" length=\"4\">0</closing_msg>", " <title_version type=\"unsignedInt\" length=\"4\">0</title_version>", " <title_id type=\"hexBinary\" length=\"8\">" + PackedTitleIDLine.Text + "</title_id>", " <group_id type=\"hexBinary\" length=\"4\">" + TitleIDHex + "</group_id>", " <boss_id type=\"hexBinary\" length=\"8\">0000000000000000</boss_id>", " <os_version type=\"hexBinary\" length=\"8\">000500101000400A</os_version>", " <app_size type=\"hexBinary\" length=\"8\">0000000000000000</app_size>", " <common_save_size type=\"hexBinary\" length=\"8\">0000000000000000</common_save_size>", " <account_save_size type=\"hexBinary\" length=\"8\">0000000000000000</account_save_size>", " <common_boss_size type=\"hexBinary\" length=\"8\">0000000000000000</common_boss_size>", " <account_boss_size type=\"hexBinary\" length=\"8\">0000000000000000</account_boss_size>", " <save_no_rollback type=\"unsignedInt\" length=\"4\">0</save_no_rollback>", " <join_game_id type=\"hexBinary\" length=\"4\">00000000</join_game_id>", " <join_game_mode_mask type=\"hexBinary\" length=\"8\">0000000000000000</join_game_mode_mask>", " <bg_daemon_enable type=\"unsignedInt\" length=\"4\">0</bg_daemon_enable>", " <olv_accesskey type=\"unsignedInt\" length=\"4\">3921400692</olv_accesskey>", " <wood_tin type=\"unsignedInt\" length=\"4\">0</wood_tin>", " <e_manual type=\"unsignedInt\" length=\"4\">0</e_manual>", " <e_manual_version type=\"unsignedInt\" length=\"4\">0</e_manual_version>", " <region type=\"hexBinary\" length=\"4\">00000002</region>", " <pc_cero type=\"unsignedInt\" length=\"4\">128</pc_cero>", " <pc_esrb type=\"unsignedInt\" length=\"4\">6</pc_esrb>", " <pc_bbfc type=\"unsignedInt\" length=\"4\">192</pc_bbfc>", " <pc_usk type=\"unsignedInt\" length=\"4\">128</pc_usk>", " <pc_pegi_gen type=\"unsignedInt\" length=\"4\">128</pc_pegi_gen>", " <pc_pegi_fin type=\"unsignedInt\" length=\"4\">192</pc_pegi_fin>", " <pc_pegi_prt type=\"unsignedInt\" length=\"4\">128</pc_pegi_prt>", " <pc_pegi_bbfc type=\"unsignedInt\" length=\"4\">128</pc_pegi_bbfc>", " <pc_cob type=\"unsignedInt\" length=\"4\">128</pc_cob>", " <pc_grb type=\"unsignedInt\" length=\"4\">128</pc_grb>", " <pc_cgsrr type=\"unsignedInt\" length=\"4\">128</pc_cgsrr>", " <pc_oflc type=\"unsignedInt\" length=\"4\">128</pc_oflc>", " <pc_reserved0 type=\"unsignedInt\" length=\"4\">192</pc_reserved0>", " <pc_reserved1 type=\"unsignedInt\" length=\"4\">192</pc_reserved1>", " <pc_reserved2 type=\"unsignedInt\" length=\"4\">192</pc_reserved2>", " <pc_reserved3 type=\"unsignedInt\" length=\"4\">192</pc_reserved3>", " <ext_dev_nunchaku type=\"unsignedInt\" length=\"4\">0</ext_dev_nunchaku>", " <ext_dev_classic type=\"unsignedInt\" length=\"4\">0</ext_dev_classic>", " <ext_dev_urcc type=\"unsignedInt\" length=\"4\">0</ext_dev_urcc>", " <ext_dev_board type=\"unsignedInt\" length=\"4\">0</ext_dev_board>", " <ext_dev_usb_keyboard type=\"unsignedInt\" length=\"4\">0</ext_dev_usb_keyboard>", " <ext_dev_etc type=\"unsignedInt\" length=\"4\">0</ext_dev_etc>", " <ext_dev_etc_name type=\"string\" length=\"512\"></ext_dev_etc_name>", " <eula_version type=\"unsignedInt\" length=\"4\">0</eula_version>", " <drc_use type=\"unsignedInt\" length=\"4\">" + DRCUSE + "</drc_use>", " <network_use type=\"unsignedInt\" length=\"4\">0</network_use>", " <online_account_use type=\"unsignedInt\" length=\"4\">0</online_account_use>", " <direct_boot type=\"unsignedInt\" length=\"4\">0</direct_boot>", " <reserved_flag0 type=\"hexBinary\" length=\"4\">00010001</reserved_flag0>", " <reserved_flag1 type=\"hexBinary\" length=\"4\">00080023</reserved_flag1>", " <reserved_flag2 type=\"hexBinary\" length=\"4\">" + TitleIDHex + "</reserved_flag2>", " <reserved_flag3 type=\"hexBinary\" length=\"4\">00000000</reserved_flag3>", " <reserved_flag4 type=\"hexBinary\" length=\"4\">00000000</reserved_flag4>", " <reserved_flag5 type=\"hexBinary\" length=\"4\">00000000</reserved_flag5>", " <reserved_flag6 type=\"hexBinary\" length=\"4\">00000003</reserved_flag6>", " <reserved_flag7 type=\"hexBinary\" length=\"4\">00000005</reserved_flag7>", " <longname_ja type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_ja>", " <longname_en type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_en>", " <longname_fr type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_fr>", " <longname_de type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_de>", " <longname_it type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_it>", " <longname_es type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_es>", " <longname_zhs type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_zhs>", " <longname_ko type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_ko>", " <longname_nl type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_nl>", " <longname_pt type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_pt>", " <longname_ru type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_ru>", " <longname_zht type=\"string\" length=\"512\">" + PackedTitleLine1.Text, PackedTitleLine2.Text + "</longname_zht>", " <shortname_ja type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ja>", " <shortname_en type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_en>", " <shortname_fr type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_fr>", " <shortname_de type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_de>", " <shortname_it type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_it>", " <shortname_es type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_es>", " <shortname_zhs type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_zhs>", " <shortname_ko type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ko>", " <shortname_nl type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_nl>", " <shortname_pt type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_pt>", " <shortname_ru type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ru>", " <shortname_zht type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_zht>", " <publisher_ja type=\"string\" length=\"256\"></publisher_ja>", " <publisher_en type=\"string\" length=\"256\"></publisher_en>", " <publisher_fr type=\"string\" length=\"256\"></publisher_fr>", " <publisher_de type=\"string\" length=\"256\"></publisher_de>", " <publisher_it type=\"string\" length=\"256\"></publisher_it>", " <publisher_es type=\"string\" length=\"256\"></publisher_es>", " <publisher_zhs type=\"string\" length=\"256\"></publisher_zhs>", " <publisher_ko type=\"string\" length=\"256\"></publisher_ko>", " <publisher_nl type=\"string\" length=\"256\"></publisher_nl>", " <publisher_pt type=\"string\" length=\"256\"></publisher_pt>", " <publisher_ru type=\"string\" length=\"256\"></publisher_ru>", " <publisher_zht type=\"string\" length=\"256\"></publisher_zht>", " <add_on_unique_id0 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id0>", " <add_on_unique_id1 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id1>", " <add_on_unique_id2 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id2>", " <add_on_unique_id3 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id3>", " <add_on_unique_id4 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id4>", " <add_on_unique_id5 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id5>", " <add_on_unique_id6 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id6>", " <add_on_unique_id7 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id7>", " <add_on_unique_id8 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id8>", " <add_on_unique_id9 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id9>", " <add_on_unique_id10 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id10>", " <add_on_unique_id11 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id11>", " <add_on_unique_id12 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id12>", " <add_on_unique_id13 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id13>", " <add_on_unique_id14 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id14>", " <add_on_unique_id15 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id15>", " <add_on_unique_id16 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id16>", " <add_on_unique_id17 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id17>", " <add_on_unique_id18 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id18>", " <add_on_unique_id19 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id19>", " <add_on_unique_id20 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id20>", " <add_on_unique_id21 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id21>", " <add_on_unique_id22 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id22>", " <add_on_unique_id23 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id23>", " <add_on_unique_id24 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id24>", " <add_on_unique_id25 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id25>", " <add_on_unique_id26 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id26>", " <add_on_unique_id27 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id27>", " <add_on_unique_id28 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id28>", " <add_on_unique_id29 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id29>", " <add_on_unique_id30 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id30>", " <add_on_unique_id31 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id31>", "</menu>" };
File.WriteAllLines(TempBuildPath + "meta\\meta.xml", MetaXML);
}
else
{
string[] MetaXML = { "<?xml version=\"1.0\" encoding=\"utf-8\"?>", "<menu type=\"complex\" access=\"777\">", " <version type=\"unsignedInt\" length=\"4\">33</version>", " <product_code type=\"string\" length=\"32\">WUP-N-" + TitleIDText + "</product_code>", " <content_platform type=\"string\" length=\"32\">WUP</content_platform>", " <company_code type=\"string\" length=\"8\">0001</company_code>", " <mastering_date type=\"string\" length=\"32\"></mastering_date>", " <logo_type type=\"unsignedInt\" length=\"4\">0</logo_type>", " <app_launch_type type=\"hexBinary\" length=\"4\">00000000</app_launch_type>", " <invisible_flag type=\"hexBinary\" length=\"4\">00000000</invisible_flag>", " <no_managed_flag type=\"hexBinary\" length=\"4\">00000000</no_managed_flag>", " <no_event_log type=\"hexBinary\" length=\"4\">00000002</no_event_log>", " <no_icon_database type=\"hexBinary\" length=\"4\">00000000</no_icon_database>", " <launching_flag type=\"hexBinary\" length=\"4\">00000004</launching_flag>", " <install_flag type=\"hexBinary\" length=\"4\">00000000</install_flag>", " <closing_msg type=\"unsignedInt\" length=\"4\">0</closing_msg>", " <title_version type=\"unsignedInt\" length=\"4\">0</title_version>", " <title_id type=\"hexBinary\" length=\"8\">" + PackedTitleIDLine.Text + "</title_id>", " <group_id type=\"hexBinary\" length=\"4\">" + TitleIDHex + "</group_id>", " <boss_id type=\"hexBinary\" length=\"8\">0000000000000000</boss_id>", " <os_version type=\"hexBinary\" length=\"8\">000500101000400A</os_version>", " <app_size type=\"hexBinary\" length=\"8\">0000000000000000</app_size>", " <common_save_size type=\"hexBinary\" length=\"8\">0000000000000000</common_save_size>", " <account_save_size type=\"hexBinary\" length=\"8\">0000000000000000</account_save_size>", " <common_boss_size type=\"hexBinary\" length=\"8\">0000000000000000</common_boss_size>", " <account_boss_size type=\"hexBinary\" length=\"8\">0000000000000000</account_boss_size>", " <save_no_rollback type=\"unsignedInt\" length=\"4\">0</save_no_rollback>", " <join_game_id type=\"hexBinary\" length=\"4\">00000000</join_game_id>", " <join_game_mode_mask type=\"hexBinary\" length=\"8\">0000000000000000</join_game_mode_mask>", " <bg_daemon_enable type=\"unsignedInt\" length=\"4\">0</bg_daemon_enable>", " <olv_accesskey type=\"unsignedInt\" length=\"4\">3921400692</olv_accesskey>", " <wood_tin type=\"unsignedInt\" length=\"4\">0</wood_tin>", " <e_manual type=\"unsignedInt\" length=\"4\">0</e_manual>", " <e_manual_version type=\"unsignedInt\" length=\"4\">0</e_manual_version>", " <region type=\"hexBinary\" length=\"4\">00000002</region>", " <pc_cero type=\"unsignedInt\" length=\"4\">128</pc_cero>", " <pc_esrb type=\"unsignedInt\" length=\"4\">6</pc_esrb>", " <pc_bbfc type=\"unsignedInt\" length=\"4\">192</pc_bbfc>", " <pc_usk type=\"unsignedInt\" length=\"4\">128</pc_usk>", " <pc_pegi_gen type=\"unsignedInt\" length=\"4\">128</pc_pegi_gen>", " <pc_pegi_fin type=\"unsignedInt\" length=\"4\">192</pc_pegi_fin>", " <pc_pegi_prt type=\"unsignedInt\" length=\"4\">128</pc_pegi_prt>", " <pc_pegi_bbfc type=\"unsignedInt\" length=\"4\">128</pc_pegi_bbfc>", " <pc_cob type=\"unsignedInt\" length=\"4\">128</pc_cob>", " <pc_grb type=\"unsignedInt\" length=\"4\">128</pc_grb>", " <pc_cgsrr type=\"unsignedInt\" length=\"4\">128</pc_cgsrr>", " <pc_oflc type=\"unsignedInt\" length=\"4\">128</pc_oflc>", " <pc_reserved0 type=\"unsignedInt\" length=\"4\">192</pc_reserved0>", " <pc_reserved1 type=\"unsignedInt\" length=\"4\">192</pc_reserved1>", " <pc_reserved2 type=\"unsignedInt\" length=\"4\">192</pc_reserved2>", " <pc_reserved3 type=\"unsignedInt\" length=\"4\">192</pc_reserved3>", " <ext_dev_nunchaku type=\"unsignedInt\" length=\"4\">0</ext_dev_nunchaku>", " <ext_dev_classic type=\"unsignedInt\" length=\"4\">0</ext_dev_classic>", " <ext_dev_urcc type=\"unsignedInt\" length=\"4\">0</ext_dev_urcc>", " <ext_dev_board type=\"unsignedInt\" length=\"4\">0</ext_dev_board>", " <ext_dev_usb_keyboard type=\"unsignedInt\" length=\"4\">0</ext_dev_usb_keyboard>", " <ext_dev_etc type=\"unsignedInt\" length=\"4\">0</ext_dev_etc>", " <ext_dev_etc_name type=\"string\" length=\"512\"></ext_dev_etc_name>", " <eula_version type=\"unsignedInt\" length=\"4\">0</eula_version>", " <drc_use type=\"unsignedInt\" length=\"4\">" + DRCUSE + "</drc_use>", " <network_use type=\"unsignedInt\" length=\"4\">0</network_use>", " <online_account_use type=\"unsignedInt\" length=\"4\">0</online_account_use>", " <direct_boot type=\"unsignedInt\" length=\"4\">0</direct_boot>", " <reserved_flag0 type=\"hexBinary\" length=\"4\">00010001</reserved_flag0>", " <reserved_flag1 type=\"hexBinary\" length=\"4\">00080023</reserved_flag1>", " <reserved_flag2 type=\"hexBinary\" length=\"4\">" + TitleIDHex + "</reserved_flag2>", " <reserved_flag3 type=\"hexBinary\" length=\"4\">00000000</reserved_flag3>", " <reserved_flag4 type=\"hexBinary\" length=\"4\">00000000</reserved_flag4>", " <reserved_flag5 type=\"hexBinary\" length=\"4\">00000000</reserved_flag5>", " <reserved_flag6 type=\"hexBinary\" length=\"4\">00000003</reserved_flag6>", " <reserved_flag7 type=\"hexBinary\" length=\"4\">00000005</reserved_flag7>", " <longname_ja type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_ja>", " <longname_en type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_en>", " <longname_fr type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_fr>", " <longname_de type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_de>", " <longname_it type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_it>", " <longname_es type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_es>", " <longname_zhs type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_zhs>", " <longname_ko type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_ko>", " <longname_nl type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_nl>", " <longname_pt type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_pt>", " <longname_ru type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_ru>", " <longname_zht type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</longname_zht>", " <shortname_ja type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ja>", " <shortname_en type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_en>", " <shortname_fr type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_fr>", " <shortname_de type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_de>", " <shortname_it type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_it>", " <shortname_es type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_es>", " <shortname_zhs type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_zhs>", " <shortname_ko type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ko>", " <shortname_nl type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_nl>", " <shortname_pt type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_pt>", " <shortname_ru type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_ru>", " <shortname_zht type=\"string\" length=\"512\">" + PackedTitleLine1.Text + "</shortname_zht>", " <publisher_ja type=\"string\" length=\"256\"></publisher_ja>", " <publisher_en type=\"string\" length=\"256\"></publisher_en>", " <publisher_fr type=\"string\" length=\"256\"></publisher_fr>", " <publisher_de type=\"string\" length=\"256\"></publisher_de>", " <publisher_it type=\"string\" length=\"256\"></publisher_it>", " <publisher_es type=\"string\" length=\"256\"></publisher_es>", " <publisher_zhs type=\"string\" length=\"256\"></publisher_zhs>", " <publisher_ko type=\"string\" length=\"256\"></publisher_ko>", " <publisher_nl type=\"string\" length=\"256\"></publisher_nl>", " <publisher_pt type=\"string\" length=\"256\"></publisher_pt>", " <publisher_ru type=\"string\" length=\"256\"></publisher_ru>", " <publisher_zht type=\"string\" length=\"256\"></publisher_zht>", " <add_on_unique_id0 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id0>", " <add_on_unique_id1 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id1>", " <add_on_unique_id2 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id2>", " <add_on_unique_id3 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id3>", " <add_on_unique_id4 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id4>", " <add_on_unique_id5 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id5>", " <add_on_unique_id6 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id6>", " <add_on_unique_id7 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id7>", " <add_on_unique_id8 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id8>", " <add_on_unique_id9 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id9>", " <add_on_unique_id10 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id10>", " <add_on_unique_id11 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id11>", " <add_on_unique_id12 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id12>", " <add_on_unique_id13 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id13>", " <add_on_unique_id14 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id14>", " <add_on_unique_id15 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id15>", " <add_on_unique_id16 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id16>", " <add_on_unique_id17 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id17>", " <add_on_unique_id18 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id18>", " <add_on_unique_id19 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id19>", " <add_on_unique_id20 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id20>", " <add_on_unique_id21 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id21>", " <add_on_unique_id22 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id22>", " <add_on_unique_id23 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id23>", " <add_on_unique_id24 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id24>", " <add_on_unique_id25 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id25>", " <add_on_unique_id26 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id26>", " <add_on_unique_id27 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id27>", " <add_on_unique_id28 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id28>", " <add_on_unique_id29 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id29>", " <add_on_unique_id30 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id30>", " <add_on_unique_id31 type=\"hexBinary\" length=\"4\">00000000</add_on_unique_id31>", "</menu>" };
File.WriteAllLines(TempBuildPath + "meta\\meta.xml", MetaXML);
}
BuildProgress.Value = 52;
/////////////////////////////
//Convert PNG files to TGA
BuildStatus.Text = "Converting all image sources to expected TGA specification...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "IMG\\png2tgacmd.exe";
LauncherExeArgs = "-i \"" + TempIconPath + "\" -o \"" + TempBuildPath + "meta\" --width=128 --height=128 --tga-bpp=32 --tga-compression=none";
LaunchProgram();
LauncherExeFile = TempToolsPath + "IMG\\png2tgacmd.exe";
LauncherExeArgs = "-i \"" + TempBannerPath + "\" -o \"" + TempBuildPath + "meta\" --width=1280 --height=720 --tga-bpp=24 --tga-compression=none";
LaunchProgram();
if (FlagDrcSpecified == false)
{
File.Copy(TempBannerPath, TempDrcPath);
}
LauncherExeFile = TempToolsPath + "IMG\\png2tgacmd.exe";
LauncherExeArgs = "-i \"" + TempDrcPath + "\" -o \"" + TempBuildPath + "meta\" --width=854 --height=480 --tga-bpp=24 --tga-compression=none";
LaunchProgram();
if (FlagLogoSpecified)
{
LauncherExeFile = TempToolsPath + "IMG\\png2tgacmd.exe";
LauncherExeArgs = "-i \"" + TempLogoPath + "\" -o \"" + TempBuildPath + "meta\" --width=170 --height=42 --tga-bpp=32 --tga-compression=none";
LaunchProgram();
}
if (FlagDrcSpecified == false) { File.Delete(TempDrcPath); }
BuildProgress.Value = 55;
//////////////////////////
//Convert Boot Sound if provided by user
if (FlagBootSoundSpecified)
{
BuildStatus.Text = "Converting user-provided sound to btsnd format...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "SOX\\sox.exe";
LauncherExeArgs = "\"" + OpenBootSound.FileName + "\" -b 16 \"" + TempSoundPath + "\" channels 2 rate 48k trim 0 6";
LaunchProgram();
File.Delete(TempBuildPath + "meta\\bootSound.btsnd");
LauncherExeFile = TempToolsPath + "JAR\\wav2btsnd.exe";
LauncherExeArgs = "-in \"" + TempSoundPath + "\" -out \"" + TempBuildPath + "meta\\bootSound.btsnd\"" + LoopString;
LaunchProgram();
File.Delete(TempSoundPath);
}
BuildProgress.Value = 60;
////////////////////////////////////////
//Build ISO based on type and user specification
BuildStatus.Text = "Processing game for NFS Conversion...";
BuildStatus.Refresh();
if (OpenGame.FileName != null) { OGfilepath = OpenGame.FileName; }
if (SystemType == "wii")
{
if (FlagWBFS)
{
LauncherExeFile = TempToolsPath + "EXE\\wbfs_file.exe";
LauncherExeArgs = "\"" + OpenGame.FileName + "\" convert \"" + TempSourcePath + "wbfsconvert.iso\"";
LaunchProgram();
OpenGame.FileName = TempSourcePath + "wbfsconvert.iso";
}
if (FlagNKIT || FlagNASOS)
{
if (Directory.Exists(TempToolsPath + "NKIT\\Processed"))
{
Directory.Delete(TempToolsPath + "NKIT\\Processed", true);
}
BuildStatus.Text = "Unscrubbing game for NFS Conversion...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "NKIT\\ConvertToISO.exe";
LauncherExeArgs = "\"" + OpenGame.FileName + "\"";
LaunchProgram();
OpenGame.FileName = TempSourcePath + "game.iso";
if(FlagNKIT)
File.Move(Directory.GetFiles(TempToolsPath + "NKIT\\Processed\\Temp", "*.tmp")[0], OpenGame.FileName);
else
File.Move(Directory.GetFiles(TempToolsPath + "NKIT\\Processed\\Wii_MatchFail", "*.iso")[0], OpenGame.FileName);
}
if (DisableTrimming.Checked == false)
{
BuildStatus.Text = "Extracting game for NFS Conversion...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
LauncherExeArgs = "extract " + "\"" + OpenGame.FileName + "\"" + " --DEST " + TempSourcePath + "ISOEXTRACT" + " --psel data,-update -ovv";
LaunchProgram(); // EXTRACT WII ISO
if (ForceCC.Checked)
{
LauncherExeFile = TempToolsPath + "EXE\\GetExtTypePatcher.exe";
LauncherExeArgs = "\"" + TempSourcePath + "ISOEXTRACT\\sys\\main.dol\" -nc";
LaunchProgram();
}
if (WiiVMC.Checked)
{
MessageBox.Show("The Wii Video Mode Changer will now be launched. I recommend using the Smart Patcher option. \n\n" +
"If you're scared and don't know what you're doing, close the patcher window and nothing will be patched." +
"\n\nClick OK to continue..."
, "Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
HideProcess = false;
LauncherExeFile = TempToolsPath + "EXE\\wii-vmc.exe";
LauncherExeArgs = "\"" + TempSourcePath + "ISOEXTRACT\\sys\\main.dol\"";
LaunchProgram();
HideProcess = true;
MessageBox.Show("Conversion will now continue..."
, "Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
BuildStatus.Text = "Rebuilding iso for NFS Conversion...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
if (!Wiimmfi.Checked)
{
wiimmfiOption = "";
}
LauncherExeArgs = "copy " + TempSourcePath + "ISOEXTRACT" + " --DEST " + TempSourcePath + "game.iso" + " -ovv --links --iso" + wiimmfiOption;
LaunchProgram(); // REBUILD WII ISO
if (File.Exists(TempSourcePath + "wbfsconvert.iso")) { File.Delete(TempSourcePath + "wbfsconvert.iso"); }
OpenGame.FileName = TempSourcePath + "game.iso";
}
}
if (SystemType == "dol")
{
FileSystem.CreateDirectory(TempSourcePath + "TEMPISOBASE");
FileSystem.CopyDirectory(TempToolsPath + "BASE", TempSourcePath + "TEMPISOBASE");
File.Copy(OpenGame.FileName, TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
LauncherExeArgs = "copy " + TempSourcePath + "TEMPISOBASE" + " --DEST " + TempSourcePath + "game.iso" + " -ovv --links --iso";
LaunchProgram();
Directory.Delete(TempSourcePath + "TEMPISOBASE", true);
OpenGame.FileName = TempSourcePath + "game.iso";
}
if (SystemType == "wiiware")
{
FileSystem.CreateDirectory(TempSourcePath + "TEMPISOBASE");
FileSystem.CopyDirectory(TempToolsPath + "BASE", TempSourcePath + "TEMPISOBASE");
if (Force43NAND.Checked)
{
File.Copy(TempToolsPath + "DOL\\FIX94_wiivc_chan_booter_force43.dol", TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
else
{
File.Copy(TempToolsPath + "DOL\\FIX94_wiivc_chan_booter.dol", TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
string[] TitleTXT = { GameSourceDirectory.Text };
File.WriteAllLines(TempSourcePath + "TEMPISOBASE\\files\\title.txt", TitleTXT);
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
LauncherExeArgs = "copy " + TempSourcePath + "TEMPISOBASE" + " --DEST " + TempSourcePath + "game.iso" + " -ovv --links --iso";
LaunchProgram();
Directory.Delete(TempSourcePath + "TEMPISOBASE", true);
OpenGame.FileName = TempSourcePath + "game.iso";
}
if (SystemType == "gcn")
{
FileSystem.CreateDirectory(TempSourcePath + "TEMPISOBASE");
FileSystem.CopyDirectory(TempToolsPath + "BASE", TempSourcePath + "TEMPISOBASE");
if (Force43NINTENDONT.Checked)
{
File.Copy(TempToolsPath + "DOL\\FIX94_nintendont_force43_autoboot.dol", TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
else if (CustomMainDol.Checked)
{
File.Copy(OpenMainDol.FileName, TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
else if (DisableNintendontAutoboot.Checked)
{
File.Copy(TempToolsPath + "DOL\\FIX94_nintendont_forwarder.dol", TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
else
{
File.Copy(TempToolsPath + "DOL\\FIX94_nintendont_default_autoboot.dol", TempSourcePath + "TEMPISOBASE\\sys\\main.dol");
}
if (FlagNKIT)
{
if (Directory.Exists(TempToolsPath + "NKIT\\Processed\\Temp"))
{
Directory.Delete(TempToolsPath + "NKIT\\Processed\\Temp", true);
}
BuildStatus.Text = "Unscrubbing game for NFS Conversion...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "NKIT\\ConvertToISO.exe";
LauncherExeArgs = "\"" + OpenGame.FileName + "\"";
LaunchProgram(); // CONVERT TO ISO
File.Move(Directory.GetFiles(TempToolsPath + "NKIT\\Processed\\GameCube_MatchFail", "*.iso")[0], TempSourcePath + "TEMPISOBASE\\files\\game.iso");
}
else
{
File.Copy(OpenGame.FileName, TempSourcePath + "TEMPISOBASE\\files\\game.iso");
}
if (FlagGC2Specified)
{
if (FlagNKIT)
{
if (Directory.Exists(TempToolsPath + "NKIT\\Processed\\Temp"))
{
Directory.Delete(TempToolsPath + "NKIT\\Processed\\Temp", true);
}
BuildStatus.Text = "Unscrubbing second disc for NFS Conversion...";
BuildStatus.Refresh();
LauncherExeFile = TempToolsPath + "NKIT\\ConvertToISO.exe";
LauncherExeArgs = "\"" + OpenGC2.FileName + "\"";
LaunchProgram(); // CONVERT DISC 2 TO ISO
File.Move(Directory.GetFiles(TempToolsPath + "NKIT\\Processed\\GameCube_MatchFail", "*.iso")[0], TempSourcePath + "TEMPISOBASE\\files\\disc2.iso");
}
else
{
File.Move(OpenGC2.FileName, TempSourcePath + "TEMPISOBASE\\files\\disc2.iso");
}
}
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
LauncherExeArgs = "copy " + TempSourcePath + "TEMPISOBASE" + " --DEST " + TempSourcePath + "game.iso" + " -ovv --links --iso";
LaunchProgram(); // BUILD FINAL GAMECUBE ISO
Directory.Delete(TempSourcePath + "TEMPISOBASE", true);
OpenGame.FileName = TempSourcePath + "game.iso";
}
LauncherExeFile = TempToolsPath + "WIT\\wit.exe";
LauncherExeArgs = "extract " + OpenGame.FileName + " --psel data --psel -update --files +tmd.bin --files +ticket.bin --dest " + TempSourcePath + "TIKTEMP" + " -vv1";
LaunchProgram();
File.Copy(TempSourcePath + "TIKTEMP\\tmd.bin", TempBuildPath + "code\\rvlt.tmd");
File.Copy(TempSourcePath + "TIKTEMP\\ticket.bin", TempBuildPath + "code\\rvlt.tik");
Directory.Delete(TempSourcePath + "TIKTEMP", true);
BuildProgress.Value = 70;
////////////////////////////////////////////////
//Convert ISO to NFS format
BuildStatus.Text = "Converting processed game to NFS format...";
BuildStatus.Refresh();
Directory.SetCurrentDirectory(TempBuildPath + "content");
string lrpatchflag = "";
if (LRPatch.Checked)
{
lrpatchflag = " -lrpatch";
}
switch (SystemType)
{
case "wii":
LauncherExeFile = TempToolsPath + "EXE\\nfs2iso2nfs.exe";
LauncherExeArgs = "-enc" + nfspatchflag + lrpatchflag + " -iso \"" + OpenGame.FileName + "\"";
break;
case "dol":
LauncherExeFile = TempToolsPath + "EXE\\nfs2iso2nfs.exe";
LauncherExeArgs = "-enc -homebrew" + passpatch + " -iso \"" + OpenGame.FileName + "\"";
break;
case "wiiware":
LauncherExeFile = TempToolsPath + "EXE\\nfs2iso2nfs.exe";
LauncherExeArgs = "-enc -homebrew" + nfspatchflag + lrpatchflag + " -iso \"" + OpenGame.FileName + "\"";
break;
case "gcn":
LauncherExeFile = TempToolsPath + "EXE\\nfs2iso2nfs.exe";
LauncherExeArgs = "-enc -homebrew -passthrough -iso \"" + OpenGame.FileName + "\"";
break;
}
LaunchProgram();
if (DisableTrimming.Checked == false)
{
File.Delete(OpenGame.FileName);
}
else if (FlagWBFS)
{
File.Delete(OpenGame.FileName);
}
BuildProgress.Value = 85;
///////////////////////////
//Encrypt contents with NUSPacker
BuildStatus.Text = "Encrypting contents into installable WUP Package...";
BuildStatus.Refresh();
Directory.SetCurrentDirectory(TempRootPath);
LauncherExeFile = TempToolsPath + "JAR\\NUSPacker.exe";
LauncherExeArgs = "-in BUILDDIR -out \"" + OutputFolderSelect.SelectedPath + "\\WUP-N-" + TitleIDText + "_" + PackedTitleIDLine.Text + "\" -encryptKeyWith " + WiiUCommonKey.Text;
LaunchProgram();
BuildProgress.Value = 100;
/////////////////////////////////
//Delete Temp Directories
Directory.SetCurrentDirectory(Application.StartupPath);
Directory.Delete(TempBuildPath, true);
Directory.Delete(TempRootPath + "output", true);
Directory.Delete(TempRootPath + "tmp", true);
Directory.CreateDirectory(TempBuildPath);
/////////////////////////
//END
BuildStatus.Text = "Conversion complete...";
BuildStatus.Refresh();
MessageBox.Show("Conversion Complete! Your packed game can be found here: " + OutputFolderSelect.SelectedPath +
"\\WUP-N-" + TitleIDText + "_" + PackedTitleIDLine.Text +
".\n\nInstall your title using WUP Installer GX2 with signature patches enabled (CBHC, Haxchi, etc)." +
"Make sure you have signature patches enabled when launching your title.\n\n Click OK to continue..."
, PackedTitleLine1.Text + " Conversion Complete"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (OGfilepath != null) { OpenGame.FileName = OGfilepath; }
BuildStatus.Text = "";
BuildStatus.Refresh();
MainTabs.Enabled = true;
MainTabs.SelectedTab = SourceFilesTab;
BuildProcessFin:;
/////
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="MainTableLayout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiRetail.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MainTabs.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SDCardStuff.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GCRetail.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiNAND.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiHomebrew.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiRetail.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MainTabs.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceFilesTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceFilesTab2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MetaTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceFilesTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RepoDownload.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TitleIDLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameNameLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ITIDText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IGNText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RepoDownload.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TitleIDLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameNameLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ITIDText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IGNText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BannerSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="IconSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GameSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceFilesTab2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GC2SourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GC2SourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ToggleBootSoundLoop.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundPreviewButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GC2SourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GC2SourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ToggleBootSoundLoop.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcPreviewText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcPreviewBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LogoSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcSourceDirectory.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DrcSourceButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BootSoundPreviewButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MetaTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LRPatch.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TutorialLink.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedLabel5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GamePadEmuLayout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GamePadModeText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleIDLine.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleIDText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="EnablePackedLine2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleLine2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleLine1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LRPatch.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TutorialLink.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedLabel5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="AdvancedLabel5.Text" xml:space="preserve">
<value>*Wii Remote Emulation modes don't support infrared pointing or motion detection.
**The force options should only be used if your game doesn't detect your controller mode properly. (For example, Resident Evil 4 Wii Edition supports the Classic Controller, but it won't work without being patched)
**When using the force options, Wii Retail Injections will be patched automatically. For vWii NAND Titles, you may also need to patch your WAD before installing it to NAND:</value>
</data>
<metadata name="GamePadEmuLayout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ForceCC.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NoGamePadEmu.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="CCEmu.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ForceNoCC.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="HorWiiMote.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VerWiiMote.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ForceCC.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NoGamePadEmu.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="CCEmu.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ForceNoCC.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="HorWiiMote.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VerWiiMote.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GamePadModeText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleIDLine.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleIDText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="EnablePackedLine2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleLine2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleLine1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="PackedTitleText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveAncastKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="sign_c2w_patcher_link.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedLabel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AncastKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveAncastKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="sign_c2w_patcher_link.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvancedLabel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AncastKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildTab.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvanceCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildStatus.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildProgress.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveTitleKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveCommonKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TheBigOneTM.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="KeysCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MetaCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RequirementsLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TitleKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RHFKeyLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="CommonLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiUCommonKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="AdvanceCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildStatus.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BuildProgress.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveTitleKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SaveCommonKeyButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TheBigOneTM.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="KeysCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MetaCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SourceCheck.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RequirementsLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TitleKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RHFKeyLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="CommonLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiUCommonKey.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SDCardStuff.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GCRetail.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiNAND.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WiiHomebrew.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OpenIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="OpenIcon.Filter" xml:space="preserve">
<value>Supported Image Files (*.png,*.tga,*.jpg,*.jpeg,*.bmp,*.gif)|*.png;*.tga;*.jpg;*.jpeg;*.bmp;*.gif|PNG Files (*.png)|*.png|TGA Files (*.tga)|*.tga|JPEG Files (*.jpg,*.jpeg)|*.jpg;*.jpeg|BMP Files (*.bmp)|*.bmp|GIF Files (*.gif)|*.gif</value>
</data>
<metadata name="OpenBanner.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>158, 13</value>
</metadata>
<data name="OpenBanner.Filter" xml:space="preserve">
<value>Supported Image Files (*.png,*.tga,*.jpg,*.jpeg,*.bmp,*.gif)|*.png;*.tga;*.jpg;*.jpeg;*.bmp;*.gif|PNG Files (*.png)|*.png|TGA Files (*.tga)|*.tga|JPEG Files (*.jpg,*.jpeg)|*.jpg;*.jpeg|BMP Files (*.bmp)|*.bmp|GIF Files (*.gif)|*.gif</value>
</data>
<metadata name="OpenGame.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>277, 17</value>
</metadata>
<metadata name="OpenDrc.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>390, 17</value>
</metadata>
<data name="OpenDrc.Filter" xml:space="preserve">
<value>Supported Image Files (*.png,*.tga,*.jpg,*.jpeg,*.bmp,*.gif)|*.png;*.tga;*.jpg;*.jpeg;*.bmp;*.gif|PNG Files (*.png)|*.png|TGA Files (*.tga)|*.tga|JPEG Files (*.jpg,*.jpeg)|*.jpg;*.jpeg|BMP Files (*.bmp)|*.bmp|GIF Files (*.gif)|*.gif</value>
</data>
<metadata name="OpenLogo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>530, 17</value>
</metadata>
<data name="OpenLogo.Filter" xml:space="preserve">
<value>Supported Image Files (*.png,*.tga,*.jpg,*.jpeg,*.bmp,*.gif)|*.png;*.tga;*.jpg;*.jpeg;*.bmp;*.gif|PNG Files (*.png)|*.png|TGA Files (*.tga)|*.tga|JPEG Files (*.jpg,*.jpeg)|*.jpg;*.jpeg|BMP Files (*.bmp)|*.bmp|GIF Files (*.gif)|*.gif</value>
</data>
<metadata name="OpenBootSound.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>670, 17</value>
</metadata>
<metadata name="OpenMainDol.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 56</value>
</metadata>
<metadata name="OutputFolderSelect.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>145, 56</value>
</metadata>
<metadata name="OpenGC2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>302, 56</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>101</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAA//8AAAAAAP8A/wARg/0FAL3rFQC/8h0AyvwxbO79qkfn/pMAwftEALv5RwC8/VIAvvxdAMD6aQDD
+3YAxvaGBY/EwhyDv/Yuj8z+Qp7Q/1SRv/+a2Ov/w+vt/2Odvv87h7X/O5XI/0Sm1v9TtNv/HztG/zAt
LP+Sjor/RFph/3vS7v+c5v7/UWpw/ygjI/+Qi4n/NDc2/+b+///F+Pv/mPX8/2jq/v9Lyvb/LZDF/zKf
3v8wwf7/itr3/+P6+v/T+vn9n/D57z3X+KYAxfpsAML4XwC8+FMAv/hOAL34SAC5/kQAt/o8ALb2NgC6
8y8AuuolAL7mHADG6RIA0sUKAP/PAgAAAAAAAAAAAAAAAAAAAAD/AP8AFKL/BAC9+RMAvPkbAMD8JgDX
+0cA0P5LAL79QQC7+kYAvf1SAL78XAC9/GMAvPtpAL/9cADP/3wAs+OUB4S3yRh5sO1Afav/eL/a/8z2
9f94r8z/QYi0/zuQwv9Fo9L/Vbff/ylVZP8sKin/f3p2/0Rpbf+U5fj/sez9/3KQk/8ZExP/Y1tZ/1Zd
XP/j////uPv8/474/f9k5f3/S77t/yqJxf9RwPH/KsH7/4bb9f6g7vrrT9r6xADE+Y4Avvx3AL/+dAC/
/msAvf1hALv8WAC7/VAAvPpJALz2QgDD9zkAvfQtAL3wJAC67BgAxu8QANrPCAD/0wMa8dAAEe3/AAAA
AAAAAAAA/wD/ABSf/wUAuvsTAMDzGwC3+B4AuvoiAL/6JwC8+ioAv/cuAMP6MwDF/DoAwvc+AMf5RQDB
/EoAxflSAMz7XwDU/mwCsNiPMIGq21GYvf/B9fj/m8rb/0mKs/88jbv/RZ/N/1S12v9Upb3/GB4h/y8y
Lv9srbf/p/D//7/x//+w0tf/HyEg/xoXF/+4z8//yf///5/7/v999f7/X9z9/0iv4P8tkM//XNX7/yC6
9vsux+/KD8n8nQC//IYAwvt/AL/7dAC//XAAvv9nALv9XQC7+1YAvPtPALz7SAC890EAvvk5ALb0LgC/
+ikp1vsvUuv5NUDy9CMA9+wNCN7xAwX6/wIA//8AAAAAAP8A/wATof8FALTwDwDG6xIAwfIWALr2FgC8
+BcAx/IdAMjxIADG+SUAy/8uLuX7azvp/pYM1f5ZAMT9SADE/FEAx/teAM7/bx2Vu7JAgqr8jtfo/8Po
7v9gnsD/PIm2/0Obxv9TsNP/YcTe/2GzyP9jt8b/jOv5/6jy///G9P7/2vj9/8XZ2P/F29v/yv3+/6f7
/v+J+P//eO3+/17Q+f88m9T/Ubbm/0rR/f8cs+vpAMj4gADF/m8Aw/psBMn6eRLV/JgFyP18AL/9aQC9
/GEAvfxXALv7UAC7+kgAu/ZAALv2OQDC8zUj3vpMS/D8kFTz/alO+f6SNfn+RgD1+QwA/74BAAAAAAD/
/wBI0/8BBar8BwCy7RIAquUSALbjEwC/4RcAvOYbALryHgDF7iQAwvEnA9D3Ok3v/Khn8/7gGuL9ggDH
+0kAyPpQAMb4WQDJ/mkWr9aZPHmg9FOfwv++8vn/k8nf/0OMu/8/ksD/TajM/1y82f9py+X/dNzy/4zq
9v+p8/v/x/X9/9X3/f/a+///yvz//6v4/v+O9f7/f/H+/3Lf/v9XvO3/P5vT/3Dd+f87yfv/E6PT0QDQ
/m8AxPleAMf6Vh7j+4dL8v3iKOj8mADE+kEAvfdDAL/0SAC99EcAu/JGALj2QQC39zoAxv0+M+n9f1f0
/c2M+P3fUvr+0DH+/okS/vgbfXTtAQAAAAAA//8ATNH/AQi7/wYAvPsQALjzEQDB7xIAye0WAMXwGgDD
+x4AyvciAML1JQDG/S4b5PtqIuf8kgfY/FsAyvVGAMX2UQDE+mQAx/x8R7XXvEqBp/xDhK7/eMPb/77y
9/96vdz/Q5jH/0SYxv9NqdH/Xbrf/3DS6v+G5vT/ne/8/670/v+19v7/tfX//6b1/v+S8f7/fuz//3fm
//9dxvD/NJbT/2XL8P9f3v3/R8jw/x2Pw+sAwul9AMr8YgDI+1cN3ft3Je38thLk+3oAyfc3AMX4LADL
9yYAxfgiAMDwHwC28B4At/EhANXyMTXs/H1p9fzJp/r94E78/tUx/f6IHfb7FD6s+gEAAAAAAP//AP8A
/wARpf8FAMX1EADF6BIAv+UTAMntFgDH5hsAx/QeAMX5IQDI9yYAw/ssAMv0NADJ+j4Ax/NHAML2XwDB
+nAAwvx/B8L4k1GhwdlAe6T/R5S//0qYwv+G0+n/tPT5/3zL5P9Hns3/RpvJ/06o1f9fu+L/cdDs/4Xj
9v+L7Pv/i+79/43t/v+F7f7/cOb9/2Pd//9Pvu3/MZzb/2HI8v996v3/cuX7/3HZ7f83pdz4AajTnADO
/2IAxPtSAMr7UADT+1cAzPpFAMj6OADF+jAAwPYpAMT0JADI9B8AwPYaAL7iFwDb5h8m6f1GSvL9k0v3
/LU4+v2oMfv+RgDH/gV/cP8BAP//AAAAAAD/AP8AE53/BQDG8xAAyOYRAL/kEwDE6BcAy+gaAMfyHgDJ
+SIAxPgkAMH5LADA9DwAvvtWALv8ZwDB+XMAwPx4AML8gha97JpRi6zwQIOq/1Km0v9Usd7/TaXK/4PV
7v+1+f3/jtzx/1ez4/9Nqdz/T6rZ/1e13/9kxuv/bdT0/27Y+P9p3Pv/ZNv8/1nS/P9Dseb/PrHm/3nf
+v+L7/z/o/D8/7P2+f+N7fb/VL7o/w+k18MAzPtpAMj8UgDH+kgAyvlDAMb6PADE/jQAxfwuAMj8KADF
9SMAx/gfAMT7HADB6RcAy+kYAdr8IR/m+y417/s+IPL+Lgb1/AqZd84B+vYNAQAAAAAA//8ATdT/AQux
/wYAyvMQAMjmEgDE5xMAwPQWAL/4GQDE9B4AxPYmAL/3OAC/+k0AwPtZAMH5YgDB+GcAvvxuAML7dwDH
+3klq8+iSX6h/0eQuP9hstv/fdD1/3nG6v9No8v/dsXl/67t/P+p7/3/etH3/2LC9P9WvfT/VcL4/1fG
+/9TxPj/TsD1/0Sy6/9EqOH/X8Xy/47o/v+C4v7/een9/8T8/P/j+/z/sPj6/3PZ9f8orOHkAMDxkADH
+mYAyfhMAMn5QQDJ/DsAyPwzAMn6LADH9ScAx+0jAMH5HgC++xoAwuoXALHjFADE5xMAxeUQAMHaCgDC
8QVK4I0BM/+sAff/AgEAAAAAAP//AEbM/wEGuP8HAM3zEADP6xEAu+cSALvyGgC79iMAuPkvALv4PwC/
+kcAw/hOAML6VwC//V4AwfxoAMr/ZwDV/2AA3P9mMoapz0KCp/9Uocb/dcDl/67j+v+36///X8Dr/0GZ
w/9br9P/hNLt/6Dl+v+d4///idn9/3bP+v9qx/j/X7/0/2jB8v9xzPj/f9z+/4bg/f9i0vX/bdj8/5fx
//+w/Pv/0/75/9n7/P+h8Pz/Rbro+wa/86QAzv+BAMv/bQDF/VUAyPk9AMv7MgDL+CsAzPcmAM/yIgDD
/RwAuvsaAMPqFgCx6hMAw+gQALvwDADB4ggA7f8EAP//AQAAAAAAAAAAAAAAAAD//wBHzP8BBrj/BwDI
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
/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD15wAA6eEAAPLVAAD/6QAAZVsAAAAAAAAA
AAAAAAAAAC4rAADs8QAA0ckAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqgAAAAAA/4AA/wB4
AP/gAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAA4AAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAA4AAAAAAA
AABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAA
AAAAAAAA4AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAAwAAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAA
AABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAA
AABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAA4AAAAAAAAABgAAAAwAAAAAAAAABgAAAAwAAAAAAA
AABgAAAAwAAAAAAAAABgAAAA4AAAAAAAAADgAAAA/4f+AAf////gAAAA
</value>
</data>
</root>
\ No newline at end of file
namespace TeconMoon_s_WiiVC_Injector
{
partial class SDCardMenu
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SDCardMenu));
this.DriveBox = new System.Windows.Forms.ComboBox();
this.SDCardText = new System.Windows.Forms.Label();
this.ReloadDrives = new System.Windows.Forms.Button();
this.NintendontUpdate = new System.Windows.Forms.Button();
this.ActionStatus = new System.Windows.Forms.Label();
this.GenerateConfig = new System.Windows.Forms.Button();
this.LanguageBox = new System.Windows.Forms.ComboBox();
this.LanguageText = new System.Windows.Forms.Label();
this.VideoText = new System.Windows.Forms.Label();
this.VideoForceMode = new System.Windows.Forms.ComboBox();
this.VideoTypeMode = new System.Windows.Forms.ComboBox();
this.VideoWidth = new System.Windows.Forms.TrackBar();
this.VideoWidthText = new System.Windows.Forms.Label();
this.WidthNumber = new System.Windows.Forms.Label();
this.MemcardText = new System.Windows.Forms.Label();
this.MemcardBlocks = new System.Windows.Forms.ComboBox();
this.MemcardMulti = new System.Windows.Forms.CheckBox();
this.NintendontOptions = new System.Windows.Forms.CheckedListBox();
this.Format = new System.Windows.Forms.LinkLabel();
((System.ComponentModel.ISupportInitialize)(this.VideoWidth)).BeginInit();
this.SuspendLayout();
//
// DriveBox
//
this.DriveBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.DriveBox.FormattingEnabled = true;
this.DriveBox.Location = new System.Drawing.Point(15, 29);
this.DriveBox.Name = "DriveBox";
this.DriveBox.Size = new System.Drawing.Size(253, 21);
this.DriveBox.TabIndex = 0;
this.DriveBox.SelectedIndexChanged += new System.EventHandler(this.DriveBox_SelectedIndexChanged);
//
// SDCardText
//
this.SDCardText.Location = new System.Drawing.Point(12, 9);
this.SDCardText.Name = "SDCardText";
this.SDCardText.Size = new System.Drawing.Size(145, 17);
this.SDCardText.TabIndex = 1;
this.SDCardText.Text = "Choose your SD Card";
//
// ReloadDrives
//
this.ReloadDrives.AutoSize = true;
this.ReloadDrives.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.ReloadDrives.Location = new System.Drawing.Point(15, 56);
this.ReloadDrives.Name = "ReloadDrives";
this.ReloadDrives.Size = new System.Drawing.Size(98, 23);
this.ReloadDrives.TabIndex = 2;
this.ReloadDrives.Text = "Reload Drive List";
this.ReloadDrives.UseVisualStyleBackColor = true;
this.ReloadDrives.Click += new System.EventHandler(this.ReloadDrives_Click);
//
// NintendontUpdate
//
this.NintendontUpdate.AutoSize = true;
this.NintendontUpdate.Location = new System.Drawing.Point(15, 105);
this.NintendontUpdate.Name = "NintendontUpdate";
this.NintendontUpdate.Size = new System.Drawing.Size(253, 28);
this.NintendontUpdate.TabIndex = 4;
this.NintendontUpdate.Text = "Download Latest Nintendont from GitHub";
this.NintendontUpdate.UseVisualStyleBackColor = true;
this.NintendontUpdate.Click += new System.EventHandler(this.NintendontUpdate_Click);
//
// ActionStatus
//
this.ActionStatus.Location = new System.Drawing.Point(15, 82);
this.ActionStatus.Name = "ActionStatus";
this.ActionStatus.Size = new System.Drawing.Size(253, 20);
this.ActionStatus.TabIndex = 5;
this.ActionStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// GenerateConfig
//
this.GenerateConfig.AutoSize = true;
this.GenerateConfig.Location = new System.Drawing.Point(15, 139);
this.GenerateConfig.Name = "GenerateConfig";
this.GenerateConfig.Size = new System.Drawing.Size(253, 28);
this.GenerateConfig.TabIndex = 7;
this.GenerateConfig.Text = "Generate Nintendont Config File (nincfg.bin)";
this.GenerateConfig.UseVisualStyleBackColor = true;
this.GenerateConfig.Click += new System.EventHandler(this.GenerateConfig_Click);
//
// LanguageBox
//
this.LanguageBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.LanguageBox.FormattingEnabled = true;
this.LanguageBox.Items.AddRange(new object[] {
"Automatic",
"English",
"German",
"French",
"Spanish",
"Italian",
"Dutch"});
this.LanguageBox.Location = new System.Drawing.Point(15, 385);
this.LanguageBox.Name = "LanguageBox";
this.LanguageBox.Size = new System.Drawing.Size(124, 21);
this.LanguageBox.TabIndex = 8;
//
// LanguageText
//
this.LanguageText.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.LanguageText.Location = new System.Drawing.Point(15, 362);
this.LanguageText.Name = "LanguageText";
this.LanguageText.Size = new System.Drawing.Size(124, 18);
this.LanguageText.TabIndex = 9;
this.LanguageText.Text = "Language";
this.LanguageText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// VideoText
//
this.VideoText.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.VideoText.Location = new System.Drawing.Point(144, 285);
this.VideoText.Name = "VideoText";
this.VideoText.Size = new System.Drawing.Size(124, 18);
this.VideoText.TabIndex = 11;
this.VideoText.Text = "Video Mode";
this.VideoText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// VideoForceMode
//
this.VideoForceMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.VideoForceMode.FormattingEnabled = true;
this.VideoForceMode.Items.AddRange(new object[] {
"Auto",
"Force",
"Force (Deflicker)",
"None"});
this.VideoForceMode.Location = new System.Drawing.Point(145, 306);
this.VideoForceMode.Name = "VideoForceMode";
this.VideoForceMode.Size = new System.Drawing.Size(123, 21);
this.VideoForceMode.TabIndex = 10;
this.VideoForceMode.SelectedIndexChanged += new System.EventHandler(this.VideoForceMode_SelectedIndexChanged);
//
// VideoTypeMode
//
this.VideoTypeMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.VideoTypeMode.FormattingEnabled = true;
this.VideoTypeMode.Items.AddRange(new object[] {
"Auto",
"NTSC",
"MPAL",
"PAL50",
"PAL60"});
this.VideoTypeMode.Location = new System.Drawing.Point(145, 333);
this.VideoTypeMode.Name = "VideoTypeMode";
this.VideoTypeMode.Size = new System.Drawing.Size(123, 21);
this.VideoTypeMode.TabIndex = 12;
this.VideoTypeMode.SelectedIndexChanged += new System.EventHandler(this.VideoTypeMode_SelectedIndexChanged);
//
// VideoWidth
//
this.VideoWidth.AutoSize = false;
this.VideoWidth.BackColor = System.Drawing.SystemColors.Control;
this.VideoWidth.Enabled = false;
this.VideoWidth.LargeChange = 10;
this.VideoWidth.Location = new System.Drawing.Point(145, 383);
this.VideoWidth.Maximum = 720;
this.VideoWidth.Minimum = 640;
this.VideoWidth.Name = "VideoWidth";
this.VideoWidth.Size = new System.Drawing.Size(123, 26);
this.VideoWidth.SmallChange = 2;
this.VideoWidth.TabIndex = 13;
this.VideoWidth.TickFrequency = 2;
this.VideoWidth.Value = 640;
this.VideoWidth.Scroll += new System.EventHandler(this.VideoWidth_Scroll);
//
// VideoWidthText
//
this.VideoWidthText.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.VideoWidthText.Enabled = false;
this.VideoWidthText.Location = new System.Drawing.Point(145, 362);
this.VideoWidthText.Name = "VideoWidthText";
this.VideoWidthText.Size = new System.Drawing.Size(123, 18);
this.VideoWidthText.TabIndex = 14;
this.VideoWidthText.Text = "Video Width";
this.VideoWidthText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// WidthNumber
//
this.WidthNumber.Location = new System.Drawing.Point(141, 378);
this.WidthNumber.Name = "WidthNumber";
this.WidthNumber.Size = new System.Drawing.Size(127, 14);
this.WidthNumber.TabIndex = 15;
this.WidthNumber.Text = "Auto";
this.WidthNumber.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// MemcardText
//
this.MemcardText.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.MemcardText.Location = new System.Drawing.Point(15, 285);
this.MemcardText.Name = "MemcardText";
this.MemcardText.Size = new System.Drawing.Size(124, 18);
this.MemcardText.TabIndex = 16;
this.MemcardText.Text = "Memcard Blocks";
this.MemcardText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// MemcardBlocks
//
this.MemcardBlocks.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.MemcardBlocks.FormattingEnabled = true;
this.MemcardBlocks.Items.AddRange(new object[] {
"59",
"123",
"251",
"507 (Unstable)",
"1019 (Unstable)",
"2043 (Unstable)"});
this.MemcardBlocks.Location = new System.Drawing.Point(15, 306);
this.MemcardBlocks.Name = "MemcardBlocks";
this.MemcardBlocks.Size = new System.Drawing.Size(124, 21);
this.MemcardBlocks.TabIndex = 17;
//
// MemcardMulti
//
this.MemcardMulti.Location = new System.Drawing.Point(15, 333);
this.MemcardMulti.Name = "MemcardMulti";
this.MemcardMulti.Size = new System.Drawing.Size(124, 26);
this.MemcardMulti.TabIndex = 18;
this.MemcardMulti.Text = "Memcard Multi";
this.MemcardMulti.UseVisualStyleBackColor = false;
//
// NintendontOptions
//
this.NintendontOptions.CheckOnClick = true;
this.NintendontOptions.FormattingEnabled = true;
this.NintendontOptions.Items.AddRange(new object[] {
"Memcard Emulation",
"Cheats",
"Cheat Path",
"Unlock Read Speed",
"Wiimote CC Rumble",
"TRI Arcade Mode",
"BBA Emulation",
"Auto Video Width",
"Patch PAL50",
"Force Widescreen",
"Force Progressive",
"Skip IPL",
"OSReport",
"Log"});
this.NintendontOptions.Location = new System.Drawing.Point(15, 173);
this.NintendontOptions.MultiColumn = true;
this.NintendontOptions.Name = "NintendontOptions";
this.NintendontOptions.Size = new System.Drawing.Size(253, 109);
this.NintendontOptions.TabIndex = 6;
this.NintendontOptions.SelectedIndexChanged += new System.EventHandler(this.NintendontOptions_SelectedIndexChanged);
this.NintendontOptions.DoubleClick += new System.EventHandler(this.NintendontOptions_DoubleClick);
//
// Format
//
this.Format.AutoSize = true;
this.Format.Location = new System.Drawing.Point(119, 61);
this.Format.Name = "Format";
this.Format.Size = new System.Drawing.Size(155, 13);
this.Format.TabIndex = 19;
this.Format.TabStop = true;
this.Format.Text = "Use this to format your SD Card";
this.Format.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.Format_LinkClicked);
//
// SDCardMenu
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
this.ClientSize = new System.Drawing.Size(280, 417);
this.Controls.Add(this.Format);
this.Controls.Add(this.MemcardMulti);
this.Controls.Add(this.MemcardBlocks);
this.Controls.Add(this.MemcardText);
this.Controls.Add(this.WidthNumber);
this.Controls.Add(this.VideoWidthText);
this.Controls.Add(this.VideoWidth);
this.Controls.Add(this.VideoTypeMode);
this.Controls.Add(this.VideoText);
this.Controls.Add(this.VideoForceMode);
this.Controls.Add(this.LanguageText);
this.Controls.Add(this.LanguageBox);
this.Controls.Add(this.GenerateConfig);
this.Controls.Add(this.NintendontOptions);
this.Controls.Add(this.ActionStatus);
this.Controls.Add(this.NintendontUpdate);
this.Controls.Add(this.ReloadDrives);
this.Controls.Add(this.SDCardText);
this.Controls.Add(this.DriveBox);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "SDCardMenu";
this.ShowInTaskbar = false;
this.Text = "Nintendont SD Card Menu...";
this.Load += new System.EventHandler(this.SDCardMenu_Load);
((System.ComponentModel.ISupportInitialize)(this.VideoWidth)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox DriveBox;
private System.Windows.Forms.Label SDCardText;
private System.Windows.Forms.Button ReloadDrives;
private System.Windows.Forms.Button NintendontUpdate;
private System.Windows.Forms.Label ActionStatus;
private System.Windows.Forms.Button GenerateConfig;
private System.Windows.Forms.ComboBox LanguageBox;
private System.Windows.Forms.Label LanguageText;
private System.Windows.Forms.Label VideoText;
private System.Windows.Forms.ComboBox VideoForceMode;
private System.Windows.Forms.ComboBox VideoTypeMode;
private System.Windows.Forms.TrackBar VideoWidth;
private System.Windows.Forms.Label VideoWidthText;
private System.Windows.Forms.Label WidthNumber;
private System.Windows.Forms.Label MemcardText;
private System.Windows.Forms.ComboBox MemcardBlocks;
private System.Windows.Forms.CheckBox MemcardMulti;
private System.Windows.Forms.CheckedListBox NintendontOptions;
private System.Windows.Forms.LinkLabel Format;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Diagnostics;
namespace TeconMoon_s_WiiVC_Injector
{
public partial class SDCardMenu : Form
{
public SDCardMenu()
{
InitializeComponent();
}
string SelectedDriveLetter;
bool DriveSpecified;
//Load Drives and set drive variable on load
private void SDCardMenu_Load(object sender, EventArgs e)
{
ReloadDriveList();
SpecifyDrive();
MemcardBlocks.SelectedIndex = 0;
VideoForceMode.SelectedIndex = 0;
VideoTypeMode.SelectedIndex = 0;
LanguageBox.SelectedIndex = 0;
NintendontOptions.SetItemChecked(0, true);
NintendontOptions.SetItemChecked(7, true);
}
//Callable voids for commands
public void SpecifyDrive()
{
if (DriveBox.SelectedValue != null)
{
SelectedDriveLetter = DriveBox.SelectedValue.ToString().Substring(0, 3);
DriveSpecified = true;
}
else
{
SelectedDriveLetter = "";
DriveSpecified = false;
}
}
public void ReloadDriveList()
{
DriveBox.DataSource = DriveInfo.GetDrives().Where(d => d.IsReady && d.DriveType == DriveType.Removable).Select(d => d.Name + " (" + d.VolumeLabel + ")").ToList();
}
public void CheckForBoxes()
{
// memory card emulation
if (NintendontOptions.GetItemChecked(0))
{
MemcardText.Enabled = true;
MemcardBlocks.Enabled = true;
MemcardMulti.Enabled = true;
}
else
{
MemcardText.Enabled = false;
MemcardBlocks.Enabled = false;
MemcardMulti.Enabled = false;
}
// video width
if (NintendontOptions.GetItemChecked(7))
{
VideoWidth.Enabled = false;
VideoWidthText.Enabled = false;
WidthNumber.Text = "Auto";
}
else
{
VideoWidth.Enabled = true;
VideoWidthText.Enabled = true;
WidthNumber.Text = VideoWidth.Value.ToString();
}
}
public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(hex.Substring(x, 2), 16)).ToArray();
}
public static bool CheckForInternetConnection()
{
try
{
using (var client = new WebClient())
{
using (client.OpenRead("http://clients3.google.com/generate_204"))
{
return true;
}
}
}
catch
{
return false;
}
}
//Reload Drives when selected
private void ReloadDrives_Click(object sender, EventArgs e)
{
ReloadDriveList();
SpecifyDrive();
}
//Specify Drive variable when a drive is selected
private void DriveBox_SelectedIndexChanged(object sender, EventArgs e)
{
SpecifyDrive();
}
//Changing config options
public void NintendontOptions_SelectedIndexChanged(object sender, EventArgs e)
{
CheckForBoxes();
}
private void NintendontOptions_DoubleClick(object sender, EventArgs e)
{
CheckForBoxes();
}
private void VideoForceMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (VideoForceMode.SelectedIndex == 0)
{
VideoTypeMode.SelectedIndex = 0;
VideoTypeMode.Enabled = false;
}
else if (VideoForceMode.SelectedIndex == 3)
{
VideoTypeMode.SelectedIndex = 0;
VideoTypeMode.Enabled = false;
}
else
{
VideoTypeMode.SelectedIndex = 1;
VideoTypeMode.Enabled = true;
}
}
private void VideoWidth_Scroll(object sender, EventArgs e)
{
WidthNumber.Text = VideoWidth.Value.ToString();
}
private void VideoTypeMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (VideoForceMode.SelectedIndex != 0 & VideoForceMode.SelectedIndex != 3 & VideoTypeMode.SelectedIndex == 0)
{
VideoTypeMode.SelectedIndex = 1;
}
}
//Buttons that make changes to SD Card
private void NintendontUpdate_Click(object sender, EventArgs e)
{
string downloadPath = Path.GetTempPath() + "WiiVCInjector\\SOURCETEMP\\Download\\";
string tempPath = downloadPath + "apps\\nintendont\\";
string SDPath = SelectedDriveLetter + "apps\\nintendont";
if (CheckForInternetConnection() == false)
{
DialogResult dialogResult = MessageBox.Show("Your internet connection could not be verified, do you wish to try and download Nintendont anyway?"
, "Internet Connection Verification Failed"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Question
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.No)
{
return;
}
}
ActionStatus.Text = "Downloading...";
ActionStatus.Refresh();
Directory.CreateDirectory(tempPath);
var client = new WebClient();
client.DownloadFile("https://raw.githubusercontent.com/FIX94/Nintendont/master/loader/loader.dol", tempPath + "boot.dol");
client.DownloadFile("https://raw.githubusercontent.com/FIX94/Nintendont/master/nintendont/meta.xml", tempPath + "meta.xml");
client.DownloadFile("https://raw.githubusercontent.com/FIX94/Nintendont/master/nintendont/icon.png", tempPath + "icon.png");
ActionStatus.Text = "";
if (DriveSpecified)
{
if (Directory.Exists(SelectedDriveLetter + "apps\\nintendont"))
{
Directory.Delete(SelectedDriveLetter + "apps\\nintendont", true);
}
Directory.CreateDirectory(SelectedDriveLetter + "apps\\nintendont");
DirectoryInfo dir = new DirectoryInfo(tempPath);
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string outPath = Path.Combine(SDPath, file.Name);
file.CopyTo(outPath, true);
}
MessageBox.Show("Download complete."
, "Success"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
else // if no removable drive is specified
{
DialogResult dialogResult = MessageBox.Show("SD Card not specified.\nDo you wish to save Nintendont somewhere else?"
, "Drive not specified"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Question
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.Yes) // if YES, ask where to save the file
{
DateTime dateTime = DateTime.UtcNow.Date;
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Title = "Save Nintendont zip file",
CheckPathExists = true,
DefaultExt = "zip",
Filter = "Zip Files (*.zip)|*.zip",
FilterIndex = 2,
RestoreDirectory = true,
FileName = "Nintendont-" + dateTime.ToString("dd.MMM.yyyy") + ".zip"
};
// if a path is decided, store it
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string sourcePath = downloadPath;
string zipPath = saveFileDialog.FileName;
if (File.Exists(zipPath))
{
File.Delete(zipPath);
}
ZipFile.CreateFromDirectory(sourcePath, zipPath);
MessageBox.Show("Download complete."
, "Success"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
// else, stop the saving process
else
{
return;
}
}
// if the user doesn't want to save, stop
else
{
return;
}
}
}
public struct ConfigFile
{
public uint magicBytes;
public uint version;
public uint config;
public uint videoMode;
public uint language; // mainly for PAL gamecube games
public byte[] gamePath;
public byte[] cheatPath;
public uint maxPads; // old wii only
public uint gameID;
public byte memCardBlocks;
public sbyte videoScale;
public sbyte videoOffset;
public byte networkProfile; // wii only
}
public enum ninconfig
{
NIN_CFG_CHEATS = 1,
NIN_CFG_DEBUGGER = (1 << 1), // Only for Wii Version
NIN_CFG_DEBUGWAIT = (1 << 2), // Only for Wii Version
NIN_CFG_MEMCARDEMU = (1 << 3), // ENABLED for Wii U and newer Wii
NIN_CFG_CHEAT_PATH = (1 << 4),
NIN_CFG_FORCE_WIDE = (1 << 5),
NIN_CFG_FORCE_PROG = (1 << 6),
NIN_CFG_AUTO_BOOT = (1 << 7),
NIN_CFG_HID = (1 << 8),
NIN_CFG_REMLIMIT = (1 << 8),
NIN_CFG_OSREPORT = (1 << 9),
NIN_CFG_USB = (1 << 10), // old bit for WiiU Widescreen
NIN_CFG_LED = (1 << 11), // Only for Wii Version
NIN_CFG_LOG = (1 << 12),
NIN_CFG_MC_MULTI = (1 << 13),
NIN_CFG_NATIVE_SI = (1 << 14), // Only for Wii Version
NIN_CFG_WIIU_WIDE = (1 << 15), // Only for Wii U Version
NIN_CFG_ARCADE_MODE = (1 << 16),
NIN_CFG_CC_RUMBLE = (1 << 17),
NIN_CFG_SKIP_IPL = (1 << 18),
NIN_CFG_BBA_EMU = (1 << 19),
};
enum ninvideomode
{
NIN_VID_AUTO = (0 << 16),
NIN_VID_FORCE = (1 << 16),
NIN_VID_NONE = (2 << 16),
NIN_VID_FORCE_DF = (4 << 16),
NIN_VID_MASK = NIN_VID_AUTO | NIN_VID_FORCE | NIN_VID_NONE | NIN_VID_FORCE_DF,
NIN_VID_FORCE_PAL50 = (1 << 0),
NIN_VID_FORCE_PAL60 = (1 << 1),
NIN_VID_FORCE_NTSC = (1 << 2),
NIN_VID_FORCE_MPAL = (1 << 3),
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50 | NIN_VID_FORCE_PAL60 | NIN_VID_FORCE_NTSC | NIN_VID_FORCE_MPAL,
NIN_VID_PROG = (1 << 4), //important to prevent blackscreens
NIN_VID_PATCH_PAL50 = (1 << 5), //different force behaviour
};
enum ninlanguage : uint
{
NIN_LAN_ENGLISH = 0,
NIN_LAN_GERMAN = 1,
NIN_LAN_FRENCH = 2,
NIN_LAN_SPANISH = 3,
NIN_LAN_ITALIAN = 4,
NIN_LAN_DUTCH = 5,
/* Auto will use English for E/P region codes and
only other languages when these region codes are used: D/F/S/I/J */
NIN_LAN_AUTO = 0xFFFFFFFF,
};
private void GenerateConfig_Click(object sender, EventArgs e)
{
ConfigFile nintendontCfg = new ConfigFile();
nintendontCfg.magicBytes = 0x01070CF6;
nintendontCfg.version = 9;
nintendontCfg.config = 0;
nintendontCfg.videoMode = 0;
nintendontCfg.language = 0;
nintendontCfg.gamePath = new byte[256];
nintendontCfg.cheatPath = new byte[256];
nintendontCfg.maxPads = 0;
nintendontCfg.gameID = 0;
nintendontCfg.memCardBlocks = 0;
nintendontCfg.videoScale = 0;
nintendontCfg.videoOffset = 0;
nintendontCfg.networkProfile = 0;
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_PROG; // always required?
// Memory Card Emulation
if (NintendontOptions.GetItemChecked(0))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_MEMCARDEMU;
}
// Cheats
if (NintendontOptions.GetItemChecked(1))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_CHEATS;
}
// Cheat Path
if (NintendontOptions.GetItemChecked(2))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_CHEAT_PATH;
}
// Unlock Disc Read Speed
if (NintendontOptions.GetItemChecked(3))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_REMLIMIT;
}
// Wii Remote / Classic Controller Rumble
if (NintendontOptions.GetItemChecked(4))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_CC_RUMBLE;
}
// Triforce Arcade Mode
if (NintendontOptions.GetItemChecked(5))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_ARCADE_MODE;
}
// Broadband Adapter Emulation
if (NintendontOptions.GetItemChecked(6))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_BBA_EMU;
}
// AUTO VIDEO WIDTH
if (NintendontOptions.GetItemChecked(7))
{
//nintendontCfg.videoMode &= (uint)ninvideomode.NIN_VID_MASK;
}
// Patch PAL 50
if (NintendontOptions.GetItemChecked(8))
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_PATCH_PAL50;
if(VideoTypeMode.SelectedIndex == 0 || VideoTypeMode.SelectedIndex == 3)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_PAL50;
}
}
// Force Widescreen
if (NintendontOptions.GetItemChecked(9))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_FORCE_WIDE;
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_WIIU_WIDE;
//nintendontCfg.config |= (uint)ninconfig.NIN_CFG_USB;
}
// Force Progressive Scan
if (NintendontOptions.GetItemChecked(10))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_FORCE_PROG;
}
// Skip IPL
if (NintendontOptions.GetItemChecked(11))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_SKIP_IPL;
}
// OSReport
if (NintendontOptions.GetItemChecked(12))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_OSREPORT;
}
// Log
if (NintendontOptions.GetItemChecked(13))
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_LOG;
}
//Memcard Multi
if (MemcardMulti.Checked)
{
nintendontCfg.config |= (uint)ninconfig.NIN_CFG_MC_MULTI;
}
// VIDEO MODES
// Auto
if (VideoForceMode.SelectedIndex == 0)
{
// do nothing, it's 0
}
// Force
if (VideoForceMode.SelectedIndex == 1)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE;
}
// Force (Deflicker)
if (VideoForceMode.SelectedIndex == 2)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_DF;
}
// None
if (VideoForceMode.SelectedIndex == 3)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_NONE;
}
// VIDEO FORCE OPTIONS
// None
if (VideoTypeMode.SelectedIndex == 0)
{
// do nothing, it's 0;
}
// NTSC
if (VideoTypeMode.SelectedIndex == 1)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_NTSC;
}
// MPAL
if (VideoTypeMode.SelectedIndex == 2)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_MPAL;
}
// PAL50
if (VideoTypeMode.SelectedIndex == 3)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_PAL50;
}
// PAL60
if (VideoTypeMode.SelectedIndex == 4)
{
nintendontCfg.videoMode |= (uint)ninvideomode.NIN_VID_FORCE_PAL60;
}
// LANGUAGE SELECTION
if (LanguageBox.SelectedIndex == 0)
{
nintendontCfg.language = 0xFFFFFFFF;
}
else
{
nintendontCfg.language = (uint)LanguageBox.SelectedIndex;
}
// MEMCARD BLOCKS
nintendontCfg.memCardBlocks = (byte)MemcardBlocks.SelectedIndex;
// VIDEO WIDTH
if (NintendontOptions.GetItemChecked(7))
{
nintendontCfg.videoScale = 0;
}
else
{
nintendontCfg.videoScale = (sbyte)(VideoWidth.Value - 600);
}
// SAVING THE FILE
string savePath = SelectedDriveLetter + "nincfg.bin";
// if removable drive isdn't specified, save file manually
if (DriveSpecified == false)
{
DialogResult dialogResult = MessageBox.Show("SD not specified.\nDo you wish to save the file somewhere else?"
, "Drive not specified"
, MessageBoxButtons.YesNo
, MessageBoxIcon.Question
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
if (dialogResult == DialogResult.Yes) // if YES, ask where to save the file
{
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Title = "Save nincfg.bin",
CheckPathExists = true,
DefaultExt = "bin",
Filter = "nintendont config files (*.bin)|*.bin",
FilterIndex = 2,
RestoreDirectory = true,
FileName = "nincfg.bin"
};
// if a path is decided, store it
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
savePath = saveFileDialog.FileName;
}
// else, stop the saving process
else
{
return;
}
}
// if the user doesn't want to save, stop
else
{
return;
}
}
// write it
using (BinaryWriter cfgFile = new BinaryWriter(File.Open(savePath, FileMode.Create) ) )
{
byte[] magicBytes = BitConverter.GetBytes(nintendontCfg.magicBytes);
byte[] version = BitConverter.GetBytes(nintendontCfg.version);
byte[] config = BitConverter.GetBytes(nintendontCfg.config);
byte[] videoMode = BitConverter.GetBytes(nintendontCfg.videoMode);
byte[] language = BitConverter.GetBytes(nintendontCfg.language);
byte[] maxPads = BitConverter.GetBytes(nintendontCfg.maxPads);
byte[] gameID = BitConverter.GetBytes(nintendontCfg.gameID);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(magicBytes, 0, magicBytes.Length);
Array.Reverse(version, 0, version.Length);
Array.Reverse(config, 0, config.Length);
Array.Reverse(videoMode, 0, videoMode.Length);
Array.Reverse(language, 0, language.Length);
Array.Reverse(maxPads, 0, maxPads.Length);
Array.Reverse(gameID, 0, gameID.Length);
}
cfgFile.Write(magicBytes);
cfgFile.Write(version);
cfgFile.Write(config);
cfgFile.Write(videoMode);
cfgFile.Write(language);
cfgFile.Write(maxPads);
cfgFile.Write(gameID);
cfgFile.Write(nintendontCfg.gamePath);
cfgFile.Write(nintendontCfg.cheatPath);
cfgFile.Write(nintendontCfg.memCardBlocks);
cfgFile.Write(nintendontCfg.videoScale);
cfgFile.Write(nintendontCfg.videoOffset);
cfgFile.Write(nintendontCfg.networkProfile);
}
MessageBox.Show("Config generation complete."
, "Information"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1
, (MessageBoxOptions)0x40000);
}
private void Format_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start("http://www.ridgecrop.demon.co.uk/index.htm?guiformat.htm");
Process.Start("http://www.ridgecrop.demon.co.uk/guiformat.exe");
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="DriveBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SDCardText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ReloadDrives.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NintendontUpdate.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ActionStatus.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="GenerateConfig.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LanguageBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LanguageText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VideoText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VideoForceMode.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VideoTypeMode.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VideoWidth.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="VideoWidthText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="WidthNumber.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MemcardText.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MemcardBlocks.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MemcardMulti.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NintendontOptions.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiQAAAAAAAABw
AAMEjQE9BI8A2ACDAOsBfQBQAHwACAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAU/wAAAAAAAAOIACMAlwDGAZoA/QGbAP8AgwD/AIQA/wCDANMAfwA2AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAZMAFwKZAIsAngD/AaAA/wCfAP8EnwD/AIUA/wCIAP8AiAD/AYkA/wCI
AJ0AiQAcAAAAAAAAAAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAJwAggClAOwApgD/AKcA/wCkAP8BpAD/BKIA/wCH
AP8AiwD/AIoA/wCMAP8AjgD/AI8A7wCOAIkAAAAAAAAAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQAAAAAAAAB5AAIAnwA7AKUA3ACsAP8ArQD/AKsA/wCr
AP8AqAD/AKgA/wKmAP8AigD/AI0A/wCOAP8AjwD/AJEA/wCTAP8AlAD/AJMA3wCQADsAaAABAAAAAACX
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwAAAAAAAACZACkApQDJAKkA/gCr
AP8AsAD/ALEA/wCuAP8ArgD/AKwA/wCrAP8CqgD/AI0A/wCQAP8AkQD/AJMA/wCUAP8AlgD/AJYA/wCZ
AP8AmAD+AJgAxQCPACAAAAAAAJcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZcAAAAAAAAAAAAAAJwAFQCf
AIQApAD/AKYA/wCsAP8ArwD/ALQA/wC1AP8AtQD/ALIA/wCwAP8AsAD/Aa8A/wCQAP8AkgD/AJQA/wCV
AP8AlgD/AJoA/wCcAP8AnAD/AJ0A/wCeAP8AnwD/AJsAdwCcABEAAAAAAKEAAACZAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoAAAAA
AAAAAAAAAJsAegCeAOoAogD/AKQA/wCpAP8ArwD/ALMA/wC4AP8AugD/ALgA/wC4AP8AtQD/AbQA/wa0
AP8AkgD/AJUA/wCWAP8AmAD/AJsA/wCcAP8AngD/AKAA/wChAP8AowD/AKQA/wCjAP8ApADjAJ4AYgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAjwAAAAAAAASLAAMAlgA7AJoA4QCcAP8AoAD/AKQA/wCoAP8ArgD/ALMA/wC5AP8AvgD/AL0A/wC+
AP8AugD/ALkA/wC3AP8CuQD/AJMA/wCXAP8AmQD/AJsA/wCdAP8AnwD/AKIA/wCkAP8ApQD/AKUA/wCn
AP8ApgD/AKgA/wCoAP8ApQDJAKMALAAAAAAAAAAAAJoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA/wAAAAAAAACQACEAlQDFAJcA/QCaAP8AngD/AKMA/wCoAP8ArAD/ALIA/wC4
AP8AvgD/AMMA/wDBAP8AwwD/AMAA/wC/AP8AvQD/ALoA/wCTAP8AmAD/AJsA/wCdAP8AnwD/AKMA/wCl
AP8AqAD/AKkA/wCpAP8AqwD/AKoA/wCtAP8ArAD/AKoA/wCsAPcAqQCuAIgACAAAAAAApgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAFgCQAIgAkwD/AJYA/wCYAP8AnQD/AKIA/wCn
AP8AqwD/ALEA/wC3AP8AvQD/AMMA/wDIAP8AxwD/AMgA/wDFAP8AwgD/GbwW/1G5SPpyrGX2Jpwk/wGb
Af8AnwD/AKIA/wCmAP8ApwD/AKoA/wCsAP8ArgD/AK8A/wCwAP8AsQD/ALAA/wCvAP8AsAD/AK8A/wCs
AP0ApwBcAJoACAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYAAAAAAAAAAAAAAIkAfgCOAOsAkAD/AJMA/wCY
AP8AnAD/AKAA/wCmAP8AqwD/ALAA/wC2AP8AvAD/AMEA/wDIAP8AzAD/AMwA/wDPAP8DwAP/crhu/3Oe
b+FziF84ZWdiL2uMaNN3tGv/EJwQ/wCjAP8AqAD/AKoA/wCtAP8ArwD/ALEA/wCyAP8AtAD/ALYA/wCz
AP8AtQD/ALQA/wCzAP8AsQD/AK4A/wCxAN0ApQBHAAAAAACtAAAAmwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdQAAAAAAAACGAAEAhAA5AIgA2QCM
AP8AjwD/AJIA/wCXAP8AmwD/AJ8A/wCkAP8AqgD/AK8A/wC0AP8AuwD/AMEA/wDIAP8AzgD/ANIA/wfJ
B/9EtUT/nqih6XN/c3kAAAAAAAAAAAAAAAAAAAAAYV1fbJ6sl+ZSpFH/DKUM/wCrAP8AsAD/ALIA/wC1
AP8AtwD/ALgA/wC5AP8AuAD/ALgA/wC5AP8AtwD/ALYA/wC1AP8AtAD/ALIA/wCrAKEAqQAcAAAAAAAA
AAAAnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAB3
ACUAgQDGAIYA/gCJAP8AjQD/AJEA/wCVAP8AmgD/AJ8A/wCjAP8AqAD/AK4A/wCzAP8AugD/AL8A/wDF
AP8AzwD/AMoA/z25QP+PrpD/g4eBgXN5axQAAAAAAAAAAFErSQBYRGAAZ3lOAAAAAABYU04Sen53e4+q
j/9Oq07/AKkA/wC1AP8AtwD/ALoA/wC7AP8AvQD/AL0A/wC+AP8AvAD/ALwA/wC6AP8AuQD/ALkA/wC2
AP8AsgD/AK0A8QCmAI0AAAAAAAAAAACVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ6
AAAAAAAAAHcAFAB7AIEAgQD/AIQA/wCIAP8AiwD/AJAA/wCUAP8AmQD/AJ0A/wCiAP8ApwD/AK0A/wCz
AP8AuAD/AMAA/wDFAP8AxgD/GLoW/3OvcP6XnJHHNkMuJQAAAABZWU8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAATEpNAAAAAAAqERgijpmJxoKrev4cqB3/ALQB/wC9AP8AvgD/AMAA/wDAAP8AwQD/AMAA/wC/
AP8AvgD/AL4A/wC+AP8AuwD/ALgA/wCyAP8ArAD/AKcA6wCiAEIAjwAEAAAAAACYAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAXoAbAB9AOkAgAD/AIIA/wCGAP8AiQD/AI4A/wCSAP8AlgD/AJwA/wCg
AP8ApgD/AKsA/wCxAP8AtwD/AL4A/wDEAP8Gsgf/arll/4Gicth4gGw4AAAAAQAAAABld2IAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdV04AAAAAAAAAAAF1b2s6YptZ20fENP8IrAn/AL0A/wDE
AP8AwwD/AMMA/wDEAP8AwwD/AMIA/wDBAP8AwQD/AL8A/wC5AP8AtQD/ALEA/wCrAP8ApgD/AKIAyACc
ACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9AOoAfwD/AIIA/wCEAP8AiAD/AIwA/wCR
AP8AlQD/AJoA/wCfAP8ApAD/AKoA/wCvAP8AtgD/ALsA/wm4Cf88rTr/lrWM6nmKaXwAAAAAAAAAAFlC
UQAAAAAAAAAAAAAAAAA0kC0AAAAAAFFwSwwAuAASAAAAAADYAAAArAEAAAAAAAAAAABZL1AAAAAAAAAA
AABQfEyDRMco7Bi3Df8DugH/AMUA/wDIAP8AygD/AMgA/wDGAP8AxQD/AMUA/wDCAP8AvAD/ALcA/wC1
AP8ArwD/AKoA/wClAP8BmwC9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADkAIEA/wCD
AP8AhwD/AIoA/wCPAP8AkwD/AJgA/wCdAP8AogD/AKgA/wCtAP8AtAD/ALAA/z2pOv+FrX7/eo95hF1l
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
AP8A4QD/AOAA/wDfAP8A3gD/AN4A/wLdAP8E3AD/FdwG/wDWAP8A4wD/AOMA/wDlAP8A5QD/AOUA/wDm
AP8A5gD/AOUA/wDlAP8A5gD/AOYA/wHeAtoUrxYPAAAAAAAAAAAAAAAAAAAAAAG8ANsAwwD/ANUA/wDP
AP8AywD/AMYA/wDBAP8AvAD/ALgA/wCnALIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS
AOEAkQD/AJQA/wCaAP8AnwD/AKUA/wCqAP8AswD/AKsA/wCtAOAAAAAAAAAAAAAAAAAAAAAABq0AGAHZ
AOkA4gD/AOIA/wDiAP8A4QD/AOEA/wDfAP8A3wD/AN4A/wHeAP8C3QD/AtwA/xnbCf8A1wD/AOUA/wDl
AP8A5QD/AOUA/wDlAP8A5gD/AOUA/wDlAP8A5QD/AOUA/wDmAP8A4QPtAbwYGwAAAAAAAAAAAAAAAAAA
AAABvAPZAMMA/wDWAP8A0AD/AMkA/wDHAP8AwQD/AL0A/wC4AP8AqACyAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAlADhAJMA/wCXAP8AnAD/AKIA/wCoAP8ArQD/ALUA/wCuAP8ArADgAAAAAAAA
AAAAAAAAAAAAAA2sABcB2gDpAOIA/wDiAP8A4gD/AOEA/wDhAP8A3wD/AN4A/wDeAP8D3QD/A9wA/wXc
AP8b2wv/ANkA/wDlAP8A5gD/AOUA/wDlAP8A5QD/AOUA/wDlAP8A5QD/AOYA/wDlAP8A5gD/AOAD7AC8
GhsAAAAAAAAAAAAAAAAAAAAAAb0C1wDDAP8A1wD/ANEA/wDMAP8AxwD/AMEA/wC9AP8AuAD/AagAsgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZYA4QCWAP8AmAD/AJ4A/wCkAP8AqgD/ALEA/wC4
AP8AsAD/AK0A4AAAAAAAAAAAAAAAAAAAAAAIrgAYAdsA6QDiAP8A4gD/AOEA/wDhAP8A4AD/AN8A/wDe
AP8B3gD/Ad0A/wLcAP8B3AD/GNsK/wDcAP8A5QD/AOUA/wDmAP8A5gD/AOUA/wDmAP8A5QD/AOUA/wDm
AP8A5gD/AOUA/wDgBO0AsyEcAAAAAAAAAAAAAAAAAAAAAAK8ANUAxAD/ANYA/wDRAP8AzQD/AMcA/wDB
AP8AvgD/ALgA/wCpALIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYAOEAlwD/AJsA/wCh
AP8ApgD/AKwA/wCzAP8AugD/ALIA/wCtAOAAAAAAAAAAAAAAAAAAAAAAD60DGALcAOkA4gD/AOIA/wDh
AP8A4QD/AOAA/wDfAP8A3wD/Ad4A/wDdAP8B3AD/A9wA/xHbAf8A3gD/AOUA/wDlAP8A5QD/AOUA/wDl
AP8A5QD/AOUA/wDlAP8A5gD/AOYA/wDlAP8A3wTtAKsnGgDoAAAAqx0AAAAAAAAAAAACvADVAMUA/wDV
AP8A0QD/AM0A/wDIAP8AwwD/AL4A/wC4AP8BqgCyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAmgDhAJkA/wCdAP8AogD/AKkA/wCuAP8AtQD/AL0A/wC0AP8ArADgAAAAAAAAAAAAAAAAAAAAABOr
EBgC2wLpAOIA/wDiAP8A4QD/AOAA/wDgAP8A3wD/AN4A/wDeAP8A3gD/Ad0A/wHdAP8L3AD/AN8A/wDl
AP8A5QD/AOUA/wDmAP8A5QD/AOUA/wDmAP8A5QD/AOUA/wDlAP8A5QD/AOIC+gDVBl8AAAAAAAAAAAAA
AAAAAAAAArwA0wDEAP8A1QD/ANAA/wDMAP8AyAD/AMIA/wC9AP8AuAD/AKgAsQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAJwA4QCbAP8AngD/AKUA/wCqAP8AsAD/ALgA/wC/AP8AtgD/AKoA4AAA
AAAAAAAAAAAAAAAAAAAVqRQYAtsC6gDiAP8A4gD/AOEA/wDhAP8A4AD/AN8A/wDfAP8A3gD/AN4A/wDe
AP8A3QD/CdwA/wDgAP8A5QD/AOUA/wDlAP8A5QD/AOYA/wDmAP8A5QD/AOYA/wDlAP8A5QD/AOQA/wDk
AP8A4wD/AN4BwADYACkAAAAAAAAAAAC6ANEAxAD/ANQA/wDPAP8AywD/AMYA/wDDAP8AvQD/ALkA/wGn
ALEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfAOEAnQD/AKAA/wCmAP8ArQD/ALIA/wC6
AP8AwQD/ALgA/wCqAOAAAAAAAAAAAAAAAAAAAAAAFacPGQLbAuoA4gD/AOIA/wDiAP8A4QD/AOAA/wDf
AP8A3wD/AN4A/wDeAP8A3gD/AN4A/wDfAP8A2AD/AOYA/wDlAP8A5QD/AOUA/wDlAP8A5gD/AOUA/wDl
AP8A5AD/AOQA/wDjAP8A4gD/AOAA/wDfAP8A3gD1ANwApwAAAAABugDOAMMA/wDTAP8AzwD/AMoA/wDG
AP8AwgD/AL4A/wC5AP8ApwCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoADgAJ8A/wCi
AP8AqAD/AK0A/wC0AP8AvAD/AMMA/wC5AP8AqQDgAAAAAAAAAAAAAAAAAAAAABCoHRkC3APqAOIA/wDi
AP8A4gD/AOEA/wDgAP8A3wD/AN8A/wDeAP8A3gD/AN4A/yDbIf+Wy5X/tMKz/zDOL/8C4AL/AOYA/wDl
AP8A5QD/AOYA/wDkAP8A5AD/AOIA/wDhAP8A4AD/AN8A/wDdAP8A3AD/ANoA/wDZAP8A2wDxAMYB5gDA
AP8A0AD/AMwA/wDJAP8AxQD/AMEA/wC9AP8AuQD/AKcAsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAKAA4AChAP8ApAD/AKoA/wCvAP8AtgD/AL0A/wDEAP8AugD/AacA4AAAAAAAAAAAAAAAAAAA
AAASqBMZAtwC6gDjAP8A4gD/AOIA/wDhAP8A4QD/AOAA/wDfAP8A3wD/B94H/4bNhv+9xb3/x8XH/8XE
xf/ExMP/l8SW/xbKFf8A5wD/AOYA/wDlAP8A4gD/AOEA/wDgAP8A3gD/AN0A/wDdAP8A2wD/ANgA/wDZ
AP8A1gD/ANQA/wDTAP8AygD/AM0A/wDKAP8AxwD/AMMA/wDAAP8AuwD/ALgA/wCmALEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACiAOAAowD/AKUA/wCqAP8AsAD/ALgA/wC+AP8AxQD/ALsA/wCl
AOAAAAAAAAAAAAAAAAAAAAAABa8JGQHdAeoA4wD/AOIA/wDiAP8A4QD/AOEA/wDgAP8I3wj/TdVN/8bF
xf/Ixcj/xcXF/8XFxf/FxcX/xcXF/8bFxv/Oxs7/YL5e/w3YDf8A4gD/AOAA/wDeAP8A3QD/ANsA/wDa
AP8A2QD/ANgA/wDWAP8A1AD/ANQA/wDRAP8AzgD/AM4A/wDLAP8AyAD/AMUA/wDBAP8AvgD/ALoA/wC2
AP8ApQCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAowDgAKQA/wCmAP8ArAD/ALEA/wC5
AP8AvwD/AMYA/wC8AP8AowDgAAAAAAAAAAAAAAAAAAAAAACuAhkA3QDqAOMA/wDjAP8A4gD/AOIA/wDi
AP9A1ED/rsiu/8fFx//FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8fFx/+yw7L/VcNU/wDV
AP8A3QD/ANoA/wDYAP8A1wD/ANUA/wDVAP8A0wD/ANEA/wDRAP8AzgD/AMwA/wDJAP8AxwD/AMUA/wDD
AP8AwAD/ALwA/wC4AP8AtQD/AKQAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMA4ACk
AP8ApwD/AKwA/wCzAP8AuQD/AL8A/wDIAP8AvAD/AaMA4AAAAAAAAAAAAAAAAAAAAAAAuAEZAN4A6wDj
AP8A4wD/AOEA/xnbGf+JyYn/y8PL/8XFxf/ExMT/xMTE/8XFxf/FxcX/xMTE/8TExP/ExMT/xMTE/8TE
xP/ExMT/xMTE/8vFy/+ZvJn/IMQe/wDTAP8A1wD/ANMA/wDSAP8A0gD/ANAA/wDOAP8AywD/AMwA/wDJ
AP8AxgD/AMQA/wDDAP8AwQD/AL4A/wC6AP8AtwD/ALIA/wCkALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAClAOAApQD/AKgA/wCuAP8AtAD/ALoA/wDAAP8AyAD/ALwA/wGgAOAAAAAAAAAAAAAA
AAAAAAAAAbgBGgDeAOsA5QD/AtsB/3zLe/++xL7/yMXI/8TExP/ExMT/xMTE/8XFxf/ExMT/xcXF/8XF
xf/ExMT/xMTE/8XFxf/FxcX/xcXF/8TExP/ExMT/xsXG/8DDwP+Ev4P/BrwE/wDRAP8AzgD/AMwA/wDM
AP8AywD/AMkA/wDIAP8AxgD/AMQA/wDCAP8AwAD/AL4A/wC8AP8AuAD/ALQA/wCxAP8AowCwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABogDgAKYA/wCpAP8ArgD/ALQA/wC5AP8AwQD/AMgA/wC8
AP8AoADgAAAAAAAAAAAAAAAAAAAAAAHAAxoL3gvsQdBA/77Evv/HxMj/xcXF/8XFxf/ExMT/xMTE/8TE
xP/ExMT/xcXF/8TExP/ExMT/xMTE/8TExP/FxcX/xcXF/8TExP/ExMT/xMTE/8TExP/ExMT/x8XH/8PD
w/9EtEL/CMQI/wDKAP8AxwD/AMcA/wDGAP8AxAD/AMMA/wDCAP8AvwD/AL4A/wC7AP8AuAD/ALUA/wCx
AP8ArgD/AKAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMA4ACmAP8AqQD/AK4A/wC0
AP8AugD/AMEA/wDHAP8AuwD/AZ4A4AAAAAAAAAAAAAAAAAAAAAAyYj0Kc410vsXDxf/Hxsf/xcXF/8XF
xf/FxcX/xcXF/8TExP/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XF
xf/ExMT/xcXF/8XFxf/Gxcb/yMfI/5y5m/8ysTH/ALwA/wDFAP8AwgD/AMEA/wC/AP8AvwD/AL0A/wC7
AP8AuAD/ALYA/wCzAP8ArgD/AKsA/wCgAK4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACj
AOAApwD/AKoA/wCvAP8AtAD/ALoA/wDBAP8AxgD/ALoA/wCdAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABRX1BdrLGq4b7Bvv/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XFxf/FxcX/xcXF/8XF
xf/FxcX/xcXF/8XFxf/FxcX/xcXF/8bFxv/CxMP/t7u253yJgG5LQklGq6yq2nascv8Yshf/ALwA/wC/
AP8AvAD/ALwA/wC6AP8AtwD/ALUA/wCyAP8ArwD/AK0A/wCqAP8AnwCuAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAApQDfAKYA/wCqAP8ArgD/ALQA/wC6AP8AvwD/AMYA/wC4AP8AmQDfAAAAAACR
AAAAAAAAAAAAAFkyTgBMdFEAAAAAADtBNBB9gHtwqbWl/8rIyv/DxcT/v8bC/8DGwv/BxsP/wMbD/7/G
wv/AxsL/wsXD/8TFxf/FxcX/xMXE/8PFxP/DxcT/w8XE/8jHyf+2vrP/iJmEfGOEZRMAAAAAAAAAAC8m
KAyCfH9fi56H/W2xa/8AqQD/ALwA/wC4AP8AuAD/ALUA/wCyAP8AsAD/AK0A/wCrAP8AqAD/AJ0ArgAA
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
AP8A4AD/AOEA/wDiAP8A5QD/B9UI/y2INZk+Z0QbAAAAAAAAAABZLF4AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0VLAAAAAAAAAAAAY2NhcU2WNuksrQz/D7wA/wTI
AP8A0gD/ANUA/wDYAP8A3AD/AN8A/wDiAP8F1wb/GrAc1GEjeToAAAAAS0BoAEtJSQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABYTlwTUnVFgkWXLf8aswH/B78A/wLLAP8A0wD/ANgA/wDbAP8gpiPqOXg/R3wAoQQAAAAAG9RgAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAc51CAAAAAABcM2oeTIQ9xSikCP0MtwD/A8QB/wvDC+86gDiRAAAAAAAA
AABYRGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRRlcAAAAAAF4AfAM9cjI9HJgV2ySP
GZNHWUwcAAAAAAAAAABjNFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////+B/////////wD////////8AD////////gAH///////wAAD//////+AAAH//////gAAAH
/////8AAAAP////+AAAAAP////wAAAAAP///8AAAAAAP///gAAAAAAf//wAAA8AAAf/+AAAH4AAA//gA
AB/4AAAf8AAAP/wAAA/wAAH+f4AAD/AAA/w/wAAP8AAP8A/wAA/wAB/gA/gAD/AA/wAA/wAP8AH+AAB/
gA/wA/gAAB/AD/AD8AAAD8AP8APAAAADwA/wA8AAAAPAD/ADwAAAA8AP8APAAAADwA/wA8AAAAPAD/AD
wAAAA8AP8APAAAAAwA/wA8AAAABAD/ADwAAAAAAP8APAAAAAAA/wA8AAAAAAD/ADwAAAAAAP8APAAAAA
AA/wA8AAAAAAD/ADwAAAAAAP8APAAAAAAA/wA/AAAAAAD/AD+AAAGAAP8AH+AAB+AA/wAH+AAP+AD/AA
H+AH/+AP8AAP8A/38A/wAAP8P8H8D/AAAP5/AP8P8AAAP/wAP8/4AAAf+AAP//8AAAfgAAP//4AAA4AA
A///4AAAAAAH///wAAAAAA////wAAAAAf////wAAAAD/////wAAAA//////gAAAH//////gAAD//////
/gAAf///////gAH////////AA/////////Af////////+D////8=
</value>
</data>
</root>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TeconMoon_s_WiiVC_Injector
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new WiiVC_Injector());
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TeconMoon's WiiVC Injector")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TeconMoon's WiiVC Injector")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8228dc31-4869-4c1c-8aed-d7ed37ecf3b9")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.0.7.0")]
[assembly: AssemblyFileVersion("3.0.7.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TeconMoon_s_WiiVC_Injector.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.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() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[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("TeconMoon_s_WiiVC_Injector.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
internal static byte[] TOOLDIR {
get {
object obj = ResourceManager.GetObject("TOOLDIR", resourceCulture);
return ((byte[])(obj));
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="TOOLDIR" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TOOLDIR.zip;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TeconMoon_s_WiiVC_Injector.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.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;
}
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8228DC31-4869-4C1C-8AED-D7ED37ECF3B9}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>TeconMoon_s_WiiVC_Injector</RootNamespace>
<AssemblyName>TeconMoon%27s WiiVC Injector</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<IsWebBootstrapper>false</IsWebBootstrapper>
<TargetFrameworkProfile />
<PublishUrl>C:\Users\Khade\Desktop\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>WiiU.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>8B2598DF212C90E8BD2B80161EEBF23E278C0C9B</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>TeconMoon%27s WiiVC Injector_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Form2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form2.Designer.cs">
<DependentUpon>Form2.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form2.resx">
<DependentUpon>Form2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Resources\TOOLDIR.zip" />
<None Include="TeconMoon%27s WiiVC Injector_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="favicon.ico" />
<Content Include="WiiU.ico" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>C:\Users\Khade\Desktop\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
</Project>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment