From 2849954a0b6b18361484d0f663d380e5f856cebf Mon Sep 17 00:00:00 2001 From: Ziella Date: Tue, 10 Jan 2023 15:44:21 +1000 Subject: [PATCH] Add project files. --- SpiritHunterEXGtractor.sln | 25 +++++++++ SpiritHunterEXGtractor/App.config | 6 +++ SpiritHunterEXGtractor/Program.cs | 53 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 +++++++++++++ .../SpiritHunterEXGtractor.csproj | 54 +++++++++++++++++++ 5 files changed, 174 insertions(+) create mode 100644 SpiritHunterEXGtractor.sln create mode 100644 SpiritHunterEXGtractor/App.config create mode 100644 SpiritHunterEXGtractor/Program.cs create mode 100644 SpiritHunterEXGtractor/Properties/AssemblyInfo.cs create mode 100644 SpiritHunterEXGtractor/SpiritHunterEXGtractor.csproj diff --git a/SpiritHunterEXGtractor.sln b/SpiritHunterEXGtractor.sln new file mode 100644 index 0000000..6eb0c18 --- /dev/null +++ b/SpiritHunterEXGtractor.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33103.184 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpiritHunterEXGtractor", "SpiritHunterEXGtractor\SpiritHunterEXGtractor.csproj", "{865C9EB3-CEDC-4847-B623-CFA739D61784}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {865C9EB3-CEDC-4847-B623-CFA739D61784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865C9EB3-CEDC-4847-B623-CFA739D61784}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865C9EB3-CEDC-4847-B623-CFA739D61784}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865C9EB3-CEDC-4847-B623-CFA739D61784}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F10EEBB0-DA38-4D10-BB26-D4836EBBED28} + EndGlobalSection +EndGlobal diff --git a/SpiritHunterEXGtractor/App.config b/SpiritHunterEXGtractor/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/SpiritHunterEXGtractor/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SpiritHunterEXGtractor/Program.cs b/SpiritHunterEXGtractor/Program.cs new file mode 100644 index 0000000..4bab913 --- /dev/null +++ b/SpiritHunterEXGtractor/Program.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using System.IO; + +namespace SpiritHunterEXGtractor +{ + internal class Program + { + static void Main(string[] args) + { + BinaryReader br = new BinaryReader(new FileStream(args[0], FileMode.Open)); + if (ASCIIEncoding.ASCII.GetString(br.ReadBytes(3)) != "EXG") + { + Console.WriteLine("Not a valid EXG file. Press any key to close."); + Console.ReadKey(); + return; + }; + + br.BaseStream.Position = 0x10; + int Width = br.ReadUInt16(); + int Height = br.ReadUInt16(); + Console.WriteLine($"{Height} {Width}"); + + Bitmap bmp = new Bitmap(Width, Height); + br.BaseStream.Position = 0x28; + + for(int x = 0; x < Height; x++) + { + for (int y = 0; y < Width; y++) + { + int R = (int)br.ReadByte(); + int G = (int)br.ReadByte(); + int B = (int)br.ReadByte(); + int A = (int)br.ReadByte(); + + bmp.SetPixel(y, x, Color.FromArgb(A, B, G, R)); + + } + + } +EXIT: + br.Close(); + + bmp.Save($"{args[0]}.png"); + bmp.Dispose(); + + } + } +} diff --git a/SpiritHunterEXGtractor/Properties/AssemblyInfo.cs b/SpiritHunterEXGtractor/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ed42b10 --- /dev/null +++ b/SpiritHunterEXGtractor/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SpiritHunterEXGtractor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SpiritHunterEXGtractor")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("865c9eb3-cedc-4847-b623-cfa739d61784")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SpiritHunterEXGtractor/SpiritHunterEXGtractor.csproj b/SpiritHunterEXGtractor/SpiritHunterEXGtractor.csproj new file mode 100644 index 0000000..9d15b91 --- /dev/null +++ b/SpiritHunterEXGtractor/SpiritHunterEXGtractor.csproj @@ -0,0 +1,54 @@ + + + + + Debug + AnyCPU + {865C9EB3-CEDC-4847-B623-CFA739D61784} + Exe + SpiritHunterEXGtractor + SpiritHunterEXGtractor + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file