From 120faba7fe82c7b069e7d9fd5747773cfbc6a882 Mon Sep 17 00:00:00 2001 From: nickworonekin Date: Fri, 20 Mar 2020 18:38:09 -0400 Subject: [PATCH] Added option when extracting an archive to create a file with the archive's file structure (addresses #19). Replaced Append file number option with prepend file number. --- .../WriterSettings/AcxWriterSettings.resx | 4 +- .../WriterSettings/AfsWriterSettings.resx | 4 +- .../WriterSettings/PvmWriterSettings.resx | 4 +- .../WriterSettings/SntWriterSettings.resx | 4 +- .../Core/ModuleSettingsControl.resx | 4 +- .../WriterSettings/GimWriterSettings.resx | 4 +- .../WriterSettings/GvrWriterSettings.resx | 4 +- .../WriterSettings/PvrWriterSettings.resx | 4 +- .../WriterSettings/SvrWriterSettings.resx | 4 +- PuyoTools/BitmapResources.Designer.cs | 4 +- PuyoTools/BitmapResources.resx | 4 +- PuyoTools/GUI/AboutPuyoTools.Designer.cs | 102 +++++++++++++++--- PuyoTools/GUI/ArchiveCreator.Designer.cs | 5 +- PuyoTools/GUI/ArchiveCreator.cs | 22 ++++ PuyoTools/GUI/ArchiveExtractor.Designer.cs | 45 +++++--- PuyoTools/GUI/ArchiveExtractor.cs | 26 ++++- PuyoTools/GUI/ArchiveExtractor.resx | 4 +- PuyoTools/GUI/FileCompressor.resx | 4 +- PuyoTools/GUI/FileDecompressor.resx | 4 +- PuyoTools/GUI/TextureDecoder.resx | 4 +- PuyoTools/GUI/ToolForm.Designer.cs | 13 +++ PuyoTools/IconResources.Designer.cs | 4 +- PuyoTools/IconResources.resx | 8 +- PuyoTools/Properties/AssemblyInfo.cs | 4 +- PuyoTools/Properties/Resources.Designer.cs | 4 +- PuyoTools/Properties/Resources.resx | 4 +- PuyoTools/PuyoTools.cs | 2 +- README.md | 18 ++-- 28 files changed, 228 insertions(+), 89 deletions(-) diff --git a/PuyoTools.Modules/Archive/WriterSettings/AcxWriterSettings.resx b/PuyoTools.Modules/Archive/WriterSettings/AcxWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Archive/WriterSettings/AcxWriterSettings.resx +++ b/PuyoTools.Modules/Archive/WriterSettings/AcxWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Archive/WriterSettings/AfsWriterSettings.resx b/PuyoTools.Modules/Archive/WriterSettings/AfsWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Archive/WriterSettings/AfsWriterSettings.resx +++ b/PuyoTools.Modules/Archive/WriterSettings/AfsWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Archive/WriterSettings/PvmWriterSettings.resx b/PuyoTools.Modules/Archive/WriterSettings/PvmWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Archive/WriterSettings/PvmWriterSettings.resx +++ b/PuyoTools.Modules/Archive/WriterSettings/PvmWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Archive/WriterSettings/SntWriterSettings.resx b/PuyoTools.Modules/Archive/WriterSettings/SntWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Archive/WriterSettings/SntWriterSettings.resx +++ b/PuyoTools.Modules/Archive/WriterSettings/SntWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Core/ModuleSettingsControl.resx b/PuyoTools.Modules/Core/ModuleSettingsControl.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Core/ModuleSettingsControl.resx +++ b/PuyoTools.Modules/Core/ModuleSettingsControl.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Texture/WriterSettings/GimWriterSettings.resx b/PuyoTools.Modules/Texture/WriterSettings/GimWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Texture/WriterSettings/GimWriterSettings.resx +++ b/PuyoTools.Modules/Texture/WriterSettings/GimWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Texture/WriterSettings/GvrWriterSettings.resx b/PuyoTools.Modules/Texture/WriterSettings/GvrWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Texture/WriterSettings/GvrWriterSettings.resx +++ b/PuyoTools.Modules/Texture/WriterSettings/GvrWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Texture/WriterSettings/PvrWriterSettings.resx b/PuyoTools.Modules/Texture/WriterSettings/PvrWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Texture/WriterSettings/PvrWriterSettings.resx +++ b/PuyoTools.Modules/Texture/WriterSettings/PvrWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools.Modules/Texture/WriterSettings/SvrWriterSettings.resx b/PuyoTools.Modules/Texture/WriterSettings/SvrWriterSettings.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools.Modules/Texture/WriterSettings/SvrWriterSettings.resx +++ b/PuyoTools.Modules/Texture/WriterSettings/SvrWriterSettings.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/BitmapResources.Designer.cs b/PuyoTools/BitmapResources.Designer.cs index fc42e9d..0aac80c 100644 --- a/PuyoTools/BitmapResources.Designer.cs +++ b/PuyoTools/BitmapResources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18052 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace PuyoTools { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class BitmapResources { diff --git a/PuyoTools/BitmapResources.resx b/PuyoTools/BitmapResources.resx index 9e3114e..aeb98f7 100644 --- a/PuyoTools/BitmapResources.resx +++ b/PuyoTools/BitmapResources.resx @@ -125,9 +125,9 @@ Resources\CheckeredBackgroundDark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Resources\CheckeredBackgroundLight.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Resources\CheckeredBackgroundLight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Resources\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Resources\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/PuyoTools/GUI/AboutPuyoTools.Designer.cs b/PuyoTools/GUI/AboutPuyoTools.Designer.cs index cf486da..b52e96f 100644 --- a/PuyoTools/GUI/AboutPuyoTools.Designer.cs +++ b/PuyoTools/GUI/AboutPuyoTools.Designer.cs @@ -29,6 +29,7 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.panel1 = new System.Windows.Forms.Panel(); + this.versionLabel = new System.Windows.Forms.Label(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.label1 = new System.Windows.Forms.Label(); @@ -38,7 +39,12 @@ private void InitializeComponent() this.label4 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); - this.versionLabel = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.flowLayoutPanel1.SuspendLayout(); @@ -56,6 +62,17 @@ private void InitializeComponent() this.panel1.Size = new System.Drawing.Size(523, 70); this.panel1.TabIndex = 0; // + // versionLabel + // + this.versionLabel.Dock = System.Windows.Forms.DockStyle.Right; + this.versionLabel.Location = new System.Drawing.Point(274, 5); + this.versionLabel.Name = "versionLabel"; + this.versionLabel.Padding = new System.Windows.Forms.Padding(0, 0, 20, 0); + this.versionLabel.Size = new System.Drawing.Size(244, 60); + this.versionLabel.TabIndex = 1; + this.versionLabel.Text = "Version"; + this.versionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // pictureBox1 // this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; @@ -97,11 +114,17 @@ private void InitializeComponent() this.flowLayoutPanel1.Controls.Add(this.label4); this.flowLayoutPanel1.Controls.Add(this.label5); this.flowLayoutPanel1.Controls.Add(this.label6); + this.flowLayoutPanel1.Controls.Add(this.label7); + this.flowLayoutPanel1.Controls.Add(this.label8); + this.flowLayoutPanel1.Controls.Add(this.label9); + this.flowLayoutPanel1.Controls.Add(this.label10); + this.flowLayoutPanel1.Controls.Add(this.label11); + this.flowLayoutPanel1.Controls.Add(this.label12); this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.flowLayoutPanel1.Location = new System.Drawing.Point(9, 142); this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(138, 90); + this.flowLayoutPanel1.Size = new System.Drawing.Size(502, 198); this.flowLayoutPanel1.TabIndex = 6; // // label2 @@ -154,22 +177,71 @@ private void InitializeComponent() this.label6.TabIndex = 4; this.label6.Text = "QPjDDYwQLI"; // - // versionLabel + // label7 // - this.versionLabel.Dock = System.Windows.Forms.DockStyle.Right; - this.versionLabel.Location = new System.Drawing.Point(274, 5); - this.versionLabel.Name = "versionLabel"; - this.versionLabel.Padding = new System.Windows.Forms.Padding(0, 0, 20, 0); - this.versionLabel.Size = new System.Drawing.Size(244, 60); - this.versionLabel.TabIndex = 1; - this.versionLabel.Text = "Version"; - this.versionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(3, 90); + this.label7.Name = "label7"; + this.label7.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label7.Size = new System.Drawing.Size(88, 18); + this.label7.TabIndex = 5; + this.label7.Text = "Michael Fadely"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(3, 108); + this.label8.Name = "label8"; + this.label8.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label8.Size = new System.Drawing.Size(52, 18); + this.label8.TabIndex = 6; + this.label8.Text = "tj32767"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(3, 126); + this.label9.Name = "label9"; + this.label9.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label9.Size = new System.Drawing.Size(63, 18); + this.label9.TabIndex = 7; + this.label9.Text = "GerbilSoft"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(3, 144); + this.label10.Name = "label10"; + this.label10.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label10.Size = new System.Drawing.Size(77, 18); + this.label10.TabIndex = 8; + this.label10.Text = "MainMemory"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(3, 162); + this.label11.Name = "label11"; + this.label11.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label11.Size = new System.Drawing.Size(59, 18); + this.label11.TabIndex = 9; + this.label11.Text = "nnn1590"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(3, 180); + this.label12.Name = "label12"; + this.label12.Padding = new System.Windows.Forms.Padding(10, 0, 0, 5); + this.label12.Size = new System.Drawing.Size(160, 18); + this.label12.TabIndex = 10; + this.label12.Text = "Thomas May (WamWooWam)"; // // AboutPuyoTools // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(523, 293); + this.ClientSize = new System.Drawing.Size(523, 347); this.Controls.Add(this.flowLayoutPanel1); this.Controls.Add(this.label1); this.Controls.Add(this.linkLabel1); @@ -202,5 +274,11 @@ private void InitializeComponent() private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label6; private System.Windows.Forms.Label versionLabel; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; } } \ No newline at end of file diff --git a/PuyoTools/GUI/ArchiveCreator.Designer.cs b/PuyoTools/GUI/ArchiveCreator.Designer.cs index c567c49..942caa4 100644 --- a/PuyoTools/GUI/ArchiveCreator.Designer.cs +++ b/PuyoTools/GUI/ArchiveCreator.Designer.cs @@ -111,6 +111,7 @@ private void InitializeComponent() this.listView.FullRowSelect = true; this.listView.GridLines = true; this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView.HideSelection = false; this.listView.Location = new System.Drawing.Point(3, 3); this.listView.Name = "listView"; this.listView.Size = new System.Drawing.Size(550, 282); @@ -178,7 +179,7 @@ private void InitializeComponent() this.archiveSettingsPanel.Location = new System.Drawing.Point(0, 30); this.archiveSettingsPanel.Margin = new System.Windows.Forms.Padding(0); this.archiveSettingsPanel.Name = "archiveSettingsPanel"; - this.archiveSettingsPanel.Size = new System.Drawing.Size(556, 258); + this.archiveSettingsPanel.Size = new System.Drawing.Size(556, 358); this.archiveSettingsPanel.TabIndex = 4; // // compressionFormatBox @@ -218,7 +219,7 @@ private void InitializeComponent() "Select a format"}); this.archiveFormatBox.Location = new System.Drawing.Point(94, 11); this.archiveFormatBox.Name = "archiveFormatBox"; - this.archiveFormatBox.Size = new System.Drawing.Size(150, 21); + this.archiveFormatBox.Size = new System.Drawing.Size(250, 21); this.archiveFormatBox.TabIndex = 2; this.archiveFormatBox.SelectedIndexChanged += new System.EventHandler(this.archiveFormatBox_SelectedIndexChanged); // diff --git a/PuyoTools/GUI/ArchiveCreator.cs b/PuyoTools/GUI/ArchiveCreator.cs index 2aa5ece..99e1185 100644 --- a/PuyoTools/GUI/ArchiveCreator.cs +++ b/PuyoTools/GUI/ArchiveCreator.cs @@ -12,6 +12,7 @@ using PuyoTools.Modules.Compression; using Ookii.Dialogs; +using System.Linq; namespace PuyoTools.GUI { @@ -29,6 +30,10 @@ public ArchiveCreator() addFilesButton.Click -= base.addFilesButton_Click; addDirectoryButton.Click -= base.addDirectoryButton_Click; + // Enable the "Add from entries.txt" button + addFromEntriesButton.Visible = true; + addFromEntriesButton.Click += addFromEntriesButton_Click; + // Make the list view rows bigger ImageList imageList = new ImageList(); imageList.ImageSize = new Size(1, 20); @@ -247,6 +252,23 @@ private void listView_ClientSizeChanged(object sender, EventArgs e) } } + private void addFromEntriesButton_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + ofd.Filter = "entries.txt|entries.txt|All Files (*.*)|*.*"; + ofd.Multiselect = true; + ofd.Title = "Add Files"; + + if (ofd.ShowDialog() == DialogResult.OK) + { + string directory = Path.GetDirectoryName(ofd.FileName); + + AddFiles(File.ReadLines(ofd.FileName).Select(x => Path.Combine(directory, x))); + + EnableRunButton(); + } + } + private void archiveFormatBox_SelectedIndexChanged(object sender, EventArgs e) { archiveSettingsPanel.Controls.Clear(); diff --git a/PuyoTools/GUI/ArchiveExtractor.Designer.cs b/PuyoTools/GUI/ArchiveExtractor.Designer.cs index eec2e98..0c37d63 100644 --- a/PuyoTools/GUI/ArchiveExtractor.Designer.cs +++ b/PuyoTools/GUI/ArchiveExtractor.Designer.cs @@ -29,13 +29,14 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.extractFileStructureCheckbox = new System.Windows.Forms.CheckBox(); this.deleteSourceArchiveCheckbox = new System.Windows.Forms.CheckBox(); this.extractToSameNameDirCheckbox = new System.Windows.Forms.CheckBox(); this.extractToSourceDirCheckbox = new System.Windows.Forms.CheckBox(); this.decompressSourceArchiveCheckbox = new System.Windows.Forms.CheckBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.fileNumberAsFilenameCheckbox = new System.Windows.Forms.CheckBox(); - this.appendFileNumberCheckbox = new System.Windows.Forms.CheckBox(); + this.prependFileNumberCheckbox = new System.Windows.Forms.CheckBox(); this.convertExtractedTexturesCheckbox = new System.Windows.Forms.CheckBox(); this.extractExtractedArchivesCheckbox = new System.Windows.Forms.CheckBox(); this.decompressExtractedFilesCheckbox = new System.Windows.Forms.CheckBox(); @@ -48,7 +49,7 @@ private void InitializeComponent() // this.settingsPanel.Controls.Add(this.groupBox2); this.settingsPanel.Controls.Add(this.groupBox1); - this.settingsPanel.Size = new System.Drawing.Size(584, 312); + this.settingsPanel.Size = new System.Drawing.Size(584, 331); // // runButton // @@ -59,6 +60,7 @@ private void InitializeComponent() this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox1.AutoSize = true; + this.groupBox1.Controls.Add(this.extractFileStructureCheckbox); this.groupBox1.Controls.Add(this.deleteSourceArchiveCheckbox); this.groupBox1.Controls.Add(this.extractToSameNameDirCheckbox); this.groupBox1.Controls.Add(this.extractToSourceDirCheckbox); @@ -66,15 +68,25 @@ private void InitializeComponent() this.groupBox1.Location = new System.Drawing.Point(14, 14); this.groupBox1.Name = "groupBox1"; this.groupBox1.Padding = new System.Windows.Forms.Padding(10, 3, 10, 3); - this.groupBox1.Size = new System.Drawing.Size(557, 127); + this.groupBox1.Size = new System.Drawing.Size(557, 149); this.groupBox1.TabIndex = 0; this.groupBox1.TabStop = false; this.groupBox1.Text = "Archive"; // + // extractFileStructureCheckbox + // + this.extractFileStructureCheckbox.AutoSize = true; + this.extractFileStructureCheckbox.Location = new System.Drawing.Point(13, 90); + this.extractFileStructureCheckbox.Name = "extractFileStructureCheckbox"; + this.extractFileStructureCheckbox.Size = new System.Drawing.Size(339, 17); + this.extractFileStructureCheckbox.TabIndex = 4; + this.extractFileStructureCheckbox.Text = "Create a file (entries.txt) with the archive\'s entries and file structure."; + this.extractFileStructureCheckbox.UseVisualStyleBackColor = true; + // // deleteSourceArchiveCheckbox // this.deleteSourceArchiveCheckbox.AutoSize = true; - this.deleteSourceArchiveCheckbox.Location = new System.Drawing.Point(13, 91); + this.deleteSourceArchiveCheckbox.Location = new System.Drawing.Point(13, 113); this.deleteSourceArchiveCheckbox.Name = "deleteSourceArchiveCheckbox"; this.deleteSourceArchiveCheckbox.Size = new System.Drawing.Size(205, 17); this.deleteSourceArchiveCheckbox.TabIndex = 3; @@ -120,11 +132,11 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Right))); this.groupBox2.AutoSize = true; this.groupBox2.Controls.Add(this.fileNumberAsFilenameCheckbox); - this.groupBox2.Controls.Add(this.appendFileNumberCheckbox); + this.groupBox2.Controls.Add(this.prependFileNumberCheckbox); this.groupBox2.Controls.Add(this.convertExtractedTexturesCheckbox); this.groupBox2.Controls.Add(this.extractExtractedArchivesCheckbox); this.groupBox2.Controls.Add(this.decompressExtractedFilesCheckbox); - this.groupBox2.Location = new System.Drawing.Point(14, 148); + this.groupBox2.Location = new System.Drawing.Point(14, 169); this.groupBox2.Name = "groupBox2"; this.groupBox2.Padding = new System.Windows.Forms.Padding(10, 3, 10, 3); this.groupBox2.Size = new System.Drawing.Size(558, 149); @@ -142,15 +154,15 @@ private void InitializeComponent() this.fileNumberAsFilenameCheckbox.Text = "Use file number as filename"; this.fileNumberAsFilenameCheckbox.UseVisualStyleBackColor = true; // - // appendFileNumberCheckbox + // prependFileNumberCheckbox // - this.appendFileNumberCheckbox.AutoSize = true; - this.appendFileNumberCheckbox.Location = new System.Drawing.Point(13, 67); - this.appendFileNumberCheckbox.Name = "appendFileNumberCheckbox"; - this.appendFileNumberCheckbox.Size = new System.Drawing.Size(171, 17); - this.appendFileNumberCheckbox.TabIndex = 3; - this.appendFileNumberCheckbox.Text = "Append file number to filename"; - this.appendFileNumberCheckbox.UseVisualStyleBackColor = true; + this.prependFileNumberCheckbox.AutoSize = true; + this.prependFileNumberCheckbox.Location = new System.Drawing.Point(13, 67); + this.prependFileNumberCheckbox.Name = "prependFileNumberCheckbox"; + this.prependFileNumberCheckbox.Size = new System.Drawing.Size(174, 17); + this.prependFileNumberCheckbox.TabIndex = 3; + this.prependFileNumberCheckbox.Text = "Prepend file number to filename"; + this.prependFileNumberCheckbox.UseVisualStyleBackColor = true; // // convertExtractedTexturesCheckbox // @@ -185,7 +197,7 @@ private void InitializeComponent() // ArchiveExtractor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.ClientSize = new System.Drawing.Size(584, 412); + this.ClientSize = new System.Drawing.Size(584, 431); this.Name = "ArchiveExtractor"; this.Text = "Archive Extractor"; this.settingsPanel.ResumeLayout(false); @@ -209,7 +221,8 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox convertExtractedTexturesCheckbox; private System.Windows.Forms.CheckBox extractExtractedArchivesCheckbox; private System.Windows.Forms.CheckBox decompressExtractedFilesCheckbox; - private System.Windows.Forms.CheckBox appendFileNumberCheckbox; + private System.Windows.Forms.CheckBox prependFileNumberCheckbox; private System.Windows.Forms.CheckBox fileNumberAsFilenameCheckbox; + private System.Windows.Forms.CheckBox extractFileStructureCheckbox; } } diff --git a/PuyoTools/GUI/ArchiveExtractor.cs b/PuyoTools/GUI/ArchiveExtractor.cs index 28672a6..58ce096 100644 --- a/PuyoTools/GUI/ArchiveExtractor.cs +++ b/PuyoTools/GUI/ArchiveExtractor.cs @@ -46,6 +46,7 @@ private void Run(Settings settings, ProgressDialog dialog) ArchiveFormat format; string outPath, outName; Queue textureFileQueue = null; + List entryFilenames = settings.ExtractFileStructure ? new List() : null; using (FileStream inStream = File.OpenRead(file)) { @@ -132,10 +133,10 @@ private void Run(Settings settings, ProgressDialog dialog) // Use the file number as its filename outName = j.ToString("D" + archive.Entries.Count.ToString().Length) + Path.GetExtension(entry.Name); } - else if (settings.AppendFileNumber) + else if (settings.PrependFileNumber) { - // Append the file number to its filename - outName = Path.GetFileNameWithoutExtension(entry.Name) + j.ToString("D" + archive.Entries.Count.ToString().Length) + Path.GetExtension(entry.Name); + // Prepend the file number to its filename + outName = j.ToString("D" + archive.Entries.Count.ToString().Length) + "_" + entry.Name; } else { @@ -143,6 +144,12 @@ private void Run(Settings settings, ProgressDialog dialog) outName = entry.Name; } + // Add the output filename to the entry filename list if we are extracting the archive's file structure. + if (entryFilenames != null) + { + entryFilenames.Add(outName); + } + // What we're going to do here may seem a tiny bit hackish, but it'll make my job much simplier. // First, let's check to see if the file is compressed, and if we want to decompress it. if (settings.DecompressExtractedFiles) @@ -290,6 +297,13 @@ private void Run(Settings settings, ProgressDialog dialog) } } + // Extract the archive's file structure if this option was selected + if (settings.ExtractFileStructure) + { + // TODO extract the file structure + File.WriteAllLines(Path.Combine(outPath, "entries.txt"), entryFilenames); + } + // Delete the source archive if the user chose to if (settings.DeleteSourceArchive) { @@ -314,11 +328,12 @@ private struct Settings public bool DecompressSourceArchive; public bool ExtractToSourceDirectory; public bool ExtractToSameNameDirectory; + public bool ExtractFileStructure; public bool DeleteSourceArchive; public bool DecompressExtractedFiles; public bool FileNumberAsFilename; - public bool AppendFileNumber; + public bool PrependFileNumber; public bool ExtractExtractedArchives; public bool ConvertExtractedTextures; } @@ -339,11 +354,12 @@ private void runButton_Click(object sender, EventArgs e) settings.DecompressSourceArchive = decompressSourceArchiveCheckbox.Checked; settings.ExtractToSourceDirectory = extractToSourceDirCheckbox.Checked; settings.ExtractToSameNameDirectory = extractToSameNameDirCheckbox.Checked && !settings.ExtractToSourceDirectory; + settings.ExtractFileStructure = extractFileStructureCheckbox.Checked; settings.DeleteSourceArchive = deleteSourceArchiveCheckbox.Checked || settings.ExtractToSameNameDirectory; settings.DecompressExtractedFiles = decompressExtractedFilesCheckbox.Checked; settings.FileNumberAsFilename = fileNumberAsFilenameCheckbox.Checked; - settings.AppendFileNumber = appendFileNumberCheckbox.Checked && !settings.FileNumberAsFilename; + settings.PrependFileNumber = prependFileNumberCheckbox.Checked && !settings.FileNumberAsFilename; settings.ExtractExtractedArchives = extractExtractedArchivesCheckbox.Checked; settings.ConvertExtractedTextures = convertExtractedTexturesCheckbox.Checked; diff --git a/PuyoTools/GUI/ArchiveExtractor.resx b/PuyoTools/GUI/ArchiveExtractor.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools/GUI/ArchiveExtractor.resx +++ b/PuyoTools/GUI/ArchiveExtractor.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/GUI/FileCompressor.resx b/PuyoTools/GUI/FileCompressor.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools/GUI/FileCompressor.resx +++ b/PuyoTools/GUI/FileCompressor.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/GUI/FileDecompressor.resx b/PuyoTools/GUI/FileDecompressor.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools/GUI/FileDecompressor.resx +++ b/PuyoTools/GUI/FileDecompressor.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/GUI/TextureDecoder.resx b/PuyoTools/GUI/TextureDecoder.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools/GUI/TextureDecoder.resx +++ b/PuyoTools/GUI/TextureDecoder.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/GUI/ToolForm.Designer.cs b/PuyoTools/GUI/ToolForm.Designer.cs index 83a2a55..dfc1f09 100644 --- a/PuyoTools/GUI/ToolForm.Designer.cs +++ b/PuyoTools/GUI/ToolForm.Designer.cs @@ -29,6 +29,7 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.panel1 = new System.Windows.Forms.Panel(); + this.addFromEntriesButton = new System.Windows.Forms.Button(); this.fileListButton = new System.Windows.Forms.Button(); this.addDirectoryButton = new System.Windows.Forms.Button(); this.addFilesButton = new System.Windows.Forms.Button(); @@ -42,6 +43,7 @@ private void InitializeComponent() // panel1 // this.panel1.BackColor = System.Drawing.SystemColors.ControlLight; + this.panel1.Controls.Add(this.addFromEntriesButton); this.panel1.Controls.Add(this.fileListButton); this.panel1.Controls.Add(this.addDirectoryButton); this.panel1.Controls.Add(this.addFilesButton); @@ -51,6 +53,16 @@ private void InitializeComponent() this.panel1.Size = new System.Drawing.Size(584, 50); this.panel1.TabIndex = 0; // + // addFromEntriesButton + // + this.addFromEntriesButton.Location = new System.Drawing.Point(206, 13); + this.addFromEntriesButton.Name = "addFromEntriesButton"; + this.addFromEntriesButton.Size = new System.Drawing.Size(126, 25); + this.addFromEntriesButton.TabIndex = 3; + this.addFromEntriesButton.Text = "Add from entries.txt"; + this.addFromEntriesButton.UseVisualStyleBackColor = true; + this.addFromEntriesButton.Visible = false; + // // fileListButton // this.fileListButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -138,5 +150,6 @@ private void InitializeComponent() protected System.Windows.Forms.Button fileListButton; protected System.Windows.Forms.Button addFilesButton; protected System.Windows.Forms.Button addDirectoryButton; + protected System.Windows.Forms.Button addFromEntriesButton; } } \ No newline at end of file diff --git a/PuyoTools/IconResources.Designer.cs b/PuyoTools/IconResources.Designer.cs index 0ab2da1..ca9921d 100644 --- a/PuyoTools/IconResources.Designer.cs +++ b/PuyoTools/IconResources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18034 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace PuyoTools { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class IconResources { diff --git a/PuyoTools/IconResources.resx b/PuyoTools/IconResources.resx index 33a2e4e..14b8b3a 100644 --- a/PuyoTools/IconResources.resx +++ b/PuyoTools/IconResources.resx @@ -112,13 +112,13 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - Resources\ProgramIcon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Resources\ProgramIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/PuyoTools/Properties/AssemblyInfo.cs b/PuyoTools/Properties/AssemblyInfo.cs index 7358088..a29aad1 100644 --- a/PuyoTools/Properties/AssemblyInfo.cs +++ b/PuyoTools/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("2.0.3.0")] -[assembly: AssemblyFileVersion("2.0.3.0")] +[assembly: AssemblyVersion("2.0.4.0")] +[assembly: AssemblyFileVersion("2.0.4.0")] diff --git a/PuyoTools/Properties/Resources.Designer.cs b/PuyoTools/Properties/Resources.Designer.cs index ca04630..89e9272 100644 --- a/PuyoTools/Properties/Resources.Designer.cs +++ b/PuyoTools/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18034 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace PuyoTools.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/PuyoTools/Properties/Resources.resx b/PuyoTools/Properties/Resources.resx index 7080a7d..1af7de1 100644 --- a/PuyoTools/Properties/Resources.resx +++ b/PuyoTools/Properties/Resources.resx @@ -112,9 +112,9 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/PuyoTools/PuyoTools.cs b/PuyoTools/PuyoTools.cs index 1629bb2..3f548c3 100644 --- a/PuyoTools/PuyoTools.cs +++ b/PuyoTools/PuyoTools.cs @@ -13,7 +13,7 @@ namespace PuyoTools { public static class PuyoTools { - public const string Version = "2.0.3"; + public const string Version = "2.0.4"; [ImportMany("IPuyoToolsPlugin")] static IEnumerable Plugins; diff --git a/README.md b/README.md index 867226e..0cf171f 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ Puyo Tools is a collection of tools and libraries used to access the contents of ## Releases -The latest version is **[2.0.3](https://github.com/nickworonekin/puyotools/releases/latest)**, released on December 14, 2016. +The latest version is **[2.0.4](https://github.com/nickworonekin/puyotools/releases/latest)**, released on March 20, 2020. .NET Framework 4.0 or higher is required to run this app. ## Supported Formats ### Compression: - * CNX - * COMP + * CNX (Read-only) + * COMP (Puyo Puyo Chronicle) * CXLZ * LZ00 * LZ01 @@ -25,26 +25,22 @@ The latest version is **[2.0.3](https://github.com/nickworonekin/puyotools/relea * AFS * GNT * GVM - * MDL - * NARC[1](#archive-footnote-1) (See notes) + * NARC (Partial read-only support. Use another app such as [Narchive](https://github.com/nickworonekin/narchive) to handle these archives.) * PVM * SNT - * VDD * MRG (Puyo Puyo Fever 2) + * ONE (Sonic Storybook series) + * ONE (Sonic Unleashed for Wii & PS2) (Read-only) * SPK (Puyo Puyo Fever 2) * TEX (Puyo Puyo Fever 2) - * ONE (Sonic Storybook series) * TXD (Sonic Storybook series) - * ONE (Sonic Unleashed for Wii & PS2) ### Textures: * GIM * GMP * GVR - * PVR (Dreamcast) + * PVR * SVR -1 NARC support is incomplete. Use another app such as [Narchive](https://github.com/nickworonekin/narchive) to handle these archives. - ## License Puyo Tools is licensed under the [MIT license](LICENSE.md). \ No newline at end of file