From 537b1b1229104fec7f29fc6c16ffd5727651882b Mon Sep 17 00:00:00 2001 From: Li Date: Tue, 18 Apr 2023 15:10:03 +1200 Subject: [PATCH] start moving to other lib --- .gitignore | 3 + ChovySign-CLI/ChovySign-CLI.csproj | 18 +-- ChovySign-CLI/Program.cs | 4 +- GameBuilder/Atrac3/Atrac3ToolEncoder.cs | 2 +- LibChovy/ChovySign.cs | 30 ++++ LibChovy/ChovySignParameters.cs | 16 +++ LibChovy/ChovyTypes.cs | 14 ++ LibChovy/LibChovy.csproj | 29 ++++ LibChovy/PopsParameters.cs | 28 ++++ LibChovy/PspParameters.cs | 16 +++ .../Resources.Designer.cs | 20 ++- {ChovySign-CLI => LibChovy}/Resources.resx | 5 +- LibChovy/Resources/PIC0.PNG | Bin 0 -> 47322 bytes .../Resources/PIC1.PNG | Bin PIC0.pdn | Bin 0 -> 160022 bytes PspTest.sln | 13 +- Vita/ContentManager/SettingsReader.cs | 130 ++++++++++++++++++ 17 files changed, 299 insertions(+), 29 deletions(-) create mode 100644 LibChovy/ChovySign.cs create mode 100644 LibChovy/ChovySignParameters.cs create mode 100644 LibChovy/ChovyTypes.cs create mode 100644 LibChovy/LibChovy.csproj create mode 100644 LibChovy/PopsParameters.cs create mode 100644 LibChovy/PspParameters.cs rename {ChovySign-CLI => LibChovy}/Resources.Designer.cs (80%) rename {ChovySign-CLI => LibChovy}/Resources.resx (93%) create mode 100644 LibChovy/Resources/PIC0.PNG rename {ChovySign-CLI => LibChovy}/Resources/PIC1.PNG (100%) create mode 100644 PIC0.pdn create mode 100644 Vita/ContentManager/SettingsReader.cs diff --git a/.gitignore b/.gitignore index 19aaf3e..327a72a 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,9 @@ GameBuilder/obj/* PspCrypto/bin/* PspCrypto/obj/* +LibChovy/bin/* +LibChovy/obj/* + LiLib/bin/* LiLib/obj/* diff --git a/ChovySign-CLI/ChovySign-CLI.csproj b/ChovySign-CLI/ChovySign-CLI.csproj index 88eee96..002e97a 100644 --- a/ChovySign-CLI/ChovySign-CLI.csproj +++ b/ChovySign-CLI/ChovySign-CLI.csproj @@ -1,4 +1,4 @@ - + Exe @@ -10,21 +10,7 @@ - - - - - True - True - Resources.resx - - - - - - PublicResXFileCodeGenerator - Resources.Designer.cs - + diff --git a/ChovySign-CLI/Program.cs b/ChovySign-CLI/Program.cs index 6588983..c30bb21 100644 --- a/ChovySign-CLI/Program.cs +++ b/ChovySign-CLI/Program.cs @@ -3,8 +3,6 @@ using GameBuilder.Pops; using GameBuilder.Psp; using GameBuilder.VersionKey; using PspCrypto; -using System.Reflection.PortableExecutable; -using System.IO.Pipes; namespace ChovySign_CLI { @@ -225,7 +223,7 @@ namespace ChovySign_CLI if (discs.Length == 1) { - using (PbpBuilder pbpBuilder = new PbpBuilder(sfo, File.ReadAllBytes(popsIcon0File), null, (popsPic0File is not null) ? File.ReadAllBytes(popsPic0File) : null, Resources.PIC1, null, new PsIsoImg(drmInfo, discInfs.First()), 0)) + using (PbpBuilder pbpBuilder = new PbpBuilder(sfo, File.ReadAllBytes(popsIcon0File), null, (popsPic0File is not null) ? File.ReadAllBytes(popsPic0File) : null, LibChovy.Resources.PIC1, null, new PsIsoImg(drmInfo, discInfs.First()), 0)) { pbpBuilder.RegisterCallback(onProgress); pbpBuilder.CreatePsarAndPbp(); diff --git a/GameBuilder/Atrac3/Atrac3ToolEncoder.cs b/GameBuilder/Atrac3/Atrac3ToolEncoder.cs index e29aec7..421def3 100644 --- a/GameBuilder/Atrac3/Atrac3ToolEncoder.cs +++ b/GameBuilder/Atrac3/Atrac3ToolEncoder.cs @@ -1,4 +1,4 @@ -using Org.BouncyCastle.Crypto.IO; +using Li.Utilities; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/LibChovy/ChovySign.cs b/LibChovy/ChovySign.cs new file mode 100644 index 0000000..9579404 --- /dev/null +++ b/LibChovy/ChovySign.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibChovy +{ + public class ChovySign + { + + public void createPOPS() + { + + } + public void createPOPSMultiDisc() + { + + } + public void createPSP() + { + + } + + public void Go() + { + + } + } +} diff --git a/LibChovy/ChovySignParameters.cs b/LibChovy/ChovySignParameters.cs new file mode 100644 index 0000000..9047a52 --- /dev/null +++ b/LibChovy/ChovySignParameters.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibChovy +{ + public abstract class ChovySignParameters + { + public ChovyTypes Type; + public bool MakePSVIMG; + public bool ForceDevkitAid; + + } +} diff --git a/LibChovy/ChovyTypes.cs b/LibChovy/ChovyTypes.cs new file mode 100644 index 0000000..5824ade --- /dev/null +++ b/LibChovy/ChovyTypes.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibChovy +{ + public enum ChovyTypes + { + POPS, + PSP + } +} diff --git a/LibChovy/LibChovy.csproj b/LibChovy/LibChovy.csproj new file mode 100644 index 0000000..e78df9b --- /dev/null +++ b/LibChovy/LibChovy.csproj @@ -0,0 +1,29 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + True + True + Resources.resx + + + + + + PublicResXFileCodeGenerator + Resources.Designer.cs + + + + diff --git a/LibChovy/PopsParameters.cs b/LibChovy/PopsParameters.cs new file mode 100644 index 0000000..d02bb62 --- /dev/null +++ b/LibChovy/PopsParameters.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibChovy +{ + public class PopsParameters : ChovySignParameters + { + + //public int SetSDKVersion + public string[] DiscList; + public string DiscName; + public Bitmap? Icon0Override; + public Bitmap? Pic0Override; + public Bitmap? Pic1Override; + + public bool MultiDisc + { + get + { + return DiscList.Length > 1; + } + } + } +} diff --git a/LibChovy/PspParameters.cs b/LibChovy/PspParameters.cs new file mode 100644 index 0000000..804c66e --- /dev/null +++ b/LibChovy/PspParameters.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibChovy +{ + public class PspParameters : ChovySignParameters + { + public PspParameters() + { + + } + } +} diff --git a/ChovySign-CLI/Resources.Designer.cs b/LibChovy/Resources.Designer.cs similarity index 80% rename from ChovySign-CLI/Resources.Designer.cs rename to LibChovy/Resources.Designer.cs index 9624b0c..76cb0c1 100644 --- a/ChovySign-CLI/Resources.Designer.cs +++ b/LibChovy/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace ChovySign_CLI { +namespace LibChovy { using System; @@ -39,7 +39,7 @@ namespace ChovySign_CLI { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChovySign_CLI.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LibChovy.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; @@ -61,12 +61,22 @@ namespace ChovySign_CLI { } /// - /// Looks up a localized resource of type System.Byte[]. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - public static byte[] PIC1 { + public static System.Drawing.Bitmap PIC0 { + get { + object obj = ResourceManager.GetObject("PIC0", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap PIC1 { get { object obj = ResourceManager.GetObject("PIC1", resourceCulture); - return ((byte[])(obj)); + return ((System.Drawing.Bitmap)(obj)); } } } diff --git a/ChovySign-CLI/Resources.resx b/LibChovy/Resources.resx similarity index 93% rename from ChovySign-CLI/Resources.resx rename to LibChovy/Resources.resx index 58f7389..f1b5140 100644 --- a/ChovySign-CLI/Resources.resx +++ b/LibChovy/Resources.resx @@ -118,7 +118,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Resources\PIC0.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + - Resources\PIC1.PNG;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Resources\PIC1.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/LibChovy/Resources/PIC0.PNG b/LibChovy/Resources/PIC0.PNG new file mode 100644 index 0000000000000000000000000000000000000000..fd87f844e3c7995d9c06e376e92ee2c9cf61bf41 GIT binary patch literal 47322 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