diff --git a/AmaiSosu.GUI/AmaiSosu.GUI.csproj b/AmaiSosu.GUI/AmaiSosu.GUI.csproj index 28f8d78..eea92fb 100644 --- a/AmaiSosu.GUI/AmaiSosu.GUI.csproj +++ b/AmaiSosu.GUI/AmaiSosu.GUI.csproj @@ -57,11 +57,7 @@ App.xaml Code - - - - - + True True @@ -74,7 +70,6 @@ - MainWindow.xaml @@ -99,9 +94,9 @@ - - {2c5d2b0e-fea7-43f2-9960-215280cca7b7} - Atarashii.API + + {693bf44b-7ba3-461c-8ce1-d0f11fbe930d} + AmaiSosu diff --git a/AmaiSosu.GUI/Main.cs b/AmaiSosu.GUI/Main.cs index b68272a..8419bb1 100644 --- a/AmaiSosu.GUI/Main.cs +++ b/AmaiSosu.GUI/Main.cs @@ -1,14 +1,11 @@ using System; -using System.Collections.Generic; using System.ComponentModel; using System.IO; -using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; -using AmaiSosu.GUI.IO; +using AmaiSosu.Detection; using AmaiSosu.GUI.Properties; using AmaiSosu.GUI.Resources; -using Atarashii.API; namespace AmaiSosu.GUI { @@ -117,12 +114,7 @@ public void Install() { try { - var backupDir = System.IO.Path.Combine(_path, FileNames.AmaiSosuBackup + '.' + Guid.NewGuid()); - - CommitBackups(backupDir); - OpenSauce.Install(Path); - FinishInstall(backupDir); - + new AmaiSosu.Main(_path).Install(); InstallText = Messages.InstallSuccess; } catch (Exception e) @@ -131,49 +123,6 @@ public void Install() } } - /// - /// Conducts the OpenSauce & HAC2 data backup routines. - /// - /// - /// Backup directory to use for backing up OpenSauce & HAC2 data. - /// - private void CommitBackups(string backupDir) - { - Directory.CreateDirectory(backupDir); - - new List - { - MoveFactory.Get(MoveFactory.Type.BackupOsFiles, _path, backupDir), - MoveFactory.Get(MoveFactory.Type.BackupOsDirectories, _path, backupDir), - MoveFactory.Get(MoveFactory.Type.BackupHac2Files, _path, backupDir) - }.ForEach(move => move.Commit()); - } - - /// - /// Conducts optional installation finalisation routines. - /// - Restore the HCE shaders. - /// - Move the OpenSauce IDE. - /// - Backup directory cleanup. - /// - /// - private void FinishInstall(string backupDir) - { - // restore backed up HCE shaders - MoveFactory.Get(MoveFactory.Type.RestoreHceShaders, _path, backupDir).Commit(); - - var source = - System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), - FileNames.OpenSauceDeveloper, FileNames.OpenSauceDirectory, FileNames.OpenSauceIDE); - - var target = System.IO.Path.Combine(Path, FileNames.OpenSauceIDE); - - Copy.All(new DirectoryInfo(source), new DirectoryInfo(target)); - Directory.Delete(source, true); - - // cleans up backup directory - if (!Directory.EnumerateFileSystemEntries(backupDir).Any()) Directory.Delete(backupDir); - } - /// /// Updates the install text upon successful path provision. /// diff --git a/AmaiSosu.sln b/AmaiSosu.sln index b1d60c1..f5acef5 100644 --- a/AmaiSosu.sln +++ b/AmaiSosu.sln @@ -5,35 +5,25 @@ ProjectSection(SolutionItems) = preProject README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii.API", "Atarashii\Atarashii.API\Atarashii.API.csproj", "{2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Atarashii", "Atarashii", "{E25ADF8A-11C3-435C-A767-E74F2335FEE8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii", "Atarashii\Atarashii\Atarashii.csproj", "{9665535F-B184-41F6-AC56-85DB14FD3B79}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AmaiSosu.GUI", "AmaiSosu.GUI\AmaiSosu.GUI.csproj", "{4AB5A870-7A84-4206-994B-EAB91473CD6C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AmaiSosu", "AmaiSosu\AmaiSosu.csproj", "{693BF44B-7BA3-461C-8CE1-D0F11FBE930D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Release|Any CPU.Build.0 = Release|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Release|Any CPU.Build.0 = Release|Any CPU {4AB5A870-7A84-4206-994B-EAB91473CD6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4AB5A870-7A84-4206-994B-EAB91473CD6C}.Debug|Any CPU.Build.0 = Debug|Any CPU {4AB5A870-7A84-4206-994B-EAB91473CD6C}.Release|Any CPU.ActiveCfg = Release|Any CPU {4AB5A870-7A84-4206-994B-EAB91473CD6C}.Release|Any CPU.Build.0 = Release|Any CPU + {693BF44B-7BA3-461C-8CE1-D0F11FBE930D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {693BF44B-7BA3-461C-8CE1-D0F11FBE930D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {693BF44B-7BA3-461C-8CE1-D0F11FBE930D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {693BF44B-7BA3-461C-8CE1-D0F11FBE930D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7} = {E25ADF8A-11C3-435C-A767-E74F2335FEE8} - {9665535F-B184-41F6-AC56-85DB14FD3B79} = {E25ADF8A-11C3-435C-A767-E74F2335FEE8} EndGlobalSection EndGlobal diff --git a/AmaiSosu/AmaiSosu.csproj b/AmaiSosu/AmaiSosu.csproj new file mode 100644 index 0000000..2729745 --- /dev/null +++ b/AmaiSosu/AmaiSosu.csproj @@ -0,0 +1,89 @@ + + + + + Debug + AnyCPU + {693BF44B-7BA3-461C-8CE1-D0F11FBE930D} + Library + Properties + AmaiSosu + AmaiSosu + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + FileNames.resx + + + + + + + + ResXFileCodeGenerator + FileNames.Designer.cs + + + Always + + + + + \ No newline at end of file diff --git a/Atarashii/Atarashii/Common/Exceptions/PackageException.cs b/AmaiSosu/Common/Exceptions/PackageException.cs similarity index 95% rename from Atarashii/Atarashii/Common/Exceptions/PackageException.cs rename to AmaiSosu/Common/Exceptions/PackageException.cs index ceb259e..5a20144 100644 --- a/Atarashii/Atarashii/Common/Exceptions/PackageException.cs +++ b/AmaiSosu/Common/Exceptions/PackageException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace Atarashii.Common.Exceptions +namespace AmaiSosu.Common.Exceptions { [Serializable] public class PackageException : Exception diff --git a/Atarashii/Atarashii/Common/Exceptions/VerifierException.cs b/AmaiSosu/Common/Exceptions/VerifierException.cs similarity index 95% rename from Atarashii/Atarashii/Common/Exceptions/VerifierException.cs rename to AmaiSosu/Common/Exceptions/VerifierException.cs index 2f4f4dc..801c648 100644 --- a/Atarashii/Atarashii/Common/Exceptions/VerifierException.cs +++ b/AmaiSosu/Common/Exceptions/VerifierException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace Atarashii.Common.Exceptions +namespace AmaiSosu.Common.Exceptions { [Serializable] public class VerifierException : Exception diff --git a/Atarashii/Atarashii/Common/IVerifiable.cs b/AmaiSosu/Common/IVerifiable.cs similarity index 91% rename from Atarashii/Atarashii/Common/IVerifiable.cs rename to AmaiSosu/Common/IVerifiable.cs index 38de127..aa8350e 100644 --- a/Atarashii/Atarashii/Common/IVerifiable.cs +++ b/AmaiSosu/Common/IVerifiable.cs @@ -1,4 +1,4 @@ -namespace Atarashii.Common +namespace AmaiSosu.Common { public interface IVerifiable { diff --git a/Atarashii/Atarashii/Common/Module.cs b/AmaiSosu/Common/Module.cs similarity index 99% rename from Atarashii/Atarashii/Common/Module.cs rename to AmaiSosu/Common/Module.cs index d24455b..1a98ec1 100644 --- a/Atarashii/Atarashii/Common/Module.cs +++ b/AmaiSosu/Common/Module.cs @@ -1,6 +1,6 @@ using System; -namespace Atarashii.Common +namespace AmaiSosu.Common { /// /// Abstract type representing an Atarashii module. diff --git a/Atarashii/Atarashii/Common/Output.cs b/AmaiSosu/Common/Output.cs similarity index 99% rename from Atarashii/Atarashii/Common/Output.cs rename to AmaiSosu/Common/Output.cs index 714f895..36b7e90 100644 --- a/Atarashii/Atarashii/Common/Output.cs +++ b/AmaiSosu/Common/Output.cs @@ -1,4 +1,4 @@ -namespace Atarashii.Common +namespace AmaiSosu.Common { /// /// Abstract representing an object that outputs inbound messages. diff --git a/Atarashii/Atarashii/Common/Package.cs b/AmaiSosu/Common/Package.cs similarity index 98% rename from Atarashii/Atarashii/Common/Package.cs rename to AmaiSosu/Common/Package.cs index cf8eaff..67efcfa 100644 --- a/Atarashii/Atarashii/Common/Package.cs +++ b/AmaiSosu/Common/Package.cs @@ -1,8 +1,8 @@ using System.IO; using System.IO.Compression; -using Atarashii.Common.Exceptions; +using AmaiSosu.Common.Exceptions; -namespace Atarashii.Common +namespace AmaiSosu.Common { /// /// Archive installer and verifier. diff --git a/Atarashii/Atarashii/Common/Verification.cs b/AmaiSosu/Common/Verification.cs similarity index 95% rename from Atarashii/Atarashii/Common/Verification.cs rename to AmaiSosu/Common/Verification.cs index afa62e1..fef32b8 100644 --- a/Atarashii/Atarashii/Common/Verification.cs +++ b/AmaiSosu/Common/Verification.cs @@ -1,6 +1,6 @@ using System; -namespace Atarashii.Common +namespace AmaiSosu.Common { public class Verification { diff --git a/Atarashii/Atarashii/Modules/Loader/Executable.cs b/AmaiSosu/Detection/Executable.cs similarity index 98% rename from Atarashii/Atarashii/Modules/Loader/Executable.cs rename to AmaiSosu/Detection/Executable.cs index d4a8dbf..8e3b981 100644 --- a/Atarashii/Atarashii/Modules/Loader/Executable.cs +++ b/AmaiSosu/Detection/Executable.cs @@ -1,8 +1,8 @@ using System.Diagnostics; using System.IO; -using Atarashii.Common; +using AmaiSosu.Common; -namespace Atarashii.Modules.Loader +namespace AmaiSosu.Detection { public class Executable : Module, IVerifiable { diff --git a/Atarashii/Atarashii/Modules/Loader/ExecutableFactory.cs b/AmaiSosu/Detection/ExecutableFactory.cs similarity index 98% rename from Atarashii/Atarashii/Modules/Loader/ExecutableFactory.cs rename to AmaiSosu/Detection/ExecutableFactory.cs index 8e4d6b3..4b3e27b 100644 --- a/Atarashii/Atarashii/Modules/Loader/ExecutableFactory.cs +++ b/AmaiSosu/Detection/ExecutableFactory.cs @@ -1,9 +1,9 @@ using System; using System.IO; -using Atarashii.Common; +using AmaiSosu.Common; using Microsoft.Win32; -namespace Atarashii.Modules.Loader +namespace AmaiSosu.Detection { public static class ExecutableFactory { diff --git a/Atarashii/Atarashii.API/Loader.cs b/AmaiSosu/Detection/Loader.cs similarity index 55% rename from Atarashii/Atarashii.API/Loader.cs rename to AmaiSosu/Detection/Loader.cs index 2524013..b80ef84 100644 --- a/Atarashii/Atarashii.API/Loader.cs +++ b/AmaiSosu/Detection/Loader.cs @@ -1,23 +1,10 @@ -using Atarashii.Modules.Loader; - -namespace Atarashii.API +namespace AmaiSosu.Detection { /// /// Static API for the Atarashii Loader Module. /// public static class Loader { - /// - /// Verifies and loads the inbound HCE executable if valid. - /// - /// - /// Absolute path to a valid HCE executable. - /// - public static void Load(string hceExecutable) - { - new Executable(hceExecutable).Load(); - } - /// /// Attempts to detect the path of the HCE executable on the file system. /// diff --git a/Atarashii/Atarashii/Modules/Loader/LoaderException.cs b/AmaiSosu/Detection/LoaderException.cs similarity index 96% rename from Atarashii/Atarashii/Modules/Loader/LoaderException.cs rename to AmaiSosu/Detection/LoaderException.cs index ec5d9f5..d10e739 100644 --- a/Atarashii/Atarashii/Modules/Loader/LoaderException.cs +++ b/AmaiSosu/Detection/LoaderException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace Atarashii.Modules.Loader +namespace AmaiSosu.Detection { [Serializable] public class LoaderException : Exception diff --git a/AmaiSosu.GUI/IO/Copy.cs b/AmaiSosu/Installation/IO/Copy.cs similarity index 97% rename from AmaiSosu.GUI/IO/Copy.cs rename to AmaiSosu/Installation/IO/Copy.cs index 6697fff..fe4ad30 100644 --- a/AmaiSosu.GUI/IO/Copy.cs +++ b/AmaiSosu/Installation/IO/Copy.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace AmaiSosu.GUI.IO +namespace AmaiSosu.Installation.IO { /// /// Copy a directory and its contents. Adapted from the MSDN CopyAll method. diff --git a/AmaiSosu.GUI/IO/Move.cs b/AmaiSosu/Installation/IO/Move.cs similarity index 97% rename from AmaiSosu.GUI/IO/Move.cs rename to AmaiSosu/Installation/IO/Move.cs index f752616..2541942 100644 --- a/AmaiSosu.GUI/IO/Move.cs +++ b/AmaiSosu/Installation/IO/Move.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace AmaiSosu.GUI.IO +namespace AmaiSosu.Installation.IO { /// /// Abstract representing a type that conducts data migration. diff --git a/AmaiSosu.GUI/IO/MoveDirectory.cs b/AmaiSosu/Installation/IO/MoveDirectory.cs similarity index 95% rename from AmaiSosu.GUI/IO/MoveDirectory.cs rename to AmaiSosu/Installation/IO/MoveDirectory.cs index 52689c2..4075fc0 100644 --- a/AmaiSosu.GUI/IO/MoveDirectory.cs +++ b/AmaiSosu/Installation/IO/MoveDirectory.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.IO; -namespace AmaiSosu.GUI.IO +namespace AmaiSosu.Installation.IO { /// public class MoveDirectory : Move diff --git a/AmaiSosu.GUI/IO/MoveFactory.cs b/AmaiSosu/Installation/IO/MoveFactory.cs similarity index 99% rename from AmaiSosu.GUI/IO/MoveFactory.cs rename to AmaiSosu/Installation/IO/MoveFactory.cs index 001c685..ecca619 100644 --- a/AmaiSosu.GUI/IO/MoveFactory.cs +++ b/AmaiSosu/Installation/IO/MoveFactory.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.IO; -namespace AmaiSosu.GUI.IO +namespace AmaiSosu.Installation.IO { /// /// Returns Move instances built using the inbound arguments. This factory is designed for backing up or diff --git a/AmaiSosu.GUI/IO/MoveFile.cs b/AmaiSosu/Installation/IO/MoveFile.cs similarity index 95% rename from AmaiSosu.GUI/IO/MoveFile.cs rename to AmaiSosu/Installation/IO/MoveFile.cs index a66e48a..f1dee66 100644 --- a/AmaiSosu.GUI/IO/MoveFile.cs +++ b/AmaiSosu/Installation/IO/MoveFile.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.IO; -namespace AmaiSosu.GUI.IO +namespace AmaiSosu.Installation.IO { /// public class MoveFile : Move diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Installer.cs b/AmaiSosu/Installation/Installer.cs similarity index 98% rename from Atarashii/Atarashii/Modules/OpenSauce/Installer.cs rename to AmaiSosu/Installation/Installer.cs index 6df5cae..2f57cc9 100644 --- a/Atarashii/Atarashii/Modules/OpenSauce/Installer.cs +++ b/AmaiSosu/Installation/Installer.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.IO; -using Atarashii.Common; +using AmaiSosu.Common; -namespace Atarashii.Modules.OpenSauce +namespace AmaiSosu.Installation { /// /// Type for installing OpenSauce to the file system. diff --git a/Atarashii/Atarashii/Modules/OpenSauce/InstallerFactory.cs b/AmaiSosu/Installation/InstallerFactory.cs similarity index 98% rename from Atarashii/Atarashii/Modules/OpenSauce/InstallerFactory.cs rename to AmaiSosu/Installation/InstallerFactory.cs index 0c68a46..49bcd24 100644 --- a/Atarashii/Atarashii/Modules/OpenSauce/InstallerFactory.cs +++ b/AmaiSosu/Installation/InstallerFactory.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.IO; -using Atarashii.Common; +using AmaiSosu.Common; -namespace Atarashii.Modules.OpenSauce +namespace AmaiSosu.Installation { public class InstallerFactory { diff --git a/Atarashii/Atarashii/Modules/OpenSauce/OpenSauceException.cs b/AmaiSosu/Installation/OpenSauceException.cs similarity index 95% rename from Atarashii/Atarashii/Modules/OpenSauce/OpenSauceException.cs rename to AmaiSosu/Installation/OpenSauceException.cs index b77902f..ed41a1e 100644 --- a/Atarashii/Atarashii/Modules/OpenSauce/OpenSauceException.cs +++ b/AmaiSosu/Installation/OpenSauceException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace Atarashii.Modules.OpenSauce +namespace AmaiSosu.Installation { [Serializable] public class OpenSauceException : Exception diff --git a/AmaiSosu/Main.cs b/AmaiSosu/Main.cs new file mode 100644 index 0000000..6efc785 --- /dev/null +++ b/AmaiSosu/Main.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AmaiSosu.Installation; +using AmaiSosu.Installation.IO; +using AmaiSosu.Resources; + +namespace AmaiSosu +{ + /// + /// Main AmaiSosu model. + /// + public sealed class Main + { + private readonly string _path; + + public Main(string path) + { + _path = path; + } + + /// + /// Invokes the installation procedure. + /// + public void Install() + { + var backupDir = Path.Combine(_path, FileNames.AmaiSosuBackup + '.' + Guid.NewGuid()); + + CommitBackups(backupDir); + new InstallerFactory(_path).Get().Install(); + FinishInstall(backupDir); + } + + /// + /// Conducts the OpenSauce & HAC2 data backup routines. + /// + /// + /// Backup directory to use for backing up OpenSauce & HAC2 data. + /// + private void CommitBackups(string backupDir) + { + Directory.CreateDirectory(backupDir); + + new List + { + MoveFactory.Get(MoveFactory.Type.BackupOsFiles, _path, backupDir), + MoveFactory.Get(MoveFactory.Type.BackupOsDirectories, _path, backupDir), + MoveFactory.Get(MoveFactory.Type.BackupHac2Files, _path, backupDir) + }.ForEach(move => move.Commit()); + } + + /// + /// Conducts optional installation finalisation routines. + /// - Restore the HCE shaders. + /// - Move the OpenSauce IDE. + /// - Backup directory cleanup. + /// + /// + private void FinishInstall(string backupDir) + { + // restore backed up HCE shaders + MoveFactory.Get(MoveFactory.Type.RestoreHceShaders, _path, backupDir).Commit(); + + var source = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), + FileNames.OpenSauceDeveloper, FileNames.OpenSauceDirectory, FileNames.OpenSauceIDE); + + var target = Path.Combine(_path, FileNames.OpenSauceIDE); + + Copy.All(new DirectoryInfo(source), new DirectoryInfo(target)); + Directory.Delete(source, true); + + // cleans up backup directory + if (!Directory.EnumerateFileSystemEntries(backupDir).Any()) Directory.Delete(backupDir); + } + } +} \ No newline at end of file diff --git a/Atarashii/Atarashii.API/Properties/AssemblyInfo.cs b/AmaiSosu/Properties/AssemblyInfo.cs similarity index 89% rename from Atarashii/Atarashii.API/Properties/AssemblyInfo.cs rename to AmaiSosu/Properties/AssemblyInfo.cs index 5cf8566..1fe9c24 100644 --- a/Atarashii/Atarashii.API/Properties/AssemblyInfo.cs +++ b/AmaiSosu/Properties/AssemblyInfo.cs @@ -4,11 +4,11 @@ // 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("Atarashii.API")] +[assembly: AssemblyTitle("AmaiSosu")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Atarashii.API")] +[assembly: AssemblyProduct("AmaiSosu")] [assembly: AssemblyCopyright("Copyright © 2018")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -19,7 +19,7 @@ [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("2C5D2B0E-FEA7-43F2-9960-215280CCA7B7")] +[assembly: Guid("693BF44B-7BA3-461C-8CE1-D0F11FBE930D")] // Version information for an assembly consists of the following four values: // diff --git a/AmaiSosu/Resources/Background.png b/AmaiSosu/Resources/Background.png new file mode 100644 index 0000000..ad38dc5 Binary files /dev/null and b/AmaiSosu/Resources/Background.png differ diff --git a/AmaiSosu/Resources/FileNames.Designer.cs b/AmaiSosu/Resources/FileNames.Designer.cs new file mode 100644 index 0000000..fdb15ef --- /dev/null +++ b/AmaiSosu/Resources/FileNames.Designer.cs @@ -0,0 +1,117 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace AmaiSosu.Resources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // 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", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class FileNames { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal FileNames() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AmaiSosu.Resources.FileNames", typeof(FileNames).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to AmaiSosu.Backup. + /// + internal static string AmaiSosuBackup { + get { + return ResourceManager.GetString("AmaiSosuBackup", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to AmaiSosu.GUI.Resources.Version.txt. + /// + internal static string AmaiSosuVersion { + get { + return ResourceManager.GetString("AmaiSosuVersion", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to haloce.exe. + /// + internal static string HceExecutable { + get { + return ResourceManager.GetString("HceExecutable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kornner Studios. + /// + internal static string OpenSauceDeveloper { + get { + return ResourceManager.GetString("OpenSauceDeveloper", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OpenSauce. + /// + internal static string OpenSauceDirectory { + get { + return ResourceManager.GetString("OpenSauceDirectory", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OpenSauceIDE. + /// + internal static string OpenSauceIDE { + get { + return ResourceManager.GetString("OpenSauceIDE", resourceCulture); + } + } + } +} diff --git a/AmaiSosu/Resources/FileNames.resx b/AmaiSosu/Resources/FileNames.resx new file mode 100644 index 0000000..d08a6a4 --- /dev/null +++ b/AmaiSosu/Resources/FileNames.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AmaiSosu.Backup + + + AmaiSosu.GUI.Resources.Version.txt + + + haloce.exe + + + Kornner Studios + + + OpenSauce + + + OpenSauceIDE + + \ No newline at end of file diff --git a/Atarashii/.gitignore b/Atarashii/.gitignore deleted file mode 100644 index 9370103..0000000 --- a/Atarashii/.gitignore +++ /dev/null @@ -1,336 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -REVISION diff --git a/Atarashii/Atarashii.API/Atarashii.API.csproj b/Atarashii/Atarashii.API/Atarashii.API.csproj deleted file mode 100644 index ecc04be..0000000 --- a/Atarashii/Atarashii.API/Atarashii.API.csproj +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Debug - AnyCPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7} - Library - Properties - Atarashii.API - Atarashii.API - v4.5 - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - {9665535f-b184-41f6-ac56-85db14fd3b79} - Atarashii - - - - - \ No newline at end of file diff --git a/Atarashii/Atarashii.API/OpenSauce.cs b/Atarashii/Atarashii.API/OpenSauce.cs deleted file mode 100644 index deca747..0000000 --- a/Atarashii/Atarashii.API/OpenSauce.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.IO; -using Atarashii.Modules.OpenSauce; - -namespace Atarashii.API -{ - /// - /// Static API for the Atarashii OpenSauce Module. - /// - public static class OpenSauce - { - /// - /// Retrieves a Configuration-type representation of the provided OpenSauce User configuration XML file. - /// - /// - /// Absolute path to the OpenSauce User configuration XML file. - /// - /// - /// Deserialised Configuration object representing the OpenSauce User configuration XML file. - /// - public static Configuration Parse(string xmlPath) - { - return ConfigurationFactory.GetFromXml(File.ReadAllText(xmlPath)); - } - - /// - /// Installs OpenSauce to the filesystem. - /// - /// - /// HCE installation directory. - /// This path is expected to contain a valid HCE executable. - /// - public static void Install(string hcePath) - { - new InstallerFactory(hcePath).Get().Install(); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.API/Profile.cs b/Atarashii/Atarashii.API/Profile.cs deleted file mode 100644 index 69d8677..0000000 --- a/Atarashii/Atarashii.API/Profile.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.IO; -using Atarashii.Modules.Profile; - -namespace Atarashii.API -{ - /// - /// Static API for the Atarashii Profile Module. - /// - public static class Profile - { - /// - /// Retrieves a Configuration-type representation of the provided blam.sav binary. - /// - /// - /// Absolute path to a HCE profile blam.sav binary. - /// - /// - /// Deserialised Configuration object representing the provided blam.sav binary. - /// - public static Configuration Parse(string blamPath) - { - return ConfigurationFactory.GetFromStream(File.Open(blamPath, FileMode.Open)); - } - - /// - /// Attempts to detect the currently used HCE profile on the filesystem. - /// - /// - /// Currently used HCE profile, assuming the environment is valid. - /// - public static string Detect() - { - return LastprofFactory.Get(LastprofFactory.Type.Detect).Parse(); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Assembly.cs b/Atarashii/Atarashii.CLI/Assembly.cs deleted file mode 100644 index 1419c1a..0000000 --- a/Atarashii/Atarashii.CLI/Assembly.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Diagnostics; - -namespace Atarashii.CLI -{ - public class Assembly - { - /// - /// File information of the calling assembly. - /// - private static readonly FileVersionInfo Info = - FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetEntryAssembly().Location); - - /// - /// Product name of the executable. - /// - public static string ProductName => Info.ProductName; - - /// - /// Company name of the executable. - /// - public static string CompanyName => Info.CompanyName; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Atarashii.CLI.csproj b/Atarashii/Atarashii.CLI/Atarashii.CLI.csproj deleted file mode 100644 index 40d3a4d..0000000 --- a/Atarashii/Atarashii.CLI/Atarashii.CLI.csproj +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Debug - AnyCPU - {4F18217D-AB00-49A9-B1D6-8125CD89BC51} - Exe - Properties - Atarashii.CLI - Atarashii.CLI - v4.5 - 512 - - - AnyCPU - true - full - false - ..\bin\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - icon.ico - - - - - - - - - - - - - - - - - - - - - - - - - {9665535f-b184-41f6-ac56-85db14fd3b79} - Atarashii - - - - - - - - - - - git rev-parse --short HEAD > "$(ProjectDir)\Resources\REVISION" - - - \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/CliOutput.cs b/Atarashii/Atarashii.CLI/CliOutput.cs deleted file mode 100644 index 8e9e536..0000000 --- a/Atarashii/Atarashii.CLI/CliOutput.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System; -using System.IO; -using Atarashii.CLI.Resources; -using Atarashii.Common; - -namespace Atarashii.CLI -{ - /// - /// - /// Type dealing with writing inbound messages to the console. - /// - public class CliOutput : Output - { - /// - /// - /// Decorates the inbound message and writes it to the stdout/stderr. - /// - public override void Write(Type type, string subject, string message) - { - var code = CodeFactory.Get(type); - - // write code - Console.ForegroundColor = ConsoleColor.DarkGray; - Console.Write(" [ "); - Console.ForegroundColor = code.Colour; - Console.Write(code.Value); - Console.ForegroundColor = ConsoleColor.DarkGray; - Console.Write(" ] "); - - // write subject - Console.Write("| "); - Console.Write(subject); - Console.Write("\t| "); - - // write message - Console.ForegroundColor = ConsoleColor.White; - Console.WriteLine(message); - } - - /// - /// Outputs the banner to the CLI. - /// - public void WriteBanner() - { - void WriteFromResource(Resource resource) - { - Console.WriteLine(string.Empty); - - using (var reader = new StringReader(resource.Text)) - { - string line; - while ((line = reader.ReadLine()) != null) Console.WriteLine(" " + line); - } - - Console.WriteLine(string.Empty); - } - - void ShowAsciiBanner() - { - Console.ForegroundColor = ConsoleColor.Magenta; - WriteFromResource(ResourceFactory.Get(ResourceFactory.Type.Banner)); - Console.WriteLine(string.Empty); - } - - void ShowProductName() - { - Console.ForegroundColor = ConsoleColor.DarkGray; - Console.Write(" Program : "); - - Console.ForegroundColor = ConsoleColor.Magenta; - Console.WriteLine(" " + Assembly.ProductName); - } - - void ShowCompanyName() - { - Console.ForegroundColor = ConsoleColor.DarkGray; - Console.Write(" Developers : "); - - Console.ForegroundColor = ConsoleColor.Magenta; - Console.WriteLine(" " + Assembly.CompanyName); - } - - void ShowGitRevision() - { - Console.ForegroundColor = ConsoleColor.DarkGray; - Console.Write(" Revision : "); - - Console.ForegroundColor = ConsoleColor.Magenta; - Console.WriteLine(" " + ResourceFactory.Get(ResourceFactory.Type.Revision).Text); - } - - void ShowProgramHelp() - { - Console.ForegroundColor = ConsoleColor.Cyan; - Console.WriteLine(" Usage: .\\Atarashii.CLI.exe "); - Console.WriteLine(" e.g. .\\Atarashii.CLI.exe loader load 'C:\\HCE.EXE'"); - - Console.ForegroundColor = ConsoleColor.Gray; - WriteFromResource(ResourceFactory.Get(ResourceFactory.Type.Usage)); - } - - ShowAsciiBanner(); - ShowProductName(); - ShowCompanyName(); - ShowGitRevision(); - ShowProgramHelp(); - } - - /// - /// Factory for building Code objects. - /// - private static class CodeFactory - { - /// - /// Returns a Code object based on the inbound Type. - /// - /// - /// Output type. - /// - /// - /// Code instance whose properties are determined by the inbound type. - /// - /// - /// Invalid Type enum value. - /// - public static Code Get(Type type) - { - switch (type) - { - case Type.Success: - return new Code(" OK ", ConsoleColor.Green); - case Type.Info: - return new Code("INFO", ConsoleColor.Cyan); - case Type.Warn: - return new Code("WARN", ConsoleColor.Yellow); - case Type.Error: - return new Code("HALT", ConsoleColor.Red); - case Type.Dump: - return new Code("DUMP", ConsoleColor.Magenta); - default: - throw new ArgumentOutOfRangeException(nameof(type), type, null); - } - } - } - - /// - /// Represents a decorative output code. - /// - private class Code - { - /// - /// - /// - /// - /// - /// - /// - /// - public Code(string value, ConsoleColor colour) - { - Value = value; - Colour = colour; - } - - /// - /// Code value. - /// - /// OK, INFO, HALT - /// - /// - public string Value { get; } - - /// - /// Colour of the code in the console. - /// - public ConsoleColor Colour { get; } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/Command.cs b/Atarashii/Atarashii.CLI/Commands/Command.cs deleted file mode 100644 index d1e4461..0000000 --- a/Atarashii/Atarashii.CLI/Commands/Command.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Linq; -using Atarashii.Common; - -namespace Atarashii.CLI.Commands -{ - /// - /// Abstract type representing an invokable Atarashii CLI command. - /// - public abstract class Command - { - protected readonly Output Output; - - protected Command(Output output) - { - Output = output; - } - - /// - /// Initialises the command logic. - /// - /// - /// Additional sub-commands or arguments for the invoked command. - /// - public abstract void Initialise(string[] commands); - - /// - /// Outputs a Type.Success message. - /// - /// - /// Message to write. - /// - protected void Pass(string message) - { - Output?.WriteSuccess(Assembly.ProductName, message); - } - - /// - /// Outputs a Type.Info message. - /// - /// - /// Message to write. - /// - protected void Info(string message) - { - Output?.WriteInfo(Assembly.ProductName, message); - } - - /// - /// Outputs the inbound error code and exits the application. - /// - /// - /// Message to output. - /// - /// - protected void Fail(string message, ExitType exitType) - { - Output?.WriteError(Assembly.ProductName, message); - Environment.Exit((int) exitType); - } - - /// - /// Outputs a Type.Dump message. - /// - /// - /// Message to write. - /// - protected void Dump(string message) - { - Output?.WriteDump(Assembly.ProductName, message); - } - - /// - /// Exits the program if the inbound arguments are empty. - /// - /// - /// Arguments to check the length of. - /// - public void ExitIfNone(string[] args) - { - if (args.Length == 0) Fail("Not enough or commands arguments provided.", ExitType.NotEnoughArguments); - } - - /// - /// Removes the command (first argument) from an arguments array. - /// - /// - /// Arguments array to remove the command from. - /// - /// - /// Arguments array without the command. - /// - public static string[] GetArguments(string[] command) - { - return command.Skip(1).ToArray(); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/CommandFactory.cs b/Atarashii/Atarashii.CLI/Commands/CommandFactory.cs deleted file mode 100644 index f9a3e6d..0000000 --- a/Atarashii/Atarashii.CLI/Commands/CommandFactory.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Atarashii.Common; - -namespace Atarashii.CLI.Commands -{ - public class CommandFactory - { - public static Command Get(string command, Output output) - { - switch (command) - { - case nameof(Loader): - return new Loader(output); - case nameof(OpenSauce): - return new OpenSauce(output); - case nameof(Profile): - return new Profile(output); - default: - throw new CommandFactoryException("Invalid command given."); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/CommandFactoryException.cs b/Atarashii/Atarashii.CLI/Commands/CommandFactoryException.cs deleted file mode 100644 index c194c71..0000000 --- a/Atarashii/Atarashii.CLI/Commands/CommandFactoryException.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Runtime.Serialization; - -namespace Atarashii.CLI.Commands -{ - [Serializable] - public class CommandFactoryException : Exception - { - // - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - // - - public CommandFactoryException() - { - } - - public CommandFactoryException(string message) : base(message) - { - } - - public CommandFactoryException(string message, Exception inner) : base(message, inner) - { - } - - protected CommandFactoryException( - SerializationInfo info, - StreamingContext context) : base(info, context) - { - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/Loader.cs b/Atarashii/Atarashii.CLI/Commands/Loader.cs deleted file mode 100644 index c92a442..0000000 --- a/Atarashii/Atarashii.CLI/Commands/Loader.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.IO; -using Atarashii.Common; -using Atarashii.Modules.Loader; - -namespace Atarashii.CLI.Commands -{ - /// - /// - /// CLI front-end for loading a HCE executable. - /// - internal class Loader : Command - { - public Loader(Output output) : base(output) - { - } - - public override void Initialise(string[] commands) - { - ExitIfNone(commands); - var args = GetArguments(commands); - - switch (commands[0]) - { - case nameof(Load): - Load(args); - break; - case nameof(Detect): - Detect(); - break; - default: - Fail("Invoked an invalid Load command.", ExitType.IncorrectArguments); - break; - } - } - - private void Load(string[] args) - { - Info("Invoked the Loader.Load command."); - ExitIfNone(args); - - try - { - var executable = new Executable(args[0], Output); - executable.Load(); - } - catch (LoaderException e) - { - Fail(e.Message, ExitType.Exception); - } - catch (Exception e) - { - Fail(e.Message, ExitType.Exception); - } - } - - private void Detect() - { - Info("Invoked the Loader.Detect command."); - Info("Attempting to detect executable path."); - - try - { - Console.WriteLine(ExecutableFactory.Get(ExecutableFactory.Type.Detect, Output).Path); - } - catch (FileNotFoundException e) - { - Fail(e.Message, ExitType.Exception); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/OpenSauce.cs b/Atarashii/Atarashii.CLI/Commands/OpenSauce.cs deleted file mode 100644 index d9c404e..0000000 --- a/Atarashii/Atarashii.CLI/Commands/OpenSauce.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.IO; -using Atarashii.Common; -using Atarashii.Modules.OpenSauce; - -namespace Atarashii.CLI.Commands -{ - /// - internal class OpenSauce : Command - { - public OpenSauce(Output output) : base(output) - { - } - - public override void Initialise(string[] commands) - { - ExitIfNone(commands); - var args = GetArguments(commands); - - switch (commands[0]) - { - case nameof(Install): - Install(args); - break; - case nameof(Dump): - Dump(args); - break; - default: - Fail("Invoked an invalid OpenSauce command.", ExitType.IncorrectArguments); - break; - } - } - - private void Install(string[] args) - { - Info("Invoked the OpenSauce.Install command."); - ExitIfNone(args); - - try - { - new InstallerFactory(args[0], Output).Get().Install(); - } - catch (OpenSauceException e) - { - Fail(e.Message, ExitType.Exception); - } - catch (Exception e) - { - Fail(e.Message, ExitType.Exception); - } - } - - private void Dump(string[] args) - { - Info("Invoked the OpenSauce.Parse command."); - ExitIfNone(args); - - try - { - Console.WriteLine(); - using (var reader = new StringReader(File.ReadAllText(args[0]))) - { - string line; - while ((line = reader.ReadLine()) != null) Dump(line); - } - - Console.WriteLine(); - Pass("Successfully dumped data from the provided OpenSauce XML file."); - } - catch (Exception e) - { - Fail(e.Message, ExitType.Exception); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Commands/Profile.cs b/Atarashii/Atarashii.CLI/Commands/Profile.cs deleted file mode 100644 index 8cc3b35..0000000 --- a/Atarashii/Atarashii.CLI/Commands/Profile.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.IO; -using Atarashii.Common; -using Atarashii.Modules.Profile; - -namespace Atarashii.CLI.Commands -{ - /// - /// - /// CLI front-end for loading a lastprof.txt file. - /// - internal class Profile : Command - { - public Profile(Output output) : base(output) - { - } - - public override void Initialise(string[] commands) - { - ExitIfNone(commands); - var args = GetArguments(commands); - - switch (commands[0]) - { - case nameof(Resolve): - Resolve(args); - break; - case nameof(Detect): - Detect(); - break; - case nameof(Parse): - Parse(args); - break; - default: - Fail("Invoked an invalid Profile command.", ExitType.IncorrectArguments); - break; - } - } - - private void Detect() - { - Info("Invoked the Profile.Detect command."); - - try - { - var result = LastprofFactory.Get(LastprofFactory.Type.Detect, Output); - Console.WriteLine(result.Parse()); - } - catch (FileNotFoundException e) - { - Fail(e.Message, ExitType.Exception); - } - catch (ProfileException e) - { - Fail(e.Message, ExitType.Exception); - } - } - - private void Resolve(string[] args) - { - Info("Invoked the Profile.Resolve command."); - ExitIfNone(args); - - try - { - Console.WriteLine(new Lastprof(File.ReadAllText(args[0])).Parse()); - } - catch (ProfileException e) - { - Fail(e.Message, ExitType.Exception); - } - } - - private void Parse(string[] args) - { - Info("Invoked the Profile.Parse command."); - ExitIfNone(args); - - try - { - var configuration = ConfigurationFactory.GetFromStream(File.Open(args[0], FileMode.Open)); - Console.WriteLine(); - Dump("+ Profile ------------------------------------------------------"); - Dump($" - Name : {configuration.Name.Value}"); - Dump($" - Colour : {configuration.Colour.Value.ToString()}"); - Dump("+ Mouse --------------------------------------------------------"); - Dump(" + Sensitivity"); - Dump($" - Horizontal : {configuration.Mouse.Sensitivity.Horizontal}"); - Dump($" - Vertical : {configuration.Mouse.Sensitivity.Vertical}"); - Dump($" - InvertVerticalAxis : {configuration.Mouse.InvertVerticalAxis}"); - Dump("+ Audio --------------------------------------------------------"); - Dump(" + Volume"); - Dump($" - Master : {configuration.Audio.Volume.Master}"); - Dump($" - Effects : {configuration.Audio.Volume.Effects}"); - Dump($" - Music : {configuration.Audio.Volume.Music}"); - Dump($" - Quality : {configuration.Audio.Quality.Value.ToString()}"); - Dump($" - Variety : {configuration.Audio.Variety.Value.ToString()}"); - Dump("+ Video --------------------------------------------------------"); - Dump(" + Resolution"); - Dump($" - Width : {configuration.Video.Resolution.Width}"); - Dump($" - Height : {configuration.Video.Resolution.Height}"); - Dump($" - RefreshRate : {configuration.Video.RefreshRate.Value}"); - Dump($" - FrameRate : {configuration.Video.FrameRate.Value}"); - Dump(" + Effects"); - Dump($" - Specular : {configuration.Video.Effects.Specular}"); - Dump($" - Shadows : {configuration.Video.Effects.Shadows}"); - Dump($" - Decals : {configuration.Video.Effects.Decals}"); - Dump($" - Particles : {configuration.Video.Particles.Value.ToString()}"); - Dump($" - Quality : {configuration.Video.Quality.Value.ToString()}"); - Dump("+ Network -------------------------------------------------------"); - Dump($" - Connection : {configuration.Network.Connection.Value}"); - Dump(" + Port"); - Dump($" - Server : {configuration.Network.Port.Server}"); - Dump($" - Client : {configuration.Network.Port.Client}"); - Console.WriteLine(); - Pass("Successfully parsed data from the provided blam.sav binary."); - } - catch (Exception e) - { - Fail(e.Message, ExitType.Exception); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/ExitType.cs b/Atarashii/Atarashii.CLI/ExitType.cs deleted file mode 100644 index 9b39fab..0000000 --- a/Atarashii/Atarashii.CLI/ExitType.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Atarashii.CLI -{ - /// - /// Various - /// - public enum ExitType - { - /// - /// Invoked command has been executed successfully. - /// - Success = 0, - - /// - /// Not enough arguments have been provided for the specified command. - /// - NotEnoughArguments, - - /// - /// Incorrect arguments have been provided to the specified command. - /// - IncorrectArguments, - - /// - /// An exception has occurred when executing the invoked command. - /// - Exception - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Program.cs b/Atarashii/Atarashii.CLI/Program.cs deleted file mode 100644 index d932c26..0000000 --- a/Atarashii/Atarashii.CLI/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using Atarashii.CLI.Commands; -using Atarashii.Common; - -namespace Atarashii.CLI -{ - internal class Program - { - /// - /// Main entry to the Atarashii CLI. - /// - /// - /// The command to invoke. - /// - public static void Main(string[] commands) - { - var output = new CliOutput(); - output.WriteBanner(); - - try - { - CommandFactory.Get(commands[0], output).Initialise(Command.GetArguments(commands)); - Exit(ExitType.Success); - } - catch (IndexOutOfRangeException) - { - Exit(ExitType.Exception); - } - catch (CommandFactoryException e) - { - output.Write(Output.Type.Error, Assembly.ProductName, e.Message); - Exit(ExitType.Exception); - } - } - - /// - /// Wrapper for the Environment Exit method. - /// - /// - /// Exit type, which will be passed to the Environment Exit method as an integer. - /// - private static void Exit(ExitType exitType) - { - Environment.Exit((int) exitType); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Properties/AssemblyInfo.cs b/Atarashii/Atarashii.CLI/Properties/AssemblyInfo.cs deleted file mode 100644 index a3044d2..0000000 --- a/Atarashii/Atarashii.CLI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -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("Atarashii.CLI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("yumiris")] -[assembly: AssemblyProduct("Atarashii.CLI")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[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("4F18217D-AB00-49A9-B1D6-8125CD89BC51")] - -// 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")] \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Resources/BANNER b/Atarashii/Atarashii.CLI/Resources/BANNER deleted file mode 100644 index c1bdc0b..0000000 --- a/Atarashii/Atarashii.CLI/Resources/BANNER +++ /dev/null @@ -1,5 +0,0 @@ - _ _ _ _ - __ _| |_ __ _ _ __ __ _ ___| |__ (_|_) - / _` | __/ _` | '__/ _` / __| '_ \| | | -| (_| | || (_| | | | (_| \__ \ | | | | | - \__,_|\__\__,_|_| \__,_|___/_| |_|_|_| \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Resources/Resource.cs b/Atarashii/Atarashii.CLI/Resources/Resource.cs deleted file mode 100644 index 89088c1..0000000 --- a/Atarashii/Atarashii.CLI/Resources/Resource.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.IO; - -namespace Atarashii.CLI.Resources -{ - public class Resource - { - private readonly string _name; - - /// - /// Fully qualified embedded resource name. - /// - public Resource(string name) - { - _name = name; - } - - /// - /// Reads data from an embedded resource. - /// - /// - /// Data read from the embedded resource. - /// - public string Text - { - get - { - using (var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(_name)) - using (var reader = new StreamReader(stream)) - { - return reader.ReadToEnd(); - } - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Resources/ResourceFactory.cs b/Atarashii/Atarashii.CLI/Resources/ResourceFactory.cs deleted file mode 100644 index 599ec64..0000000 --- a/Atarashii/Atarashii.CLI/Resources/ResourceFactory.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; - -namespace Atarashii.CLI.Resources -{ - /// - /// Instantiates Resource types. - /// - public static class ResourceFactory - { - public enum Type - { - /// - /// Representation of the CLI ASCII banner resource. - /// - Banner, - - /// - /// Representation of the Git repository revision. - /// - Revision, - - /// - /// Representation of the CLI usage table resource. - /// - Usage - } - - /// - /// Name of the text file containing the banner ASCII art. - /// - private const string BannerResourceName = "BANNER"; - - /// - /// Name of the text file containing the Git revision. - /// - private const string RevisionResourceName = "REVISION"; - - /// - /// Name of the text file containing the usage table. - /// - private const string UsageResourceName = "USAGE"; - - /// - /// The location of the resource files. Conventionally, it's the namespace of the Resource type. - /// - private static readonly string Location = typeof(Resource).Namespace; - - /// - /// Returns a Resource instance based on the inbound type. - /// - public static Resource Get(Type type) - { - switch (type) - { - case Type.Banner: - return new Resource($"{Location}.{BannerResourceName}"); - case Type.Revision: - return new Resource($"{Location}.{RevisionResourceName}"); - case Type.Usage: - return new Resource($"{Location}.{UsageResourceName}"); - default: - throw new ArgumentOutOfRangeException(nameof(type), type, null); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/Resources/USAGE b/Atarashii/Atarashii.CLI/Resources/USAGE deleted file mode 100644 index f996319..0000000 --- a/Atarashii/Atarashii.CLI/Resources/USAGE +++ /dev/null @@ -1,7 +0,0 @@ -| Commands | Description | -| -------------------------------- | -------------------------------- | -| loader load | Loads the given HCE executable. | -| loader detect | Attempts to get the HCE path. | -| profile resolve | Retrieves the user profile name. | -| profile parse | Outputs HCE profile config data. | -| opensauce install | Installs OpenSauce UI & libs. | \ No newline at end of file diff --git a/Atarashii/Atarashii.CLI/icon.ico b/Atarashii/Atarashii.CLI/icon.ico deleted file mode 100644 index 6e86d6c..0000000 Binary files a/Atarashii/Atarashii.CLI/icon.ico and /dev/null differ diff --git a/Atarashii/Atarashii.Docs/blam-sav.md b/Atarashii/Atarashii.Docs/blam-sav.md deleted file mode 100644 index e8e47a9..0000000 --- a/Atarashii/Atarashii.Docs/blam-sav.md +++ /dev/null @@ -1,25 +0,0 @@ -# HCE Profile Settings - -| Property | Type | Offset | Length | Constraints | -| ---------------------------- | -------------- | ------ | ------ | ----------------------------------- | -| Name | UTF-16 string | 0x0002 | 22 | Max. 0xB chars | -| Colour | Unsigned byte | 0x011A | 1 | Range 0x00 - 0x12 (white is 0xFF) | -| Mouse.Sensitivity.Horizontal | Unsigned byte | 0x0954 | 1 | Range 0x00 - 0x0A | -| Mouse.Sensitivity.Vertical | Unsigned byte | 0x0955 | 1 | Range 0x00 - 0x0A | -| Mouse.InvertVerticalAxis | Boolean | 0x0955 | 1 | 1/0 | -| Audio.Volume.Master | Unsigned byte | 0x0B78 | 1 | Range 0x00 - 0x0A | -| Audio.Volume.Effects | Unsigned byte | 0x0B79 | 1 | Range 0x00 - 0x0A | -| Audio.Volume.Music | Unsigned byte | 0x0B7A | 1 | Range 0x00 - 0x0A | -| Audio.Quality | Unsigned byte | 0x0B7D | 1 | Range 0x00 - 0x02 | -| Audio.Variety | Unsigned byte | 0x0B7F | 1 | Range 0x00 - 0x02 | -| Video.Resolution.Width | Unsigned short | 0x0A68 | 2 | Library imposes range 0x1 - 0x7FFF | -| Video.Resolution.Height | Unsigned short | 0x0A6A | 2 | Library imposes range 0x1 - 0x7FFF | -| Video.FrameRate | Unsigned short | 0x0A6F | 1 | Range 0x00 - 0x02 | -| Video.Effects.Specular | Boolean | 0x0A70 | 1 | 1/0 | -| Video.Effects.Shadows | Boolean | 0x0A71 | 1 | 1/0 | -| Video.Effects.Decals | Boolean | 0x0A72 | 1 | 1/0 | -| Video.Particles | Unsigned byte | 0x0A73 | 1 | Range 0x00 - 0x02 | -| Video.Quality | Unsigned byte | 0x0A74 | 1 | Range 0x00 - 0x02 | -| Network.Connection | Unsigned byte | 0x0FC0 | 1 | Range 0x00 - 0x04 | -| Network.Port.Server | Unsigned short | 0x1002 | 1 | Library imposes range 0x1 - 0x10000 | -| Network.Port.Client | Unsigned short | 0x1004 | 1 | Library imposes range 0x1 - 0x10000 | \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/Atarashii.Tests.csproj b/Atarashii/Atarashii.Tests/Atarashii.Tests.csproj deleted file mode 100644 index e964bce..0000000 --- a/Atarashii/Atarashii.Tests/Atarashii.Tests.csproj +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - Debug - AnyCPU - {E69FBF55-9518-4A16-85C6-F373BC14DEB5} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - Atarashii.Tests - Atarashii.Tests - v4.5 - 512 - - - AnyCPU - true - full - false - ..\bin - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\NUnit.3.11.0\lib\net45\nunit.framework.dll - True - - - - - - - - - - - - - - - - - - - - {9665535f-b184-41f6-ac56-85db14fd3b79} - Atarashii - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}. - - - - - \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/LastprofTests.cs b/Atarashii/Atarashii.Tests/LastprofTests.cs deleted file mode 100644 index d5400f9..0000000 --- a/Atarashii/Atarashii.Tests/LastprofTests.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Atarashii.Modules.Profile; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class LastprofTests - { - [Test] - public void ParseTest_CorrectProfileName_True() - { - var lastprof = new Lastprof(@"E:\roman\Documents\My Games\Halo CE\savegames\Miris\ lam.sav "); - Assert.That(lastprof.Parse(), Is.EqualTo("Miris")); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/LoaderTests.cs b/Atarashii/Atarashii.Tests/LoaderTests.cs deleted file mode 100644 index b06fab2..0000000 --- a/Atarashii/Atarashii.Tests/LoaderTests.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.IO; -using Atarashii.Modules.Loader; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class LoaderTests - { - [Test] - public void LoadInvalidExecutable_ThrowsException_True() - { - var exeName = $"{new Guid().ToString()}.exe"; - var executable = new Executable(exeName); - - File.WriteAllText(exeName, "Once upon a time, in Gensokyo..."); - - var ex = Assert.Throws(() => executable.Load()); - Assert.That(ex.Message, Is.EqualTo("The specified executable is invalid in size.")); - - File.Delete(exeName); - } - - [Test] - public void LoadNonExistentExecutable_ThrowsException_True() - { - var exeName = $"{new Guid().ToString()}.exe"; - var executable = new Executable(exeName); - - var ex = Assert.Throws(() => executable.Load()); - Assert.That(ex.Message, Is.EqualTo("The specified executable was not found.")); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/OpenSauceInstallerTests.cs b/Atarashii/Atarashii.Tests/OpenSauceInstallerTests.cs deleted file mode 100644 index 2fe5671..0000000 --- a/Atarashii/Atarashii.Tests/OpenSauceInstallerTests.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using Atarashii.Common; -using Atarashii.Modules.Loader; -using Atarashii.Modules.OpenSauce; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class OpenSauceInstallerTests - { - private readonly List _packages = new List - { - new Package(new Guid().ToString(), new Guid().ToString(), new Guid().ToString()) - }; - - [Test] - public void InstallNonExistentPackage_ThrowsException() - { - var hcePath = new Guid().ToString(); - var hceFile = Path.Combine(hcePath, Executable.Name); - - Directory.CreateDirectory(hcePath); - File.WriteAllBytes(hceFile, new byte[256]); - - var installer = new Installer(hcePath, _packages); - - var ex = Assert.Throws(() => installer.Install()); - Assert.That(ex.Message, - Is.EqualTo("Cannot install specified package. Package archive does not exist.")); - - File.Delete(hceFile); - Directory.Delete(hcePath); - } - - [Test] - public void InstallToInvalidHceDirectory_ThrowsException() - { - var hcePath = new Guid().ToString(); - var installer = new Installer(hcePath, _packages); - - Directory.CreateDirectory(hcePath); - - var ex = Assert.Throws(() => installer.Install()); - Assert.That(ex.Message, Is.EqualTo("Invalid target HCE directory path for OpenSauce installation.")); - - Directory.Delete(hcePath); - } - - [Test] - public void InstallToNonExistentDirectory_ThrowsException() - { - var fakePath = new Guid().ToString(); - var installer = new Installer(fakePath, _packages); - - var ex = Assert.Throws(() => installer.Install()); - Assert.That(ex.Message, - Is.EqualTo("Target directory for OpenSauce installation does not exist.")); - } - - [Test] - public void VerifyInvalidHceDirectory_ReturnsFalse() - { - var hcePath = new Guid().ToString(); - var installer = new Installer(hcePath, _packages); - - Directory.CreateDirectory(hcePath); - Assert.IsFalse(installer.Verify().IsValid); - Directory.Delete(hcePath); - } - - [Test] - public void VerifyNonExistentDirectory_ReturnsFalse() - { - var fakePath = new Guid().ToString(); - var installer = new Installer(fakePath, _packages); - Assert.IsFalse(installer.Verify().IsValid); - } - - [Test] - public void VerifyNonExistentPackage_ReturnsFalse() - { - var hcePath = new Guid().ToString(); - var hceFile = Path.Combine(hcePath, Executable.Name); - - Directory.CreateDirectory(hcePath); - File.WriteAllBytes(hceFile, new byte[256]); - - var installer = new Installer(hcePath, _packages); - Assert.IsFalse(installer.Verify().IsValid); - - File.Delete(hceFile); - Directory.Delete(hcePath); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/OpenSauceTests.cs b/Atarashii/Atarashii.Tests/OpenSauceTests.cs deleted file mode 100644 index e7b645f..0000000 --- a/Atarashii/Atarashii.Tests/OpenSauceTests.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Atarashii.Modules.OpenSauce; -using Atarashii.Modules.OpenSauce.Options; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class OpenSauceTests - { - private readonly string _result = new Configuration().ToXml(); - - [Test] - public void FromXml_PropertyValueIsCorrect_True() - { - var object01 = new Configuration - { - Camera = new Camera - { - FieldOfView = 128.64 - } - }; - - var object02 = ConfigurationFactory.GetFromXml(object01.ToXml()); - Assert.AreEqual(object02.Camera.FieldOfView, object01.Camera.FieldOfView); - } - - [Test] - public void ToXml_BooleansAreCorrect_True() - { - StringAssert.Contains("true", _result); - } - - [Test] - public void ToXml_NumbersAreCorrect_True() - { - StringAssert.Contains("70", _result); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/PackageTests.cs b/Atarashii/Atarashii.Tests/PackageTests.cs deleted file mode 100644 index 56582a6..0000000 --- a/Atarashii/Atarashii.Tests/PackageTests.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.IO; -using Atarashii.Common; -using Atarashii.Common.Exceptions; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class PackageTests - { - [Test] - public void DirectoryNotFound_ThrowsException() - { - var package = new Package(new Guid().ToString(), "Non-existent package!", "Directory that does not exist!"); - File.WriteAllBytes(package.ArchiveName, new byte[256]); - - var ex = Assert.Throws(() => package.Install()); - Assert.That(ex.Message, Is.EqualTo("Cannot install specified package. Destination does not exist.")); - - File.Delete(package.ArchiveName); - } - - [Test] - public void PackageNotFound_ThrowsException() - { - var package = new Package(new Guid().ToString(), "Non-existent package!", string.Empty); - - var ex = Assert.Throws(() => package.Install()); - Assert.That(ex.Message, Is.EqualTo("Cannot install specified package. Package archive does not exist.")); - } - - [Test] - public void VerifyDirectoryNotFound_ReturnsFalse() - { - var package = new Package(new Guid().ToString(), "Non-existent package!", "Directory that does not exist!"); - File.WriteAllBytes(package.ArchiveName, new byte[256]); - Assert.IsFalse(package.Verify().IsValid); - File.Delete(package.ArchiveName); - } - - [Test] - public void VerifyPackageNotFound_ReturnsFalse() - { - var package = new Package(new Guid().ToString(), "Non-existent package!", string.Empty); - Assert.IsFalse(package.Verify().IsValid); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/ProfileTestData.cs b/Atarashii/Atarashii.Tests/ProfileTestData.cs deleted file mode 100644 index 3b6aa57..0000000 --- a/Atarashii/Atarashii.Tests/ProfileTestData.cs +++ /dev/null @@ -1,692 +0,0 @@ -namespace Atarashii.Tests -{ - public class ProfileTestData - { - public static readonly byte[] blam = - { - 0x09, 0x00, 0x4E, 0x00, 0x65, 0x00, 0x77, 0x00, 0x30, 0x00, 0x30, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0C, 0x00, - 0x1B, 0x00, 0x1C, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0x12, 0x00, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0x03, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x10, 0x00, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x04, 0x00, 0x01, 0x00, - 0x11, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0x08, 0x00, 0xFF, 0x7F, 0x0B, 0x00, 0x0E, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0x0A, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0x07, 0x00, - 0x0B, 0x00, 0x06, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0x1A, 0x00, 0x19, 0x00, 0x17, 0x00, 0x18, 0x00, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0xFC, 0x04, 0x41, 0x3E, - 0xFC, 0x04, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x43, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x03, 0x58, 0x02, 0x3C, 0x00, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x06, 0x00, - 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x61, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x08, 0xFF, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC9, 0x5C, 0x26, 0xE2 - }; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/ProfileTests.cs b/Atarashii/Atarashii.Tests/ProfileTests.cs deleted file mode 100644 index 53c9962..0000000 --- a/Atarashii/Atarashii.Tests/ProfileTests.cs +++ /dev/null @@ -1,142 +0,0 @@ -using System; -using System.IO; -using Atarashii.Modules.Profile; -using Atarashii.Modules.Profile.Options; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class ProfileTests - { - private readonly Configuration _configuration = - ConfigurationFactory.GetFromStream(new MemoryStream(ProfileTestData.blam)); - - [Test] - public void InvalidName_ThrowsException_True() - { - var configuration = new Configuration(); - - var ex = Assert.Throws(() => configuration.Name.Value = "Hello from Gensokyo"); - StringAssert.Contains("Assigned name value is greater than 11 characters.", ex.Message); - } - - [Test] - public void InvalidResolution_ThrowsException_True() - { - var configuration = new Configuration(); - - var ex = Assert.Throws(() => configuration.Video.Resolution.Width = 0); - StringAssert.Contains("Assigned dimension value is either 0 or over 32767.", ex.Message); - } - - [Test] - public void InvalidSensitivity_ThrowsException_True() - { - var configuration = new Configuration(); - - var ex = Assert.Throws(() => configuration.Mouse.Sensitivity.Horizontal = 11); - StringAssert.Contains("Assigned sensitivity value is less than 1 or greater than 10.", ex.Message); - } - - [Test] - public void InvalidVolume_ThrowsException_True() - { - var configuration = new Configuration(); - - var ex = Assert.Throws(() => configuration.Audio.Volume.Music = 15); - StringAssert.Contains("Assigned volume value is greater than 10.", ex.Message); - } - - [Test] - public void ProfileParsing_AudioQualityCorrect_True() - { - Assert.That(_configuration.Audio.Quality.Value, Is.EqualTo(Quality.Type.Medium)); - } - - [Test] - public void ProfileParsing_AudioVarietyIsCorrect_True() - { - Assert.That(_configuration.Audio.Variety.Value, Is.EqualTo(Quality.Type.High)); - } - - [Test] - public void ProfileParsing_AudioVolumeIsCorrect_True() - { - Assert.That(_configuration.Audio.Volume.Master, Is.EqualTo(10)); - Assert.That(_configuration.Audio.Volume.Effects, Is.EqualTo(10)); - Assert.That(_configuration.Audio.Volume.Music, Is.EqualTo(6)); - } - - [Test] - public void ProfileParsing_ColourIsCorrect_True() - { - Assert.That(_configuration.Colour.Value, Is.EqualTo(Colour.Type.White)); - } - - [Test] - public void ProfileParsing_MouseAxisInversionIsCorrect_True() - { - Assert.That(_configuration.Mouse.InvertVerticalAxis, Is.EqualTo(false)); - } - - [Test] - public void ProfileParsing_MouseSensitivityIsCorrect_True() - { - Assert.That(_configuration.Mouse.Sensitivity.Horizontal, Is.EqualTo(3)); - Assert.That(_configuration.Mouse.Sensitivity.Vertical, Is.EqualTo(3)); - } - - [Test] - public void ProfileParsing_NameIsCorrect_True() - { - Assert.That(_configuration.Name.Value, Is.EqualTo("New001")); - } - - [Test] - public void ProfileParsing_NetworkPortsAreCorrect_True() - { - Assert.That(_configuration.Network.Port.Server, Is.EqualTo(2302)); - Assert.That(_configuration.Network.Port.Client, Is.EqualTo(2303)); - } - - [Test] - public void ProfileParsing_NetworkTypeIsCorrect_True() - { - Assert.That(_configuration.Network.Connection.Value, Is.EqualTo(Connection.Type.DslLow)); - } - - [Test] - public void ProfileParsing_VideoEffectsAreCorrect_True() - { - Assert.That(_configuration.Video.Effects.Specular, Is.EqualTo(true)); - Assert.That(_configuration.Video.Effects.Shadows, Is.EqualTo(true)); - Assert.That(_configuration.Video.Effects.Decals, Is.EqualTo(true)); - } - - [Test] - public void ProfileParsing_VideoFrameRateIsCorrect_True() - { - Assert.That(_configuration.Video.FrameRate.Value, Is.EqualTo(FrameRate.Type.Fps30)); - } - - [Test] - public void ProfileParsing_VideoParticlesIsCorrect_True() - { - Assert.That(_configuration.Video.Particles.Value, Is.EqualTo(Particles.Type.High)); - } - - [Test] - public void ProfileParsing_VideoQualityIsCorrect_True() - { - Assert.That(_configuration.Video.Particles.Value, Is.EqualTo(Particles.Type.High)); - } - - [Test] - public void ProfileParsing_VideoResolutionIsCorrect_True() - { - Assert.That(_configuration.Video.Resolution.Width, Is.EqualTo(800)); - Assert.That(_configuration.Video.Resolution.Height, Is.EqualTo(600)); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/Properties/AssemblyInfo.cs b/Atarashii/Atarashii.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index 59d8777..0000000 --- a/Atarashii/Atarashii.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -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("Atarashii.Tests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("yumiris")] -[assembly: AssemblyProduct("Atarashii.Tests")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[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("E69FBF55-9518-4A16-85C6-F373BC14DEB5")] - -// 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")] \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/VerifierTests.cs b/Atarashii/Atarashii.Tests/VerifierTests.cs deleted file mode 100644 index fca57f9..0000000 --- a/Atarashii/Atarashii.Tests/VerifierTests.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.IO; -using Atarashii.Modules.Loader; -using NUnit.Framework; - -namespace Atarashii.Tests -{ - [TestFixture] - public class VerifierTests - { - [Test] - public void VerifyValidExecutable_ValueIsTrue_True() - { - var exeName = $"{new Guid().ToString()}.exe"; - var executable = new Executable(exeName); - - File.WriteAllBytes(exeName, new byte[0x24B000]); - Assert.IsTrue(executable.Verify().IsValid); - File.Delete(exeName); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii.Tests/packages.config b/Atarashii/Atarashii.Tests/packages.config deleted file mode 100644 index 1be5baa..0000000 --- a/Atarashii/Atarashii.Tests/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Atarashii/Atarashii.png b/Atarashii/Atarashii.png deleted file mode 100644 index 99d5e3a..0000000 Binary files a/Atarashii/Atarashii.png and /dev/null differ diff --git a/Atarashii/Atarashii.sln b/Atarashii/Atarashii.sln deleted file mode 100644 index 950819c..0000000 --- a/Atarashii/Atarashii.sln +++ /dev/null @@ -1,51 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2041 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii", "Atarashii\Atarashii.csproj", "{9665535F-B184-41F6-AC56-85DB14FD3B79}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii.Tests", "Atarashii.Tests\Atarashii.Tests.csproj", "{E69FBF55-9518-4A16-85C6-F373BC14DEB5}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{242E14EA-FB28-458C-8ABE-10D09245B350}" - ProjectSection(SolutionItems) = preProject - README.md = README.md - Atarashii.Docs\blam-sav.md = Atarashii.Docs\blam-sav.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii.CLI", "Atarashii.CLI\Atarashii.CLI.csproj", "{4F18217D-AB00-49A9-B1D6-8125CD89BC51}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atarashii.API", "Atarashii.API\Atarashii.API.csproj", "{2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9665535F-B184-41F6-AC56-85DB14FD3B79}.Release|Any CPU.Build.0 = Release|Any CPU - {E69FBF55-9518-4A16-85C6-F373BC14DEB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E69FBF55-9518-4A16-85C6-F373BC14DEB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E69FBF55-9518-4A16-85C6-F373BC14DEB5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E69FBF55-9518-4A16-85C6-F373BC14DEB5}.Release|Any CPU.Build.0 = Release|Any CPU - {4F18217D-AB00-49A9-B1D6-8125CD89BC51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F18217D-AB00-49A9-B1D6-8125CD89BC51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F18217D-AB00-49A9-B1D6-8125CD89BC51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F18217D-AB00-49A9-B1D6-8125CD89BC51}.Release|Any CPU.Build.0 = Release|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C5D2B0E-FEA7-43F2-9960-215280CCA7B7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3249B2F7-F993-46AD-A3EB-85718856A4E0} - EndGlobalSection -EndGlobal diff --git a/Atarashii/Atarashii/Atarashii.csproj b/Atarashii/Atarashii/Atarashii.csproj deleted file mode 100644 index 9cc6b63..0000000 --- a/Atarashii/Atarashii/Atarashii.csproj +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Debug - AnyCPU - {9665535F-B184-41F6-AC56-85DB14FD3B79} - Library - Properties - Atarashii - Atarashii - v4.5 - 512 - - - AnyCPU - true - full - false - ..\bin - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Configuration.cs b/Atarashii/Atarashii/Modules/OpenSauce/Configuration.cs deleted file mode 100644 index bad5f72..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Configuration.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.IO; -using System.Xml.Serialization; -using Atarashii.Modules.OpenSauce.Options; - -namespace Atarashii.Modules.OpenSauce -{ - /// - /// This type is used to represent an OpenSauce user XML configuration as an object. - /// - public class Configuration - { - public CacheFiles CacheFiles { get; set; } = new CacheFiles(); - - public Rasterizer Rasterizer { get; set; } = new Rasterizer(); - - public Camera Camera { get; set; } = new Camera(); - - public Networking Networking { get; set; } = new Networking(); - - public Objects Objects { get; set; } = new Objects(); - - [XmlElement(ElementName = "HUD")] public Hud Hud { get; set; } = new Hud(); - - /// - /// Converts this instance to an XML string. - /// - /// - /// XML representation of this instance. - /// - public string ToXml() - { - using (var writer = new StringWriter()) - { - var serialiser = new XmlSerializer(typeof(Configuration)); - serialiser.Serialize(writer, this); - return writer.ToString(); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/ConfigurationFactory.cs b/Atarashii/Atarashii/Modules/OpenSauce/ConfigurationFactory.cs deleted file mode 100644 index 6a993c3..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/ConfigurationFactory.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.IO; -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce -{ - /// - /// Creates OpenSauce Configuration instances. - /// - public static class ConfigurationFactory - { - /// - /// Deserialises a given XML string to an OpenSauce Configuration instance. - /// - /// - /// XML representation of a serialised OpenSauce Configuration object. - /// - /// - /// OpenSauce Configuration object instance. - /// - public static Configuration GetFromXml(string xml) - { - var stringReader = new StringReader(xml); - var serializer = new XmlSerializer(typeof(Configuration)); - return serializer.Deserialize(stringReader) as Configuration; - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/AntiAliasing.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/AntiAliasing.cs deleted file mode 100644 index 7a52b1f..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/AntiAliasing.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class AntiAliasing - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Bloom.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Bloom.cs deleted file mode 100644 index 89c606b..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Bloom.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Bloom - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/CacheFiles.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/CacheFiles.cs deleted file mode 100644 index 8a640b6..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/CacheFiles.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class CacheFiles - { - public bool CheckYeloFilesFirst { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Camera.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Camera.cs deleted file mode 100644 index 09fac02..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Camera.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Camera - { - public double FieldOfView { get; set; } = 70.0; - - [XmlElement(ElementName = "IgnoreFOVChangeInCinematics")] - public bool IgnoreFovChangeInCinematics { get; set; } = true; - - [XmlElement(ElementName = "IgnoreFOVChangeInMainMenu")] - public bool IgnoreFovChangeInMainMenu { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Effect.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Effect.cs deleted file mode 100644 index 88be08d..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Effect.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Effect - { - public bool DepthFade { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/ExternalEffects.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/ExternalEffects.cs deleted file mode 100644 index 29e6489..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/ExternalEffects.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class ExternalEffects - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/GameSpy.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/GameSpy.cs deleted file mode 100644 index 500bad1..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/GameSpy.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class GameSpy - { - public bool NoUpdateCheck { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Gbuffer.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Gbuffer.cs deleted file mode 100644 index 70de2cf..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Gbuffer.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Gbuffer - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Hud.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Hud.cs deleted file mode 100644 index 6a07e0f..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Hud.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Hud - { - [XmlElement(ElementName = "ShowHUD")] public bool ShowHud { get; set; } = true; - - [XmlElement(ElementName = "ScaleHUD")] public bool ScaleHud { get; set; } = true; - - [XmlElement(ElementName = "HUDScale")] public HudScale HudScale { get; set; } = new HudScale(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/HudScale.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/HudScale.cs deleted file mode 100644 index 9d17c45..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/HudScale.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class HudScale - { - public float X { get; set; } = 1; - public float Y { get; set; } = 1; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/MapDownload.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/MapDownload.cs deleted file mode 100644 index 9456c6e..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/MapDownload.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class MapDownload - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/MapEffects.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/MapEffects.cs deleted file mode 100644 index 0e7a876..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/MapEffects.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class MapEffects - { - public bool Enabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/MotionBlur.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/MotionBlur.cs deleted file mode 100644 index 5216dbf..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/MotionBlur.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class MotionBlur - { - public bool Enabled { get; set; } = true; - - public decimal BlurAmount { get; set; } = 1; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Networking.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Networking.cs deleted file mode 100644 index efe04e9..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Networking.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Networking - { - public GameSpy GameSpy { get; set; } = new GameSpy(); - - public MapDownload MapDownload { get; set; } = new MapDownload(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Objects.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Objects.cs deleted file mode 100644 index e5f240f..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Objects.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Objects - { - public bool VehicleRemapperEnabled { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/PostProcessing.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/PostProcessing.cs deleted file mode 100644 index c8fcf01..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/PostProcessing.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class PostProcessing - { - public MotionBlur MotionBlur { get; set; } = new MotionBlur(); - - public Bloom Bloom { get; set; } = new Bloom(); - - public AntiAliasing AntiAliasing { get; set; } = new AntiAliasing(); - - public ExternalEffects ExternalEffects { get; set; } = new ExternalEffects(); - - public MapEffects MapEffects { get; set; } = new MapEffects(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Rasterizer.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Rasterizer.cs deleted file mode 100644 index 03c11db..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Rasterizer.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Rasterizer - { - [XmlElement(ElementName = "GBuffer")] public Gbuffer Gbuffer { get; set; } = new Gbuffer(); - - public Upgrades Upgrades { get; set; } = new Upgrades(); - - public ShaderExtensions ShaderExtensions { get; set; } = new ShaderExtensions(); - - public PostProcessing PostProcessing { get; set; } = new PostProcessing(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/RasterizerShaderExtensions.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/RasterizerShaderExtensions.cs deleted file mode 100644 index 7cd7260..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/RasterizerShaderExtensions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class RasterizerShaderExtensions - { - [XmlElement(ElementName = "Object")] public ShaderObject ShaderObject { get; set; } = new ShaderObject(); - - [XmlElement(ElementName = "Environment")] - public ShaderEnvironment ShaderEnvironment { get; set; } = new ShaderEnvironment(); - - public Effect Effect { get; set; } = new Effect(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderEnvironment.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderEnvironment.cs deleted file mode 100644 index 3fadb4f..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderEnvironment.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class ShaderEnvironment - { - public bool DiffuseDirectionalLightmaps { get; set; } = true; - - public bool SpecularDirectionalLightmaps { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderExtensions.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderExtensions.cs deleted file mode 100644 index 119df9d..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderExtensions.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class ShaderExtensions - { - public bool Enabled = true; - - [XmlElement(ElementName = "Rasterizer")] - public ShaderRasterizer ShaderRasterizer { get; set; } = new ShaderRasterizer(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderObject.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderObject.cs deleted file mode 100644 index e0dc971..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderObject.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class ShaderObject - { - public bool NormalMaps { get; set; } = true; - - public bool DetailNormalMaps { get; set; } = true; - - public bool SpecularMaps { get; set; } = true; - - public bool SpecularLighting { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderRasterizer.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderRasterizer.cs deleted file mode 100644 index db5c7da..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/ShaderRasterizer.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Xml.Serialization; - -namespace Atarashii.Modules.OpenSauce.Options -{ - public class ShaderRasterizer - { - [XmlElement(ElementName = "ShaderExtensions")] - public RasterizerShaderExtensions RasterizerShaderExtensions { get; set; } = new RasterizerShaderExtensions(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/OpenSauce/Options/Upgrades.cs b/Atarashii/Atarashii/Modules/OpenSauce/Options/Upgrades.cs deleted file mode 100644 index 68e3e42..0000000 --- a/Atarashii/Atarashii/Modules/OpenSauce/Options/Upgrades.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Atarashii.Modules.OpenSauce.Options -{ - public class Upgrades - { - public bool MaximumRenderedTriangles { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Configuration.cs b/Atarashii/Atarashii/Modules/Profile/Configuration.cs deleted file mode 100644 index 5822d75..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Configuration.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Atarashii.Modules.Profile.Options; - -namespace Atarashii.Modules.Profile -{ - // TODO: Controls/gamepad settings. - // TODO: Documentation for the rest of the enum values. - - /// - /// This type is used to represent a HCE profile configuration. - /// - public class Configuration - { - /// - /// Player name. - /// - public Name Name { get; set; } = new Name(); - - /// - /// Player colour. - /// - public Colour Colour { get; set; } = new Colour(); - - /// - /// Mouse settings. - /// - public Mouse Mouse { get; set; } = new Mouse(); - - /// - /// Audio settings. - /// - public Audio Audio { get; set; } = new Audio(); - - /// - /// Video settings. - /// - public Video Video { get; set; } = new Video(); - - /// - /// Network settings. - /// - public Network Network { get; set; } = new Network(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/ConfigurationFactory.cs b/Atarashii/Atarashii/Modules/Profile/ConfigurationFactory.cs deleted file mode 100644 index f198b4f..0000000 --- a/Atarashii/Atarashii/Modules/Profile/ConfigurationFactory.cs +++ /dev/null @@ -1,313 +0,0 @@ -using System; -using System.IO; -using System.Text; -using Atarashii.Modules.Profile.Options; - -namespace Atarashii.Modules.Profile -{ - /// - /// Creates Profile Configuration instances. - /// - public static class ConfigurationFactory - { - /// - /// Length of the blam.sav binary. - /// - private const int BlamLength = 0x2000; - - /// - /// Offset of the profile name property. - /// - private const int NameOffset = 0x2; - - /// - /// Data length of the profile name property. - /// - private const int NameLength = 0xB; - - /// - /// Offset of the player colour property. - /// - private const int ColourOffset = 0x11a; - - /// - /// Offset of the horizontal mouse sensitivity property. - /// - private const int MouseSensitivityHorizontalOffset = 0x954; - - /// - /// Offset of the vertical mouse sensitivity property. - /// - private const int MouseSensitivityVerticalOffset = 0x955; - - /// - /// Offset of the mouse vertical axis inversion property. - /// - private const int MouseInvertVerticalAxisOffset = 0x12F; - - /// - /// Offset of the audio master volume property. - /// - private const int AudioVolumeMasterOffset = 0xB78; - - /// - /// Offset of the audio master volume property. - /// - private const int AudioVolumeEffectsOffset = 0xB79; - - /// - /// Offset of the audio master volume property. - /// - private const int AudioVolumeMusicOffset = 0xB7A; - - /// - /// Offset of the audio quality property. - /// - private const int AudioQualityOffset = 0xB7D; - - /// - /// Offset of the audio variety property. - /// - private const int AudioVarietyOffset = 0xB7F; - - /// - /// Offset of the video resolution width property. - /// - private const int VideoResolutionWidthOffset = 0xA68; - - /// - /// Offset of the video resolution height property. - /// - private const int VideoResolutionHeightOffset = 0xA6A; - - /// - /// Offset of the video frame rate property. - /// - private const int VideoFrameRateOffset = 0xA6F; - - /// - /// Offset of the video specular effects property. - /// - private const int VideoEffectsSpecularOffset = 0xA70; - - /// - /// Offset of the video shadows effects property. - /// - private const int VideoEffectsShadowsOffset = 0xA71; - - /// - /// Offset of the video decals effects property. - /// - private const int VideoEffectsDecalsOffset = 0xA72; - - /// - /// Offset of the video particles property. - /// - private const int VideoParticlesOffset = 0xA73; - - /// - /// Offset of the video quality property. - /// - private const int VideoQualityOffset = 0xA74; - - /// - /// Offset of the network connection type property. - /// - private const int NetworkConnectionTypeOffset = 0xFC0; - - /// - /// Offset of the network server port property. - /// - private const int NetworkPortServerOffset = 0x1002; - - /// - /// Offset of the network client port property. - /// - private const int NetworkPortClientOffset = 0x1004; - - /// - /// Deserialises a given binary stream to a Profile Configuration instance. - /// - /// - /// Binary representation of a serialised Profile Configuration object (blam.sav binary). - /// - /// - /// Profile Configuration object instance. - /// - /// - /// Provided stream object length does not match the blam.sav length. - /// - public static Configuration GetFromStream(Stream stream) - { - if (stream.Length != BlamLength) - throw new ArgumentOutOfRangeException(nameof(stream), - "Provided stream object length does not match the blam.sav length."); - - var reader = new BinaryReader(stream); - - var configuration = new Configuration - { - Name = - { - Value = new Func(x => - { - var data = new byte[NameLength]; - - stream.Position = NameOffset; - - for (var i = 0; i < data.Length; i++) - { - stream.Read(data, i, 1); - stream.Position++; // skip null bytes - } - - return Encoding.ASCII.GetString(data).TrimEnd('\0'); - })(stream) - }, - - Colour = - { - Value = new Func(x => - { - var colour = GetByte(x, ColourOffset); - return colour == 0xFF ? Colour.Type.White : (Colour.Type) colour; - })(reader) - }, - - Mouse = - { - Sensitivity = - { - Horizontal = GetByte(reader, MouseSensitivityHorizontalOffset), - Vertical = GetByte(reader, MouseSensitivityVerticalOffset) - }, - - InvertVerticalAxis = GetBool(reader, MouseInvertVerticalAxisOffset) - }, - - Audio = - { - Volume = - { - Master = GetByte(reader, AudioVolumeMasterOffset), - Effects = GetByte(reader, AudioVolumeEffectsOffset), - Music = GetByte(reader, AudioVolumeMusicOffset) - }, - - Quality = - { - Value = (Quality.Type) GetByte(reader, AudioQualityOffset) - }, - - Variety = - { - Value = (Quality.Type) GetByte(reader, AudioVarietyOffset) - } - }, - - Video = - { - Resolution = - { - Width = GetShort(reader, VideoResolutionWidthOffset), - Height = GetShort(reader, VideoResolutionHeightOffset) - }, - - FrameRate = - { - Value = (FrameRate.Type) GetByte(reader, VideoFrameRateOffset) - }, - - Effects = - { - Specular = GetBool(reader, VideoEffectsSpecularOffset), - Shadows = GetBool(reader, VideoEffectsShadowsOffset), - Decals = GetBool(reader, VideoEffectsDecalsOffset) - }, - - Particles = - { - Value = (Particles.Type) GetByte(reader, VideoParticlesOffset) - }, - - Quality = - { - Value = (Quality.Type) GetByte(reader, VideoQualityOffset) - } - }, - - Network = - { - Connection = - { - Value = (Connection.Type) GetByte(reader, NetworkConnectionTypeOffset) - }, - - Port = - { - Server = GetShort(reader, NetworkPortServerOffset), - Client = GetShort(reader, NetworkPortClientOffset) - } - } - }; - - reader.Dispose(); - - return configuration; - } - - /// - /// Returns a byte value from the inbound binary reader at the given offset. - /// - /// - /// Binary reader to retrieve byte value from. - /// - /// - /// Offset of the respective byte. - /// - /// - /// byte value. - /// - private static byte GetByte(BinaryReader reader, int offset) - { - reader.BaseStream.Seek(offset, SeekOrigin.Begin); - return reader.ReadByte(); - } - - /// - /// Returns a boolean value from the inbound binary reader at the given offset. - /// - /// - /// Binary reader to retrieve boolean value from. - /// - /// - /// Offset of the respective boolean. - /// - /// - /// Boolean value. - /// - private static bool GetBool(BinaryReader reader, int offset) - { - reader.BaseStream.Seek(offset, SeekOrigin.Begin); - return reader.ReadBoolean(); - } - - /// - /// Returns a unsigned short value from the inbound binary reader at the given offset. - /// - /// - /// Binary reader to retrieve unsigned short value from. - /// - /// - /// Offset of the respective unsigned short. - /// - /// - /// Unsigned short value. - /// - private static ushort GetShort(BinaryReader reader, int offset) - { - reader.BaseStream.Seek(offset, SeekOrigin.Begin); - return reader.ReadUInt16(); - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Lastprof.cs b/Atarashii/Atarashii/Modules/Profile/Lastprof.cs deleted file mode 100644 index 31aafc1..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Lastprof.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Atarashii.Common; - -namespace Atarashii.Modules.Profile -{ - public class Lastprof : Module, IVerifiable - { - /// - /// Official name of the lastprof text file. - /// - public const string Name = "lastprof.txt"; - - /// - /// Separation character which is guaranteed to be present. - /// - private const char Delimiter = '\\'; - - /// - /// Position of the profile name relative to the end of the split string. - /// - private const int NameOffset = 0x2; - - /// - /// Known string that is present in the lastprof.txt. - /// - private const string Signature = "lam.sav"; - - private readonly string _data; - - public Lastprof(string data) - { - _data = data; - } - - public Lastprof(string data, Output output) : base(output) - { - _data = data; - } - - /// - protected override string Identifier { get; } = "Profile.Lastprof"; - - /// - /// - /// False if: - /// - Given lastprof string lacks valid signature. - /// - public Verification Verify() - { - if (!_data.Contains(Signature)) - return new Verification(false, "Given lastprof string lacks valid signature."); - - return new Verification(true); - } - - /// - /// Retrieves the profile name from a lastprof.txt string. - /// - /// - /// new Lastprof.Parser().Parse(File.ReadAllText("lastprof.txt")); - /// - /// - /// The profile name. In actual environments, it's the profile used in the last HCE instance. - /// - /// - /// Given lastprof string lacks valid signature.. - /// - public string Parse() - { - WriteInfo("Verifying the inbound lastprof.txt"); - var state = Verify(); - - if (!state.IsValid) - WriteAndThrow(new ProfileException(state.Reason)); - - WriteSuccess("Inbound lastprof.txt has been successfully verified."); - WriteInfo("Attempting to resolve the profile name in the lastprof.txt."); - - var array = _data.Split(Delimiter); - return array[array.Length - NameOffset]; - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/LastprofFactory.cs b/Atarashii/Atarashii/Modules/Profile/LastprofFactory.cs deleted file mode 100644 index cb3d4bd..0000000 --- a/Atarashii/Atarashii/Modules/Profile/LastprofFactory.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.IO; -using Atarashii.Common; - -namespace Atarashii.Modules.Profile -{ - public static class LastprofFactory - { - /// - /// Types of Lastprof instantiations. - /// - public enum Type - { - Detect - } - - /// - /// Instantiate a Lastprof type. - /// - /// - /// Types of Lastprof instantiation. - /// - /// - /// Optional output type for writing data to. - /// - /// - /// Lastprof instance. - /// - /// - /// Attempted to detect a lastprof.txt file and none has been found on the file system. - /// - /// - /// Invalid enum value. - /// - public static Lastprof Get(Type type, Output output = null) - { - switch (type) - { - case Type.Detect: - var myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - var txtFilePath = Path.Combine(myDocuments, "My Games", "Halo CE", Lastprof.Name); - - if (!File.Exists(txtFilePath)) - throw new FileNotFoundException("Could not find lastprof.txt through the detection attempt."); - - return new Lastprof(File.ReadAllText(txtFilePath), output); - default: - throw new ArgumentOutOfRangeException(nameof(type), type, null); - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Audio.cs b/Atarashii/Atarashii/Modules/Profile/Options/Audio.cs deleted file mode 100644 index f96b5b2..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Audio.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - // TODO: Handle HW Acceleration & Environmental Sound. - - /// - /// Representation of the profile audio settings. - /// - public class Audio - { - /// - /// Audio volume. - /// - public Volume Volume { get; set; } = new Volume(); - - /// - /// Audio quality. - /// - public Quality Quality { get; set; } = new Quality(); - - /// - /// Audio variety. - /// - public Quality Variety { get; set; } = new Quality(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Colour.cs b/Atarashii/Atarashii/Modules/Profile/Options/Colour.cs deleted file mode 100644 index 3cf3e44..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Colour.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the profile player colour. - /// - public class Colour - { - /// - /// Available player colours. - /// - public enum Type - { - White, - Black, - Red, - Blue, - Gray, - Yellow, - Green, - Pink, - Purple, - Cyan, - Cobalt, - Orange, - Teal, - Sage, - Brown, - Tan, - Maroon, - Salmon - } - - /// - /// Player colour value. - /// - public Type Value { get; set; } = Type.White; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Connection.cs b/Atarashii/Atarashii/Modules/Profile/Options/Connection.cs deleted file mode 100644 index 42590a4..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Connection.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - public class Connection - { - /// - /// Connection types. - /// - public enum Type - { - /// - /// 56kbps setting - allows a maximum of 2 people to join a hosted server. - /// - Modem, - - /// - /// DSL/Cable (LOW) setting - allows a maximum of 4 people to join a hosted server. - /// - DslLow, - - /// - /// DSL/Cable (AVG) setting - allows a maximum of 8 people to join a hosted server. - /// - DslAverage, - - /// - /// DSL/Cable (HIGH) setting - allows a maximum of 10 people to join a hosted server. - /// - DslHigh, - - /// - /// Represents the 11/LAN setting - allows a maximum of 16 people to join a hosted server. - /// - Lan - } - - public Type Value { get; set; } = Type.Modem; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Effects.cs b/Atarashii/Atarashii/Modules/Profile/Options/Effects.cs deleted file mode 100644 index 31fd4e7..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Effects.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the video effects settings. - /// - public class Effects - { - /// - /// Shadow effects toggle. - /// - public bool Shadows { get; set; } = true; - - /// - /// Specular effects toggle. - /// - public bool Specular { get; set; } = true; - - /// - /// Decals effects toggle. - /// - public bool Decals { get; set; } = true; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/FrameRate.cs b/Atarashii/Atarashii/Modules/Profile/Options/FrameRate.cs deleted file mode 100644 index 8e01386..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/FrameRate.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the video frame rate settings. - /// - public class FrameRate - { - /// - /// Available frame rate types. - /// - public enum Type - { - VsyncOff, - VsyncOn, - Fps30 - } - - /// - /// Frame rate type value. - /// - public Type Value { get; set; } = Type.Fps30; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Mouse.cs b/Atarashii/Atarashii/Modules/Profile/Options/Mouse.cs deleted file mode 100644 index 7e957bf..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Mouse.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the profile mouse settings. - /// - public class Mouse - { - /// - /// Mouse sensitivity. - /// - public Sensitivity Sensitivity { get; set; } = new Sensitivity(); - - /// - /// Invert the vertical axis. - /// - public bool InvertVerticalAxis { get; set; } = false; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Name.cs b/Atarashii/Atarashii/Modules/Profile/Options/Name.cs deleted file mode 100644 index fa22e1e..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Name.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; - -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the profile player name. - /// - public class Name - { - /// - /// Player name value. - /// This value is expected to be between 1 and 11 characters. - /// - private string _value = "New001"; - - /// - /// Player name value. - /// - /// - /// No name value has been been assigned. - /// - /// - /// Assigned name value is greater than 11 characters. - /// - public string Value - { - get => _value; - set - { - if (string.IsNullOrWhiteSpace(value)) - throw new ArgumentNullException(value); - - if (value.Length > 0xB) - throw new ArgumentOutOfRangeException(nameof(value), - "Assigned name value is greater than 11 characters."); - - _value = value; - } - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Network.cs b/Atarashii/Atarashii/Modules/Profile/Options/Network.cs deleted file mode 100644 index d3feb10..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Network.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Profile network settings. - /// - public class Network - { - /// - /// Connection type settings. - /// - public Connection Connection = new Connection(); - - /// - /// Network ports. - /// - public Port Port { get; set; } = new Port(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Particles.cs b/Atarashii/Atarashii/Modules/Profile/Options/Particles.cs deleted file mode 100644 index ba944b0..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Particles.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the video particles settings. - /// - public class Particles - { - /// - /// Particle levels. - /// - public enum Type - { - Off, - Low, - High - } - - /// - /// Particle levels value. - /// - public Type Value { get; set; } = Type.High; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Port.cs b/Atarashii/Atarashii/Modules/Profile/Options/Port.cs deleted file mode 100644 index a472b84..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Port.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the network port settings. - /// - public class Port - { - /// - /// The port value the client sends data from. - /// - public ushort Client { get; set; } = 2303; - - /// - /// The port value the server listens on. - /// - public ushort Server { get; set; } = 2302; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Quality.cs b/Atarashii/Atarashii/Modules/Profile/Options/Quality.cs deleted file mode 100644 index 9c71660..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Quality.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of a generic quality-type value, e.g. texture, audio. - /// - public class Quality - { - /// - /// Generic quality level values. - /// - public enum Type - { - Low, - Medium, - High - } - - /// - /// Chosen quality level. - /// - public Type Value { get; set; } = Type.High; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/RefreshRate.cs b/Atarashii/Atarashii/Modules/Profile/Options/RefreshRate.cs deleted file mode 100644 index 80ffb69..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/RefreshRate.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the video refresh rate settings. - /// - public class RefreshRate - { - /// - /// Refresh rate value. - /// - public ushort Value { get; set; } = 60; - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Resolution.cs b/Atarashii/Atarashii/Modules/Profile/Options/Resolution.cs deleted file mode 100644 index b52fe55..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Resolution.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; - -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the video resolution settings. - /// - public class Resolution - { - /// - /// Height dimension value. - /// This value is expected to be between 0 and 32767. - /// - private ushort _height = 480; - - /// - /// Width dimension value. - /// This value is expected to be between 0 and 32767. - /// - private ushort _width = 640; - - /// - /// Resolution width value. - /// - /// - /// Assigned dimension value is either 0 or over 32767. - /// - public ushort Width - { - get => _width; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), - "Assigned dimension value is either 0 or over 32767."); - - _width = value; - } - } - - /// - /// Resolution height value. - /// - /// - /// Assigned dimension value is either 0 or over 32767. - /// - public ushort Height - { - get => _height; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), - "Assigned dimension value is either 0 or over 32767."); - - _height = value; - } - } - - /// - /// Checks if the inbound dimension value falls within a valid range. - /// - /// - /// Inbound value to check. - /// - /// - /// True on valid value, otherwise false. - /// - private static bool IsValid(ushort value) - { - return value > 0x0 && value < 0x8000; - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Sensitivity.cs b/Atarashii/Atarashii/Modules/Profile/Options/Sensitivity.cs deleted file mode 100644 index 5d14d75..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Sensitivity.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; - -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the profile mouse sensitivity settings. - /// - public class Sensitivity - { - /// - /// Horizontal sensitivity value. - /// This value is expected to be between 1 and 10. - /// - private ushort _horizontal = 3; - - /// - /// Vertical sensitivity value. - /// This value is expected to be between 1 and 10. - /// - private ushort _vertical = 3; - - /// - /// Horizontal sensitivity value. - /// - /// - /// Assigned sensitivity value is less than 1 or greater than 10. - /// - public ushort Horizontal - { - get => _horizontal; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), - "Assigned sensitivity value is less than 1 or greater than 10."); - - _horizontal = value; - } - } - - /// - /// Vertical sensitivity value. - /// - /// - /// Assigned sensitivity value is less than 1 or greater than 10. - /// - public ushort Vertical - { - get => _vertical; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), - "Assigned sensitivity value is less than 1 or greater than 10."); - - _vertical = value; - } - } - - /// - /// Checks if the inbound sensitivity value falls within a valid range. - /// - /// - /// Inbound value to check. - /// - /// - /// True on valid value, otherwise false. - /// - private static bool IsValid(ushort value) - { - return value > 1 && value < 11; - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Video.cs b/Atarashii/Atarashii/Modules/Profile/Options/Video.cs deleted file mode 100644 index 1bc659a..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Video.cs +++ /dev/null @@ -1,38 +0,0 @@ -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the profile video settings. - /// - public class Video - { - /// - /// Video resolution settings. - /// - public Resolution Resolution { get; set; } = new Resolution(); - - /// - /// Video refresh rate settings. - /// - public RefreshRate RefreshRate { get; set; } = new RefreshRate(); - - /// - /// Video frame rate settings. - /// - public FrameRate FrameRate { get; set; } = new FrameRate(); - - /// - /// Video effects settings. - /// - public Effects Effects { get; set; } = new Effects(); - - /// - /// Video particles settings. - /// - public Particles Particles { get; set; } = new Particles(); - - /// - /// Video texture quality settings. - /// - public Quality Quality { get; set; } = new Quality(); - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/Options/Volume.cs b/Atarashii/Atarashii/Modules/Profile/Options/Volume.cs deleted file mode 100644 index 04ac586..0000000 --- a/Atarashii/Atarashii/Modules/Profile/Options/Volume.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; - -namespace Atarashii.Modules.Profile.Options -{ - /// - /// Representation of the audio volume settings. - /// - public class Volume - { - /// - /// Effects volume value. - /// This value is expected to be between 0 and 10. - /// - private ushort _effects = 10; - - /// - /// Master volume value. - /// This value is expected to be between 0 and 10. - /// - private ushort _master = 10; - - /// - /// Music volume value. - /// This value is expected to be between 0 and 10. - /// - private ushort _music = 10; - - /// - /// Master volume value. - /// - /// Assigned volume value is greater than 10. - /// - /// - public ushort Master - { - get => _master; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), "Assigned volume value is greater than 10."); - - _master = value; - } - } - - /// - /// Effects volume value. - /// - /// - /// Assigned volume value is greater than 10. - /// - public ushort Effects - { - get => _effects; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), "Assigned volume value is greater than 10."); - - _effects = value; - } - } - - /// - /// Music volume value. - /// - /// - /// Assigned volume value is greater than 10. - /// - public ushort Music - { - get => _music; - set - { - if (!IsValid(value)) - throw new ArgumentOutOfRangeException(nameof(value), "Assigned volume value is greater than 10."); - - _music = value; - } - } - - /// - /// Checks if the inbound volume value falls within a valid range. - /// - /// Inbound value to check. - /// True on valid value, otherwise false. - private static bool IsValid(ushort value) - { - return value < 11; - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Modules/Profile/ProfileException.cs b/Atarashii/Atarashii/Modules/Profile/ProfileException.cs deleted file mode 100644 index 635fa27..0000000 --- a/Atarashii/Atarashii/Modules/Profile/ProfileException.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Runtime.Serialization; - -namespace Atarashii.Modules.Profile -{ - [Serializable] - public class ProfileException : Exception - { - // - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - // - - public ProfileException() - { - } - - public ProfileException(string message) : base(message) - { - } - - public ProfileException(string message, Exception inner) : base(message, inner) - { - } - - protected ProfileException( - SerializationInfo info, - StreamingContext context) : base(info, context) - { - } - } -} \ No newline at end of file diff --git a/Atarashii/Atarashii/Properties/AssemblyInfo.cs b/Atarashii/Atarashii/Properties/AssemblyInfo.cs deleted file mode 100644 index 652b1b1..0000000 --- a/Atarashii/Atarashii/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -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("Atarashii")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("yumiris")] -[assembly: AssemblyProduct("Atarashii")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[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("9665535F-B184-41F6-AC56-85DB14FD3B79")] - -// 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")] \ No newline at end of file diff --git a/Atarashii/README.md b/Atarashii/README.md deleted file mode 100644 index e36111c..0000000 --- a/Atarashii/README.md +++ /dev/null @@ -1,109 +0,0 @@ - -

- -

-

- HCE Atarashii -

-

- A reliable, reusable and versatile library for the HCE/SPV3 loader. -

- - -# Introduction - -Atarashii's goal is to cater to both end-users and developers. It accomplishes this using a versatile library and -command line interface (CLI). It is the result of learning from the mistakes of the SPV3 loader and installer. - -By design, the library's APIs can be used outside of SPV3. The modules of this library are minimally tied to SPV3, -thereby allowing both SPV3 and HCE projects to rely on the functionality provided by the library and the CLI front-end. - -# About - -Atarashii's design consists of one library that contains the logic for all of the project's features and abilities. -At the moment, the project provides the following features: - -- secure loading of the HCE executable, by verifying the executable and loading it if it passes the validation checks; -- detection of a legally installed HCE executable on the filesystem using various fallback detection mechanisms; -- determining the currently used HCE profile, thereby allowing automatic integration with the HCE profile; -- parsing & configuration of the HCE profile, including player name/colour and video/audio/network settings; -- installation and configuration of the OpenSauce mod, with a balance between safety and flexibility. - -The architecture balances between maintainability and versatility. The library offers two high level namespaces: - -| Namespace | Description | -| --------- | ------------------------------------------------------------------------------------------------ | -| `Common` | Generic core types or abstracts that are either inheritable or merely share reusable code. | -| `Modules` | APIs that focus on functionality or serving as object representations of HCE/OS binary/XML data. | - -The following modules in the `Modules` namespace are currently available: - -| Module | Description | -| ----------- | ------------------------------------------------------------------------------------------------------ | -| `Loader` | Detection and loading of a legally installed and untampered HCE executable & `initc.txt` management. | -| `OpenSauce` | Installation of OpenSauce to the filesystem, and object representation of the OpenSauce configuration. | -| `Profile` | Detection of the HCE profile using `lastprof.txt`, and object representation of the `blam.sav` binary. | - -## CLI - -All of the library's major components have a Command Line Interface (CLI) front-end. It is cross-platform, -script-friendly and versatile program for developers and calling processes to use. - -Interaction is carried out using start-up arguments, with detailed instructions & logs being written to the CLI. -Appropriate exit codes and error messages are used for communication with calling processes and developers. - -# Usage - -## CLI Usage - -The following table shows common tasks with their respective commands. - -| Task | Command | -| --------------------------------- | ----------------------------------------- | -| Attempt HCE executable loading. | `Loader Load "\path\to\haloce.exe"` | -| Attempt HCE executable detection. | `Loader Detect` | -| Attempt HCE profile detection. | `Profile Resolve "\path\to\lastprof.txt"` | -| Attempt HCE profile parsing. | `Profile Parse "\path\to\blam.sav"` | -| Attempt OpenSauce installation. | `OpenSauce Install "\path\to\hce-dir"` | - -**Exit Codes** - -| Code | Description | -| ---- | ------------------------------------------------------------------ | -| `0` | Invoked command has been executed successfully. | -| `1` | Not enough arguments have been provided for the specified command. | -| `2` | Incorrect arguments have been provided to the specified command. | -| `3` | An exception has occurred when executing the invoked command. | - -**Notes** - -- Due to its non-interactive nature, double clicking the executable will not execute anything meaningful! - For example: `.\Atarashii.CLI.exe Loader Load "C:\haloce.exe"`. -- To use the CLI, you must run run it from an **existing** console: `\path\to\Atarashii.CLI.exe`! -- The syntax of the commands may change at any time for improved versatility & ease of use! -- The commands are currently CaSe SeNSiTiVE! - -## API Usage - -An API assembly is provided for convenience, to allow external assemblies to make use of the library's functionality. - -The following table shows common tasks with the respective static methods that should be called. All methods are under -the `Atarashii.API` namespace. - -| Task | Method | Arguments | Return | -| --------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| Attempt HCE executable loading. | `void Loader.Load(string hceExecutable)` | `hceExecutable`: Absolute path to a valid HCE executable. | ~ | -| Attempt HCE executable detection. | `string Loader.Detect()` | ~ | Path to the HCE executable, assuming its installation is legal. | -| Attempt HCE profile detection. | `string Profile.Detect()` | ~ | Currently used HCE profile, assuming the environment is valid. | -| Attempt HCE profile parsing. | `Profile.Configuration Parse(string blamPath)` | `blamPath`: Path to a HCE profile blam.sav binary. | Deserialised `Profile.Configuration` object representing the provided blam.sav binary. | -| Attempt OpenSauce installation. | `void Install(string hcePath)` | `hcePath`: Valid HCE installation directory. | ~ | -| Attempt OpenSauce XML parsing. | `OpenSauce.Configuration Parse(string xmlPath)` | `xmlPath`: Absolute path to the OpenSauce User configuration XML file. | Deserialised `OpenSauce.Configuration` object representing the OpenSauce User configuration XML file. | - -# Repository - -The main repository and issue tracker are hosted privately. A read-only mirror of the Git repository is available on -GitHub, and copies of the latest binaries are available on the SPV3 network. - -Code is written mainly in C#, targeting .NET 4.5.2 for a balance between security and compatibility. The library's -features are covered with automated tests to ensure that the core logic fulfils the expected requirements and proposed -specifications. \ No newline at end of file diff --git a/README.md b/README.md index d954bab..d47c278 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,9 @@ me on Discord if you know my username! ## Library -AmaiSosu uses the Atarashii Library's OpenSauce module for installing OS to the system. It also applies its own -modifications and enhancements on top, such as backing up existing OpenSauce data, resolving HAC2 conflicts and -installing the OS IDE to the HCE directory. A copy of the Atarashii source code is included in this repository. +As of v0.3.4, AmaiSosu uses a forked version Atarashii Library's OpenSauce module for installing OS to the system. +It also applies its own modifications and enhancements on top, such as backing up existing OpenSauce data, resolving +HAC2 conflicts and installing the OS IDE to the HCE directory. ## Repository