nusdownloader-fork/NUS_Downloader/Form1.cs

2924 lines
137 KiB
C#

// Decompiled with JetBrains decompiler
// Type: NUS_Downloader.Form1
// Assembly: NUS Downloader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: DDAF9FEC-76DE-4BD8-8A6D-D7CAD5827AC6
// Assembly location: C:\dotpeek\NUS Downloader.exe
using libWiiSharp;
using NUS_Downloader.Properties;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
using System.Xml;
using wmgCMS;
using wyDay.Controls;
namespace NUS_Downloader
{
internal class Form1 : Form
{
private const string _chars = "abcdefghijklmnopqrstuvwxyz";
private IContainer components;
private Button Extrasbtn;
private Button downloadstartbtn;
private RichTextBox statusbox;
private CheckBox packbox;
private CheckBox localuse;
private BackgroundWorker NUSDownloader;
private Label label1;
private TextBox wadnamebox;
private CheckBox decryptbox;
private Button databaseButton;
private ContextMenuStrip databaseStrip;
private ToolStripMenuItem SystemMenuList;
private ToolStripMenuItem IOSMenuList;
private ToolStripMenuItem VCMenuList;
private ToolStripMenuItem WiiWareMenuList;
private ToolStripMenuItem C64MenuList;
private ToolStripMenuItem NeoGeoMenuList;
private ToolStripMenuItem NESMenuList;
private ToolStripMenuItem SNESMenuList;
private ToolStripMenuItem N64MenuList;
private ToolStripMenuItem MSXMenuList;
private ToolStripMenuItem TurboGrafx16MenuList;
private ToolStripMenuItem SegaMSMenuList;
private ToolStripMenuItem GenesisMenuList;
private ToolStripMenuItem VCArcadeMenuList;
private ToolStripMenuItem TurboGrafxCDMenuList;
private ToolStripSeparator toolStripSeparator1;
private ToolStripMenuItem RegionCodesList;
private Button clearButton;
private ContextMenuStrip extrasStrip;
private ToolStripMenuItem loadInfoFromTMDToolStripMenuItem;
private ToolStripSeparator toolStripSeparator3;
private ToolStripMenuItem proxySettingsToolStripMenuItem;
private GroupBox proxyBox;
private TextBox ProxyUser;
private Button SaveProxyBtn;
private Button ProxyAssistBtn;
private TextBox ProxyURL;
private Label label13;
private Label label12;
private GroupBox ProxyVerifyBox;
private Button SaveProxyPwdBtn;
private Label label14;
private TextBox ProxyPwdBox;
private Windows7ProgressBar dlprogress;
private ToolStripSeparator toolStripSeparator6;
private WaterMarkTextBox titleidbox;
private WaterMarkTextBox titleversion;
private Button scriptsbutton;
private ContextMenuStrip scriptsStrip;
private ToolStripMenuItem loadNUSScriptToolStripMenuItem;
private ToolStripMenuItem emulateUpdate;
private ToolStripMenuItem uSANTSCToolStripMenuItem;
private ToolStripMenuItem europePALToolStripMenuItem;
private ToolStripMenuItem japanNTSCJToolStripMenuItem;
private ToolStripMenuItem koreaToolStripMenuItem;
private ToolStripSeparator toolStripSeparator4;
private ToolStripMenuItem updateDatabaseToolStripMenuItem;
private ToolStripMenuItem scriptsLocalMenuEntry;
private ToolStripSeparator toolStripSeparator2;
private ToolStripMenuItem scriptsDatabaseToolStripMenuItem;
private ToolStripMenuItem aboutNUSDToolStripMenuItem;
private CheckBox checkBox1;
private Button SaveProxyPwdPermanentBtn;
private CheckBox keepenccontents;
private Button saveaswadbtn;
private CheckBox iosPatchCheckbox;
private GroupBox iosPatchGroupBox;
private CheckedListBox iosPatchesListBox;
private Button iosPatchGroupBoxOKbtn;
private Label label2;
private Panel richPanel;
private ToolStripMenuItem systemFakeMenuItem;
private ToolStripMenuItem iosFakeMenuItem;
private ToolStripMenuItem vcFakeMenuItem;
private ToolStripMenuItem wwFakeMenuItem;
private ToolStripMenuItem openNUSDDirectoryToolStripMenuItem;
private ToolStripMenuItem moreExtrasToolStripMenuItem;
private ToolStripMenuItem runFolderFixToolStripMenuItem;
private ToolStripMenuItem wiiBrewToolStripMenuItem;
private ToolStripMenuItem mainPageToolStripMenuItem;
private ToolStripMenuItem databasePageToolStripMenuItem;
private ToolStripMenuItem removeNUSDFilesFoldersToolStripMenuItem;
private ToolStripMenuItem databaseToolStripMenuItem;
private ToolStripMenuItem localTicketInventoryToolStripMenuItem;
private ToolStripMenuItem donateToolStripMenuItem;
private ToolStripSeparator toolStripSeparator5;
private ToolStripMenuItem dsiSystemToolStripMenu;
private ToolStripMenuItem dsiFakeSystemToolStripMenu;
private ToolStripMenuItem dSiWareToolStripMenu;
private ToolStripMenuItem dSiWareFakeToolStripMenu;
private ToolStripMenuItem wiiRegionCodesMenu;
private ToolStripMenuItem dsiRegionCodesMenu;
private Label serverLbl;
private ToolStripSeparator toolStripSeparator7;
private CheckBox pathbox;
private readonly string CURRENT_DIR = Directory.GetCurrentDirectory();
private string version = "v1.9 mod";
private string WAD_Saveas_Filename;
private string proxy_url;
private string proxy_usr;
private string proxy_pwd;
private BackgroundWorker databaseWorker;
private BackgroundWorker dsiDatabaseWorker;
private BackgroundWorker scriptsWorker;
private Color normalcolor = Color.FromName("Black");
private Color warningcolor = Color.FromName("DarkGoldenrod");
private Color errorcolor = Color.FromName("Crimson");
private Color infocolor = Color.FromName("RoyalBlue");
private bool[] disabledStorage = new bool[14];
private readonly Random _rng = new Random();
protected override void Dispose(bool disposing)
{
if (disposing && this.components != null)
this.components.Dispose();
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = (IContainer) new Container();
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof (Form1));
this.Extrasbtn = new Button();
this.downloadstartbtn = new Button();
this.statusbox = new RichTextBox();
this.NUSDownloader = new BackgroundWorker();
this.label1 = new Label();
this.wadnamebox = new TextBox();
this.databaseStrip = new ContextMenuStrip(this.components);
this.SystemMenuList = new ToolStripMenuItem();
this.systemFakeMenuItem = new ToolStripMenuItem();
this.IOSMenuList = new ToolStripMenuItem();
this.iosFakeMenuItem = new ToolStripMenuItem();
this.VCMenuList = new ToolStripMenuItem();
this.C64MenuList = new ToolStripMenuItem();
this.GenesisMenuList = new ToolStripMenuItem();
this.MSXMenuList = new ToolStripMenuItem();
this.N64MenuList = new ToolStripMenuItem();
this.NeoGeoMenuList = new ToolStripMenuItem();
this.NESMenuList = new ToolStripMenuItem();
this.SegaMSMenuList = new ToolStripMenuItem();
this.SNESMenuList = new ToolStripMenuItem();
this.TurboGrafx16MenuList = new ToolStripMenuItem();
this.TurboGrafxCDMenuList = new ToolStripMenuItem();
this.VCArcadeMenuList = new ToolStripMenuItem();
this.vcFakeMenuItem = new ToolStripMenuItem();
this.WiiWareMenuList = new ToolStripMenuItem();
this.wwFakeMenuItem = new ToolStripMenuItem();
this.toolStripSeparator5 = new ToolStripSeparator();
this.dsiSystemToolStripMenu = new ToolStripMenuItem();
this.dsiFakeSystemToolStripMenu = new ToolStripMenuItem();
this.dSiWareToolStripMenu = new ToolStripMenuItem();
this.dSiWareFakeToolStripMenu = new ToolStripMenuItem();
this.toolStripSeparator1 = new ToolStripSeparator();
this.RegionCodesList = new ToolStripMenuItem();
this.wiiRegionCodesMenu = new ToolStripMenuItem();
this.dsiRegionCodesMenu = new ToolStripMenuItem();
this.toolStripSeparator4 = new ToolStripSeparator();
this.updateDatabaseToolStripMenuItem = new ToolStripMenuItem();
this.extrasStrip = new ContextMenuStrip(this.components);
this.loadInfoFromTMDToolStripMenuItem = new ToolStripMenuItem();
this.toolStripSeparator3 = new ToolStripSeparator();
this.proxySettingsToolStripMenuItem = new ToolStripMenuItem();
this.toolStripSeparator6 = new ToolStripSeparator();
this.openNUSDDirectoryToolStripMenuItem = new ToolStripMenuItem();
this.moreExtrasToolStripMenuItem = new ToolStripMenuItem();
this.runFolderFixToolStripMenuItem = new ToolStripMenuItem();
this.wiiBrewToolStripMenuItem = new ToolStripMenuItem();
this.mainPageToolStripMenuItem = new ToolStripMenuItem();
this.databasePageToolStripMenuItem = new ToolStripMenuItem();
this.removeNUSDFilesFoldersToolStripMenuItem = new ToolStripMenuItem();
this.databaseToolStripMenuItem = new ToolStripMenuItem();
this.localTicketInventoryToolStripMenuItem = new ToolStripMenuItem();
this.donateToolStripMenuItem = new ToolStripMenuItem();
this.toolStripSeparator7 = new ToolStripSeparator();
this.aboutNUSDToolStripMenuItem = new ToolStripMenuItem();
this.proxyBox = new GroupBox();
this.label13 = new Label();
this.label12 = new Label();
this.ProxyUser = new TextBox();
this.SaveProxyBtn = new Button();
this.ProxyAssistBtn = new Button();
this.ProxyURL = new TextBox();
this.ProxyVerifyBox = new GroupBox();
this.SaveProxyPwdPermanentBtn = new Button();
this.checkBox1 = new CheckBox();
this.SaveProxyPwdBtn = new Button();
this.label14 = new Label();
this.ProxyPwdBox = new TextBox();
this.scriptsbutton = new Button();
this.scriptsStrip = new ContextMenuStrip(this.components);
this.scriptsLocalMenuEntry = new ToolStripMenuItem();
this.scriptsDatabaseToolStripMenuItem = new ToolStripMenuItem();
this.loadNUSScriptToolStripMenuItem = new ToolStripMenuItem();
this.toolStripSeparator2 = new ToolStripSeparator();
this.emulateUpdate = new ToolStripMenuItem();
this.uSANTSCToolStripMenuItem = new ToolStripMenuItem();
this.europePALToolStripMenuItem = new ToolStripMenuItem();
this.japanNTSCJToolStripMenuItem = new ToolStripMenuItem();
this.koreaToolStripMenuItem = new ToolStripMenuItem();
this.iosPatchGroupBox = new GroupBox();
this.label2 = new Label();
this.iosPatchesListBox = new CheckedListBox();
this.iosPatchGroupBoxOKbtn = new Button();
this.richPanel = new Panel();
this.databaseButton = new Button();
this.saveaswadbtn = new Button();
this.iosPatchCheckbox = new CheckBox();
this.keepenccontents = new CheckBox();
this.clearButton = new Button();
this.packbox = new CheckBox();
this.decryptbox = new CheckBox();
this.localuse = new CheckBox();
this.serverLbl = new Label();
this.titleidbox = new WaterMarkTextBox();
this.dlprogress = new Windows7ProgressBar();
this.titleversion = new WaterMarkTextBox();
this.pathbox = new CheckBox();
this.databaseStrip.SuspendLayout();
this.extrasStrip.SuspendLayout();
this.proxyBox.SuspendLayout();
this.ProxyVerifyBox.SuspendLayout();
this.scriptsStrip.SuspendLayout();
this.iosPatchGroupBox.SuspendLayout();
this.richPanel.SuspendLayout();
this.SuspendLayout();
this.Extrasbtn.FlatStyle = FlatStyle.Popup;
this.Extrasbtn.Location = new Point(194, 5);
this.Extrasbtn.Name = "Extrasbtn";
this.Extrasbtn.Size = new Size(68, 27);
this.Extrasbtn.TabIndex = 2;
this.Extrasbtn.Text = "Extras...";
this.Extrasbtn.UseVisualStyleBackColor = true;
this.Extrasbtn.Click += new EventHandler(this.extrasMenuButton_Click);
this.downloadstartbtn.FlatStyle = FlatStyle.Popup;
this.downloadstartbtn.Location = new Point(12, 64);
this.downloadstartbtn.Name = "downloadstartbtn";
this.downloadstartbtn.Size = new Size(250, 25);
this.downloadstartbtn.TabIndex = 5;
this.downloadstartbtn.Text = "Start NUS Download!";
this.downloadstartbtn.UseVisualStyleBackColor = true;
this.downloadstartbtn.Click += new EventHandler(this.DownloadBtn_Click);
this.statusbox.BackColor = SystemColors.ControlLightLight;
this.statusbox.BorderStyle = BorderStyle.FixedSingle;
this.statusbox.Location = new Point(-2, -2);
this.statusbox.Name = "statusbox";
this.statusbox.ReadOnly = true;
this.statusbox.ScrollBars = RichTextBoxScrollBars.None;
this.statusbox.Size = new Size(252, 269);
this.statusbox.TabIndex = 0;
this.statusbox.Text = "";
this.NUSDownloader.DoWork += new DoWorkEventHandler(this.NUSDownloader_DoWork);
this.NUSDownloader.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.NUSDownloader_RunWorkerCompleted);
this.label1.AutoSize = true;
this.label1.BackColor = Color.Transparent;
this.label1.Location = new Point(159, 45);
this.label1.Name = "label1";
this.label1.Size = new Size(13, 13);
this.label1.TabIndex = 0;
this.label1.Text = "v";
this.wadnamebox.BorderStyle = BorderStyle.FixedSingle;
this.wadnamebox.Enabled = false;
this.wadnamebox.Location = new Point(102, 390);
this.wadnamebox.MaxLength = 99999;
this.wadnamebox.Name = "wadnamebox";
this.wadnamebox.Size = new Size(161, 20);
this.wadnamebox.TabIndex = 17;
this.databaseStrip.Font = new Font("Tahoma", 8.25f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0);
this.databaseStrip.Items.AddRange(new ToolStripItem[17]
{
(ToolStripItem) this.SystemMenuList,
(ToolStripItem) this.systemFakeMenuItem,
(ToolStripItem) this.IOSMenuList,
(ToolStripItem) this.iosFakeMenuItem,
(ToolStripItem) this.VCMenuList,
(ToolStripItem) this.vcFakeMenuItem,
(ToolStripItem) this.WiiWareMenuList,
(ToolStripItem) this.wwFakeMenuItem,
(ToolStripItem) this.toolStripSeparator5,
(ToolStripItem) this.dsiSystemToolStripMenu,
(ToolStripItem) this.dsiFakeSystemToolStripMenu,
(ToolStripItem) this.dSiWareToolStripMenu,
(ToolStripItem) this.dSiWareFakeToolStripMenu,
(ToolStripItem) this.toolStripSeparator1,
(ToolStripItem) this.RegionCodesList,
(ToolStripItem) this.toolStripSeparator4,
(ToolStripItem) this.updateDatabaseToolStripMenuItem
});
this.databaseStrip.Name = "databaseStrip";
this.databaseStrip.ShowItemToolTips = false;
this.databaseStrip.Size = new Size(164, 330);
this.databaseStrip.Text = "Hidden";
this.databaseStrip.Closed += new ToolStripDropDownClosedEventHandler(this.anyStrip_Closed);
this.SystemMenuList.AutoSize = false;
this.SystemMenuList.Image = (Image) componentResourceManager.GetObject("SystemMenuList.Image");
this.SystemMenuList.Name = "SystemMenuList";
this.SystemMenuList.Size = new Size(158, 22);
this.SystemMenuList.Text = "System";
this.systemFakeMenuItem.Image = (Image) Resources.arrow_ticker;
this.systemFakeMenuItem.Name = "systemFakeMenuItem";
this.systemFakeMenuItem.Size = new Size(163, 22);
this.systemFakeMenuItem.Text = "System";
this.systemFakeMenuItem.Visible = false;
this.IOSMenuList.Image = (Image) componentResourceManager.GetObject("IOSMenuList.Image");
this.IOSMenuList.Name = "IOSMenuList";
this.IOSMenuList.Size = new Size(163, 22);
this.IOSMenuList.Text = "IOS";
this.iosFakeMenuItem.Image = (Image) Resources.arrow_ticker;
this.iosFakeMenuItem.Name = "iosFakeMenuItem";
this.iosFakeMenuItem.Size = new Size(163, 22);
this.iosFakeMenuItem.Text = "IOS";
this.iosFakeMenuItem.Visible = false;
this.VCMenuList.DropDownItems.AddRange(new ToolStripItem[11]
{
(ToolStripItem) this.C64MenuList,
(ToolStripItem) this.GenesisMenuList,
(ToolStripItem) this.MSXMenuList,
(ToolStripItem) this.N64MenuList,
(ToolStripItem) this.NeoGeoMenuList,
(ToolStripItem) this.NESMenuList,
(ToolStripItem) this.SegaMSMenuList,
(ToolStripItem) this.SNESMenuList,
(ToolStripItem) this.TurboGrafx16MenuList,
(ToolStripItem) this.TurboGrafxCDMenuList,
(ToolStripItem) this.VCArcadeMenuList
});
this.VCMenuList.Image = (Image) componentResourceManager.GetObject("VCMenuList.Image");
this.VCMenuList.Name = "VCMenuList";
this.VCMenuList.Size = new Size(163, 22);
this.VCMenuList.Text = "Virtual Console";
this.C64MenuList.Name = "C64MenuList";
this.C64MenuList.Size = new Size(182, 22);
this.C64MenuList.Text = "Commodore 64";
this.GenesisMenuList.Name = "GenesisMenuList";
this.GenesisMenuList.Size = new Size(182, 22);
this.GenesisMenuList.Text = "Mega Drive/Genesis";
this.MSXMenuList.Name = "MSXMenuList";
this.MSXMenuList.Size = new Size(182, 22);
this.MSXMenuList.Text = "MSX";
this.N64MenuList.Name = "N64MenuList";
this.N64MenuList.Size = new Size(182, 22);
this.N64MenuList.Text = "Nintendo 64";
this.NeoGeoMenuList.Name = "NeoGeoMenuList";
this.NeoGeoMenuList.Size = new Size(182, 22);
this.NeoGeoMenuList.Text = "NeoGeo";
this.NESMenuList.Name = "NESMenuList";
this.NESMenuList.Size = new Size(182, 22);
this.NESMenuList.Text = "NES";
this.SegaMSMenuList.Name = "SegaMSMenuList";
this.SegaMSMenuList.Size = new Size(182, 22);
this.SegaMSMenuList.Text = "Sega Master System";
this.SNESMenuList.Name = "SNESMenuList";
this.SNESMenuList.Size = new Size(182, 22);
this.SNESMenuList.Text = "SNES";
this.TurboGrafx16MenuList.Name = "TurboGrafx16MenuList";
this.TurboGrafx16MenuList.Size = new Size(182, 22);
this.TurboGrafx16MenuList.Text = "TruboGrafx-16";
this.TurboGrafxCDMenuList.Name = "TurboGrafxCDMenuList";
this.TurboGrafxCDMenuList.Size = new Size(182, 22);
this.TurboGrafxCDMenuList.Text = "TurboGrafx-CD";
this.VCArcadeMenuList.Name = "VCArcadeMenuList";
this.VCArcadeMenuList.Size = new Size(182, 22);
this.VCArcadeMenuList.Text = "Virtual Console Arcade";
this.vcFakeMenuItem.Image = (Image) Resources.arrow_ticker;
this.vcFakeMenuItem.Name = "vcFakeMenuItem";
this.vcFakeMenuItem.Size = new Size(163, 22);
this.vcFakeMenuItem.Text = "Virtual Console";
this.vcFakeMenuItem.Visible = false;
this.WiiWareMenuList.Image = (Image) componentResourceManager.GetObject("WiiWareMenuList.Image");
this.WiiWareMenuList.Name = "WiiWareMenuList";
this.WiiWareMenuList.Size = new Size(163, 22);
this.WiiWareMenuList.Text = "WiiWare";
this.wwFakeMenuItem.Image = (Image) Resources.arrow_ticker;
this.wwFakeMenuItem.Name = "wwFakeMenuItem";
this.wwFakeMenuItem.Size = new Size(163, 22);
this.wwFakeMenuItem.Text = "WiiWare";
this.wwFakeMenuItem.Visible = false;
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new Size(160, 6);
this.dsiSystemToolStripMenu.Image = (Image) Resources.dsi16x16;
this.dsiSystemToolStripMenu.Name = "dsiSystemToolStripMenu";
this.dsiSystemToolStripMenu.Size = new Size(163, 22);
this.dsiSystemToolStripMenu.Text = "System";
this.dsiFakeSystemToolStripMenu.Image = (Image) Resources.arrow_ticker;
this.dsiFakeSystemToolStripMenu.Name = "dsiFakeSystemToolStripMenu";
this.dsiFakeSystemToolStripMenu.Size = new Size(163, 22);
this.dsiFakeSystemToolStripMenu.Text = "System";
this.dsiFakeSystemToolStripMenu.Visible = false;
this.dSiWareToolStripMenu.Image = (Image) Resources.dsi16x16;
this.dSiWareToolStripMenu.Name = "dSiWareToolStripMenu";
this.dSiWareToolStripMenu.Size = new Size(163, 22);
this.dSiWareToolStripMenu.Text = "DSiWare";
this.dSiWareFakeToolStripMenu.Image = (Image) Resources.arrow_ticker;
this.dSiWareFakeToolStripMenu.Name = "dSiWareFakeToolStripMenu";
this.dSiWareFakeToolStripMenu.Size = new Size(163, 22);
this.dSiWareFakeToolStripMenu.Text = "DSiWare";
this.dSiWareFakeToolStripMenu.Visible = false;
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new Size(160, 6);
this.RegionCodesList.DropDownItems.AddRange(new ToolStripItem[2]
{
(ToolStripItem) this.wiiRegionCodesMenu,
(ToolStripItem) this.dsiRegionCodesMenu
});
this.RegionCodesList.Name = "RegionCodesList";
this.RegionCodesList.Size = new Size(163, 22);
this.RegionCodesList.Text = "Region Codes";
this.wiiRegionCodesMenu.Name = "wiiRegionCodesMenu";
this.wiiRegionCodesMenu.Size = new Size(89, 22);
this.wiiRegionCodesMenu.Text = "Wii";
this.wiiRegionCodesMenu.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.wiiRegionCodesMenu_DropDownItemClicked);
this.dsiRegionCodesMenu.Name = "dsiRegionCodesMenu";
this.dsiRegionCodesMenu.Size = new Size(89, 22);
this.dsiRegionCodesMenu.Text = "DSi";
this.dsiRegionCodesMenu.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.dsiRegionCodesMenu_DropDownItemClicked);
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new Size(160, 6);
this.updateDatabaseToolStripMenuItem.Image = (Image) Resources.database_save;
this.updateDatabaseToolStripMenuItem.Name = "updateDatabaseToolStripMenuItem";
this.updateDatabaseToolStripMenuItem.Size = new Size(163, 22);
this.updateDatabaseToolStripMenuItem.Text = "Update Databases";
this.updateDatabaseToolStripMenuItem.Click += new EventHandler(this.updateDatabaseToolStripMenuItem_Click);
this.extrasStrip.AllowMerge = false;
this.extrasStrip.Font = new Font("Tahoma", 8.25f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0);
this.extrasStrip.Items.AddRange(new ToolStripItem[9]
{
(ToolStripItem) this.loadInfoFromTMDToolStripMenuItem,
(ToolStripItem) this.toolStripSeparator3,
(ToolStripItem) this.proxySettingsToolStripMenuItem,
(ToolStripItem) this.toolStripSeparator6,
(ToolStripItem) this.openNUSDDirectoryToolStripMenuItem,
(ToolStripItem) this.moreExtrasToolStripMenuItem,
(ToolStripItem) this.donateToolStripMenuItem,
(ToolStripItem) this.toolStripSeparator7,
(ToolStripItem) this.aboutNUSDToolStripMenuItem
});
this.extrasStrip.Name = "extrasStrip";
this.extrasStrip.Size = new Size(178, 154);
this.extrasStrip.Text = "Hidden";
this.extrasStrip.Closed += new ToolStripDropDownClosedEventHandler(this.anyStrip_Closed);
this.extrasStrip.Opening += new CancelEventHandler(this.extrasStrip_Opening);
this.loadInfoFromTMDToolStripMenuItem.Image = (Image) Resources.page_white_magnify;
this.loadInfoFromTMDToolStripMenuItem.Name = "loadInfoFromTMDToolStripMenuItem";
this.loadInfoFromTMDToolStripMenuItem.Size = new Size(177, 22);
this.loadInfoFromTMDToolStripMenuItem.Text = "Load Info from TMD";
this.loadInfoFromTMDToolStripMenuItem.Click += new EventHandler(this.loadInfoFromTMDToolStripMenuItem_Click);
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new Size(174, 6);
this.proxySettingsToolStripMenuItem.Image = (Image) Resources.server_link;
this.proxySettingsToolStripMenuItem.Name = "proxySettingsToolStripMenuItem";
this.proxySettingsToolStripMenuItem.Size = new Size(177, 22);
this.proxySettingsToolStripMenuItem.Text = "Proxy Settings";
this.proxySettingsToolStripMenuItem.Click += new EventHandler(this.proxySettingsToolStripMenuItem_Click);
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new Size(174, 6);
this.openNUSDDirectoryToolStripMenuItem.Image = (Image) Resources.folder;
this.openNUSDDirectoryToolStripMenuItem.Name = "openNUSDDirectoryToolStripMenuItem";
this.openNUSDDirectoryToolStripMenuItem.Size = new Size(177, 22);
this.openNUSDDirectoryToolStripMenuItem.Text = "Open NUSD Directory";
this.openNUSDDirectoryToolStripMenuItem.Click += new EventHandler(this.openNUSDDirectoryToolStripMenuItem_Click);
this.moreExtrasToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[4]
{
(ToolStripItem) this.runFolderFixToolStripMenuItem,
(ToolStripItem) this.wiiBrewToolStripMenuItem,
(ToolStripItem) this.removeNUSDFilesFoldersToolStripMenuItem,
(ToolStripItem) this.databaseToolStripMenuItem
});
this.moreExtrasToolStripMenuItem.Image = (Image) Resources.wrench;
this.moreExtrasToolStripMenuItem.Name = "moreExtrasToolStripMenuItem";
this.moreExtrasToolStripMenuItem.Size = new Size(177, 22);
this.moreExtrasToolStripMenuItem.Text = "More Extras...";
this.moreExtrasToolStripMenuItem.Visible = false;
this.runFolderFixToolStripMenuItem.Name = "runFolderFixToolStripMenuItem";
this.runFolderFixToolStripMenuItem.Size = new Size(206, 22);
this.runFolderFixToolStripMenuItem.Text = "Run 'FolderFix'";
this.runFolderFixToolStripMenuItem.Click += new EventHandler(this.runFolderFixToolStripMenuItem_Click);
this.wiiBrewToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[2]
{
(ToolStripItem) this.mainPageToolStripMenuItem,
(ToolStripItem) this.databasePageToolStripMenuItem
});
this.wiiBrewToolStripMenuItem.Name = "wiiBrewToolStripMenuItem";
this.wiiBrewToolStripMenuItem.Size = new Size(206, 22);
this.wiiBrewToolStripMenuItem.Text = "WiiBrew";
this.mainPageToolStripMenuItem.Name = "mainPageToolStripMenuItem";
this.mainPageToolStripMenuItem.Size = new Size(147, 22);
this.mainPageToolStripMenuItem.Text = "Main Page";
this.mainPageToolStripMenuItem.Click += new EventHandler(this.mainPageToolStripMenuItem_Click);
this.databasePageToolStripMenuItem.Name = "databasePageToolStripMenuItem";
this.databasePageToolStripMenuItem.Size = new Size(147, 22);
this.databasePageToolStripMenuItem.Text = "Database Page";
this.databasePageToolStripMenuItem.Click += new EventHandler(this.databasePageToolStripMenuItem_Click);
this.removeNUSDFilesFoldersToolStripMenuItem.Name = "removeNUSDFilesFoldersToolStripMenuItem";
this.removeNUSDFilesFoldersToolStripMenuItem.Size = new Size(206, 22);
this.removeNUSDFilesFoldersToolStripMenuItem.Text = "Remove NUSD Files\\Folders";
this.removeNUSDFilesFoldersToolStripMenuItem.Click += new EventHandler(this.removeNUSDFilesFoldersToolStripMenuItem_Click);
this.databaseToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[1]
{
(ToolStripItem) this.localTicketInventoryToolStripMenuItem
});
this.databaseToolStripMenuItem.Name = "databaseToolStripMenuItem";
this.databaseToolStripMenuItem.Size = new Size(206, 22);
this.databaseToolStripMenuItem.Text = "Database";
this.localTicketInventoryToolStripMenuItem.Name = "localTicketInventoryToolStripMenuItem";
this.localTicketInventoryToolStripMenuItem.Size = new Size(180, 22);
this.localTicketInventoryToolStripMenuItem.Text = "Local Ticket Inventory";
this.localTicketInventoryToolStripMenuItem.Click += new EventHandler(this.localTicketInventoryToolStripMenuItem_Click);
this.donateToolStripMenuItem.Image = (Image) Resources.money;
this.donateToolStripMenuItem.Name = "donateToolStripMenuItem";
this.donateToolStripMenuItem.Size = new Size(177, 22);
this.donateToolStripMenuItem.Text = "Donate!";
this.donateToolStripMenuItem.Visible = false;
this.donateToolStripMenuItem.Click += new EventHandler(this.donateToolStripMenuItem_Click);
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new Size(174, 6);
this.aboutNUSDToolStripMenuItem.Image = (Image) Resources.information;
this.aboutNUSDToolStripMenuItem.Name = "aboutNUSDToolStripMenuItem";
this.aboutNUSDToolStripMenuItem.Size = new Size(177, 22);
this.aboutNUSDToolStripMenuItem.Text = "About NUSD";
this.aboutNUSDToolStripMenuItem.Click += new EventHandler(this.aboutNUSDToolStripMenuItem_Click);
this.proxyBox.BackColor = Color.White;
this.proxyBox.Controls.Add((Control) this.label13);
this.proxyBox.Controls.Add((Control) this.label12);
this.proxyBox.Controls.Add((Control) this.ProxyUser);
this.proxyBox.Controls.Add((Control) this.SaveProxyBtn);
this.proxyBox.Controls.Add((Control) this.ProxyAssistBtn);
this.proxyBox.Controls.Add((Control) this.ProxyURL);
this.proxyBox.Location = new Point(31, 250);
this.proxyBox.Name = "proxyBox";
this.proxyBox.Size = new Size(212, 114);
this.proxyBox.TabIndex = 45;
this.proxyBox.TabStop = false;
this.proxyBox.Text = "Proxy Settings";
this.proxyBox.Visible = false;
this.label13.AutoSize = true;
this.label13.Location = new Point(6, 55);
this.label13.Name = "label13";
this.label13.Size = new Size(32, 13);
this.label13.TabIndex = 32;
this.label13.Text = "User:";
this.label12.AutoSize = true;
this.label12.Location = new Point(6, 29);
this.label12.Name = "label12";
this.label12.Size = new Size(36, 13);
this.label12.TabIndex = 31;
this.label12.Text = "Proxy:";
this.ProxyUser.BorderStyle = BorderStyle.FixedSingle;
this.ProxyUser.Location = new Point(55, 53);
this.ProxyUser.Name = "ProxyUser";
this.ProxyUser.Size = new Size(151, 20);
this.ProxyUser.TabIndex = 30;
this.SaveProxyBtn.FlatStyle = FlatStyle.Popup;
this.SaveProxyBtn.Location = new Point(6, 79);
this.SaveProxyBtn.Name = "SaveProxyBtn";
this.SaveProxyBtn.Size = new Size(161, 26);
this.SaveProxyBtn.TabIndex = 29;
this.SaveProxyBtn.Text = "Save Proxy Settings";
this.SaveProxyBtn.UseVisualStyleBackColor = true;
this.SaveProxyBtn.Click += new EventHandler(this.SaveProxyBtn_Click);
this.ProxyAssistBtn.FlatStyle = FlatStyle.Popup;
this.ProxyAssistBtn.Image = (Image) Resources.help;
this.ProxyAssistBtn.Location = new Point(177, 79);
this.ProxyAssistBtn.Name = "ProxyAssistBtn";
this.ProxyAssistBtn.Size = new Size(29, 26);
this.ProxyAssistBtn.TabIndex = 28;
this.ProxyAssistBtn.UseVisualStyleBackColor = true;
this.ProxyAssistBtn.Click += new EventHandler(this.ProxyAssistBtn_Click);
this.ProxyURL.BorderStyle = BorderStyle.FixedSingle;
this.ProxyURL.Location = new Point(55, 27);
this.ProxyURL.Name = "ProxyURL";
this.ProxyURL.Size = new Size(151, 20);
this.ProxyURL.TabIndex = 0;
this.ProxyVerifyBox.BackColor = SystemColors.Control;
this.ProxyVerifyBox.Controls.Add((Control) this.SaveProxyPwdPermanentBtn);
this.ProxyVerifyBox.Controls.Add((Control) this.checkBox1);
this.ProxyVerifyBox.Controls.Add((Control) this.SaveProxyPwdBtn);
this.ProxyVerifyBox.Controls.Add((Control) this.label14);
this.ProxyVerifyBox.Controls.Add((Control) this.ProxyPwdBox);
this.ProxyVerifyBox.Location = new Point(31, 222);
this.ProxyVerifyBox.Name = "ProxyVerifyBox";
this.ProxyVerifyBox.Size = new Size(212, 133);
this.ProxyVerifyBox.TabIndex = 46;
this.ProxyVerifyBox.TabStop = false;
this.ProxyVerifyBox.Text = "Verify Credentials";
this.ProxyVerifyBox.Visible = false;
this.SaveProxyPwdPermanentBtn.Enabled = false;
this.SaveProxyPwdPermanentBtn.FlatStyle = FlatStyle.Popup;
this.SaveProxyPwdPermanentBtn.Location = new Point(9, 104);
this.SaveProxyPwdPermanentBtn.Name = "SaveProxyPwdPermanentBtn";
this.SaveProxyPwdPermanentBtn.Size = new Size(197, 23);
this.SaveProxyPwdPermanentBtn.TabIndex = 36;
this.SaveProxyPwdPermanentBtn.Text = "Save (To File)";
this.SaveProxyPwdPermanentBtn.UseVisualStyleBackColor = true;
this.SaveProxyPwdPermanentBtn.Click += new EventHandler(this.SaveProxyPwdPermanentBtn_Click);
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new Point(9, 72);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new Size(199, 30);
this.checkBox1.TabIndex = 35;
this.checkBox1.Text = "I understand that NUSD stores proxy\r\npasswords in plain text.";
this.checkBox1.UseVisualStyleBackColor = true;
this.checkBox1.CheckedChanged += new EventHandler(this.checkBox1_CheckedChanged);
this.SaveProxyPwdBtn.FlatStyle = FlatStyle.Popup;
this.SaveProxyPwdBtn.Location = new Point(9, 43);
this.SaveProxyPwdBtn.Name = "SaveProxyPwdBtn";
this.SaveProxyPwdBtn.Size = new Size(197, 23);
this.SaveProxyPwdBtn.TabIndex = 34;
this.SaveProxyPwdBtn.Text = "Save (This Session Only)";
this.SaveProxyPwdBtn.UseVisualStyleBackColor = true;
this.SaveProxyPwdBtn.Click += new EventHandler(this.SaveProxyPwdButton_Click);
this.label14.AutoSize = true;
this.label14.Location = new Point(6, 21);
this.label14.Name = "label14";
this.label14.Size = new Size(62, 13);
this.label14.TabIndex = 33;
this.label14.Text = "Proxy Pass:";
this.ProxyPwdBox.BorderStyle = BorderStyle.FixedSingle;
this.ProxyPwdBox.Location = new Point(71, 19);
this.ProxyPwdBox.Name = "ProxyPwdBox";
this.ProxyPwdBox.Size = new Size(135, 20);
this.ProxyPwdBox.TabIndex = 32;
this.ProxyPwdBox.UseSystemPasswordChar = true;
this.ProxyPwdBox.KeyPress += new KeyPressEventHandler(this.ProxyPwdBox_KeyPress);
this.scriptsbutton.FlatStyle = FlatStyle.Popup;
this.scriptsbutton.Location = new Point(103, 5);
this.scriptsbutton.Name = "scriptsbutton";
this.scriptsbutton.Size = new Size(85, 27);
this.scriptsbutton.TabIndex = 1;
this.scriptsbutton.Text = "Scripts...";
this.scriptsbutton.UseVisualStyleBackColor = true;
this.scriptsbutton.Click += new EventHandler(this.scriptsbutton_Click);
this.scriptsStrip.Font = new Font("Tahoma", 8.25f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0);
this.scriptsStrip.Items.AddRange(new ToolStripItem[5]
{
(ToolStripItem) this.scriptsLocalMenuEntry,
(ToolStripItem) this.scriptsDatabaseToolStripMenuItem,
(ToolStripItem) this.loadNUSScriptToolStripMenuItem,
(ToolStripItem) this.toolStripSeparator2,
(ToolStripItem) this.emulateUpdate
});
this.scriptsStrip.Name = "scriptsStrip";
this.scriptsStrip.ShowItemToolTips = false;
this.scriptsStrip.Size = new Size(206, 98);
this.scriptsStrip.Text = "Hidden";
this.scriptsStrip.Closed += new ToolStripDropDownClosedEventHandler(this.anyStrip_Closed);
this.scriptsLocalMenuEntry.Enabled = false;
this.scriptsLocalMenuEntry.Image = (Image) Resources.script_code;
this.scriptsLocalMenuEntry.Name = "scriptsLocalMenuEntry";
this.scriptsLocalMenuEntry.Overflow = ToolStripItemOverflow.AsNeeded;
this.scriptsLocalMenuEntry.Size = new Size(205, 22);
this.scriptsLocalMenuEntry.Text = "Scripts (Local)";
this.scriptsDatabaseToolStripMenuItem.Enabled = false;
this.scriptsDatabaseToolStripMenuItem.Image = (Image) Resources.script_code_red;
this.scriptsDatabaseToolStripMenuItem.Name = "scriptsDatabaseToolStripMenuItem";
this.scriptsDatabaseToolStripMenuItem.Size = new Size(205, 22);
this.scriptsDatabaseToolStripMenuItem.Text = "Scripts (Database)";
this.loadNUSScriptToolStripMenuItem.Image = (Image) Resources.script_go;
this.loadNUSScriptToolStripMenuItem.Name = "loadNUSScriptToolStripMenuItem";
this.loadNUSScriptToolStripMenuItem.Size = new Size(205, 22);
this.loadNUSScriptToolStripMenuItem.Text = "Load NUS Script";
this.loadNUSScriptToolStripMenuItem.Click += new EventHandler(this.loadNUSScriptToolStripMenuItem_Click);
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new Size(202, 6);
this.emulateUpdate.DropDownItems.AddRange(new ToolStripItem[4]
{
(ToolStripItem) this.uSANTSCToolStripMenuItem,
(ToolStripItem) this.europePALToolStripMenuItem,
(ToolStripItem) this.japanNTSCJToolStripMenuItem,
(ToolStripItem) this.koreaToolStripMenuItem
});
this.emulateUpdate.Image = (Image) Resources.server_connect;
this.emulateUpdate.Name = "emulateUpdate";
this.emulateUpdate.Size = new Size(205, 22);
this.emulateUpdate.Text = "Emulate Wii System Update";
this.emulateUpdate.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.emulateUpdate_DropDownItemClicked);
this.uSANTSCToolStripMenuItem.Name = "uSANTSCToolStripMenuItem";
this.uSANTSCToolStripMenuItem.Size = new Size(114, 22);
this.uSANTSCToolStripMenuItem.Text = "USA";
this.europePALToolStripMenuItem.Name = "europePALToolStripMenuItem";
this.europePALToolStripMenuItem.Size = new Size(114, 22);
this.europePALToolStripMenuItem.Text = "EUROPE";
this.japanNTSCJToolStripMenuItem.Name = "japanNTSCJToolStripMenuItem";
this.japanNTSCJToolStripMenuItem.Size = new Size(114, 22);
this.japanNTSCJToolStripMenuItem.Text = "JAPAN";
this.koreaToolStripMenuItem.Name = "koreaToolStripMenuItem";
this.koreaToolStripMenuItem.Size = new Size(114, 22);
this.koreaToolStripMenuItem.Text = "KOREA";
this.iosPatchGroupBox.Controls.Add((Control) this.label2);
this.iosPatchGroupBox.Controls.Add((Control) this.iosPatchesListBox);
this.iosPatchGroupBox.Controls.Add((Control) this.iosPatchGroupBoxOKbtn);
this.iosPatchGroupBox.Location = new Point(31, 187);
this.iosPatchGroupBox.Name = "iosPatchGroupBox";
this.iosPatchGroupBox.Size = new Size(212, 115);
this.iosPatchGroupBox.TabIndex = 55;
this.iosPatchGroupBox.TabStop = false;
this.iosPatchGroupBox.Text = "IOS Patches";
this.iosPatchGroupBox.Visible = false;
this.label2.AutoSize = true;
this.label2.Location = new Point(9, 16);
this.label2.Name = "label2";
this.label2.Size = new Size(184, 26);
this.label2.TabIndex = 2;
this.label2.Text = "Patch the following bugs into any IOS\r\nI download:";
this.iosPatchesListBox.BackColor = SystemColors.Menu;
this.iosPatchesListBox.BorderStyle = BorderStyle.None;
this.iosPatchesListBox.CheckOnClick = true;
this.iosPatchesListBox.FormattingEnabled = true;
this.iosPatchesListBox.Items.AddRange(new object[3]
{
(object) "Trucha bug",
(object) "ES_Identify",
(object) "NAND permissions"
});
this.iosPatchesListBox.Location = new Point(6, 62);
this.iosPatchesListBox.Name = "iosPatchesListBox";
this.iosPatchesListBox.Size = new Size(115, 45);
this.iosPatchesListBox.TabIndex = 1;
this.iosPatchGroupBoxOKbtn.FlatStyle = FlatStyle.Popup;
this.iosPatchGroupBoxOKbtn.Location = new Point((int) sbyte.MaxValue, 84);
this.iosPatchGroupBoxOKbtn.Name = "iosPatchGroupBoxOKbtn";
this.iosPatchGroupBoxOKbtn.Size = new Size(75, 23);
this.iosPatchGroupBoxOKbtn.TabIndex = 0;
this.iosPatchGroupBoxOKbtn.Text = "OK";
this.iosPatchGroupBoxOKbtn.UseVisualStyleBackColor = true;
this.iosPatchGroupBoxOKbtn.Click += new EventHandler(this.iosPatchGroupBoxOKbtn_Click);
this.richPanel.BorderStyle = BorderStyle.FixedSingle;
this.richPanel.Controls.Add((Control) this.statusbox);
this.richPanel.Location = new Point(12, 116);
this.richPanel.Name = "richPanel";
this.richPanel.Size = new Size(250, 268);
this.richPanel.TabIndex = 56;
this.databaseButton.FlatStyle = FlatStyle.Popup;
this.databaseButton.Location = new Point(12, 5);
this.databaseButton.Name = "databaseButton";
this.databaseButton.Size = new Size(85, 27);
this.databaseButton.TabIndex = 0;
this.databaseButton.Text = "Database...";
this.databaseButton.TextImageRelation = TextImageRelation.ImageBeforeText;
this.databaseButton.UseVisualStyleBackColor = true;
this.databaseButton.Click += new EventHandler(this.DatabaseButton_Click);
this.saveaswadbtn.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.saveaswadbtn.AutoSize = true;
this.saveaswadbtn.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.saveaswadbtn.BackColor = Color.Transparent;
this.saveaswadbtn.Enabled = false;
this.saveaswadbtn.FlatStyle = FlatStyle.Flat;
this.saveaswadbtn.Image = (Image) Resources.disk;
this.saveaswadbtn.Location = new Point(239, 409);
this.saveaswadbtn.MaximumSize = new Size(0, 24);
this.saveaswadbtn.MinimumSize = new Size(0, 24);
this.saveaswadbtn.Name = "saveaswadbtn";
this.saveaswadbtn.Size = new Size(24, 24);
this.saveaswadbtn.TabIndex = 11;
this.saveaswadbtn.TextAlign = ContentAlignment.MiddleLeft;
this.saveaswadbtn.TextImageRelation = TextImageRelation.ImageBeforeText;
this.saveaswadbtn.UseVisualStyleBackColor = false;
this.saveaswadbtn.Click += new EventHandler(this.saveaswadbtn_Click);
this.saveaswadbtn.MouseEnter += new EventHandler(this.saveaswadbtn_MouseEnter);
this.saveaswadbtn.MouseLeave += new EventHandler(this.saveaswadbtn_MouseLeave);
this.iosPatchCheckbox.Enabled = false;
this.iosPatchCheckbox.Image = (Image) Resources.bug_add;
this.iosPatchCheckbox.ImageAlign = ContentAlignment.MiddleLeft;
this.iosPatchCheckbox.Location = new Point(11, 480);
this.iosPatchCheckbox.Name = "iosPatchCheckbox";
this.iosPatchCheckbox.Size = new Size(104, 22);
this.iosPatchCheckbox.TabIndex = 10;
this.iosPatchCheckbox.Text = "Patch IOS...";
this.iosPatchCheckbox.TextImageRelation = TextImageRelation.ImageBeforeText;
this.iosPatchCheckbox.UseVisualStyleBackColor = true;
this.iosPatchCheckbox.CheckedChanged += new EventHandler(this.iosPatchCheckbox_CheckedChanged);
this.keepenccontents.Checked = true;
this.keepenccontents.CheckState = CheckState.Checked;
this.keepenccontents.Image = (Image) Resources.package;
this.keepenccontents.ImageAlign = ContentAlignment.MiddleLeft;
this.keepenccontents.Location = new Point(10, 414);
this.keepenccontents.Name = "keepenccontents";
this.keepenccontents.Size = new Size(177, 22);
this.keepenccontents.TabIndex = 8;
this.keepenccontents.Text = "Keep Encrypted Contents";
this.keepenccontents.TextImageRelation = TextImageRelation.ImageBeforeText;
this.keepenccontents.UseVisualStyleBackColor = true;
this.clearButton.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.clearButton.AutoSize = true;
this.clearButton.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.clearButton.BackColor = Color.Transparent;
this.clearButton.FlatStyle = FlatStyle.Flat;
this.clearButton.Image = (Image) Resources.bin_closed;
this.clearButton.ImageAlign = ContentAlignment.MiddleRight;
this.clearButton.Location = new Point(238, 360);
this.clearButton.MaximumSize = new Size(0, 24);
this.clearButton.MinimumSize = new Size(0, 24);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new Size(24, 24);
this.clearButton.TabIndex = 12;
this.clearButton.TextAlign = ContentAlignment.MiddleRight;
this.clearButton.TextImageRelation = TextImageRelation.ImageBeforeText;
this.clearButton.UseVisualStyleBackColor = false;
this.clearButton.Click += new EventHandler(this.ClearStatusbox);
this.clearButton.MouseEnter += new EventHandler(this.clearButton_MouseEnter);
this.clearButton.MouseLeave += new EventHandler(this.clearButton_MouseLeave);
this.packbox.Image = (Image) Resources.box;
this.packbox.ImageAlign = ContentAlignment.MiddleLeft;
this.packbox.Location = new Point(10, 392);
this.packbox.Name = "packbox";
this.packbox.Size = new Size(98, 22);
this.packbox.TabIndex = 7;
this.packbox.Text = "Pack WAD";
this.packbox.TextImageRelation = TextImageRelation.ImageBeforeText;
this.packbox.UseVisualStyleBackColor = true;
this.packbox.CheckedChanged += new EventHandler(this.packbox_CheckedChanged);
this.packbox.EnabledChanged += new EventHandler(this.packbox_EnabledChanged);
this.decryptbox.Image = (Image) Resources.package_green;
this.decryptbox.ImageAlign = ContentAlignment.MiddleLeft;
this.decryptbox.Location = new Point(11, 436);
this.decryptbox.Name = "decryptbox";
this.decryptbox.Size = new Size(231, 22);
this.decryptbox.TabIndex = 9;
this.decryptbox.Text = "Create Decrypted Contents (*.app)";
this.decryptbox.TextImageRelation = TextImageRelation.ImageBeforeText;
this.decryptbox.UseVisualStyleBackColor = true;
this.localuse.Checked = true;
this.localuse.CheckState = CheckState.Checked;
this.localuse.Image = (Image) Resources.drive_disk;
this.localuse.ImageAlign = ContentAlignment.MiddleLeft;
this.localuse.Location = new Point(11, 458);
this.localuse.MinimumSize = new Size(0, 22);
this.localuse.Name = "localuse";
this.localuse.Size = new Size(162, 22);
this.localuse.TabIndex = 12;
this.localuse.Text = "Use Local Files If Present";
this.localuse.TextImageRelation = TextImageRelation.ImageBeforeText;
this.localuse.UseVisualStyleBackColor = true;
this.serverLbl.BorderStyle = BorderStyle.FixedSingle;
this.serverLbl.Location = new Point(233, 38);
this.serverLbl.Name = "serverLbl";
this.serverLbl.Size = new Size(29, 20);
this.serverLbl.TabIndex = 57;
this.serverLbl.Text = "Wii";
this.serverLbl.TextAlign = ContentAlignment.MiddleCenter;
this.serverLbl.TextChanged += new EventHandler(this.serverLbl_TextChanged);
this.serverLbl.Click += new EventHandler(this.serverLbl_Click);
this.serverLbl.MouseEnter += new EventHandler(this.serverLbl_MouseEnter);
this.serverLbl.MouseLeave += new EventHandler(this.serverLbl_MouseLeave);
this.titleidbox.Font = new Font("Tahoma", 8.25f);
this.titleidbox.Location = new Point(12, 38);
this.titleidbox.MaxLength = 16;
this.titleidbox.Name = "titleidbox";
this.titleidbox.Size = new Size(141, 21);
this.titleidbox.TabIndex = 3;
this.titleidbox.TextAlign = HorizontalAlignment.Center;
this.titleidbox.WaterMarkColor = Color.Silver;
this.titleidbox.WaterMarkText = "Title ID";
this.titleidbox.TextChanged += new EventHandler(this.titleidbox_TextChanged);
this.dlprogress.ContainerControl = (ContainerControl) this;
this.dlprogress.Location = new Point(12, 95);
this.dlprogress.Name = "dlprogress";
this.dlprogress.Size = new Size(250, 15);
this.dlprogress.TabIndex = 47;
this.titleversion.Font = new Font("Tahoma", 8.25f);
this.titleversion.Location = new Point(169, 38);
this.titleversion.MaxLength = 8;
this.titleversion.Name = "titleversion";
this.titleversion.Size = new Size(58, 21);
this.titleversion.TabIndex = 4;
this.titleversion.TextAlign = HorizontalAlignment.Center;
this.titleversion.WaterMarkColor = Color.Silver;
this.titleversion.WaterMarkText = "Version";
this.titleversion.TextChanged += new EventHandler(this.titleversion_TextChanged);
this.pathbox.Location = new Point(11, 502);
this.pathbox.Name = "pathbox";
this.pathbox.Size = new Size(161, 22);
this.pathbox.TabIndex = 58;
this.pathbox.Text = "Directory of NUSD v1.5";
this.pathbox.UseVisualStyleBackColor = true;
this.AutoScaleMode = AutoScaleMode.None;
this.ClientSize = new Size(274, 527);
this.Controls.Add((Control) this.pathbox);
this.Controls.Add((Control) this.serverLbl);
this.Controls.Add((Control) this.iosPatchGroupBox);
this.Controls.Add((Control) this.ProxyVerifyBox);
this.Controls.Add((Control) this.proxyBox);
this.Controls.Add((Control) this.scriptsbutton);
this.Controls.Add((Control) this.titleidbox);
this.Controls.Add((Control) this.dlprogress);
this.Controls.Add((Control) this.titleversion);
this.Controls.Add((Control) this.databaseButton);
this.Controls.Add((Control) this.iosPatchCheckbox);
this.Controls.Add((Control) this.downloadstartbtn);
this.Controls.Add((Control) this.clearButton);
this.Controls.Add((Control) this.keepenccontents);
this.Controls.Add((Control) this.label1);
this.Controls.Add((Control) this.Extrasbtn);
this.Controls.Add((Control) this.wadnamebox);
this.Controls.Add((Control) this.richPanel);
this.Controls.Add((Control) this.decryptbox);
this.Controls.Add((Control) this.packbox);
this.Controls.Add((Control) this.saveaswadbtn);
this.Controls.Add((Control) this.localuse);
this.FormBorderStyle = FormBorderStyle.FixedSingle;
this.Icon = (Icon) componentResourceManager.GetObject("$this.Icon");
this.MaximizeBox = false;
this.Name = nameof (Form1);
this.Text = " ";
this.FormClosing += new FormClosingEventHandler(this.Form1_FormClosing);
this.Load += new EventHandler(this.Form1_Load);
this.MouseWheel += new MouseEventHandler(this.Form1_MouseWheel);
this.databaseStrip.ResumeLayout(false);
this.extrasStrip.ResumeLayout(false);
this.proxyBox.ResumeLayout(false);
this.proxyBox.PerformLayout();
this.ProxyVerifyBox.ResumeLayout(false);
this.ProxyVerifyBox.PerformLayout();
this.scriptsStrip.ResumeLayout(false);
this.iosPatchGroupBox.ResumeLayout(false);
this.iosPatchGroupBox.PerformLayout();
this.richPanel.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
public Form1()
{
this.InitializeComponent();
this.GUISetup();
this.BootChecks();
}
public Form1(string[] args)
{
this.InitializeComponent();
this.GUISetup();
if (args.Length == 1 && System.IO.File.Exists(args[0]))
{
this.BootChecks();
string str1 = System.IO.File.ReadAllText(args[0]);
FileInfo fileInfo = new FileInfo(args[0]);
string str2 = str1 + string.Format(";{0}", (object) fileInfo.Name.Replace("." + fileInfo.Extension, ""));
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(this.RunScriptBg);
backgroundWorker.RunWorkerAsync((object) str2);
}
else if (args.Length >= 2)
{
this.RunCommandMode(args);
Environment.Exit(0);
}
else
this.BootChecks();
}
private void RunCommandMode(string[] args)
{
this.packbox.Checked = false;
this.localuse.Checked = true;
this.decryptbox.Checked = false;
this.keepenccontents.Checked = false;
this.iosPatchCheckbox.Checked = false;
this.iosPatchesListBox.SetItemChecked(0, false);
this.iosPatchesListBox.SetItemChecked(1, false);
this.iosPatchesListBox.SetItemChecked(2, false);
Console.WriteLine("NUS Downloader - v{0}", (object) this.version);
if (args.Length < 2)
{
Console.WriteLine("Usage:");
Console.WriteLine(" nusd <titleID> <titleVersion | *> [optionalArgs]");
Console.WriteLine("\nWhere:");
Console.WriteLine(" titleID = The ID of the title to be downloaded");
Console.WriteLine(" titleVersion = The version of the title to be downloaded");
Console.WriteLine(" Use \"*\" (no quotes) to get the latest version");
Console.WriteLine(" OptionalArgs:");
Console.WriteLine(" packwad = A wad file will be generated");
Console.WriteLine(" localuse = Use local contents if available");
Console.WriteLine(" decrypt = Create decrypted contents");
Console.WriteLine(" keepencrypt = Keep encrypted contents");
}
else
{
for (int index = 0; index < args.Length; ++index)
{
Console.WriteLine("{0}", (object) args[index]);
switch (index)
{
case 0:
this.titleidbox.Text = args[index];
break;
case 1:
if (args[index] == "*")
{
this.titleversion.Text = "";
break;
}
this.titleversion.Text = args[index];
break;
default:
if (args[index] == "packwad")
{
this.packbox.Checked = true;
break;
}
if (args[index] == "localuse")
{
this.localuse.Checked = true;
break;
}
if (args[index] == "decrypt")
{
this.decryptbox.Checked = true;
break;
}
if (args[index] == "keepencrypt")
{
this.keepenccontents.Checked = true;
break;
}
Console.WriteLine("\n>>>> Warning: Unrecognized command line argument: {0}. This option is ignored...", (object) args[index]);
break;
}
}
this.UpdatePackedName();
this.NUSDownloader_DoWork((object) null, (DoWorkEventArgs) null);
Console.WriteLine("\nSuccessfully downloaded the title {0} version {1}", (object) args[0], (object) args[1]);
}
}
private void GUISetup()
{
this.Font = new Font("Tahoma", 8f);
this.MaximumSize = this.MinimumSize = this.Size;
if (System.Type.GetType("Mono.Runtime") != null)
{
this.saveaswadbtn.Text = "Save As";
this.clearButton.Text = "Clear";
this.keepenccontents.Text = "Keep Enc. Contents";
this.clearButton.Left -= 41;
}
else
this.statusbox.Font = new Font("Microsoft Sans Serif", 7f);
this.statusbox.SelectionColor = this.statusbox.ForeColor = this.normalcolor;
if (this.version.StartsWith("SVN"))
{
this.WriteStatus("!!!!! THIS IS A DEBUG BUILD FROM SVN !!!!!");
this.WriteStatus("Features CAN and WILL be broken in this build!");
this.WriteStatus("Devs: REMEMBER TO CHANGE TO THE RELEASE CONFIGURATION AND CHANGE VERSION NUMBER BEFORE BUILDING!");
this.WriteStatus("\r\n");
}
this.databaseWorker = new BackgroundWorker();
this.databaseWorker.DoWork += new DoWorkEventHandler(this.DoAllDatabaseyStuff);
this.databaseWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.DoAllDatabaseyStuff_Completed);
this.databaseWorker.ProgressChanged += new ProgressChangedEventHandler(this.DoAllDatabaseyStuff_ProgressChanged);
this.databaseWorker.WorkerReportsProgress = true;
this.dsiDatabaseWorker = new BackgroundWorker();
this.dsiDatabaseWorker.DoWork += new DoWorkEventHandler(this.DSiDatabaseWork);
this.dsiDatabaseWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.DSiDatabaseWork_Completed);
this.dsiDatabaseWorker.ProgressChanged += new ProgressChangedEventHandler(this.DSiDatabaseWork_ProgressChanged);
this.dsiDatabaseWorker.WorkerReportsProgress = true;
this.scriptsWorker = new BackgroundWorker();
this.scriptsWorker.DoWork += new DoWorkEventHandler(this.OrganizeScripts);
this.scriptsWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.scriptsWorker_RunWorkerCompleted);
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = string.Format("NUSD - {0}", (object) this.version);
this.Size = this.MinimumSize;
this.serverLbl.Text = "Wii";
}
private bool NUSDFileExists(string filename) => System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, filename));
private void BootChecks()
{
if (this.InvokeRequired)
{
this.Invoke((Delegate) new Form1.BootChecksCallback(this.BootChecks));
}
else
{
if (this.NUSDFileExists("database.xml"))
{
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "database.xml"));
string databaseVersion = database.GetDatabaseVersion();
this.WriteStatus("Database.xml detected.");
this.WriteStatus(" - Version: " + databaseVersion);
this.updateDatabaseToolStripMenuItem.Text = "Update Database";
this.databaseButton.Text = " [ ]";
this.databaseButton.Image = (Image) Resources.arrow_ticker;
this.databaseWorker.RunWorkerAsync();
}
if (this.NUSDFileExists("dsidatabase.xml"))
{
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "dsidatabase.xml"));
string databaseVersion = database.GetDatabaseVersion();
this.WriteStatus("DSiDatabase.xml detected.");
this.WriteStatus(" - Version: " + databaseVersion);
this.updateDatabaseToolStripMenuItem.Text = "Update Database";
this.databaseButton.Text = " [ ]";
this.databaseButton.Image = (Image) Resources.arrow_ticker;
this.dsiDatabaseWorker.RunWorkerAsync();
}
this.RunScriptOrganizer();
if (!this.NUSDFileExists("proxy.txt"))
return;
this.WriteStatus("Proxy settings detected.");
string[] strArray = System.IO.File.ReadAllLines(Path.Combine(this.CURRENT_DIR, "proxy.txt"));
this.proxy_url = strArray[0];
if (strArray.Length > 2)
{
this.proxy_usr = strArray[1];
this.proxy_pwd = strArray[2];
}
else
{
if (strArray.Length <= 1)
return;
this.proxy_usr = strArray[1];
this.SetAllEnabled(false);
this.ProxyVerifyBox.Visible = true;
this.ProxyVerifyBox.Enabled = true;
this.ProxyPwdBox.Enabled = true;
this.SaveProxyBtn.Enabled = true;
this.ProxyVerifyBox.Select();
}
}
}
private void DoAllDatabaseyStuff(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
this.ClearDatabaseStrip();
this.FillDatabaseStrip(worker);
this.LoadRegionCodes();
this.FillDatabaseScripts();
this.ShowInnerToolTips(false);
}
private void DoAllDatabaseyStuff_Completed(object sender, RunWorkerCompletedEventArgs e)
{
this.databaseButton.Text = "Database...";
this.databaseButton.Image = (Image) null;
}
private void DoAllDatabaseyStuff_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 25)
this.databaseButton.Text = " [. ]";
else if (e.ProgressPercentage == 50)
this.databaseButton.Text = " [.. ]";
else if (e.ProgressPercentage == 75)
{
this.databaseButton.Text = " [... ]";
}
else
{
if (e.ProgressPercentage != 100)
return;
this.databaseButton.Text = " [....]";
}
}
private void RunScriptOrganizer() => this.scriptsWorker.RunWorkerAsync();
private void SetAllEnabled(bool enabled)
{
for (int index = 0; index < this.Controls.Count; ++index)
{
try
{
this.Controls[index].Enabled = enabled;
}
catch
{
}
}
}
private void extrasMenuButton_Click(object sender, EventArgs e)
{
this.extrasStrip.Text = "Showing";
this.extrasStrip.Show((Control) this.Extrasbtn, 2, 2 + this.Extrasbtn.Height);
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 52;
timer.Tick += new EventHandler(this.contextmenusTimer_Tick);
timer.Start();
}
private void LoadTitleFromTMD()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "TMD Files|*tmd*";
openFileDialog.Title = "Open TMD";
if (openFileDialog.ShowDialog() == DialogResult.Cancel)
return;
TMD tmd = new TMD();
tmd.LoadFile(openFileDialog.FileName);
this.WriteStatus(string.Format("TMD Loaded ({0} blocks)", (object) tmd.GetNandBlocks()));
this.titleidbox.Text = tmd.TitleID.ToString("X16");
this.WriteStatus("Title ID: " + tmd.TitleID.ToString("X16"));
this.titleversion.Text = tmd.TitleVersion.ToString();
this.WriteStatus("Version: " + (object) tmd.TitleVersion);
if (tmd.StartupIOS.ToString("X") != "0")
this.WriteStatus("Requires: IOS" + (object) int.Parse(tmd.StartupIOS.ToString("X").Substring(7, 2).ToString(), NumberStyles.HexNumber));
this.WriteStatus("Content Count: " + (object) tmd.NumOfContents);
for (int index = 0; index < tmd.Contents.Length; ++index)
{
this.WriteStatus(string.Format(" Content {0}: {1} ({2} bytes)", (object) index, (object) tmd.Contents[index].ContentID.ToString("X8"), (object) tmd.Contents[index].Size.ToString()));
this.WriteStatus(string.Format(" - Index: {0}", (object) tmd.Contents[index].Index.ToString()));
this.WriteStatus(string.Format(" - Type: {0}", (object) tmd.Contents[index].Type.ToString()));
this.WriteStatus(string.Format(" - Hash: {0}...", (object) this.DisplayBytes(tmd.Contents[index].Hash, string.Empty).Substring(0, 8)));
}
this.WriteStatus("TMD information parsed!");
}
public void WriteStatus(string Update, Color writecolor)
{
if (this.statusbox.InvokeRequired)
{
this.Invoke((Delegate) new Form1.WriteStatusCallback(this.WriteStatus), (object) Update, (object) writecolor);
}
else
{
int textLength1 = this.statusbox.TextLength;
if (this.statusbox.Text == "")
this.statusbox.Text = Update;
else
this.statusbox.AppendText("\r\n" + Update);
int textLength2 = this.statusbox.TextLength;
this.statusbox.Select(textLength1, textLength2 - textLength1);
this.statusbox.SelectionColor = writecolor;
this.statusbox.SelectionStart = this.statusbox.TextLength;
this.statusbox.SelectionLength = 0;
this.statusbox.ScrollToCaret();
Console.WriteLine(Update);
}
}
public void WriteStatus(string Update) => this.WriteStatus(Update, this.normalcolor);
private void ReadIDType(string ttlid)
{
if (ttlid.Substring(0, 8) == "00000001")
this.WriteStatus("ID Type: System Title. BE CAREFUL!", this.warningcolor);
else if (ttlid.Substring(0, 8) == "00010000" || ttlid.Substring(0, 8) == "00010004")
this.WriteStatus("ID Type: Disc-Based Game. Unlikely NUS Content!");
else if (ttlid.Substring(0, 8) == "00010001")
this.WriteStatus("ID Type: Downloaded Channel. Possible NUS Content.");
else if (ttlid.Substring(0, 8) == "00010002")
this.WriteStatus("ID Type: System Channel. BE CAREFUL!", this.warningcolor);
else if (ttlid.Substring(0, 8) == "00010004")
this.WriteStatus("ID Type: Game Channel. Unlikely NUS Content!");
else if (ttlid.Substring(0, 8) == "00010005")
this.WriteStatus("ID Type: Downloaded Game Content. Unlikely NUS Content!");
else if (ttlid.Substring(0, 8) == "00010008")
this.WriteStatus("ID Type: 'Hidden' Channel. Unlikely NUS Content!");
else
this.WriteStatus("ID Type: Unknown. Unlikely NUS Content!");
}
private void DownloadBtn_Click(object sender, EventArgs e)
{
if (this.titleidbox.Text == string.Empty)
this.WriteStatus("Please enter a Title ID!", this.errorcolor);
else if (!this.packbox.Checked && !this.decryptbox.Checked && !this.keepenccontents.Checked)
{
this.WriteStatus("Running with your current settings will produce no output!", this.errorcolor);
this.WriteStatus(" - To amend this, look below and check an output type.", this.errorcolor);
}
else
this.NUSDownloader.RunWorkerAsync();
}
private void SetTextThreadSafe(Control what, string setto) => this.SetPropertyThreadSafe((Component) what, (object) "Name", setto);
private void SetPropertyThreadSafe(Component what, object setto, string property)
{
if (this.InvokeRequired)
{
Form1.SetPropertyThreadSafeCallback method = new Form1.SetPropertyThreadSafeCallback(this.SetPropertyThreadSafe);
try
{
this.Invoke((Delegate) method, (object) what, setto, (object) property);
}
catch (Exception ex)
{
}
}
else
what.GetType().GetProperty(property).SetValue((object) what, setto, (object[]) null);
}
private void NUSDownloader_DoWork(object sender, DoWorkEventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
this.WriteStatus("Starting NUS Download. Please be patient!", this.infocolor);
this.SetEnableforDownload(false);
this.downloadstartbtn.Text = "Starting NUS Download!";
WebClient wcReady = this.ConfigureWithProxy(new WebClient());
NusClient nusClient = new NusClient();
nusClient.ConfigureNusClient(wcReady);
nusClient.UseLocalFiles = this.localuse.Checked;
nusClient.ContinueWithoutTicket = true;
if (this.serverLbl.Text == "Wii")
nusClient.SetToWiiServer();
else if (this.serverLbl.Text == "DSi")
nusClient.SetToDSiServer();
nusClient.Debug += new EventHandler<MessageEventArgs>(this.nusClient_Debug);
nusClient.Progress += new EventHandler<ProgressChangedEventArgs>(this.nusClient_Progress);
StoreType[] storeTypeArray = new StoreType[3]
{
!this.packbox.Checked ? StoreType.Empty : StoreType.WAD,
!this.decryptbox.Checked ? StoreType.Empty : StoreType.DecryptedContent,
!this.keepenccontents.Checked ? StoreType.Empty : StoreType.EncryptedContent
};
string wadName = !string.IsNullOrEmpty(this.WAD_Saveas_Filename) ? this.WAD_Saveas_Filename : this.wadnamebox.Text;
try
{
Console.Write(this.packbox.Checked);
nusClient.DownloadTitle(this.titleidbox.Text, this.titleversion.Text, Path.Combine(this.CURRENT_DIR, "titles"), this.pathbox.Checked, wadName, storeTypeArray);
}
catch (Exception ex)
{
this.WriteStatus("Download failed: \"" + ex.Message + " ):\"", this.errorcolor);
}
if (this.iosPatchCheckbox.Checked)
{
bool flag = false;
IosPatcher iosPatcher = new IosPatcher();
WAD iosWad = new WAD();
string str1 = wadName.Replace("[v]", nusClient.TitleVersion.ToString());
if (str1.Contains(Path.DirectorySeparatorChar.ToString()) || str1.Contains(Path.AltDirectorySeparatorChar.ToString()))
iosWad.LoadFile(str1);
else
iosWad.LoadFile(Path.Combine(Path.Combine(Path.Combine(Path.Combine(this.CURRENT_DIR, "titles"), this.titleidbox.Text), nusClient.TitleVersion.ToString()), str1));
try
{
iosPatcher.LoadIOS(ref iosWad);
}
catch (Exception ex)
{
this.WriteStatus("NUS Download Finished.", this.infocolor);
return;
}
foreach (object checkedItem in this.iosPatchesListBox.CheckedItems)
{
if (this.iosPatchesListBox.GetItemCheckState(this.iosPatchesListBox.Items.IndexOf(checkedItem)).ToString() == "Checked")
{
switch (checkedItem.ToString())
{
case "Trucha bug":
int num1 = iosPatcher.PatchFakeSigning();
if (num1 > 0)
{
this.WriteStatus(" - Patched in fake-signing:", this.infocolor);
string str2 = num1 <= 1 ? "" : "es";
this.WriteStatus(string.Format(" {0} patch{1} applied.", (object) num1, (object) str2));
flag = true;
continue;
}
this.WriteStatus(" - Could not patch fake-signing", this.errorcolor);
continue;
case "ES_Identify":
int num2 = iosPatcher.PatchEsIdentify();
if (num2 > 0)
{
this.WriteStatus(" - Patched in ES_Identify:", this.infocolor);
string str3 = num2 <= 1 ? "" : "es";
this.WriteStatus(string.Format(" {0} patch{1} applied.", (object) num2, (object) str3));
flag = true;
continue;
}
this.WriteStatus(" - Could not patch ES_Identify", this.errorcolor);
continue;
case "NAND permissions":
int num3 = iosPatcher.PatchNandPermissions();
if (num3 > 0)
{
this.WriteStatus(" - Patched in NAND permissions:", this.infocolor);
string str4 = num3 <= 1 ? "" : "es";
this.WriteStatus(string.Format(" {0} patch{1} applied.", (object) num3, (object) str4));
flag = true;
continue;
}
this.WriteStatus(" - Could not patch NAND permissions", this.errorcolor);
continue;
default:
continue;
}
}
}
if (flag)
{
string str5 = str1.Replace(".wad", ".patched.wad");
try
{
if (str5.Contains(Path.DirectorySeparatorChar.ToString()) || str5.Contains(Path.AltDirectorySeparatorChar.ToString()))
iosWad.Save(str5);
else
iosWad.Save(Path.Combine(Path.Combine(Path.Combine(Path.Combine(this.CURRENT_DIR, "titles"), this.titleidbox.Text), nusClient.TitleVersion.ToString()), str5));
this.WriteStatus(string.Format("Patched WAD saved as: {0}", (object) Path.GetFileName(str5)), this.infocolor);
}
catch (Exception ex)
{
this.WriteStatus(string.Format("Couldn't save patched WAD: \"{0}\" :(", (object) ex.Message), this.errorcolor);
}
}
}
this.WriteStatus("NUS Download Finished.");
}
private void nusClient_Progress(object sender, ProgressChangedEventArgs e) => this.dlprogress.Value = e.ProgressPercentage;
private void nusClient_Debug(object sender, MessageEventArgs e) => this.WriteStatus(e.Message);
private void NUSDownloader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.WAD_Saveas_Filename = string.Empty;
this.SetEnableforDownload(true);
this.downloadstartbtn.Text = "Start NUS Download!";
this.dlprogress.Value = 0;
if (!Form1.IsWin7())
return;
this.dlprogress.ShowInTaskbar = false;
}
private void packbox_CheckedChanged(object sender, EventArgs e)
{
if (this.packbox.Checked)
{
this.wadnamebox.Enabled = true;
this.saveaswadbtn.Enabled = true;
this.UpdatePackedName();
}
else
{
this.wadnamebox.Enabled = false;
this.saveaswadbtn.Enabled = false;
this.wadnamebox.Text = string.Empty;
if (!this.iosPatchCheckbox.Checked)
return;
this.iosPatchCheckbox.Checked = false;
}
}
private void titleidbox_TextChanged(object sender, EventArgs e)
{
this.UpdatePackedName();
this.EnablePatchIOSBox();
}
private void titleversion_TextChanged(object sender, EventArgs e) => this.UpdatePackedName();
private void EnablePatchIOSBox()
{
this.iosPatchCheckbox.Enabled = this.TitleIsIOS(this.titleidbox.Text);
if (this.iosPatchCheckbox.Enabled)
return;
this.iosPatchCheckbox.Checked = false;
}
private bool TitleIsIOS(string titleid) => titleid.Length == 16 && !(titleid == "0000000100000001") && !(titleid == "0000000100000002") && titleid.Substring(0, 14) == "00000001000000";
public string DisplayBytes(byte[] bytes, string spacer)
{
string str = "";
for (int index = 0; index < bytes.Length; ++index)
str = str + bytes[index].ToString("X2") + spacer;
return str;
}
private void DatabaseButton_Click(object sender, EventArgs e)
{
this.databaseStrip.Text = "Showing";
this.databaseStrip.Show((Control) this.databaseButton, 2, 2 + this.databaseButton.Height);
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 50;
timer.Tick += new EventHandler(this.contextmenusTimer_Tick);
timer.Start();
}
private void contextmenusTimer_Tick(object sender, EventArgs e)
{
if (this.SystemMenuList.Pressed || this.IOSMenuList.Pressed || this.VCMenuList.Pressed || this.WiiWareMenuList.Pressed || this.RegionCodesList.Pressed || this.scriptsLocalMenuEntry.Pressed || this.scriptsDatabaseToolStripMenuItem.Pressed || this.emulateUpdate.Pressed)
return;
if (this.databaseButton.ClientRectangle.Contains(this.databaseButton.PointToClient(Control.MousePosition)) && ((System.Windows.Forms.Timer) sender).Interval != 50)
{
this.databaseStrip.Close();
this.scriptsStrip.Close();
this.extrasStrip.Close();
this.DatabaseButton_Click(sender, EventArgs.Empty);
((System.Windows.Forms.Timer) sender).Stop();
}
if (this.scriptsbutton.ClientRectangle.Contains(this.scriptsbutton.PointToClient(Control.MousePosition)) && ((System.Windows.Forms.Timer) sender).Interval != 51)
{
this.databaseStrip.Close();
this.scriptsStrip.Close();
this.extrasStrip.Close();
this.scriptsbutton_Click(sender, EventArgs.Empty);
((System.Windows.Forms.Timer) sender).Stop();
}
if (this.Extrasbtn.ClientRectangle.Contains(this.Extrasbtn.PointToClient(Control.MousePosition)) && ((System.Windows.Forms.Timer) sender).Interval != 52)
{
this.databaseStrip.Close();
this.scriptsStrip.Close();
this.extrasStrip.Close();
this.extrasMenuButton_Click(sender, EventArgs.Empty);
((System.Windows.Forms.Timer) sender).Stop();
}
if (this.databaseStrip.Visible || this.extrasStrip.Visible || this.scriptsStrip.Visible)
return;
((System.Windows.Forms.Timer) sender).Stop();
}
private void ClearDatabaseStrip()
{
Control.CheckForIllegalCrossThreadCalls = false;
object[] objArray = new object[17]
{
(object) this.SystemMenuList,
(object) this.IOSMenuList,
(object) this.WiiWareMenuList,
(object) this.VCMenuList,
(object) this.C64MenuList,
(object) this.NeoGeoMenuList,
(object) this.NESMenuList,
(object) this.SNESMenuList,
(object) this.N64MenuList,
(object) this.TurboGrafx16MenuList,
(object) this.TurboGrafxCDMenuList,
(object) this.MSXMenuList,
(object) this.SegaMSMenuList,
(object) this.GenesisMenuList,
(object) this.VCArcadeMenuList,
(object) this.dsiSystemToolStripMenu,
(object) this.dSiWareToolStripMenu
};
foreach (ToolStripMenuItem toolStripMenuItem in objArray)
{
if (toolStripMenuItem.Name != "VCMenuList")
toolStripMenuItem.DropDownItems.Clear();
}
}
private void FillDatabaseStrip(BackgroundWorker worker)
{
this.SetPropertyThreadSafe((Component) this.SystemMenuList, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.IOSMenuList, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.VCMenuList, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.WiiWareMenuList, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.systemFakeMenuItem, (object) true, "Visible");
this.SetPropertyThreadSafe((Component) this.iosFakeMenuItem, (object) true, "Visible");
this.SetPropertyThreadSafe((Component) this.vcFakeMenuItem, (object) true, "Visible");
this.SetPropertyThreadSafe((Component) this.wwFakeMenuItem, (object) true, "Visible");
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "database.xml"));
ToolStripMenuItem[] toolStripMenuItemArray1 = database.LoadSystemTitles();
for (int index1 = 0; index1 < toolStripMenuItemArray1.Length; ++index1)
{
toolStripMenuItemArray1[index1].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
for (int index2 = 0; index2 < toolStripMenuItemArray1[index1].DropDownItems.Count; ++index2)
{
ToolStripMenuItem dropDownItem = (ToolStripMenuItem) toolStripMenuItemArray1[index1].DropDownItems[index2];
if (dropDownItem.DropDownItems.Count > 0)
dropDownItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
}
}
Array.Sort<ToolStripMenuItem>(toolStripMenuItemArray1, (Comparison<ToolStripMenuItem>) ((tsmi1, tsmi2) => tsmi1.Text.Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19))));
this.AddToolStripItemToStrip(this.SystemMenuList, toolStripMenuItemArray1);
this.SetPropertyThreadSafe((Component) this.systemFakeMenuItem, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.SystemMenuList, (object) true, "Visible");
worker.ReportProgress(25);
ToolStripMenuItem[] additionitems = database.LoadIosTitles();
for (int index = 0; index < additionitems.Length; ++index)
additionitems[index].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
this.AddToolStripItemToStrip(this.IOSMenuList, additionitems);
this.SetPropertyThreadSafe((Component) this.iosFakeMenuItem, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.IOSMenuList, (object) true, "Visible");
worker.ReportProgress(50);
ToolStripMenuItem[][] toolStripMenuItemArray2 = database.LoadVirtualConsoleTitles();
for (int index3 = 0; index3 < toolStripMenuItemArray2.Length; ++index3)
{
for (int index4 = 0; index4 < toolStripMenuItemArray2[index3].Length; ++index4)
{
toolStripMenuItemArray2[index3][index4].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
for (int index5 = 0; index5 < toolStripMenuItemArray2[index3][index4].DropDownItems.Count; ++index5)
((ToolStripDropDownItem) toolStripMenuItemArray2[index3][index4].DropDownItems[index5]).DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
}
Array.Sort<ToolStripMenuItem>(toolStripMenuItemArray2[index3], (Comparison<ToolStripMenuItem>) ((tsmi1, tsmi2) => tsmi1.Text.Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19))));
this.AddToolStripItemToStrip((ToolStripMenuItem) this.VCMenuList.DropDownItems[index3], toolStripMenuItemArray2[index3]);
}
this.SetPropertyThreadSafe((Component) this.vcFakeMenuItem, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.VCMenuList, (object) true, "Visible");
worker.ReportProgress(75);
ToolStripMenuItem[] toolStripMenuItemArray3 = database.LoadWiiWareTitles();
for (int index6 = 0; index6 < toolStripMenuItemArray3.Length; ++index6)
{
toolStripMenuItemArray3[index6].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
for (int index7 = 0; index7 < toolStripMenuItemArray3[index6].DropDownItems.Count; ++index7)
{
ToolStripMenuItem dropDownItem = (ToolStripMenuItem) toolStripMenuItemArray3[index6].DropDownItems[index7];
if (dropDownItem.DropDownItems.Count > 0)
dropDownItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
}
}
Array.Sort<ToolStripMenuItem>(toolStripMenuItemArray3, (Comparison<ToolStripMenuItem>) ((tsmi1, tsmi2) => tsmi1.Text.Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19))));
this.AddToolStripItemToStrip(this.WiiWareMenuList, toolStripMenuItemArray3);
this.SetPropertyThreadSafe((Component) this.wwFakeMenuItem, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.WiiWareMenuList, (object) true, "Visible");
worker.ReportProgress(100);
}
private void FillDSiDatabaseStrip(BackgroundWorker worker)
{
this.SetPropertyThreadSafe((Component) this.dsiSystemToolStripMenu, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.dSiWareToolStripMenu, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.dsiFakeSystemToolStripMenu, (object) true, "Visible");
this.SetPropertyThreadSafe((Component) this.dSiWareFakeToolStripMenu, (object) true, "Visible");
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "dsidatabase.xml"));
ToolStripMenuItem[] toolStripMenuItemArray1 = database.LoadDSiSystemTitles();
for (int index1 = 0; index1 < toolStripMenuItemArray1.Length; ++index1)
{
toolStripMenuItemArray1[index1].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
for (int index2 = 0; index2 < toolStripMenuItemArray1[index1].DropDownItems.Count; ++index2)
{
ToolStripMenuItem dropDownItem = (ToolStripMenuItem) toolStripMenuItemArray1[index1].DropDownItems[index2];
if (dropDownItem.DropDownItems.Count > 0)
dropDownItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
}
}
Array.Sort<ToolStripMenuItem>(toolStripMenuItemArray1, (Comparison<ToolStripMenuItem>) ((tsmi1, tsmi2) => tsmi1.Text.Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19))));
this.AddToolStripItemToStrip(this.dsiSystemToolStripMenu, toolStripMenuItemArray1);
this.SetPropertyThreadSafe((Component) this.dsiFakeSystemToolStripMenu, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.dsiSystemToolStripMenu, (object) true, "Visible");
worker.ReportProgress(50);
ToolStripMenuItem[] toolStripMenuItemArray2 = database.LoadDsiWareTitles();
for (int index3 = 0; index3 < toolStripMenuItemArray2.Length; ++index3)
{
toolStripMenuItemArray2[index3].DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
for (int index4 = 0; index4 < toolStripMenuItemArray2[index3].DropDownItems.Count; ++index4)
{
ToolStripMenuItem dropDownItem = (ToolStripMenuItem) toolStripMenuItemArray2[index3].DropDownItems[index4];
if (dropDownItem.DropDownItems.Count > 0)
dropDownItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(this.DatabaseItem_Clicked);
}
}
Array.Sort<ToolStripMenuItem>(toolStripMenuItemArray2, (Comparison<ToolStripMenuItem>) ((tsmi1, tsmi2) => tsmi1.Text.Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19))));
this.AddToolStripItemToStrip(this.dSiWareToolStripMenu, toolStripMenuItemArray2);
this.SetPropertyThreadSafe((Component) this.dSiWareFakeToolStripMenu, (object) false, "Visible");
this.SetPropertyThreadSafe((Component) this.dSiWareToolStripMenu, (object) true, "Visible");
worker.ReportProgress(100);
}
private void AddToolStripItemToStrip(
ToolStripMenuItem menulist,
ToolStripMenuItem[] additionitems)
{
if (this.InvokeRequired)
this.Invoke((Delegate) new Form1.AddToolStripItemToStripCallback(this.AddToolStripItemToStrip), (object) menulist, (object) additionitems);
else
menulist.DropDownItems.AddRange((ToolStripItem[]) additionitems);
}
public string OfficialWADNaming(string titlename)
{
titlename = !(titlename == "MIOS") ? (!titlename.Contains("IOS") ? (!titlename.Contains("System Menu") ? (!titlename.Contains("System Menu") ? (!(titlename == "BC") ? (!titlename.Contains("Mii Channel") ? (!titlename.Contains("Shopping Channel") ? (!titlename.Contains("Weather Channel") ? titlename + "-NUS-[v].wad" : "RVL-Weather-[v].wad") : "RVL-Shopping-[v].wad") : "RVL-NigaoeNR-[v].wad") : "RVL-bc-[v].wad") : "RVL-WiiSystemmenu-[v].wad") : "RVL-WiiSystemmenu-[v].wad") : titlename + "-64-[v].wad") : "RVL-mios-[v].wad";
if (this.wadnamebox.InvokeRequired)
{
this.wadnamebox.Invoke((Delegate) new Form1.OfficialWADNamingCallback(this.OfficialWADNaming), (object) titlename);
return titlename;
}
this.wadnamebox.Text = titlename;
if (this.titleversion.Text != "")
this.wadnamebox.Text = this.wadnamebox.Text.Replace("[v]", "v" + this.titleversion.Text);
return titlename;
}
public void DatabaseItem_Clicked(object sender, ToolStripItemClickedEventArgs e)
{
Regex regex1 = new Regex("[0-9A-Z]*\\s-\\s.*");
Regex regex2 = new Regex("[0-9A-Z][0-9A-Z] \\(.*\\)");
Regex regex3 = new Regex("v[0-9]*.*");
object[] objArray1 = new object[4]
{
(object) this.SystemMenuList,
(object) this.IOSMenuList,
(object) this.WiiWareMenuList,
(object) this.VCMenuList
};
object[] objArray2 = new object[2]
{
(object) this.dsiSystemToolStripMenu,
(object) this.dSiWareToolStripMenu
};
if (regex1.IsMatch(e.ClickedItem.Text))
{
string[] strArray = e.ClickedItem.Text.Replace(" - ", "~").Split('~');
this.titleidbox.Text = strArray[0];
this.statusbox.Text = string.Format(" --- {0} ---", (object) strArray[1]);
this.titleversion.Text = string.Empty;
if (e.ClickedItem.Image == Database.orange || e.ClickedItem.Image == Database.redorange)
{
this.WriteStatus("Note: This title has no ticket and cannot be packed/decrypted!");
this.packbox.Checked = false;
this.decryptbox.Checked = false;
}
if (e.ClickedItem.Image == Database.redgreen || e.ClickedItem.Image == Database.redorange)
this.WriteStatus("\n" + e.ClickedItem.ToolTipText);
foreach (ToolStripItem toolStripItem in objArray1)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.Name)
this.serverLbl.Text = "Wii";
}
foreach (ToolStripItem toolStripItem in objArray2)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.Name)
this.serverLbl.Text = "DSi";
}
}
if (regex2.IsMatch(e.ClickedItem.Text))
{
string[] strArray = e.ClickedItem.OwnerItem.Text.Replace(" - ", "~").Split('~');
this.titleidbox.Text = strArray[0];
this.statusbox.Text = string.Format(" --- {0} ---", (object) strArray[1]);
this.titleversion.Text = string.Empty;
this.titleidbox.Text = this.titleidbox.Text.Replace("XX", e.ClickedItem.Text.Substring(0, 2));
if (e.ClickedItem.OwnerItem.Image == Database.orange || e.ClickedItem.OwnerItem.Image == Database.redorange)
{
this.WriteStatus("Note: This title has no ticket and cannot be packed/decrypted!");
this.packbox.Checked = false;
this.decryptbox.Checked = false;
}
if (e.ClickedItem.OwnerItem.Image == Database.redgreen || e.ClickedItem.OwnerItem.Image == Database.redorange)
this.WriteStatus("\n" + e.ClickedItem.OwnerItem.ToolTipText);
foreach (ToolStripItem toolStripItem in objArray1)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "Wii";
}
foreach (ToolStripItem toolStripItem in objArray2)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "DSi";
}
}
if (!regex3.IsMatch(e.ClickedItem.Text) && !(e.ClickedItem.Text == "Latest Version"))
return;
if (regex2.IsMatch(e.ClickedItem.OwnerItem.Text))
{
string[] strArray = e.ClickedItem.OwnerItem.OwnerItem.Text.Replace(" - ", "~").Split('~');
this.titleidbox.Text = strArray[0];
this.statusbox.Text = string.Format(" --- {0} ---", (object) strArray[1]);
this.titleidbox.Text = this.titleidbox.Text.Replace("XX", e.ClickedItem.OwnerItem.Text.Substring(0, 2));
}
else
{
string[] strArray = e.ClickedItem.OwnerItem.Text.Replace(" - ", "~").Split('~');
this.titleidbox.Text = strArray[0];
this.statusbox.Text = string.Format(" --- {0} ---", (object) strArray[1]);
}
if (e.ClickedItem.Text == "Latest Version")
this.titleversion.Text = string.Empty;
else
this.titleversion.Text = e.ClickedItem.Text.Replace("v", "").Split(' ')[0];
if (regex2.IsMatch(e.ClickedItem.OwnerItem.Text))
{
if (e.ClickedItem.OwnerItem.OwnerItem.Image == Database.orange || e.ClickedItem.OwnerItem.OwnerItem.Image == Database.redorange)
{
this.WriteStatus("Note: This title has no ticket and cannot be packed/decrypted!");
this.packbox.Checked = false;
this.decryptbox.Checked = false;
}
if (e.ClickedItem.OwnerItem.OwnerItem.Image == Database.redgreen || e.ClickedItem.OwnerItem.OwnerItem.Image == Database.redorange)
this.WriteStatus("\n" + e.ClickedItem.OwnerItem.OwnerItem.ToolTipText);
foreach (ToolStripItem toolStripItem in objArray1)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "Wii";
}
foreach (ToolStripItem toolStripItem in objArray2)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "DSi";
}
}
else
{
if (e.ClickedItem.OwnerItem.Image == Database.orange || e.ClickedItem.OwnerItem.Image == Database.redorange)
{
this.WriteStatus("Note: This title has no ticket and cannot be packed/decrypted!");
this.packbox.Checked = false;
this.decryptbox.Checked = false;
}
if (e.ClickedItem.OwnerItem.Image == Database.redgreen || e.ClickedItem.OwnerItem.Image == Database.redorange)
this.WriteStatus("\n" + e.ClickedItem.OwnerItem.ToolTipText);
foreach (ToolStripItem toolStripItem in objArray1)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "Wii";
}
foreach (ToolStripItem toolStripItem in objArray2)
{
if (toolStripItem.Name == e.ClickedItem.OwnerItem.OwnerItem.Name)
this.serverLbl.Text = "DSi";
}
}
}
private string RegionFromIndex(int index, XmlDocument databasexml)
{
XmlNodeList childNodes = databasexml.GetElementsByTagName("REGIONS")[0].ChildNodes;
for (int i = 0; i < childNodes.Count; ++i)
{
if (Convert.ToInt32(childNodes[i].Attributes[0].Value) == index)
return childNodes[i].InnerText;
}
return "XX (Error)";
}
private void LoadRegionCodes()
{
if (this.InvokeRequired)
{
this.Invoke((Delegate) new Form1.BootChecksCallback(this.LoadRegionCodes));
}
else
{
this.wiiRegionCodesMenu.DropDownItems.Clear();
this.dsiRegionCodesMenu.DropDownItems.Clear();
Database database1 = new Database();
database1.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "database.xml"));
foreach (ToolStripItem loadRegionCode in database1.LoadRegionCodes())
this.wiiRegionCodesMenu.DropDownItems.Add(loadRegionCode.Text);
Database database2 = new Database();
database2.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "dsidatabase.xml"));
foreach (ToolStripItem loadRegionCode in database2.LoadRegionCodes())
this.dsiRegionCodesMenu.DropDownItems.Add(loadRegionCode.Text);
}
}
private static string RemoveIllegalCharacters(string databasestr)
{
foreach (char invalidFileNameChar in Path.GetInvalidFileNameChars())
{
if (databasestr.Contains(invalidFileNameChar.ToString()))
databasestr = databasestr.Replace(invalidFileNameChar, '-');
}
return databasestr;
}
private void ClearStatusbox(object sender, EventArgs e) => this.statusbox.Text = "";
private void SetEnableforDownload(bool enabled)
{
if (this.InvokeRequired)
this.Invoke((Delegate) new Form1.SetEnableForDownloadCallback(this.SetEnableforDownload), (object) enabled);
else if (enabled)
{
this.downloadstartbtn.Enabled = this.disabledStorage[0];
this.titleidbox.Enabled = this.disabledStorage[1];
this.titleversion.Enabled = this.disabledStorage[2];
this.Extrasbtn.Enabled = this.disabledStorage[3];
this.databaseButton.Enabled = this.disabledStorage[4];
this.packbox.Enabled = this.disabledStorage[5];
this.localuse.Enabled = this.disabledStorage[6];
this.saveaswadbtn.Enabled = this.disabledStorage[7];
this.decryptbox.Enabled = this.disabledStorage[8];
this.keepenccontents.Enabled = this.disabledStorage[9];
this.scriptsbutton.Enabled = this.disabledStorage[10];
this.serverLbl.Enabled = this.disabledStorage[11];
this.iosPatchCheckbox.Enabled = this.disabledStorage[12];
this.pathbox.Enabled = this.disabledStorage[13];
}
else
{
this.disabledStorage[0] = this.downloadstartbtn.Enabled;
this.disabledStorage[1] = this.titleidbox.Enabled;
this.disabledStorage[2] = this.titleversion.Enabled;
this.disabledStorage[3] = this.Extrasbtn.Enabled;
this.disabledStorage[4] = this.databaseButton.Enabled;
this.disabledStorage[5] = this.packbox.Enabled;
this.disabledStorage[6] = this.localuse.Enabled;
this.disabledStorage[7] = this.saveaswadbtn.Enabled;
this.disabledStorage[8] = this.decryptbox.Enabled;
this.disabledStorage[9] = this.keepenccontents.Enabled;
this.disabledStorage[10] = this.scriptsbutton.Enabled;
this.disabledStorage[11] = this.serverLbl.Enabled;
this.disabledStorage[12] = this.iosPatchCheckbox.Enabled;
this.disabledStorage[13] = this.pathbox.Enabled;
this.downloadstartbtn.Enabled = enabled;
this.titleidbox.Enabled = enabled;
this.titleversion.Enabled = enabled;
this.Extrasbtn.Enabled = enabled;
this.databaseButton.Enabled = enabled;
this.packbox.Enabled = enabled;
this.localuse.Enabled = enabled;
this.saveaswadbtn.Enabled = enabled;
this.decryptbox.Enabled = enabled;
this.keepenccontents.Enabled = enabled;
this.scriptsbutton.Enabled = enabled;
this.serverLbl.Enabled = enabled;
this.iosPatchCheckbox.Enabled = enabled;
this.pathbox.Enabled = enabled;
}
}
private void ShowInnerToolTips(bool enabled)
{
foreach (ToolStripItem toolStripItem in (ArrangedElementCollection) this.databaseStrip.Items)
{
try
{
((ToolStripDropDownItem) toolStripItem).DropDown.ShowItemToolTips = false;
}
catch (Exception ex)
{
}
}
foreach (ToolStripItem toolStripItem in (ArrangedElementCollection) this.scriptsStrip.Items)
{
try
{
((ToolStripDropDownItem) toolStripItem).DropDown.ShowItemToolTips = false;
}
catch (Exception ex)
{
}
}
}
private void UpdatePackedName()
{
string str = (string) null;
if (this.titleidbox.Enabled && this.packbox.Checked)
{
if (this.titleversion.Text != "")
this.wadnamebox.Text = this.titleidbox.Text + "-NUS-v" + this.titleversion.Text + ".wad";
else
this.wadnamebox.Text = this.titleidbox.Text + "-NUS-[v]" + this.titleversion.Text + ".wad";
if (System.IO.File.Exists("database.xml") && this.titleidbox.Text.Length == 16)
str = this.NameFromDatabase(this.titleidbox.Text);
if (str != null)
{
this.wadnamebox.Text = this.wadnamebox.Text.Replace(this.titleidbox.Text, str);
this.OfficialWADNaming(str);
}
}
this.wadnamebox.Text = Form1.RemoveIllegalCharacters(this.wadnamebox.Text);
}
private static bool IsWin7() => Environment.OSVersion.VersionString.Contains("6.1");
private byte[] NewIntegertoByteArray(int theInt, int arrayLen)
{
byte[] numArray = new byte[arrayLen];
for (int index = arrayLen - 1; index >= 0; --index)
numArray[index] = (byte) (theInt >> 8 * index & (int) byte.MaxValue);
Array.Reverse((Array) numArray);
if (arrayLen > 4)
{
for (int index = 0; index < arrayLen - 4; ++index)
numArray[index] = (byte) 0;
}
return numArray;
}
private WebClient ConfigureWithProxy(WebClient client)
{
if (!string.IsNullOrEmpty(this.proxy_url))
{
WebProxy webProxy = new WebProxy();
webProxy.Address = new Uri(this.proxy_url);
if (string.IsNullOrEmpty(this.proxy_usr))
{
webProxy.UseDefaultCredentials = true;
}
else
{
NetworkCredential networkCredential = new NetworkCredential();
networkCredential.UserName = this.proxy_usr;
if (!string.IsNullOrEmpty(this.proxy_pwd))
networkCredential.Password = this.proxy_pwd;
webProxy.Credentials = (ICredentials) networkCredential;
}
client.Proxy = (IWebProxy) webProxy;
this.WriteStatus(" - Custom proxy settings applied!");
}
else
{
try
{
client.Proxy = WebRequest.GetSystemWebProxy();
client.UseDefaultCredentials = true;
}
catch (NotImplementedException ex)
{
this.WriteStatus("This operating system does not support automatic system proxy usage. Operating without a proxy...");
}
}
return client;
}
private void RetrieveNewDatabase(object sender, DoWorkEventArgs e)
{
string str1 = Regex.Replace(new WebClient().DownloadString(e.Argument.ToString() + "?cachesmash=" + DateTime.Now.ToString()), "<(.|\\n)*?>", "");
string str2 = "&lt;database v";
string str3 = "&lt;/database&gt;";
string str4 = str1.Substring(str1.IndexOf(str2), str1.Length - str1.IndexOf(str2));
string str5 = str4.Substring(0, str4.IndexOf(str3) + str3.Length).Replace("&lt;", "<").Replace("&gt;", ">").Replace("&quot;", '"'.ToString()).Replace("&nbsp;", " ");
e.Result = (object) str5;
}
private void RetrieveNewDatabase_Completed(object sender, RunWorkerCompletedEventArgs e)
{
string str1 = e.Result.ToString();
string str2 = "";
if (str1.Contains("DSISYSTEM"))
str2 = "dsidatabase.xml";
else if (str1.Contains("0000000100000002"))
str2 = "database.xml";
try
{
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, str2));
string databaseVersion1 = database.GetDatabaseVersion();
string databaseVersion2 = Database.GetDatabaseVersion(str1);
this.WriteStatus(string.Format(" - Database successfully parsed! ({0})", (object) str2));
this.WriteStatus(" - Current Database Version: " + databaseVersion1);
this.WriteStatus(" - Online Database Version: " + databaseVersion2);
if (databaseVersion1 == databaseVersion2)
{
this.WriteStatus(" - You have the latest database version!");
return;
}
}
catch (FileNotFoundException ex)
{
this.WriteStatus(" - Database does not yet exist.");
this.WriteStatus(" - Online Database Version: " + Database.GetDatabaseVersion(str1));
}
bool flag = false;
if (System.IO.File.Exists(str2))
{
this.WriteStatus(" - Overwriting your current database...");
this.WriteStatus(string.Format(" - The old database will become 'old{0}' in case the new one is faulty.", (object) str2));
string contents = System.IO.File.ReadAllText(str2);
System.IO.File.WriteAllText("old" + str2, contents);
System.IO.File.Delete(str2);
System.IO.File.WriteAllText(str2, str1);
}
else
{
this.WriteStatus(string.Format(" - {0} has been created.", (object) str2));
System.IO.File.WriteAllText(str2, str1);
flag = true;
}
this.databaseWorker.RunWorkerAsync();
if (flag)
{
this.WriteStatus("Database successfully created!");
this.databaseButton.Visible = true;
this.updateDatabaseToolStripMenuItem.Text = "Download Database";
}
else
this.WriteStatus("Database successfully updated!");
}
private void updateDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
{
this.statusbox.Text = "";
this.WriteStatus("Updating your databases from Wiibrew/DSibrew");
string[] strArray = new string[2]
{
"http://www.wiibrew.org/wiki/NUS_Downloader/database",
"http://www.dsibrew.org/wiki/NUS_Downloader/database"
};
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.DoWork += new DoWorkEventHandler(this.RetrieveNewDatabase);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.RetrieveNewDatabase_Completed);
backgroundWorker1.RunWorkerAsync((object) strArray[0]);
BackgroundWorker backgroundWorker2 = new BackgroundWorker();
backgroundWorker2.DoWork += new DoWorkEventHandler(this.RetrieveNewDatabase);
backgroundWorker2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.RetrieveNewDatabase_Completed);
backgroundWorker2.RunWorkerAsync((object) strArray[1]);
}
private void loadInfoFromTMDToolStripMenuItem_Click(object sender, EventArgs e) => this.LoadTitleFromTMD();
public string SendSOAPRequest(string soap_xml)
{
HttpWebRequest httpWebRequest = (HttpWebRequest) WebRequest.Create("http://nus.shop.wii.com/nus/services/NetUpdateSOAP");
httpWebRequest.Method = "POST";
httpWebRequest.UserAgent = "wii libnup/1.0";
httpWebRequest.Headers.Add("SOAPAction", '"'.ToString() + "urn:nus.wsapi.broadon.com/GetSystemUpdate" + (object) '"');
if (!string.IsNullOrEmpty(this.proxy_url))
{
WebProxy webProxy = new WebProxy();
webProxy.Address = new Uri(this.proxy_url);
if (string.IsNullOrEmpty(this.proxy_usr))
{
webProxy.UseDefaultCredentials = true;
}
else
{
NetworkCredential networkCredential = new NetworkCredential();
networkCredential.UserName = this.proxy_usr;
if (!string.IsNullOrEmpty(this.proxy_pwd))
networkCredential.Password = this.proxy_pwd;
webProxy.Credentials = (ICredentials) networkCredential;
}
httpWebRequest.Proxy = (IWebProxy) webProxy;
this.WriteStatus(" - Custom proxy settings applied!");
}
else
{
httpWebRequest.Proxy = WebRequest.GetSystemWebProxy();
httpWebRequest.UseDefaultCredentials = true;
}
byte[] bytes = new UTF8Encoding().GetBytes(soap_xml);
httpWebRequest.ContentType = "text/xml; charset=utf-8";
httpWebRequest.ContentLength = (long) bytes.Length;
Stream requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
Application.DoEvents();
try
{
string end;
using (Stream responseStream = httpWebRequest.GetResponse().GetResponseStream())
{
using (StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8))
end = streamReader.ReadToEnd();
}
httpWebRequest.Abort();
Application.DoEvents();
return end;
}
catch (Exception ex)
{
httpWebRequest.Abort();
this.WriteStatus(" --- An Error Occurred: " + ex.Message.ToString());
return (string) null;
}
}
private void emulateUpdate_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
this.statusbox.Text = "";
this.WriteStatus("Starting Wii System Update...");
this.scriptsStrip.Close();
string str1 = "4362227770";
string str2 = "13198105123219038";
string str3 = "1";
string str4 = e.ClickedItem.Text.Substring(0, 3);
if (str4 == "JAP")
str4 = "JPN";
string str5 = str4.Substring(0, 2);
string soap_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n<soapenv:Body>\n<GetSystemUpdateRequest xmlns=\"urn:nus.wsapi.broadon.com\">\n<Version>1.0</Version>\n<MessageId>" + str2 + "</MessageId>\n<DeviceId>" + str1 + "</DeviceId>\n<RegionId>" + str4 + "</RegionId>\n<CountryCode>" + str5 + "</CountryCode>\n<TitleVersion>\n<TitleId>0000000100000001</TitleId>\n<Version>2</Version>\n</TitleVersion>\n<TitleVersion>\n<TitleId>0000000100000002</TitleId>\n<Version>33</Version>\n</TitleVersion>\n<TitleVersion>\n<TitleId>0000000100000009</TitleId>\n<Version>516</Version>\n</TitleVersion>\n<Attribute>" + str3 + "</Attribute>\n<AuditData></AuditData>\n</GetSystemUpdateRequest>\n</soapenv:Body>\n</soapenv:Envelope>";
this.WriteStatus(" - Sending SOAP Request to NUS...");
this.WriteStatus(" - Region: " + str4);
string xml = this.SendSOAPRequest(soap_xml);
if (xml != null)
{
this.WriteStatus(" - Recieved Update Info!");
this.WriteStatus(" - Title information:");
string contents = "";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
XmlNodeList elementsByTagName = xmlDocument.GetElementsByTagName("TitleVersion");
for (int i1 = 0; i1 < elementsByTagName.Count; ++i1)
{
XmlNodeList childNodes = elementsByTagName[i1].ChildNodes;
string titleid = "";
string str6 = "";
for (int i2 = 0; i2 < childNodes.Count; ++i2)
{
switch (childNodes[i2].Name)
{
case "TitleId":
titleid = childNodes[i2].InnerText;
break;
case "Version":
str6 = childNodes[i2].InnerText;
break;
}
}
this.WriteStatus(string.Format(" - {0} [v{1}]", (object) titleid, (object) str6));
if (this.NUSDFileExists("database.xml") && !string.IsNullOrEmpty(this.NameFromDatabase(titleid)))
this.WriteStatus(string.Format(" [{0}]", (object) this.NameFromDatabase(titleid)));
contents += string.Format("{0} {1}\n", (object) titleid, (object) this.DisplayBytes(this.NewIntegertoByteArray(Convert.ToInt32(str6), 2), ""));
}
this.WriteStatus(" - Outputting results to NUS script...");
if (!Directory.Exists(Path.Combine(this.CURRENT_DIR, "scripts")))
{
Directory.CreateDirectory(Path.Combine(this.CURRENT_DIR, "scripts"));
this.WriteStatus(" - Created 'scripts' directory.");
}
string str7 = Form1.RemoveIllegalCharacters(DateTime.Now.ToShortTimeString());
System.IO.File.WriteAllText(string.Format(Path.Combine(this.CURRENT_DIR, Path.Combine("scripts", "{0}_Update_{1}_{2}_{3} at {4}.nus")), (object) str4, (object) DateTime.Now.Month, (object) DateTime.Now.Day, (object) DateTime.Now.Year, (object) str7), contents);
this.WriteStatus(" - Script written!");
this.scriptsLocalMenuEntry.Enabled = false;
this.scriptsWorker.RunWorkerAsync();
this.WriteStatus(" - Run this script if you feel like downloading the update!");
}
else
this.WriteStatus(" - Fail.");
}
private string NameFromDatabase(string titleid)
{
if (titleid == "0000000100000101")
return "MIOS";
if (titleid == "0000000100000100")
return "BC";
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("database.xml");
string[] strArray = new string[4]
{
"SYS",
"IOS",
"VC",
"WW"
};
foreach (string name in strArray)
{
XmlNodeList elementsByTagName = xmlDocument.GetElementsByTagName(name);
for (int i1 = 0; i1 < elementsByTagName.Count; ++i1)
{
bool flag = false;
XmlNodeList childNodes = elementsByTagName[i1].ChildNodes;
for (int i2 = 0; i2 < childNodes.Count; ++i2)
{
switch (childNodes[i2].Name)
{
case "titleID":
flag = childNodes[i2].InnerText == titleid || childNodes[i2].InnerText.Substring(0, 14) + "XX" == titleid.Substring(0, 14) + "XX" && titleid.Substring(0, 14) != "00000001000000";
break;
}
}
if (flag)
{
for (int i3 = 0; i3 < childNodes.Count; ++i3)
{
switch (childNodes[i3].Name)
{
case "name":
return childNodes[i3].InnerText;
default:
continue;
}
}
}
}
}
return (string) null;
}
private void packbox_EnabledChanged(object sender, EventArgs e) => this.saveaswadbtn.Enabled = this.packbox.Enabled;
private void SaveProxyBtn_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.ProxyURL.Text) && string.IsNullOrEmpty(this.ProxyUser.Text) && System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "proxy.txt")))
{
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "proxy.txt"));
this.proxyBox.Visible = false;
this.proxy_usr = "";
this.proxy_url = "";
this.proxy_pwd = "";
this.WriteStatus("Proxy settings deleted!");
}
else if (string.IsNullOrEmpty(this.ProxyURL.Text) && string.IsNullOrEmpty(this.ProxyUser.Text) && !System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "proxy.txt")))
{
this.proxyBox.Visible = false;
this.WriteStatus("No proxy settings saved!");
}
else
{
string contents = "";
if (!string.IsNullOrEmpty(this.ProxyURL.Text))
{
contents = contents + this.ProxyURL.Text + "\n";
this.proxy_url = this.ProxyURL.Text;
}
if (!string.IsNullOrEmpty(this.ProxyUser.Text))
{
contents += this.ProxyUser.Text;
this.proxy_usr = this.ProxyUser.Text;
}
if (!string.IsNullOrEmpty(contents))
{
System.IO.File.WriteAllText(Path.Combine(this.CURRENT_DIR, "proxy.txt"), contents);
this.WriteStatus("Proxy settings saved!");
}
this.proxyBox.Visible = false;
this.SetAllEnabled(false);
this.ProxyVerifyBox.Visible = true;
this.ProxyVerifyBox.Enabled = true;
this.ProxyPwdBox.Enabled = true;
this.SaveProxyBtn.Enabled = true;
this.ProxyVerifyBox.Select();
}
}
private void proxySettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "proxy.txt")))
{
string[] strArray = System.IO.File.ReadAllLines(Path.Combine(this.CURRENT_DIR, "proxy.txt"));
this.ProxyURL.Text = strArray[0];
if (strArray.Length > 1)
this.ProxyUser.Text = strArray[1];
}
this.proxyBox.Visible = true;
}
private void SaveProxyPwdButton_Click(object sender, EventArgs e)
{
this.proxy_pwd = this.ProxyPwdBox.Text;
this.ProxyVerifyBox.Visible = false;
this.SetAllEnabled(true);
}
private void ProxyPwdBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((int) e.KeyChar != (int) Convert.ToChar((object) Keys.Return))
return;
this.SaveProxyPwdButton_Click((object) "LOLWUT", EventArgs.Empty);
}
private void ProxyAssistBtn_Click(object sender, EventArgs e)
{
int num = (int) MessageBox.Show("If you are behind a proxy, set these settings to get through to NUS. If you have an alternate port for accessing your proxy, add ':' followed by the port.");
}
private void loadNUSScriptToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = false;
openFileDialog.Filter = "NUS Scripts|*.nus|All Files|*.*";
if (Directory.Exists(Path.Combine(this.CURRENT_DIR, "scripts")))
openFileDialog.InitialDirectory = Path.Combine(this.CURRENT_DIR, "scripts");
openFileDialog.Title = "Load a NUS/Wiimpersonator script.";
if (openFileDialog.ShowDialog() == DialogResult.Cancel)
return;
string str1 = System.IO.File.ReadAllText(openFileDialog.FileName);
FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
string str2 = str1 + string.Format(";{0}", (object) fileInfo.Name.Replace("." + fileInfo.Extension, ""));
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(this.RunScriptBg);
backgroundWorker.RunWorkerAsync((object) str2);
}
private void RunScriptBg(object sender, DoWorkEventArgs e)
{
char ch = ';';
string[] strArray = e.Argument.ToString().Split(ch);
if (strArray.Length < 2)
this.RunScript(strArray[0], "random");
else
this.RunScript(strArray[0], Form1.RemoveIllegalCharacters(strArray[1]));
}
private void scriptsbutton_Click(object sender, EventArgs e)
{
this.scriptsStrip.Text = "Showing";
this.scriptsStrip.Show((Control) this.scriptsbutton, 2, 2 + this.scriptsbutton.Height);
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 51;
timer.Tick += new EventHandler(this.contextmenusTimer_Tick);
timer.Start();
}
private void DatabaseEnabled(bool enabled)
{
for (int index = 0; index < this.databaseStrip.Items.Count; ++index)
{
this.databaseStrip.Items[index].Enabled = enabled;
this.databaseStrip.Items[index].Visible = enabled;
}
for (int index = 0; index < this.VCMenuList.DropDownItems.Count; ++index)
{
this.VCMenuList.DropDownItems[index].Enabled = true;
this.VCMenuList.DropDownItems[index].Visible = true;
}
}
private void scriptsWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) => this.scriptsLocalMenuEntry.Enabled = true;
private void OrganizeScripts(object sender, DoWorkEventArgs e)
{
if (!Directory.Exists(Path.Combine(this.CURRENT_DIR, "scripts")))
{
this.WriteStatus("Scripts directory not found...");
this.WriteStatus("- Creating it.");
Directory.CreateDirectory(Path.Combine(this.CURRENT_DIR, "scripts"));
}
if (this.scriptsLocalMenuEntry.DropDownItems.Count > 0)
{
Control.CheckForIllegalCrossThreadCalls = false;
this.scriptsLocalMenuEntry.DropDownItems.Clear();
}
foreach (string directory in Directory.GetDirectories(Path.Combine(this.CURRENT_DIR, "scripts"), "*", SearchOption.TopDirectoryOnly))
{
if (Directory.GetFiles(directory, "*.nus", SearchOption.TopDirectoryOnly).Length > 0)
{
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
ToolStripMenuItem toolStripMenuItem1 = new ToolStripMenuItem();
toolStripMenuItem1.Text = directoryInfo.Name + (object) Path.DirectorySeparatorChar;
toolStripMenuItem1.Image = (Image) Resources.folder_table;
foreach (string file in Directory.GetFiles(directory, "*.nus", SearchOption.TopDirectoryOnly))
{
FileInfo fileInfo = new FileInfo(file);
ToolStripMenuItem toolStripMenuItem2 = new ToolStripMenuItem();
toolStripMenuItem2.Text = fileInfo.Name;
toolStripMenuItem2.Image = (Image) Resources.script_start;
toolStripMenuItem1.DropDownItems.Add((ToolStripItem) toolStripMenuItem2);
toolStripMenuItem2.Click += new EventHandler(this.nus_script_item_Click);
}
this.scriptsLocalMenuEntry.DropDownItems.Add((ToolStripItem) toolStripMenuItem1);
}
}
foreach (string file in Directory.GetFiles(Path.Combine(this.CURRENT_DIR, "scripts"), "*.nus", SearchOption.TopDirectoryOnly))
{
FileInfo fileInfo = new FileInfo(file);
ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem();
toolStripMenuItem.Text = fileInfo.Name;
toolStripMenuItem.Image = (Image) Resources.script_start;
this.scriptsLocalMenuEntry.DropDownItems.Add((ToolStripItem) toolStripMenuItem);
toolStripMenuItem.Click += new EventHandler(this.nus_script_item_Click);
}
}
private void aboutNUSDToolStripMenuItem_Click(object sender, EventArgs e)
{
this.statusbox.Text = "";
this.WriteStatus("NUS Downloader (NUSD)");
this.WriteStatus("You are running version: " + this.version);
if (this.version.StartsWith("SVN"))
this.WriteStatus("SVN BUILD: DO NOT REPORT BROKEN FEATURES!");
this.WriteStatus("This application created by WB3000");
this.WriteStatus("Various contributions by lukegb");
this.WriteStatus(string.Empty);
if (this.NUSDFileExists("key.bin"))
this.WriteStatus("Wii Decryption: Local (key.bin)");
if (this.NUSDFileExists("kkey.bin"))
this.WriteStatus("Wii Korea Decryption: Local (kkey.bin)");
if (this.NUSDFileExists("dsikey.bin"))
this.WriteStatus("DSi Decryption: Local (dsikey.bin)");
if (!this.NUSDFileExists("database.xml"))
this.WriteStatus("Database (Wii): Need (database.xml)");
else
this.WriteStatus("Database (Wii): OK");
if (!this.NUSDFileExists("dsidatabase.xml"))
this.WriteStatus("Database (DSi): Need (dsidatabase.xml)");
else
this.WriteStatus("Database (DSi): OK");
if (Form1.IsWin7())
this.WriteStatus("Windows 7 Features: Enabled");
this.WriteStatus("");
this.WriteStatus("Special thanks to:");
this.WriteStatus(" * Crediar for his wadmaker tool + source, and for the advice!");
this.WriteStatus(" * Leathl for libWiiSharp.");
this.WriteStatus(" * SquidMan/Galaxy/comex/Xuzz/#WiiDev for advice.");
this.WriteStatus(" * Pasta for impressive database contributions.");
this.WriteStatus(" * Napo7 for testing proxy settings.");
this.WriteStatus(" * Wyatt O'Day for the Windows7ProgressBar Control.");
this.WriteStatus(" * Famfamfam for the Silk Icon Set.");
this.WriteStatus(" * Anyone who has helped beta test!");
}
private void checkBox1_CheckedChanged(object sender, EventArgs e) => this.SaveProxyPwdPermanentBtn.Enabled = this.checkBox1.Checked;
private void SaveProxyPwdPermanentBtn_Click(object sender, EventArgs e)
{
this.proxy_pwd = this.ProxyPwdBox.Text;
string contents = System.IO.File.ReadAllText(Path.Combine(this.CURRENT_DIR, "proxy.txt")) + string.Format("\n{0}", (object) this.proxy_pwd);
System.IO.File.WriteAllText(Path.Combine(this.CURRENT_DIR, "proxy.txt"), contents);
this.ProxyVerifyBox.Visible = false;
this.SetAllEnabled(true);
this.WriteStatus("To delete all traces of proxy settings, delete the proxy.txt file!");
}
private void clearButton_MouseEnter(object sender, EventArgs e) => this.clearButton.Text = "Clear";
private void clearButton_MouseLeave(object sender, EventArgs e)
{
if (System.Type.GetType("Mono.Runtime") != null)
return;
this.clearButton.Text = string.Empty;
}
private void saveaswadbtn_MouseEnter(object sender, EventArgs e) => this.saveaswadbtn.Text = "Save As";
private void saveaswadbtn_MouseLeave(object sender, EventArgs e)
{
if (System.Type.GetType("Mono.Runtime") != null)
return;
this.saveaswadbtn.Text = string.Empty;
}
private void nus_script_item_Click(object sender, EventArgs e)
{
ToolStripMenuItem toolStripMenuItem = (ToolStripMenuItem) sender;
string str1 = "";
if (!toolStripMenuItem.OwnerItem.Equals((object) this.scriptsLocalMenuEntry))
str1 = Path.Combine(toolStripMenuItem.OwnerItem.Text, str1);
string str2 = System.IO.File.ReadAllText(Path.Combine(this.CURRENT_DIR, Path.Combine("scripts", Path.Combine(str1, toolStripMenuItem.Text)))) + string.Format(";{0}", (object) toolStripMenuItem.Text.Replace(".nus", ""));
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(this.RunScriptBg);
backgroundWorker.RunWorkerAsync((object) str2);
}
private void saveaswadbtn_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "Save WAD File...";
saveFileDialog.Filter = "WAD Files|*.wad|All Files|*.*";
saveFileDialog.AddExtension = true;
if (saveFileDialog.ShowDialog() == DialogResult.Cancel)
return;
this.WAD_Saveas_Filename = saveFileDialog.FileName;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e) => Environment.Exit(0);
private void iosPatchCheckbox_CheckedChanged(object sender, EventArgs e)
{
if (!this.iosPatchCheckbox.Checked)
return;
this.packbox.Checked = true;
this.SetAllEnabled(false);
this.iosPatchGroupBox.Visible = true;
this.iosPatchGroupBox.Enabled = true;
this.iosPatchesListBox.Enabled = true;
this.iosPatchGroupBoxOKbtn.Enabled = true;
}
private void iosPatchGroupBoxOKbtn_Click(object sender, EventArgs e)
{
this.SetAllEnabled(true);
this.iosPatchGroupBox.Visible = false;
if (this.iosPatchesListBox.CheckedIndices.Count != 0)
return;
this.iosPatchCheckbox.Checked = false;
}
private void FillDatabaseScripts()
{
this.SetPropertyThreadSafe((Component) this.scriptsDatabaseToolStripMenuItem, (object) false, "Visible");
Database database = new Database();
database.LoadDatabaseToStream(Path.Combine(this.CURRENT_DIR, "database.xml"));
ToolStripMenuItem[] additionitems = database.LoadScripts();
for (int index = 0; index < additionitems.Length; ++index)
additionitems[index].Click += new EventHandler(this.ScriptItem_Clicked);
this.AddToolStripItemToStrip(this.scriptsDatabaseToolStripMenuItem, additionitems);
this.SetPropertyThreadSafe((Component) this.scriptsDatabaseToolStripMenuItem, (object) true, "Enabled");
this.SetPropertyThreadSafe((Component) this.scriptsDatabaseToolStripMenuItem, (object) true, "Visible");
}
public void ScriptItem_Clicked(object sender, EventArgs e)
{
ToolStripMenuItem toolStripMenuItem = (ToolStripMenuItem) sender;
string str = toolStripMenuItem.ToolTipText + string.Format(";{0}", (object) toolStripMenuItem.Text);
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(this.RunScriptBg);
backgroundWorker.RunWorkerAsync((object) str);
}
private void ReorganizePreviousFolderStructure(object sender, DoWorkEventArgs e)
{
Regex regex = new Regex("[a-zA-Z0-9]{16}v?([0-9]*)?");
if (!Directory.Exists(Path.Combine(this.CURRENT_DIR, "titles")))
Directory.CreateDirectory(Path.Combine(this.CURRENT_DIR, "titles"));
foreach (string directory in Directory.GetDirectories(this.CURRENT_DIR, "*", SearchOption.TopDirectoryOnly))
{
DirectoryInfo directoryInfo = new DirectoryInfo(directory);
if (regex.IsMatch(directoryInfo.Name.ToString()) && directoryInfo.Name.Contains("v"))
{
string[] strArray = directoryInfo.Name.Split('v');
this.WriteStatus("Bitte einen Text eingeben: ");
string str1 = Path.Combine(Path.Combine(this.CURRENT_DIR, "titles"), strArray[0]);
string str2 = Path.Combine(str1, string.Format("{0}", (object) strArray[1]));
if (!Directory.Exists(str1))
Directory.CreateDirectory(str1);
if (!Directory.Exists(str2))
Directory.CreateDirectory(str2);
foreach (string file in Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly))
{
FileInfo fileInfo = new FileInfo(file);
if (!System.IO.File.Exists(Path.Combine(str2, fileInfo.Name)))
fileInfo.MoveTo(Path.Combine(str2, fileInfo.Name));
}
if (directoryInfo.GetFiles().Length <= 0 && directoryInfo.GetDirectories().Length <= 0)
Directory.Delete(directory);
}
else if (regex.IsMatch(directoryInfo.Name.ToString()))
{
string str3 = Path.Combine(Path.Combine(this.CURRENT_DIR, "titles"), directoryInfo.Name.ToString());
TMD tmd = new TMD();
int num = 0;
string[] files = Directory.GetFiles(directory, "*tmd*", SearchOption.TopDirectoryOnly);
if (files.Length <= 1)
{
foreach (string pathToTmd in files)
{
if (pathToTmd.Contains("tmd"))
{
tmd.LoadFile(pathToTmd);
++num;
}
}
if (num != 0)
{
string str4 = tmd.TitleVersion.ToString();
string str5 = Path.Combine(str3, string.Format("{0}", (object) str4));
if (!Directory.Exists(str3))
Directory.CreateDirectory(str3);
if (!Directory.Exists(str5))
Directory.CreateDirectory(str5);
foreach (string file in Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly))
{
FileInfo fileInfo = new FileInfo(file);
if (!System.IO.File.Exists(Path.Combine(str5, fileInfo.Name)))
fileInfo.MoveTo(Path.Combine(str5, fileInfo.Name));
}
if (directoryInfo.GetFiles().Length <= 0 && directoryInfo.GetDirectories().Length <= 0)
Directory.Delete(directory);
}
}
}
}
}
private void ReorganizePreviousFolderStructure_Completed(
object sender,
RunWorkerCompletedEventArgs e)
{
this.WriteStatus(" - Operation complete!");
}
private void RunScript(string scriptstr, string scriptname)
{
this.SetTextThreadSafe((Control) this.statusbox, "");
this.WriteStatus("Starting script download. Please be patient!");
string str = !(scriptname == "random") ? Path.Combine(Path.Combine(this.CURRENT_DIR, "scripts"), scriptname + "_output") : Path.Combine(Path.Combine(this.CURRENT_DIR, "scripts"), this.RandomString(7) + "_output");
if (!System.IO.File.Exists(str))
Directory.CreateDirectory(str);
string[] strArray1 = scriptstr.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
this.WriteStatus(string.Format(" - Script loaded ({0} Titles)", (object) strArray1.Length));
this.WriteStatus(" - Output: " + str.Replace(this.CURRENT_DIR, ""));
for (int index = 0; index < strArray1.Length; ++index)
{
this.WriteStatus(string.Format("===== Running Download ({0}/{1}) =====", (object) (index + 1), (object) strArray1.Length));
string[] strArray2 = strArray1[index].Split(' ');
if (!string.IsNullOrEmpty(strArray2[0]))
{
WebClient wcReady = this.ConfigureWithProxy(new WebClient());
wcReady.Headers.Add("User-Agent", "wii libnup/1.0");
NusClient nusClient = new NusClient();
nusClient.ConfigureNusClient(wcReady);
nusClient.UseLocalFiles = this.localuse.Checked;
nusClient.ContinueWithoutTicket = true;
nusClient.Debug += new EventHandler<MessageEventArgs>(this.nusClient_Debug);
StoreType[] storeTypeArray = new StoreType[1]
{
StoreType.All
};
int num = int.Parse(strArray2[1], NumberStyles.HexNumber);
string titlename = this.NameFromDatabase(strArray2[0]);
string wadName;
if (titlename != null)
wadName = this.OfficialWADNaming(titlename);
else
wadName = strArray2[0] + "-NUS-v" + (object) num + ".wad";
nusClient.DownloadTitle(strArray2[0], num.ToString(), str, this.pathbox.Checked, wadName, storeTypeArray);
}
}
this.WriteStatus("Script completed!");
}
private string RandomString(int size)
{
char[] chArray = new char[size];
for (int index = 0; index < size; ++index)
chArray[index] = "abcdefghijklmnopqrstuvwxyz"[this._rng.Next("abcdefghijklmnopqrstuvwxyz".Length)];
return new string(chArray);
}
private void Form1_MouseWheel(object sender, MouseEventArgs e)
{
if (!this.SystemMenuList.DropDown.DisplayRectangle.Contains(e.Location) && !this.SystemMenuList.DropDown.Bounds.Contains(e.Location) && !this.WiiWareMenuList.DropDown.DisplayRectangle.Contains(e.Location) && !this.WiiWareMenuList.DropDown.Bounds.Contains(e.Location) && !this.VCMenuList.DropDown.DisplayRectangle.Contains(e.Location) && !this.VCMenuList.DropDown.Bounds.Contains(e.Location) && !this.IOSMenuList.DropDown.DisplayRectangle.Contains(e.Location) && !this.IOSMenuList.DropDown.Bounds.Contains(e.Location))
return;
if (e.Delta > 0)
{
SendKeys.Send("{UP}");
SendKeys.Send("{UP}");
SendKeys.Send("{UP}");
SendKeys.Send("{UP}");
SendKeys.Send("{UP}");
}
else
{
SendKeys.Send("{DOWN}");
SendKeys.Send("{DOWN}");
SendKeys.Send("{DOWN}");
SendKeys.Send("{DOWN}");
SendKeys.Send("{DOWN}");
}
}
private void openNUSDDirectoryToolStripMenuItem_Click(object sender, EventArgs e) => Process.Start(this.CURRENT_DIR);
private void mainPageToolStripMenuItem_Click(object sender, EventArgs e) => Process.Start("http://www.wiibrew.org/wiki/NUS_Downloader");
private void databasePageToolStripMenuItem_Click(object sender, EventArgs e) => Process.Start("http://www.wiibrew.org/wiki/NUS_Downloader/database");
private void extrasStrip_Opening(object sender, CancelEventArgs e) => this.moreExtrasToolStripMenuItem.Visible = Control.ModifierKeys == Keys.Control;
private void runFolderFixToolStripMenuItem_Click(object sender, EventArgs e)
{
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(this.ReorganizePreviousFolderStructure);
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.ReorganizePreviousFolderStructure_Completed);
this.WriteStatus("Organizing your old folder structure...");
backgroundWorker.RunWorkerAsync();
}
private void removeNUSDFilesFoldersToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("This will delete all the files\folders you have downloaded from NUS! Are you sure you want to do this?", "Wait a second!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != DialogResult.Yes)
return;
if (Directory.Exists(Path.Combine(this.CURRENT_DIR, "titles")))
Directory.Delete(Path.Combine(this.CURRENT_DIR, "titles"), true);
if (Directory.Exists(Path.Combine(this.CURRENT_DIR, "scripts")))
Directory.Delete(Path.Combine(this.CURRENT_DIR, "scripts"), true);
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "database.xml")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "database.xml"));
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "dsidatabase.xml")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "dsidatabase.xml"));
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "olddatabase.xml")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "olddatabase.xml"));
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "proxy.txt")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "proxy.txt"));
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "key.bin")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "key.bin"));
if (System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "kkey.bin")))
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "kkey.bin"));
if (!System.IO.File.Exists(Path.Combine(this.CURRENT_DIR, "dsikey.bin")))
return;
System.IO.File.Delete(Path.Combine(this.CURRENT_DIR, "dsikey.bin"));
}
private void anyStrip_Closed(object sender, ToolStripDropDownClosedEventArgs e) => ((Control) sender).Text = "Hidden";
private void localTicketInventoryToolStripMenuItem_Click(object sender, EventArgs e)
{
this.WriteStatus("Adding ticket information to database entries...");
ToolStripMenuItem[] toolStripMenuItemArray = new ToolStripMenuItem[6]
{
this.SystemMenuList,
this.IOSMenuList,
this.VCMenuList,
this.WiiWareMenuList,
this.dsiSystemToolStripMenu,
this.dSiWareToolStripMenu
};
for (int index1 = 0; index1 < toolStripMenuItemArray.Length; ++index1)
{
for (int index2 = 0; index2 < toolStripMenuItemArray[index1].DropDownItems.Count; ++index2)
{
if (toolStripMenuItemArray[index1].DropDownItems[index2].Text.Length >= 16)
{
string path2 = toolStripMenuItemArray[index1].DropDownItems[index2].Text.Substring(0, 16);
string path = Path.Combine(Path.Combine(this.CURRENT_DIR, "titles"), path2);
if (Directory.Exists(path) && Directory.GetFiles(path, "cetk", SearchOption.AllDirectories).Length > 0)
{
if (toolStripMenuItemArray[index1].DropDownItems[index2].Image == Database.green)
toolStripMenuItemArray[index1].DropDownItems[index2].Image = Database.green_blue;
if (toolStripMenuItemArray[index1].DropDownItems[index2].Image == Database.orange)
toolStripMenuItemArray[index1].DropDownItems[index2].Image = Database.orange_blue;
if (toolStripMenuItemArray[index1].DropDownItems[index2].Image == Database.redorange)
toolStripMenuItemArray[index1].DropDownItems[index2].Image = Database.redorange_blue;
if (toolStripMenuItemArray[index1].DropDownItems[index2].Image == Database.redgreen)
toolStripMenuItemArray[index1].DropDownItems[index2].Image = Database.redgreen_blue;
}
}
}
}
this.WriteStatus(" - Operation completed!");
}
private void donateToolStripMenuItem_Click(object sender, EventArgs e) => Process.Start("http://wb3000.atspace.name/donations.html");
private void DSiDatabaseWork(object sender, DoWorkEventArgs e)
{
while (this.databaseWorker.IsBusy)
Thread.Sleep(1000);
this.FillDSiDatabaseStrip(sender as BackgroundWorker);
this.LoadRegionCodes();
this.ShowInnerToolTips(false);
}
private void DSiDatabaseWork_Completed(object sender, RunWorkerCompletedEventArgs e)
{
this.databaseButton.Text = "Database...";
this.databaseButton.Image = (Image) null;
}
private void DSiDatabaseWork_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage == 50)
{
this.databaseButton.Text = " [. ]";
}
else
{
if (e.ProgressPercentage != 100)
return;
this.databaseButton.Text = " [..]";
}
}
private void wiiRegionCodesMenu_DropDownItemClicked(
object sender,
ToolStripItemClickedEventArgs e)
{
if (this.titleidbox.Text.Length != 16)
return;
this.titleidbox.Text = this.titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2);
}
private void dsiRegionCodesMenu_DropDownItemClicked(
object sender,
ToolStripItemClickedEventArgs e)
{
if (this.titleidbox.Text.Length != 16)
return;
this.titleidbox.Text = this.titleidbox.Text.Substring(0, 14) + e.ClickedItem.Text.Substring(0, 2);
}
private void serverLbl_MouseEnter(object sender, EventArgs e) => this.serverLbl.Font = new Font(this.serverLbl.Font, FontStyle.Underline);
private void serverLbl_MouseLeave(object sender, EventArgs e) => this.serverLbl.Font = new Font(this.serverLbl.Font, FontStyle.Regular);
private void serverLbl_TextChanged(object sender, EventArgs e)
{
if (this.serverLbl.Text == "Wii")
this.packbox.Enabled = true;
if (!(this.serverLbl.Text == "DSi"))
return;
this.packbox.Checked = false;
this.packbox.Enabled = false;
this.wadnamebox.Enabled = false;
this.wadnamebox.Text = "";
}
private void serverLbl_Click(object sender, EventArgs e)
{
string[] strArray = new string[2]{ "Wii", "DSi" };
for (int index = 0; index < strArray.Length; ++index)
{
if (this.serverLbl.Text == strArray[index])
{
if (strArray.Length == index + 1)
{
this.serverLbl.Text = strArray[0];
break;
}
this.serverLbl.Text = strArray[index + 1];
break;
}
}
}
private delegate void AddToolStripItemToStripCallback(
ToolStripMenuItem menulist,
ToolStripMenuItem[] additionitems);
private delegate void WriteStatusCallback(string Update, Color writecolor);
private delegate void BootChecksCallback();
private delegate void SetEnableForDownloadCallback(bool enabled);
private delegate void SetPropertyThreadSafeCallback(
Component what,
object setto,
string property);
private delegate string OfficialWADNamingCallback(string whut);
}
}