From 8fa9fc65d305d942d0f85916739e1553fbd32857 Mon Sep 17 00:00:00 2001 From: CatmanFan Date: Mon, 22 Apr 2024 03:16:07 +0100 Subject: [PATCH] Even moar updates --- .gitignore | 1 + FriishProduce/App.config | 447 +++++++++--------- FriishProduce/FriishProduce.csproj | 117 +++-- FriishProduce/MainForm.Designer.cs | 2 +- FriishProduce/MainForm.cs | 5 +- FriishProduce/MainForm.resx | 18 +- FriishProduce/ProjectForm.Designer.cs | 50 +- FriishProduce/ProjectForm.cs | 114 +++-- FriishProduce/ProjectForm.resx | 196 ++++---- .../Properties/Resources.Designer.cs | 10 + FriishProduce/Properties/Resources.resx | 3 + FriishProduce/Resources/apps/gbalzss.exe | Bin 0 -> 28991 bytes FriishProduce/Strings/en.json | 8 +- FriishProduce/Strings/es.json | 7 +- FriishProduce/Strings/fr.json | 6 +- .../{Modifiers => Creators}/Creator.cs | 0 .../_classes/{Modifiers => Creators}/Flash.cs | 0 .../{Modifiers => Creators}/Forwarder.cs | 0 .../_classes/{Modifiers => Creators}/WiiVC.cs | 69 ++- .../{Modifiers => Creators}/WiiVC/MSX.cs | 0 .../{Modifiers => Creators}/WiiVC/N64.cs | 0 .../{Modifiers => Creators}/WiiVC/NEO.cs | 0 .../{Modifiers => Creators}/WiiVC/NES.cs | 4 +- .../{Modifiers => Creators}/WiiVC/PCE.cs | 0 .../{Modifiers => Creators}/WiiVC/SEGA.cs | 36 +- .../{Modifiers => Creators}/WiiVC/SNES.cs | 24 +- .../_classes/{Archives => Files}/CCF.cs | 0 FriishProduce/_classes/{ => Files}/ROM.cs | 16 +- .../_classes/{ => Files}/ROM/Disc.cs | 0 .../_classes/{ => Files}/ROM/Flash.cs | 0 FriishProduce/_classes/{ => Files}/ROM/MSX.cs | 0 FriishProduce/_classes/{ => Files}/ROM/N64.cs | 0 FriishProduce/_classes/{ => Files}/ROM/NEO.cs | 0 FriishProduce/_classes/{ => Files}/ROM/NES.cs | 0 FriishProduce/_classes/{ => Files}/ROM/PCE.cs | 0 .../_classes/{ => Files}/ROM/SEGA.cs | 0 .../_classes/{ => Files}/ROM/SNES.cs | 0 FriishProduce/_classes/Program/Database.cs | 12 +- FriishProduce/_classes/{ => Program}/Paths.cs | 70 +-- .../ProjectType.cs => Program/Project.cs} | 4 +- FriishProduce/database.json | 30 +- FriishProduce/packages.config | 3 +- 42 files changed, 716 insertions(+), 536 deletions(-) create mode 100644 FriishProduce/Resources/apps/gbalzss.exe rename FriishProduce/_classes/{Modifiers => Creators}/Creator.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/Flash.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/Forwarder.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC.cs (87%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/MSX.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/N64.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/NEO.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/NES.cs (99%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/PCE.cs (100%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/SEGA.cs (93%) rename FriishProduce/_classes/{Modifiers => Creators}/WiiVC/SNES.cs (83%) rename FriishProduce/_classes/{Archives => Files}/CCF.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM.cs (89%) rename FriishProduce/_classes/{ => Files}/ROM/Disc.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/Flash.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/MSX.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/N64.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/NEO.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/NES.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/PCE.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/SEGA.cs (100%) rename FriishProduce/_classes/{ => Files}/ROM/SNES.cs (100%) rename FriishProduce/_classes/{ => Program}/Paths.cs (98%) rename FriishProduce/_classes/{Projects/ProjectType.cs => Program/Project.cs} (86%) diff --git a/.gitignore b/.gitignore index bcfada8f..6816d733 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ legacy/ /FriishProduce/LanguageEditor.cs /FriishProduce/LanguageEditor.Designer.cs /FriishProduce/LanguageEditor.resx +/FriishProduce/Emanuals diff --git a/FriishProduce/App.config b/FriishProduce/App.config index f70efd22..3fd64665 100644 --- a/FriishProduce/App.config +++ b/FriishProduce/App.config @@ -1,227 +1,227 @@  - - -
-
-
-
-
-
-
-
-
-
-
- -
- - - - - - - 1 - - - True - - - False - - - False - - - True - - - - - 0 - - - 2 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - on - - - on - - - high - - - off - - - 96 - - - off - - - yes - - - none - - - off - - - - - 87 - - - - - - us - - - 0 - - - 0 - - - - - - - - - - - sd - - - wii - - - - - VC2 - - - - - 0 - - - True - - - - - 87 - - - 0 - - - us - - - 0 - - - 0 - - - - - - - - - - - False - - - True - - - False - - - False - - - True - - - - - 1 - - - 2 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - sys - - - 2 - - - False - - - False - - - False - - - False - - - + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + 1 + + + True + + + False + + + False + + + True + + + + + 0 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + on + + + on + + + high + + + off + + + 96 + + + off + + + yes + + + none + + + off + + + + + 87 + + + + + + us + + + 0 + + + 0 + + + + + + + + + + + sd + + + wii + + + + + VC2 + + + + + 0 + + + True + + + + + 87 + + + 0 + + + us + + + 0 + + + 0 + + + + + + + + + + + False + + + True + + + False + + + False + + + True + + + + + 1 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + sys + + + 2 + + + False + + + False + + + False + + + False + + + @@ -236,6 +236,7 @@ + - + \ No newline at end of file diff --git a/FriishProduce/FriishProduce.csproj b/FriishProduce/FriishProduce.csproj index 61228a93..ea4cea70 100644 --- a/FriishProduce/FriishProduce.csproj +++ b/FriishProduce/FriishProduce.csproj @@ -75,15 +75,12 @@ ..\packages\Microsoft-WindowsAPICodePack-Core.1.1.5\lib\net472\Microsoft.WindowsAPICodePack.dll - - ..\packages\Octokit.9.1.2\lib\netstandard2.0\Octokit.dll + + ..\packages\Octokit.11.0.1\lib\netstandard2.0\Octokit.dll ..\packages\Ookii.Dialogs.WinForms.4.0.0\lib\net462\Ookii.Dialogs.WinForms.dll - - ..\packages\PBKDF2.NET.2.0.0\lib\net45\PBKDF2.NET.dll - @@ -213,24 +210,24 @@ Tutorial.cs - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + MainForm.cs @@ -304,19 +301,19 @@ - - - - - - - + + + + + + + - - + + @@ -422,6 +419,7 @@ + @@ -532,19 +530,68 @@ - cd "$(TargetDir)strings\" -for %25%25f in (*.json) do (call :delete %25%25f) + set location=resources\libraries + +cd "$(TargetDir)strings\" + + +for %25%25f in (*.json) do (call :delete %25%25f) + + cd "$(ProjectDir)Strings\" -for %25%25f in (*.json) do (call :copy %25%25f) + + +for %25%25f in (*.json) do (call :copy %25%25f) + + +cd "$(TargetDir)" + +md %25location%25 + + +for %25%25f in (*.dll) do (call :move %25%25f) + + + +for %25%25f in (*.xml) do (call :move %25%25f) + + + +for %25%25f in (*.pdb) do (call :move %25%25f) + goto :eof + + + + :copy -if NOT %25~n1 == en (copy /b/v/y %251 "$(TargetDir)strings\%25~n1%25~x1" 1>nul) + + +if NOT %25~n1 == en (copy /b/v/y %251 "$(TargetDir)strings\%25~n1%25~x1" 1>nul) + + +exit /b + + + + + +:delete + + +del /q/f "$(TargetDir)strings\%25~n1%25~x1" + + exit /b -:delete -del /q/f "$(TargetDir)strings\%25~n1%25~x1" + + + + +:move +move /y %251 "%25location%25\%25~n1%25~x1" 1>nul exit /b :eof diff --git a/FriishProduce/MainForm.Designer.cs b/FriishProduce/MainForm.Designer.cs index b9b24e34..f97552b6 100644 --- a/FriishProduce/MainForm.Designer.cs +++ b/FriishProduce/MainForm.Designer.cs @@ -383,7 +383,6 @@ private void InitializeComponent() // // ToolStrip_ExportWAD // - this.ToolStrip_ExportWAD.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; resources.ApplyResources(this.ToolStrip_ExportWAD, "ToolStrip_ExportWAD"); this.ToolStrip_ExportWAD.Image = global::FriishProduce.Properties.Resources.wooden_box_pencil; this.ToolStrip_ExportWAD.Name = "ToolStrip_ExportWAD"; @@ -405,6 +404,7 @@ private void InitializeComponent() // // ToolStrip_OpenImage // + this.ToolStrip_OpenImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; resources.ApplyResources(this.ToolStrip_OpenImage, "ToolStrip_OpenImage"); this.ToolStrip_OpenImage.Image = global::FriishProduce.Properties.Resources.image_sunset; this.ToolStrip_OpenImage.Name = "ToolStrip_OpenImage"; diff --git a/FriishProduce/MainForm.cs b/FriishProduce/MainForm.cs index 3173cdb3..4a720786 100644 --- a/FriishProduce/MainForm.cs +++ b/FriishProduce/MainForm.cs @@ -161,6 +161,7 @@ public MainForm() MainPanel.Width + (ToolStrip.Dock == DockStyle.Right || ToolStrip.Dock == DockStyle.Left ? ToolStrip.Width - 8 : 16), MainPanel.Location.Y + MainPanel.Height + 38 ); + welcome.Font = new Font(Font.FontFamily, 9.5f, FontStyle.Regular); CenterToScreen(); // Automatically set defined initial directory for save file dialog @@ -267,7 +268,7 @@ private void AddProject(object sender, EventArgs e) } } - private ProjectForm AddTab(Console console, ProjectType x = null) + private ProjectForm AddTab(Console console, Project x = null) { ProjectForm Tab = x == null ? new ProjectForm(console) : new ProjectForm(x); Tab.Parent = this; @@ -415,7 +416,7 @@ private void OpenProject_Click(object sender, EventArgs e) using (Stream stream = File.Open(BrowseProject.FileName, FileMode.Open)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); - var project = (ProjectType)binaryFormatter.Deserialize(stream); + var project = (Project)binaryFormatter.Deserialize(stream); AddTab(project.Console, project); } } diff --git a/FriishProduce/MainForm.resx b/FriishProduce/MainForm.resx index 8b8d5282..936869e9 100644 --- a/FriishProduce/MainForm.resx +++ b/FriishProduce/MainForm.resx @@ -307,7 +307,7 @@ 1, 0, 1, 0 - 984, 20 + 934, 20 5 @@ -331,7 +331,7 @@ NoControl - 321, 243 + 296, 243 342, 27 @@ -364,7 +364,7 @@ Arial, 15pt, style=Bold - 934, 0 + 884, 0 0, 0, 24, 0 @@ -400,7 +400,7 @@ NoControl - 217, 147 + 192, 147 550, 90 @@ -433,7 +433,7 @@ 0, 45 - 984, 417 + 934, 417 6 @@ -496,7 +496,7 @@ Magenta - 23, 22 + 93, 22 save_as_wad @@ -523,7 +523,7 @@ Magenta - 85, 22 + 23, 22 open_image @@ -574,7 +574,7 @@ 0, 0, 0, 0 - 984, 25 + 934, 25 7 @@ -607,7 +607,7 @@ True - 984, 462 + 934, 462 Tahoma, 8.25pt diff --git a/FriishProduce/ProjectForm.Designer.cs b/FriishProduce/ProjectForm.Designer.cs index e5be47a5..8f01e520 100644 --- a/FriishProduce/ProjectForm.Designer.cs +++ b/FriishProduce/ProjectForm.Designer.cs @@ -71,7 +71,6 @@ private void InitializeComponent() this.groupBox1 = new System.Windows.Forms.GroupBox(); this.software_name = new System.Windows.Forms.Label(); this.filename = new System.Windows.Forms.Label(); - this.ImportWAD = new System.Windows.Forms.CheckBox(); this.groupBox5 = new System.Windows.Forms.GroupBox(); this.Players = new System.Windows.Forms.NumericUpDown(); this.ReleaseYear = new System.Windows.Forms.NumericUpDown(); @@ -80,6 +79,7 @@ private void InitializeComponent() this.label8 = new System.Windows.Forms.Label(); this.BannerTitle = new System.Windows.Forms.TextBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.DownloadWAD = new System.Windows.Forms.RadioButton(); this.base_name = new System.Windows.Forms.Label(); this.title_id = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); @@ -87,10 +87,11 @@ private void InitializeComponent() this.BaseRegion = new System.Windows.Forms.PictureBox(); this.Base = new System.Windows.Forms.ComboBox(); this.baseName = new System.Windows.Forms.Label(); - this.BrowseManual = new Ookii.Dialogs.WinForms.VistaFolderBrowserDialog(); this.BrowsePatch = new System.Windows.Forms.OpenFileDialog(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.BrowseManual = new System.Windows.Forms.OpenFileDialog(); + this.ImportWAD = new System.Windows.Forms.RadioButton(); this.groupBox6.SuspendLayout(); this.groupBox7.SuspendLayout(); this.groupBox3.SuspendLayout(); @@ -382,7 +383,6 @@ private void InitializeComponent() // // Random // - this.Random.Cursor = System.Windows.Forms.Cursors.Hand; this.Random.Image = global::FriishProduce.Properties.Resources.arrow_circle_double; resources.ApplyResources(this.Random, "Random"); this.Random.Name = "Random"; @@ -425,14 +425,6 @@ private void InitializeComponent() this.filename.Tag = "filename"; this.filename.UseMnemonic = false; // - // ImportWAD - // - resources.ApplyResources(this.ImportWAD, "ImportWAD"); - this.ImportWAD.Name = "ImportWAD"; - this.ImportWAD.Tag = "import_wad_from_file"; - this.ImportWAD.UseVisualStyleBackColor = true; - this.ImportWAD.CheckedChanged += new System.EventHandler(this.OpenWAD_CheckedChanged); - // // groupBox5 // this.groupBox5.Controls.Add(this.Players); @@ -515,19 +507,30 @@ private void InitializeComponent() // // groupBox2 // + this.groupBox2.Controls.Add(this.ImportWAD); + this.groupBox2.Controls.Add(this.DownloadWAD); this.groupBox2.Controls.Add(this.base_name); this.groupBox2.Controls.Add(this.title_id); this.groupBox2.Controls.Add(this.panel1); this.groupBox2.Controls.Add(this.baseID); this.groupBox2.Controls.Add(this.BaseRegion); this.groupBox2.Controls.Add(this.Base); - this.groupBox2.Controls.Add(this.ImportWAD); this.groupBox2.Controls.Add(this.baseName); resources.ApplyResources(this.groupBox2, "groupBox2"); this.groupBox2.Name = "groupBox2"; this.groupBox2.TabStop = false; this.groupBox2.Tag = "base"; // + // DownloadWAD + // + resources.ApplyResources(this.DownloadWAD, "DownloadWAD"); + this.DownloadWAD.Checked = true; + this.DownloadWAD.Name = "DownloadWAD"; + this.DownloadWAD.TabStop = true; + this.DownloadWAD.Tag = "use_online_wad"; + this.DownloadWAD.UseVisualStyleBackColor = true; + this.DownloadWAD.CheckedChanged += new System.EventHandler(this.OpenWAD_CheckedChanged); + // // base_name // resources.ApplyResources(this.base_name, "base_name"); @@ -560,7 +563,6 @@ private void InitializeComponent() this.BaseRegion.BackgroundImage = global::FriishProduce.Properties.Resources.x; resources.ApplyResources(this.BaseRegion, "BaseRegion"); this.BaseRegion.ContextMenuStrip = this.BaseRegionList; - this.BaseRegion.Cursor = System.Windows.Forms.Cursors.Hand; this.BaseRegion.Name = "BaseRegion"; this.BaseRegion.TabStop = false; this.BaseRegion.Click += new System.EventHandler(this.WADRegion_Click); @@ -582,11 +584,6 @@ private void InitializeComponent() this.baseName.Name = "baseName"; this.baseName.UseMnemonic = false; // - // BrowseManual - // - this.BrowseManual.RootFolder = System.Environment.SpecialFolder.MyComputer; - this.BrowseManual.ShowNewFolderButton = false; - // // BrowsePatch // this.BrowsePatch.RestoreDirectory = true; @@ -604,6 +601,18 @@ private void InitializeComponent() this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.TabStop = false; // + // BrowseManual + // + this.BrowseManual.DefaultExt = "*.zip"; + // + // ImportWAD + // + resources.ApplyResources(this.ImportWAD, "ImportWAD"); + this.ImportWAD.Name = "ImportWAD"; + this.ImportWAD.Tag = "import_wad_from_file"; + this.ImportWAD.UseVisualStyleBackColor = true; + this.ImportWAD.CheckedChanged += new System.EventHandler(this.OpenWAD_CheckedChanged); + // // ProjectForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; @@ -688,7 +697,6 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown Players; private System.Windows.Forms.GroupBox groupBox6; internal System.Windows.Forms.OpenFileDialog BrowseWAD; - private System.Windows.Forms.CheckBox ImportWAD; private System.Windows.Forms.GroupBox groupBox7; private System.Windows.Forms.CheckBox ChannelTitle_Locale; private System.Windows.Forms.Label software_name; @@ -699,7 +707,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label3; private System.Windows.Forms.CheckBox Patch; private System.Windows.Forms.CheckBox CustomManual; - private Ookii.Dialogs.WinForms.VistaFolderBrowserDialog BrowseManual; private System.Windows.Forms.Label label11; internal System.Windows.Forms.OpenFileDialog BrowsePatch; private System.Windows.Forms.Panel COPanel_VC; @@ -718,5 +725,8 @@ private void InitializeComponent() private System.Windows.Forms.Label toggleSwitchL1; private JCS.ToggleSwitch toggleSwitch1; private System.Windows.Forms.CheckBox LinkSaveData; + private System.Windows.Forms.OpenFileDialog BrowseManual; + private System.Windows.Forms.RadioButton DownloadWAD; + private System.Windows.Forms.RadioButton ImportWAD; } } \ No newline at end of file diff --git a/FriishProduce/ProjectForm.cs b/FriishProduce/ProjectForm.cs index 6781b983..23c24539 100644 --- a/FriishProduce/ProjectForm.cs +++ b/FriishProduce/ProjectForm.cs @@ -1,4 +1,5 @@ -using libWiiSharp; +using Ionic.Zip; +using libWiiSharp; using System; using System.Collections.Generic; using System.Data; @@ -58,7 +59,7 @@ public bool ReadyToExport // ----------------------------------- public new MainForm Parent { get; set; } public event EventHandler ExportCheck; - private ProjectType ParentProject { get; set; } + private Project ParentProject { get; set; } public bool ROMLoaded { get => ROM?.Path != null; } private bool FormEnabled { get => groupBox1.Enabled && groupBox2.Enabled; } private bool isVCMode { get => InjectorsList.SelectedItem?.ToString().ToLower() == Program.Lang.String("vc").ToLower(); } @@ -68,16 +69,18 @@ public bool ReadyToExport public void Save() { - var p = new ProjectType(); + var p = new Project(); p.Console = Console; p.Creator = Creator; p.ROM = ROM?.Path; p.PatchFile = PatchFile; + p.Manual = Manual; p.Img = Img?.Source ?? null; p.Options = CO?.Options ?? null; p.LibRetro = LibRetro; p.WADRegion = TargetRegion.SelectedIndex; - p.Base = (Base.SelectedIndex, 0); + if (!string.IsNullOrWhiteSpace(WADPath)) p.BaseFile = WADPath; + else p.Base = (Base.SelectedIndex, 0); p.LinkSaveDataTitle = LinkSaveData.Checked; p.ImageOptions = (imageintpl.SelectedIndex, image_fit.Checked); @@ -116,6 +119,7 @@ public void RefreshForm() Program.Lang.Control(this, "projectform"); title_id_2.Text = title_id.Text; BrowsePatch.Filter = Program.Lang.String("filter.patch"); + BrowseManual.Filter = Program.Lang.String("filter.zip"); // Change title text to untitled string Untitled = string.Format(Program.Lang.String("untitled_project", "mainform"), Program.Lang.String(Enum.GetName(typeof(Console), Console).ToLower(), "platforms")); @@ -134,6 +138,7 @@ public void RefreshForm() // Regions lists TargetRegion.Items.Clear(); + TargetRegion.Items.Add(Program.Lang.String("region_orig")); TargetRegion.Items.Add(Program.Lang.String("region_rf")); TargetRegion.SelectedIndex = 0; @@ -277,7 +282,7 @@ public ProjectForm(Console c, string ROMpath = null) } } - public ProjectForm(ProjectType p) + public ProjectForm(Project p) { Console = p.Console; Database = new Database(Console); @@ -380,11 +385,21 @@ private void Form_Shown(object sender, EventArgs e) Img.LoadToSource(ParentProject.Img); LoadImage(ParentProject.Img); - Base.SelectedIndex = ParentProject.Base.Item1; - for (int i = 0; i < BaseRegionList.Items.Count; i++) - if (BaseRegionList.Items[i].GetType() == typeof(ToolStripMenuItem)) (BaseRegionList.Items[i] as ToolStripMenuItem).Checked = false; - UpdateBaseForm(ParentProject.Base.Item2); - (BaseRegionList.Items[ParentProject.Base.Item2] as ToolStripMenuItem).Checked = true; + if (File.Exists(ParentProject.BaseFile)) + { + WADPath = ParentProject.BaseFile; + ImportWAD.Checked = true; + DownloadWAD.Checked = false; + LoadWAD(ParentProject.BaseFile); + } + else + { + Base.SelectedIndex = ParentProject.Base.Item1; + for (int i = 0; i < BaseRegionList.Items.Count; i++) + if (BaseRegionList.Items[i].GetType() == typeof(ToolStripMenuItem)) (BaseRegionList.Items[i] as ToolStripMenuItem).Checked = false; + UpdateBaseForm(ParentProject.Base.Item2); + (BaseRegionList.Items[ParentProject.Base.Item2] as ToolStripMenuItem).Checked = true; + } SetROMDataText(); @@ -401,6 +416,7 @@ private void Form_Shown(object sender, EventArgs e) PatchFile = File.Exists(ParentProject.PatchFile) ? ParentProject.PatchFile : null; Patch.Checked = !string.IsNullOrWhiteSpace(ParentProject.PatchFile); + LoadManual(ParentProject.Manual); ParentProject = null; ToggleControls(!string.IsNullOrEmpty(ROM?.Path)); @@ -409,7 +425,7 @@ private void Form_Shown(object sender, EventArgs e) FStorage_USB.Checked = Options.FORWARDER.Default.root_storage_device.ToLower().Contains("usb"); FStorage_SD.Checked = !FStorage_USB.Checked; toggleSwitch1.Checked = Options.FORWARDER.Default.nand_loader.ToLower().Contains("vwii"); - CustomManual.Enabled = Console != Console.NEO && Console != Console.PCE; + CustomManual.Enabled = Console != Console.NEO && Console != Console.PCE; // Confirmed to have an algorithm exist for NES, SNES, N64, SEGA, PCE, Tag = null; ExportCheck.Invoke(this, EventArgs.Empty); @@ -446,13 +462,17 @@ protected virtual void CheckExport() protected virtual void SetROMDataText() { + bool foundRomName = false; filename.Text = string.Format(Program.Lang.String("filename", Name), !string.IsNullOrWhiteSpace(ROM?.Path) ? Path.GetFileName(ROM.Path) : Program.Lang.String("unknown")); if (LibRetro == null) software_name.Text = string.Format(Program.Lang.String("software_name", Name), Program.Lang.String("unknown")); else + { + foundRomName = LibRetro.GetCleanTitle() != null; software_name.Text = string.Format(Program.Lang.String("software_name", Name), LibRetro.GetCleanTitle()?.Replace(Environment.NewLine, " - ") ?? Program.Lang.String("unknown")); - software_name.Visible = LibRetro != null; + } + software_name.Visible = foundRomName; label11.Text = !string.IsNullOrWhiteSpace(PatchFile) ? Path.GetFileName(PatchFile) : Program.Lang.String("none"); label11.Enabled = !string.IsNullOrWhiteSpace(PatchFile); @@ -585,6 +605,7 @@ private void OpenWAD_CheckedChanged(object sender, EventArgs e) if (DesignMode) return; // ---------------------------- + DownloadWAD.Checked = !ImportWAD.Checked; Base.Enabled = BaseRegion.Enabled = !ImportWAD.Checked; if (Base.Enabled) { @@ -592,7 +613,6 @@ private void OpenWAD_CheckedChanged(object sender, EventArgs e) } else { - Base.SelectedIndex = -1; BaseRegion.Image = null; } @@ -605,7 +625,7 @@ private void OpenWAD_CheckedChanged(object sender, EventArgs e) if (result == DialogResult.OK && !LoadWAD(BrowseWAD.FileName)) ImportWAD.Checked = false; else if (result == DialogResult.Cancel) ImportWAD.Checked = false; } - else + else if (!ImportWAD.Checked) { WADPath = null; } @@ -668,8 +688,7 @@ public bool LoadWAD(string path) } catch { - MessageBox.Show(Program.Lang.Msg(2), 0, Ookii.Dialogs.WinForms.TaskDialogIcon.Warning); - return false; + goto Failed; } for (int h = 0; h < Database.Entries.Count; h++) @@ -684,6 +703,7 @@ public bool LoadWAD(string path) return true; } + Failed: Reader.Dispose(); System.Media.SystemSounds.Beep.Play(); MessageBox.Show(string.Format(Program.Lang.Msg(5), Reader.UpperTitleID)); @@ -692,35 +712,46 @@ public bool LoadWAD(string path) public void LoadManual(string path) { - if (path != null) + if (File.Exists(path)) { - // Check if is a valid emanual contents folder - // **************** - string folder = null; - if (Directory.Exists(Path.Combine(path, "emanual"))) - folder = Path.Combine(path, "emanual"); - else if (Directory.Exists(Path.Combine(path, "html"))) - folder = Path.Combine(path, "html"); - - int validFiles = 0; - if (folder != null) - foreach (var item in Directory.EnumerateFiles(folder)) + using (ZipFile ZIP = ZipFile.Read(path)) + { + int applicable = 0; + // bool hasFolder = false; + + foreach (var item in ZIP.Entries) { - if ((Path.GetFileNameWithoutExtension(item).StartsWith("startup") && Path.GetExtension(item) == ".html") - || Path.GetFileName(item) == "standard.css" - || Path.GetFileName(item) == "contents.css" - || Path.GetFileName(item) == "vsscript.css") validFiles++; + // Check if is a valid emanual contents folder + // **************** + // if ((item.FileName == "emanual" || item.FileName == "html") && item.IsDirectory) + // hasFolder = true; + + // Check key files + // **************** + /* else */ if ((item.FileName.StartsWith("startup") && Path.GetExtension(item.FileName) == ".html") + || item.FileName == "standard.css" + || item.FileName == "contents.css" + || item.FileName == "vsscript.css") applicable++; } - if (validFiles < 2) - { - MessageBox.Show(Program.Lang.Msg(7), MessageBox.Buttons.Ok, Ookii.Dialogs.WinForms.TaskDialogIcon.Warning); - Manual = null; - return; + if (applicable < 2 /* || !hasFolder */) + { + MessageBox.Show(Program.Lang.Msg(7), MessageBox.Buttons.Ok, Ookii.Dialogs.WinForms.TaskDialogIcon.Warning); + Manual = null; + goto End; + } } } + else + { + Manual = null; + goto End; + } Manual = path; + goto End; + + End: CustomManual.Checked = Manual != null; } @@ -944,11 +975,14 @@ public bool SaveToWAD() // Other WAD settings to be changed // ******* - OutWAD.Region = TargetRegion.SelectedItem.ToString() == Program.Lang.String("region_j") ? libWiiSharp.Region.Japan + if (TargetRegion.SelectedIndex > 0) + { + OutWAD.Region = TargetRegion.SelectedItem.ToString() == Program.Lang.String("region_j") ? libWiiSharp.Region.Japan : TargetRegion.SelectedItem.ToString() == Program.Lang.String("region_u") ? libWiiSharp.Region.USA : TargetRegion.SelectedItem.ToString() == Program.Lang.String("region_e") ? libWiiSharp.Region.Europe : TargetRegion.SelectedItem.ToString() == Program.Lang.String("region_k") ? libWiiSharp.Region.Korea : libWiiSharp.Region.Free; + } // Remaining ones done by WAD creator helper, which will save to a new file // ******* @@ -1551,13 +1585,13 @@ private void ChannelTitle_Locale_CheckedChanged(object sender, EventArgs e) private void CustomManual_CheckedChanged(object sender, EventArgs e) { - if (CustomManual.Checked && CustomManual.Enabled) + if (CustomManual.Checked && CustomManual.Enabled && Manual == null) { if (!Properties.Settings.Default.DoNotShow_000) MessageBox.Show((sender as Control).Text, Program.Lang.Msg(6), 0); if (BrowseManual.ShowDialog() == DialogResult.OK) { - LoadManual(BrowseManual.SelectedPath); + LoadManual(BrowseManual.FileName); CheckExport(); } diff --git a/FriishProduce/ProjectForm.resx b/FriishProduce/ProjectForm.resx index 98f40336..ade1ec68 100644 --- a/FriishProduce/ProjectForm.resx +++ b/FriishProduce/ProjectForm.resx @@ -142,7 +142,7 @@ NoControl - 8, 18 + 8, 21 130, 13 @@ -169,10 +169,10 @@ null - 10, 37 + 10, 39 - 294, 21 + 292, 21 41 @@ -196,7 +196,7 @@ NoControl - 10, 85 + 10, 87 67, 17 @@ -226,7 +226,7 @@ NoControl - 10, 66 + 10, 68 91, 17 @@ -253,7 +253,7 @@ False - 778, 357 + 778, 366 312, 115 @@ -403,7 +403,7 @@ False - 500, 357 + 500, 366 271, 115 @@ -507,9 +507,6 @@ True - - False - NoControl @@ -739,7 +736,7 @@ False - 10, 357 + 10, 366 483, 115 @@ -829,7 +826,7 @@ NoControl - 48, 43 + 48, 44 130, 18 @@ -868,7 +865,7 @@ NoControl - 379, 15 + 379, 16 24, 24 @@ -946,7 +943,7 @@ Microsoft Sans Serif, 8.25pt - 238, 43 + 238, 44 4 @@ -985,7 +982,7 @@ NoControl - 181, 46 + 181, 47 58, 13 @@ -1012,7 +1009,7 @@ NoControl - 289, 45 + 289, 46 16, 16 @@ -1039,7 +1036,7 @@ 6 - 184, 18 + 184, 19 20 @@ -1069,7 +1066,7 @@ NoControl - 48, 21 + 48, 22 130, 18 @@ -1099,7 +1096,7 @@ False - 10, 250 + 10, 259 483, 100 @@ -1209,38 +1206,8 @@ 3 - - True - - - NoControl - - - 13, 48 - - - 125, 17 - - - 34 - - - import_wad_from_file - - - ImportWAD - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 6 - - 343, 67 + 343, 69 55, 20 @@ -1261,7 +1228,7 @@ 0 - 137, 67 + 137, 69 55, 20 @@ -1285,7 +1252,7 @@ NoControl - 237, 69 + 237, 71 102, 17 @@ -1315,7 +1282,7 @@ NoControl - 31, 69 + 31, 71 102, 18 @@ -1345,7 +1312,7 @@ NoControl - 31, 21 + 31, 22 102, 18 @@ -1372,7 +1339,7 @@ 4 - 137, 18 + 137, 19 130 @@ -1405,7 +1372,7 @@ False - 500, 250 + 500, 259 451, 100 @@ -1428,6 +1395,63 @@ 2 + + True + + + NoControl + + + 12, 108 + + + 124, 17 + + + 37 + + + import_wad_from_file + + + ImportWAD + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 0 + + + True + + + 12, 17 + + + 102, 17 + + + 36 + + + use_online_wad + + + DownloadWAD + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox2 + + + 1 + True @@ -1435,7 +1459,7 @@ NoControl - 10, 83 + 27, 65 62, 13 @@ -1459,7 +1483,7 @@ groupBox2 - 0 + 2 True @@ -1468,7 +1492,7 @@ NoControl - 10, 100 + 27, 82 37, 13 @@ -1492,13 +1516,13 @@ groupBox2 - 1 + 3 - 13, 74 + 17, 36 - 456, 1 + 2, 70 35 @@ -1513,7 +1537,7 @@ groupBox2 - 2 + 4 True @@ -1522,7 +1546,7 @@ NoControl - 73, 100 + 90, 82 54, 13 @@ -1543,7 +1567,7 @@ groupBox2 - 3 + 5 Stretch @@ -1552,7 +1576,7 @@ NoControl - 439, 22 + 440, 38 30, 20 @@ -1573,19 +1597,19 @@ groupBox2 - 4 + 6 False - 12, 21 + 28, 38 10 - 421, 21 + 405, 21 31 @@ -1600,7 +1624,7 @@ groupBox2 - 5 + 7 True @@ -1612,7 +1636,7 @@ NoControl - 73, 83 + 90, 65 63, 13 @@ -1633,7 +1657,7 @@ groupBox2 - 7 + 8 False @@ -1642,7 +1666,7 @@ 10, 118 - 483, 125 + 483, 135 40 @@ -1662,9 +1686,6 @@ 9 - - 240, 17 - 355, 17 @@ -1672,10 +1693,10 @@ NoControl - 500, 11 + 500, 12 - 590, 235 + 590, 240 StretchImage @@ -1699,7 +1720,7 @@ NoControl - 960, 254 + 960, 263 130, 96 @@ -1722,6 +1743,9 @@ 4 + + 240, 17 + True @@ -1729,7 +1753,7 @@ True - 1100, 486 + 1100, 495 NoControl @@ -1743,18 +1767,18 @@ System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - BrowseManual - - - Ookii.Dialogs.WinForms.VistaFolderBrowserDialog, Ookii.Dialogs.WinForms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=66aa232afad40158 - BrowsePatch System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + BrowseManual + + + System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ProjectForm diff --git a/FriishProduce/Properties/Resources.Designer.cs b/FriishProduce/Properties/Resources.Designer.cs index 2b8ce645..03312ff5 100644 --- a/FriishProduce/Properties/Resources.Designer.cs +++ b/FriishProduce/Properties/Resources.Designer.cs @@ -400,6 +400,16 @@ public static byte[] ForwarderV14 { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] GBALZSS { + get { + object obj = ResourceManager.GetObject("GBALZSS", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/FriishProduce/Properties/Resources.resx b/FriishProduce/Properties/Resources.resx index ce5ec111..64e363d4 100644 --- a/FriishProduce/Properties/Resources.resx +++ b/FriishProduce/Properties/Resources.resx @@ -337,4 +337,7 @@ ..\Resources\StaticBase.wad;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\apps\gbalzss.exe;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/FriishProduce/Resources/apps/gbalzss.exe b/FriishProduce/Resources/apps/gbalzss.exe new file mode 100644 index 0000000000000000000000000000000000000000..a627940b76f31573f85fc0b536e0eb610f9fc5fa GIT binary patch literal 28991 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 man.arc + X emanual.arc + X html.arc + X man.arc + X data.ccf > man.arc COMPRESSED: - htmlc.arc (N64 LZ77) + X htmlc.arc (N64 LZ77) Regex('.+_manual_.+\\.arc\\.lz77$') e.g. makaimura_manual_usa.arc.lz77 (Arcade Ghosts n Goblins) */ // Get and read emanual @@ -187,15 +220,8 @@ protected void ReplaceManual(U8 target) try { foreach (var item in target.StringTable) - if (item.ToLower().Contains("emanual.arc") || item.ToLower().Contains("html.arc") || item.ToLower().Contains("man.arc")) - { - OrigManual = item; - Manual = target.Data[target.GetNodeIndex(OrigManual)]; - - target.ReplaceFile(target.GetNodeIndex(OrigManual), ReplaceManual().ToByteArray()); - } - else if (item.ToLower().Contains("htmlc.arc") || item.ToLower().Contains("lz77_html.arc")) + if (item.ToLower().Contains("htmlc.arc") || item.ToLower().Contains("lz77_html.arc")) { OrigManual = item; @@ -206,11 +232,9 @@ protected void ReplaceManual(U8 target) Paths.WorkingFolder, "/u html.arc html.dec" ); - if (!File.Exists(Paths.WorkingFolder + "html.dec")) throw new Exception(Program.Lang.Msg(2, true)); - Manual = File.ReadAllBytes(Paths.WorkingFolder + "html.dec"); - if (File.Exists(Paths.WorkingFolder + "html.dec")) File.Delete(Paths.WorkingFolder + "html.dec"); + Manual = File.ReadAllBytes(Paths.WorkingFolder + "html.dec"); File.WriteAllBytes("html_modified.dec", ReplaceManual().ToByteArray()); Utils.Run @@ -219,13 +243,22 @@ protected void ReplaceManual(U8 target) Paths.WorkingFolder, "/cr html.arc html_modified.dec html_modified.arc" ); - if (!File.Exists(Paths.WorkingFolder + "html_modified.arc")) throw new Exception(Program.Lang.Msg(2, true)); + target.ReplaceFile(target.GetNodeIndex(OrigManual), File.ReadAllBytes(Paths.WorkingFolder + "html_modified.arc")); + if (File.Exists(Paths.WorkingFolder + "html.dec")) File.Delete(Paths.WorkingFolder + "html.dec"); if (File.Exists(Paths.WorkingFolder + "html.arc")) File.Delete(Paths.WorkingFolder + "html.arc"); if (File.Exists(Paths.WorkingFolder + "html_modified.arc")) File.Delete(Paths.WorkingFolder + "html_modified.arc"); } + + else if (item.ToLower().Contains("emanual.arc") || item.ToLower().Contains("html.arc") || item.ToLower().Contains("man.arc")) + { + OrigManual = item; + + Manual = target.Data[target.GetNodeIndex(OrigManual)]; + target.ReplaceFile(target.GetNodeIndex(OrigManual), ReplaceManual().ToByteArray()); + } } catch diff --git a/FriishProduce/_classes/Modifiers/WiiVC/MSX.cs b/FriishProduce/_classes/Creators/WiiVC/MSX.cs similarity index 100% rename from FriishProduce/_classes/Modifiers/WiiVC/MSX.cs rename to FriishProduce/_classes/Creators/WiiVC/MSX.cs diff --git a/FriishProduce/_classes/Modifiers/WiiVC/N64.cs b/FriishProduce/_classes/Creators/WiiVC/N64.cs similarity index 100% rename from FriishProduce/_classes/Modifiers/WiiVC/N64.cs rename to FriishProduce/_classes/Creators/WiiVC/N64.cs diff --git a/FriishProduce/_classes/Modifiers/WiiVC/NEO.cs b/FriishProduce/_classes/Creators/WiiVC/NEO.cs similarity index 100% rename from FriishProduce/_classes/Modifiers/WiiVC/NEO.cs rename to FriishProduce/_classes/Creators/WiiVC/NEO.cs diff --git a/FriishProduce/_classes/Modifiers/WiiVC/NES.cs b/FriishProduce/_classes/Creators/WiiVC/NES.cs similarity index 99% rename from FriishProduce/_classes/Modifiers/WiiVC/NES.cs rename to FriishProduce/_classes/Creators/WiiVC/NES.cs index bc26cebf..7612f103 100644 --- a/FriishProduce/_classes/Modifiers/WiiVC/NES.cs +++ b/FriishProduce/_classes/Creators/WiiVC/NES.cs @@ -26,7 +26,7 @@ protected override void ReplaceROM() // ----------------------- // Check for "NES" header // ----------------------- - int offset = 0; + int offset = -1; for (int i = 0; i < Contents[1].Length; i++) { if (Contents[1][i] == 0x4E @@ -39,7 +39,7 @@ protected override void ReplaceROM() } } - if (offset == 0) throw new InvalidDataException(); + if (offset == -1) throw new Exception(Program.Lang.Msg(2, true)); // ----------------------- // Check filesize of original ROM and set to variable diff --git a/FriishProduce/_classes/Modifiers/WiiVC/PCE.cs b/FriishProduce/_classes/Creators/WiiVC/PCE.cs similarity index 100% rename from FriishProduce/_classes/Modifiers/WiiVC/PCE.cs rename to FriishProduce/_classes/Creators/WiiVC/PCE.cs diff --git a/FriishProduce/_classes/Modifiers/WiiVC/SEGA.cs b/FriishProduce/_classes/Creators/WiiVC/SEGA.cs similarity index 93% rename from FriishProduce/_classes/Modifiers/WiiVC/SEGA.cs rename to FriishProduce/_classes/Creators/WiiVC/SEGA.cs index 35d3c6dc..7ad03294 100644 --- a/FriishProduce/_classes/Modifiers/WiiVC/SEGA.cs +++ b/FriishProduce/_classes/Creators/WiiVC/SEGA.cs @@ -47,31 +47,23 @@ protected override void Load() MiscCCF = CCF.Load(MainCCF.Data[MainCCF.GetNodeIndex("misc.ccf")]); #region ReplaceManual - if (ManualPath == null) ReplaceManual(MainContent); - - else + try { - try - { - // Get and read emanual - // **************** - foreach (var item in MainCCF.Nodes) - if (item.Name.ToLower().Contains("man.arc")) - { - OrigManual = item.Name; - Manual = MainCCF.Data[MainCCF.GetNodeIndex(OrigManual)]; - } + // Get and read emanual + // **************** + OrigManual = MainCCF.Nodes.Where(y => y.Name.ToLower().Contains("man.arc")).First().Name; + if (string.IsNullOrEmpty(OrigManual) || ManualPath == null) throw new FileNotFoundException(); - MainCCF.ReplaceFile(MainCCF.GetNodeIndex(OrigManual), ReplaceManual().ToByteArray()); - } + Manual = MainCCF.Data[MainCCF.GetNodeIndex(OrigManual)]; + MainCCF.ReplaceFile(MainCCF.GetNodeIndex(OrigManual), ReplaceManual().ToByteArray()); + } - catch - { - OrigManual = null; - Manual = null; - ManualPath = null; - ReplaceManual(MainContent); - } + catch + { + OrigManual = null; + Manual = null; + ManualPath = null; + ReplaceManual(MainContent); } #endregion diff --git a/FriishProduce/_classes/Modifiers/WiiVC/SNES.cs b/FriishProduce/_classes/Creators/WiiVC/SNES.cs similarity index 83% rename from FriishProduce/_classes/Modifiers/WiiVC/SNES.cs rename to FriishProduce/_classes/Creators/WiiVC/SNES.cs index b89a41b3..e12d5033 100644 --- a/FriishProduce/_classes/Modifiers/WiiVC/SNES.cs +++ b/FriishProduce/_classes/Creators/WiiVC/SNES.cs @@ -9,7 +9,7 @@ namespace FriishProduce.Injectors public class SNES : InjectorWiiVC { private string ID { get; set; } - private string Target { get; set; } + private string target { get; set; } protected override void Load() { @@ -36,30 +36,30 @@ protected override void ReplaceROM() // Normal // **************** - if (Target.Length == 8) MainContent.ReplaceFile(MainContent.GetNodeIndex(Target), ROM.Bytes); + if (target.Length == 8) MainContent.ReplaceFile(MainContent.GetNodeIndex(target), ROM.Bytes); // LZ77 compression // **************** - else if (Target.ToUpper().StartsWith("LZ77")) + else if (target.ToUpper().StartsWith("LZ77")) { File.WriteAllBytes(Paths.WorkingFolder + "rom", ROM.Bytes); - File.WriteAllBytes(Paths.WorkingFolder + "LZ77orig.rom", MainContent.Data[MainContent.GetNodeIndex(Target)]); Utils.Run ( - Paths.Tools + "wwcxtool.exe", - Paths.WorkingFolder, - "/cr LZ77orig.rom rom LZ77out.rom" + Properties.Resources.GBALZSS, + "gbalzss", + "e rom LZ77out.rom" ); if (!File.Exists(Paths.WorkingFolder + "LZ77out.rom")) throw new Exception(Program.Lang.Msg(2, true)); - MainContent.ReplaceFile(MainContent.GetNodeIndex(Target), Paths.WorkingFolder + "LZ77out.rom"); + MainContent.ReplaceFile(MainContent.GetNodeIndex(target), Paths.WorkingFolder + "LZ77out.rom"); - File.Delete(Paths.WorkingFolder + "LZ77out.rom"); - if (File.Exists(Paths.WorkingFolder + "rom")) File.Delete(Paths.WorkingFolder + "rom"); - if (File.Exists(Paths.WorkingFolder + "LZ77orig.rom")) File.Delete(Paths.WorkingFolder + "LZ77orig.rom"); + if (File.Exists(Paths.WorkingFolder + "LZ77out.rom")) File.Delete(Paths.WorkingFolder + "LZ77out.rom"); + if (File.Exists(Paths.WorkingFolder + "rom")) File.Delete(Paths.WorkingFolder + "rom"); } + else throw new Exception(Program.Lang.Msg(2, true)); + // Dummify unused files // **************** foreach (string file in MainContent.StringTable) @@ -131,7 +131,7 @@ private void GetID() { if (file.ToLower().EndsWith(".rom")) { - Target = file; + target = file; ID = file.Substring(file.Length - 8, 4); } } diff --git a/FriishProduce/_classes/Archives/CCF.cs b/FriishProduce/_classes/Files/CCF.cs similarity index 100% rename from FriishProduce/_classes/Archives/CCF.cs rename to FriishProduce/_classes/Files/CCF.cs diff --git a/FriishProduce/_classes/ROM.cs b/FriishProduce/_classes/Files/ROM.cs similarity index 89% rename from FriishProduce/_classes/ROM.cs rename to FriishProduce/_classes/Files/ROM.cs index b03062d7..1577c77a 100644 --- a/FriishProduce/_classes/ROM.cs +++ b/FriishProduce/_classes/Files/ROM.cs @@ -68,7 +68,7 @@ public virtual bool CheckValidity(string path) return true; } - public virtual bool CheckZIPValidity(string path, string[] strings, bool SearchEndingOnly, bool ForceLowercase) + public virtual bool CheckZIPValidity(string path, string[] strings, bool searchEndingOnly, bool forceLowercase) { using (ZipFile ZIP = ZipFile.Read(path)) { @@ -77,9 +77,9 @@ public virtual bool CheckZIPValidity(string path, string[] strings, bool SearchE foreach (var item in ZIP.Entries) foreach (string line in strings) { - string name = ForceLowercase ? item.FileName.ToLower() : item.FileName; - if ((SearchEndingOnly && (name.EndsWith(line) || System.IO.Path.GetFileNameWithoutExtension(name).EndsWith(line))) - || (!SearchEndingOnly && name.Contains(line))) + string name = forceLowercase ? item.FileName.ToLower() : item.FileName; + if ((searchEndingOnly && (name.EndsWith(line) || System.IO.Path.GetFileNameWithoutExtension(name).EndsWith(line))) + || (!searchEndingOnly && name.Contains(line))) applicable++; } @@ -92,7 +92,7 @@ public virtual bool CheckZIPValidity(string path, string[] strings, bool SearchE } } - public virtual bool CheckZIPValidity(string[] strings, bool SearchEndingOnly, bool ForceLowercase) => CheckZIPValidity(Path, strings, SearchEndingOnly, ForceLowercase); + public virtual bool CheckZIPValidity(string[] strings, bool searchEndingOnly, bool forceLowercase) => CheckZIPValidity(Path, strings, searchEndingOnly, forceLowercase); public bool CheckSize(int length) { @@ -109,12 +109,12 @@ public bool CheckSize(int length) public bool CheckSize() => CheckSize(MaxSize); - public void Patch(string PatchFile) + public void Patch(string filePath) { - if (!File.Exists(PatchFile) || string.IsNullOrWhiteSpace(PatchFile)) return; + if (!File.Exists(filePath) || string.IsNullOrWhiteSpace(filePath)) return; File.WriteAllBytes(Paths.WorkingFolder + "rom", origData); - File.WriteAllBytes(Paths.WorkingFolder + "patch", File.ReadAllBytes(PatchFile)); + File.WriteAllBytes(Paths.WorkingFolder + "patch", File.ReadAllBytes(filePath)); Utils.Run(Properties.Resources.App_XDelta, "xdelta3", "-d -s rom patch rom_p_xdelta"); Utils.Run(Properties.Resources.App_Flips, "flips", "--apply patch rom rom_p_bps"); diff --git a/FriishProduce/_classes/ROM/Disc.cs b/FriishProduce/_classes/Files/ROM/Disc.cs similarity index 100% rename from FriishProduce/_classes/ROM/Disc.cs rename to FriishProduce/_classes/Files/ROM/Disc.cs diff --git a/FriishProduce/_classes/ROM/Flash.cs b/FriishProduce/_classes/Files/ROM/Flash.cs similarity index 100% rename from FriishProduce/_classes/ROM/Flash.cs rename to FriishProduce/_classes/Files/ROM/Flash.cs diff --git a/FriishProduce/_classes/ROM/MSX.cs b/FriishProduce/_classes/Files/ROM/MSX.cs similarity index 100% rename from FriishProduce/_classes/ROM/MSX.cs rename to FriishProduce/_classes/Files/ROM/MSX.cs diff --git a/FriishProduce/_classes/ROM/N64.cs b/FriishProduce/_classes/Files/ROM/N64.cs similarity index 100% rename from FriishProduce/_classes/ROM/N64.cs rename to FriishProduce/_classes/Files/ROM/N64.cs diff --git a/FriishProduce/_classes/ROM/NEO.cs b/FriishProduce/_classes/Files/ROM/NEO.cs similarity index 100% rename from FriishProduce/_classes/ROM/NEO.cs rename to FriishProduce/_classes/Files/ROM/NEO.cs diff --git a/FriishProduce/_classes/ROM/NES.cs b/FriishProduce/_classes/Files/ROM/NES.cs similarity index 100% rename from FriishProduce/_classes/ROM/NES.cs rename to FriishProduce/_classes/Files/ROM/NES.cs diff --git a/FriishProduce/_classes/ROM/PCE.cs b/FriishProduce/_classes/Files/ROM/PCE.cs similarity index 100% rename from FriishProduce/_classes/ROM/PCE.cs rename to FriishProduce/_classes/Files/ROM/PCE.cs diff --git a/FriishProduce/_classes/ROM/SEGA.cs b/FriishProduce/_classes/Files/ROM/SEGA.cs similarity index 100% rename from FriishProduce/_classes/ROM/SEGA.cs rename to FriishProduce/_classes/Files/ROM/SEGA.cs diff --git a/FriishProduce/_classes/ROM/SNES.cs b/FriishProduce/_classes/Files/ROM/SNES.cs similarity index 100% rename from FriishProduce/_classes/ROM/SNES.cs rename to FriishProduce/_classes/Files/ROM/SNES.cs diff --git a/FriishProduce/_classes/Program/Database.cs b/FriishProduce/_classes/Program/Database.cs index cd68b91a..78e064ab 100644 --- a/FriishProduce/_classes/Program/Database.cs +++ b/FriishProduce/_classes/Program/Database.cs @@ -73,7 +73,6 @@ public string GetUpperID(int index) var hex = GetID(index).Substring(ID.Length - 8); var ascii = string.Empty; - for (int i = 0; i < hex.Length; i += 2) { var hs = hex.Substring(i, 2); @@ -89,6 +88,7 @@ public string GetUpperID(int index) /// public WAD GetWAD(int index) { + string tID = GetUpperID(index); string reg = " (Japan)"; switch (Regions[index]) { @@ -113,7 +113,7 @@ public WAD GetWAD(int index) } string console = ""; - switch (GetUpperID(index)[0]) + switch (tID[0]) { case 'F': console = "NES"; @@ -173,8 +173,8 @@ public WAD GetWAD(int index) // Title ID check // **************** - if ((w.UpperTitleID.ToUpper() != GetUpperID(index)) || !w.HasBanner) throw new ArgumentException(); - return w; + if (w.UpperTitleID.ToUpper() == tID && w.HasBanner) return w; + return null; } } @@ -215,10 +215,10 @@ public Database(Console c) try { y.MarioCube.Add(item.GetProperty("wad_titles")[i].GetString()); } catch { - try { y.Titles.Add(item.GetProperty("wad_titles")[Math.Max(0, item.GetProperty("wad_titles").GetArrayLength() - 1)].GetString()); } + try { y.MarioCube.Add(item.GetProperty("wad_titles")[Math.Max(0, item.GetProperty("wad_titles").GetArrayLength() - 1)].GetString()); } catch { - var title = y.Titles[y.Regions[i] == 0 ? y.Regions.Count > 1 ? 1 : 0 : i]; + var title = y.Titles[y.Regions.Count > 1 ? 1 : 0]; if (title.StartsWith("The ")) { title = title.Substring(4); diff --git a/FriishProduce/_classes/Paths.cs b/FriishProduce/_classes/Program/Paths.cs similarity index 98% rename from FriishProduce/_classes/Paths.cs rename to FriishProduce/_classes/Program/Paths.cs index 66b59a5f..11a3406d 100644 --- a/FriishProduce/_classes/Paths.cs +++ b/FriishProduce/_classes/Program/Paths.cs @@ -1,35 +1,35 @@ -using System.IO; - -namespace FriishProduce -{ - public class Paths - { - public static readonly string EnvironmentFolder = System.Windows.Forms.Application.StartupPath; - public static readonly string WorkingFolder = Path.Combine(EnvironmentFolder, "resources\\temp\\"); - public static readonly string Banners = Path.Combine(EnvironmentFolder, "resources\\tools\\banners\\"); - - // Application paths - public static readonly string Tools = Path.Combine(EnvironmentFolder, "resources\\tools\\"); - public static readonly string Languages = Path.Combine(EnvironmentFolder, "strings\\"); - public static readonly string Out = Path.Combine(EnvironmentFolder, "out\\"); - - // Extracted paths - public static readonly string WAD = WorkingFolder + "wad\\"; - public static readonly string Manual = WorkingFolder + "manual\\"; - public static readonly string DataCCF = WorkingFolder + "data_ccf\\"; - public static readonly string MiscCCF = DataCCF + "misc_ccf\\"; - - // Flash paths - public static readonly string FlashContents = WorkingFolder + "flash\\"; - public static readonly string FlashSWF = FlashContents + "content\\menu.swf"; - public static readonly string FlashConfig = FlashContents + "config\\config.common.pcf"; - - // Forwarder paths - public static readonly string SDUSBRoot = WorkingFolder + "root\\"; - public static readonly string Emulators = Path.Combine(EnvironmentFolder, "resources\\forwarders\\emulators\\"); - public static readonly string BIOSFiles = Path.Combine(EnvironmentFolder, "resources\\forwarders\\bios\\"); - - // Other - public static readonly string PatchedSuffix = "-patched"; - } -} +using System.IO; + +namespace FriishProduce +{ + public class Paths + { + public static readonly string EnvironmentFolder = System.Windows.Forms.Application.StartupPath; + public static readonly string WorkingFolder = Path.Combine(EnvironmentFolder, "resources\\temp\\"); + public static readonly string Banners = Path.Combine(EnvironmentFolder, "resources\\tools\\banners\\"); + + // Application paths + public static readonly string Tools = Path.Combine(EnvironmentFolder, "resources\\tools\\"); + public static readonly string Languages = Path.Combine(EnvironmentFolder, "strings\\"); + public static readonly string Out = Path.Combine(EnvironmentFolder, "out\\"); + + // Extracted paths + public static readonly string WAD = WorkingFolder + "wad\\"; + public static readonly string Manual = WorkingFolder + "manual\\"; + public static readonly string DataCCF = WorkingFolder + "data_ccf\\"; + public static readonly string MiscCCF = DataCCF + "misc_ccf\\"; + + // Flash paths + public static readonly string FlashContents = WorkingFolder + "flash\\"; + public static readonly string FlashSWF = FlashContents + "content\\menu.swf"; + public static readonly string FlashConfig = FlashContents + "config\\config.common.pcf"; + + // Forwarder paths + public static readonly string SDUSBRoot = WorkingFolder + "root\\"; + public static readonly string Emulators = Path.Combine(EnvironmentFolder, "resources\\forwarders\\emulators\\"); + public static readonly string BIOSFiles = Path.Combine(EnvironmentFolder, "resources\\forwarders\\bios\\"); + + // Other + public static readonly string PatchedSuffix = "-patched"; + } +} diff --git a/FriishProduce/_classes/Projects/ProjectType.cs b/FriishProduce/_classes/Program/Project.cs similarity index 86% rename from FriishProduce/_classes/Projects/ProjectType.cs rename to FriishProduce/_classes/Program/Project.cs index f5d8094b..bcf274d6 100644 --- a/FriishProduce/_classes/Projects/ProjectType.cs +++ b/FriishProduce/_classes/Program/Project.cs @@ -8,18 +8,20 @@ namespace FriishProduce { [Serializable] - public class ProjectType + public class Project { public Console Console { get; set; } public string ROM { get; set; } public string PatchFile { get; set; } + public string Manual { get; set; } public Bitmap Img { get; set; } public Creator Creator { get; set; } public IDictionary Options { get; set; } public LibRetroDB LibRetro { get; set; } public int WADRegion { get; set; } public (int, int) Base { get; set; } + public string BaseFile { get; set; } public bool LinkSaveDataTitle { get; set; } public (int, bool) ImageOptions { get; set; } } diff --git a/FriishProduce/database.json b/FriishProduce/database.json index 4adaeaa8..57d3231c 100644 --- a/FriishProduce/database.json +++ b/FriishProduce/database.json @@ -9,15 +9,15 @@ // "region" // The regions for which the channel is available, in an array, listed by number. - // Available regions: - // "0": Japan - // "1": USA - // "2": USA (Japanese import) - // "3": Europe - // "4": Europe (Japanese import/PAL60) - // "5": Europe (American import/PAL60) - // "6": Korea (Japanese language) - // "7": Korea (English language) + // Available regions: Final letter in TitleID + // "0": Japan J + // "1": USA E + // "2": USA (Japanese import) N + // "3": Europe P + // "4": Europe (Japanese import/PAL60) L + // "5": Europe (American import/PAL60) M + // "6": Korea (Japanese language) Q + // "7": Korea (English language) T // _____________________________________________ // "emu_ver" @@ -92,6 +92,18 @@ "titles": ["スーパードンキーコング2", "Donkey Kong Country 2", "Donkey Kong Country 2", "동키콩 컨트리 2"], "wad_titles": ["Super Donkey Kong 2 - Dixie & Diddy", "Donkey Kong Country 2 - Diddy's Kong Quest"] }, + { + "id": "00010001-4a4156__", + "region": [0, 1, 3, 7], + "emu_ver": [0, 0, 0, 0], + "titles": ["スーパーメトロイド", "Super Metroid", "Super Metroid", "슈퍼 메트로이드"] + }, + { + "id": "00010001-4a4342__", + "region": [0, 1, 5], + "emu_ver": [1, 1, 1], + "titles": ["スーパーマリオRPG", "Super Mario RPG", "Super Mario RPG"] + }, { "id": "00010001-4a4142__", "region": [4], diff --git a/FriishProduce/packages.config b/FriishProduce/packages.config index e009fc81..ca03a676 100644 --- a/FriishProduce/packages.config +++ b/FriishProduce/packages.config @@ -5,9 +5,8 @@ - + -