From 2130af1f38024e27285d294c41d58f230cd4361f Mon Sep 17 00:00:00 2001 From: yonaikerlol Date: Mon, 11 Mar 2019 14:15:39 -0400 Subject: [PATCH] Initial commit --- README.md | 8 + Super Mario Land 3D Savegame Editor.sln | 20 + Super Mario Land 3D Savegame Editor/Crc32.cs | 119 ++++ .../Program.cs | 21 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 83 +++ .../Properties/Resources.resx | 127 ++++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../Resources/nsmb2_lives.png | Bin 0 -> 23382 bytes .../Resources/nsmb2_starcoin.png | Bin 0 -> 24442 bytes .../SM3DL_SGE.Designer.cs | 502 +++++++++++++ .../SM3DL_SGE.cs | 661 ++++++++++++++++++ .../SM3DL_SGE.resx | 120 ++++ ...Super Mario Land 3D Savegame Editor.csproj | 95 +++ 15 files changed, 1829 insertions(+) create mode 100644 README.md create mode 100644 Super Mario Land 3D Savegame Editor.sln create mode 100644 Super Mario Land 3D Savegame Editor/Crc32.cs create mode 100644 Super Mario Land 3D Savegame Editor/Program.cs create mode 100644 Super Mario Land 3D Savegame Editor/Properties/AssemblyInfo.cs create mode 100644 Super Mario Land 3D Savegame Editor/Properties/Resources.Designer.cs create mode 100644 Super Mario Land 3D Savegame Editor/Properties/Resources.resx create mode 100644 Super Mario Land 3D Savegame Editor/Properties/Settings.Designer.cs create mode 100644 Super Mario Land 3D Savegame Editor/Properties/Settings.settings create mode 100644 Super Mario Land 3D Savegame Editor/Resources/nsmb2_lives.png create mode 100644 Super Mario Land 3D Savegame Editor/Resources/nsmb2_starcoin.png create mode 100644 Super Mario Land 3D Savegame Editor/SM3DL_SGE.Designer.cs create mode 100644 Super Mario Land 3D Savegame Editor/SM3DL_SGE.cs create mode 100644 Super Mario Land 3D Savegame Editor/SM3DL_SGE.resx create mode 100644 Super Mario Land 3D Savegame Editor/Super Mario Land 3D Savegame Editor.csproj diff --git a/README.md b/README.md new file mode 100644 index 0000000..c8dee6e --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Super Mario 3D Land Savegame Editor: +Code mirrored from [this user](https://gbatemp.net/members/110449), thanks. + +A Savegame editor for the game Super Mario 3D Land (3DS). +Tested on EUR Game/O3DSXL (Card, I dont have eshop version of this game). +* Unlock all worlds is a **WIP** Option - Make sure you have a backup of your save. + +More information: https://gbatemp.net/threads/396816 diff --git a/Super Mario Land 3D Savegame Editor.sln b/Super Mario Land 3D Savegame Editor.sln new file mode 100644 index 0000000..ef45c79 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Super Mario Land 3D Savegame Editor", "Super Mario Land 3D Savegame Editor\Super Mario Land 3D Savegame Editor.csproj", "{EF07776A-F706-4494-A3E3-A46C2E4E0650}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EF07776A-F706-4494-A3E3-A46C2E4E0650}.Debug|x86.ActiveCfg = Debug|x86 + {EF07776A-F706-4494-A3E3-A46C2E4E0650}.Debug|x86.Build.0 = Debug|x86 + {EF07776A-F706-4494-A3E3-A46C2E4E0650}.Release|x86.ActiveCfg = Release|x86 + {EF07776A-F706-4494-A3E3-A46C2E4E0650}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Super Mario Land 3D Savegame Editor/Crc32.cs b/Super Mario Land 3D Savegame Editor/Crc32.cs new file mode 100644 index 0000000..233defb --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Crc32.cs @@ -0,0 +1,119 @@ +// Copyright (c) Damien Guard. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// Originally published at http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net + +using System; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace Super_Mario_Land_3D_Savegame_Editor +{ + /// + /// Implements a 32-bit CRC hash algorithm compatible with Zip etc. + /// + /// + /// Crc32 should only be used for backward compatibility with older file formats + /// and algorithms. It is not secure enough for new applications. + /// If you need to call multiple times for the same data either use the HashAlgorithm + /// interface or remember that the result of one Compute call needs to be ~ (XOR) before + /// being passed in as the seed for the next Compute call. + /// + public sealed class Crc32 : HashAlgorithm + { + public const UInt32 DefaultPolynomial = 0xedb88320u; + public const UInt32 DefaultSeed = 0xffffffffu; + + static UInt32[] defaultTable; + + readonly UInt32 seed; + readonly UInt32[] table; + UInt32 hash; + + public Crc32() + : this(DefaultPolynomial, DefaultSeed) + { + } + + public Crc32(UInt32 polynomial, UInt32 seed) + { + table = InitializeTable(polynomial); + this.seed = hash = seed; + } + + public override void Initialize() + { + hash = seed; + } + + protected override void HashCore(byte[] array, int ibStart, int cbSize) + { + hash = CalculateHash(table, hash, array, ibStart, cbSize); + } + + protected override byte[] HashFinal() + { + var hashBuffer = UInt32ToBigEndianBytes(~hash); + HashValue = hashBuffer; + return hashBuffer; + } + + public override int HashSize { get { return 32; } } + + public static UInt32 Compute(byte[] buffer) + { + return Compute(DefaultSeed, buffer); + } + + public static UInt32 Compute(UInt32 seed, byte[] buffer) + { + return Compute(DefaultPolynomial, seed, buffer); + } + + public static UInt32 Compute(UInt32 polynomial, UInt32 seed, byte[] buffer) + { + return ~CalculateHash(InitializeTable(polynomial), seed, buffer, 0, buffer.Length); + } + + static UInt32[] InitializeTable(UInt32 polynomial) + { + if (polynomial == DefaultPolynomial && defaultTable != null) + return defaultTable; + + var createTable = new UInt32[256]; + for (var i = 0; i < 256; i++) + { + var entry = (UInt32)i; + for (var j = 0; j < 8; j++) + if ((entry & 1) == 1) + entry = (entry >> 1) ^ polynomial; + else + entry = entry >> 1; + createTable[i] = entry; + } + + if (polynomial == DefaultPolynomial) + defaultTable = createTable; + + return createTable; + } + + static UInt32 CalculateHash(UInt32[] table, UInt32 seed, IList buffer, int start, int size) + { + var crc = seed; + for (var i = start; i < size - start; i++) + crc = (crc >> 8) ^ table[buffer[i] ^ crc & 0xff]; + return crc; + } + + static byte[] UInt32ToBigEndianBytes(UInt32 uint32) + { + var result = BitConverter.GetBytes(uint32); + + if (BitConverter.IsLittleEndian) + Array.Reverse(result); + + return result; + } + } +} \ No newline at end of file diff --git a/Super Mario Land 3D Savegame Editor/Program.cs b/Super Mario Land 3D Savegame Editor/Program.cs new file mode 100644 index 0000000..fed105a --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace Super_Mario_Land_3D_Savegame_Editor +{ + static class Program + { + /// + /// Der Haupteinstiegspunkt für die Anwendung. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new SM3DL_SGE()); + } + } +} diff --git a/Super Mario Land 3D Savegame Editor/Properties/AssemblyInfo.cs b/Super Mario Land 3D Savegame Editor/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6c9d3fe --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("Super Mario Land 3D Savegame Editor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Super Mario Land 3D Savegame Editor")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("e78b334b-54d0-4fd0-84bd-98ce56a6c092")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Super Mario Land 3D Savegame Editor/Properties/Resources.Designer.cs b/Super Mario Land 3D Savegame Editor/Properties/Resources.Designer.cs new file mode 100644 index 0000000..89f71b1 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.18408 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace Super_Mario_Land_3D_Savegame_Editor.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [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("Super_Mario_Land_3D_Savegame_Editor.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap nsmb2_lives { + get { + object obj = ResourceManager.GetObject("nsmb2_lives", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap nsmb2_starcoin { + get { + object obj = ResourceManager.GetObject("nsmb2_starcoin", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Super Mario Land 3D Savegame Editor/Properties/Resources.resx b/Super Mario Land 3D Savegame Editor/Properties/Resources.resx new file mode 100644 index 0000000..350aec3 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\nsmb2_lives.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\nsmb2_starcoin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Super Mario Land 3D Savegame Editor/Properties/Settings.Designer.cs b/Super Mario Land 3D Savegame Editor/Properties/Settings.Designer.cs new file mode 100644 index 0000000..5e50051 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18408 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Super_Mario_Land_3D_Savegame_Editor.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Super Mario Land 3D Savegame Editor/Properties/Settings.settings b/Super Mario Land 3D Savegame Editor/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Super Mario Land 3D Savegame Editor/Resources/nsmb2_lives.png b/Super Mario Land 3D Savegame Editor/Resources/nsmb2_lives.png new file mode 100644 index 0000000000000000000000000000000000000000..b8509e52aebbeccba1bc5f9252dd8a55c0b13c74 GIT binary patch literal 23382 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 literal 0 HcmV?d00001 diff --git a/Super Mario Land 3D Savegame Editor/Resources/nsmb2_starcoin.png b/Super Mario Land 3D Savegame Editor/Resources/nsmb2_starcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..45c83d35638d6c8e46e10a21270324cd6798aa4e GIT binary patch literal 24442 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 MQp%F0;*b6QKYdb|X#fBK literal 0 HcmV?d00001 diff --git a/Super Mario Land 3D Savegame Editor/SM3DL_SGE.Designer.cs b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.Designer.cs new file mode 100644 index 0000000..3d5b3ba --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.Designer.cs @@ -0,0 +1,502 @@ +namespace Super_Mario_Land_3D_Savegame_Editor +{ + partial class SM3DL_SGE + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.unlock_worlds_s1 = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.p1_itembox = new System.Windows.Forms.ComboBox(); + this.p1_start_as = new System.Windows.Forms.ComboBox(); + this.box_file1_coins = new System.Windows.Forms.TextBox(); + this.box_file1_lives = new System.Windows.Forms.TextBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.unlock_worlds_s2 = new System.Windows.Forms.CheckBox(); + this.label5 = new System.Windows.Forms.Label(); + this.box_file2_coins = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.box_file2_lives = new System.Windows.Forms.TextBox(); + this.p2_itembox = new System.Windows.Forms.ComboBox(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.p2_start_as = new System.Windows.Forms.ComboBox(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.unlock_worlds_s3 = new System.Windows.Forms.CheckBox(); + this.label3 = new System.Windows.Forms.Label(); + this.box_file3_coins = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.p3_itembox = new System.Windows.Forms.ComboBox(); + this.box_file3_lives = new System.Windows.Forms.TextBox(); + this.p3_start_as = new System.Windows.Forms.ComboBox(); + this.pictureBox5 = new System.Windows.Forms.PictureBox(); + this.pictureBox6 = new System.Windows.Forms.PictureBox(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(3, 36); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(194, 23); + this.button1.TabIndex = 0; + this.button1.Text = "open GameData"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(3, 97); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(194, 23); + this.button2.TabIndex = 2; + this.button2.Text = "save GameData"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.unlock_worlds_s1); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.p1_itembox); + this.groupBox1.Controls.Add(this.p1_start_as); + this.groupBox1.Controls.Add(this.box_file1_coins); + this.groupBox1.Controls.Add(this.box_file1_lives); + this.groupBox1.Controls.Add(this.pictureBox2); + this.groupBox1.Controls.Add(this.pictureBox1); + this.groupBox1.Location = new System.Drawing.Point(212, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(194, 140); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Save File 1"; + // + // unlock_worlds_s1 + // + this.unlock_worlds_s1.AutoSize = true; + this.unlock_worlds_s1.Location = new System.Drawing.Point(74, 117); + this.unlock_worlds_s1.Name = "unlock_worlds_s1"; + this.unlock_worlds_s1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.unlock_worlds_s1.Size = new System.Drawing.Size(110, 17); + this.unlock_worlds_s1.TabIndex = 13; + this.unlock_worlds_s1.Text = "Unlock All Worlds"; + this.unlock_worlds_s1.UseVisualStyleBackColor = true; + this.unlock_worlds_s1.CheckedChanged += new System.EventHandler(this.unlock_worlds_s1_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 85); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(55, 13); + this.label2.TabIndex = 7; + this.label2.Text = "itembox ->"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 58); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 13); + this.label1.TabIndex = 6; + this.label1.Text = "start as ->"; + // + // p1_itembox + // + this.p1_itembox.FormattingEnabled = true; + this.p1_itembox.Items.AddRange(new object[] { + "Nothing", + "Mushroom", + "Fire Flower", + "Tanooki Leaf", + "Statue Leaf", + "Boomerang Flower"}); + this.p1_itembox.Location = new System.Drawing.Point(67, 82); + this.p1_itembox.Name = "p1_itembox"; + this.p1_itembox.Size = new System.Drawing.Size(117, 21); + this.p1_itembox.TabIndex = 5; + // + // p1_start_as + // + this.p1_start_as.FormattingEnabled = true; + this.p1_start_as.Items.AddRange(new object[] { + "Big Mario", + "Small Mario", + "Fire Mario", + "Tanooki Mario", + "Boomerang Mario", + "Statue Mario"}); + this.p1_start_as.Location = new System.Drawing.Point(67, 55); + this.p1_start_as.Name = "p1_start_as"; + this.p1_start_as.Size = new System.Drawing.Size(117, 21); + this.p1_start_as.TabIndex = 4; + // + // box_file1_coins + // + this.box_file1_coins.Location = new System.Drawing.Point(129, 24); + this.box_file1_coins.MaxLength = 3; + this.box_file1_coins.Name = "box_file1_coins"; + this.box_file1_coins.Size = new System.Drawing.Size(55, 20); + this.box_file1_coins.TabIndex = 3; + // + // box_file1_lives + // + this.box_file1_lives.Location = new System.Drawing.Point(37, 24); + this.box_file1_lives.MaxLength = 4; + this.box_file1_lives.Name = "box_file1_lives"; + this.box_file1_lives.Size = new System.Drawing.Size(55, 20); + this.box_file1_lives.TabIndex = 2; + // + // pictureBox2 + // + this.pictureBox2.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_starcoin; + this.pictureBox2.Location = new System.Drawing.Point(98, 19); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(25, 25); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox2.TabIndex = 1; + this.pictureBox2.TabStop = false; + // + // pictureBox1 + // + this.pictureBox1.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_lives; + this.pictureBox1.Location = new System.Drawing.Point(6, 19); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(25, 25); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.unlock_worlds_s2); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Controls.Add(this.box_file2_coins); + this.groupBox2.Controls.Add(this.label6); + this.groupBox2.Controls.Add(this.box_file2_lives); + this.groupBox2.Controls.Add(this.p2_itembox); + this.groupBox2.Controls.Add(this.pictureBox3); + this.groupBox2.Controls.Add(this.p2_start_as); + this.groupBox2.Controls.Add(this.pictureBox4); + this.groupBox2.Location = new System.Drawing.Point(3, 158); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(194, 140); + this.groupBox2.TabIndex = 4; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Save File 2"; + // + // unlock_worlds_s2 + // + this.unlock_worlds_s2.AutoSize = true; + this.unlock_worlds_s2.Location = new System.Drawing.Point(74, 117); + this.unlock_worlds_s2.Name = "unlock_worlds_s2"; + this.unlock_worlds_s2.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.unlock_worlds_s2.Size = new System.Drawing.Size(110, 17); + this.unlock_worlds_s2.TabIndex = 12; + this.unlock_worlds_s2.Text = "Unlock All Worlds"; + this.unlock_worlds_s2.UseVisualStyleBackColor = true; + this.unlock_worlds_s2.CheckedChanged += new System.EventHandler(this.unlock_worlds_s2_CheckedChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(6, 85); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(55, 13); + this.label5.TabIndex = 11; + this.label5.Text = "itembox ->"; + // + // box_file2_coins + // + this.box_file2_coins.Location = new System.Drawing.Point(129, 24); + this.box_file2_coins.MaxLength = 3; + this.box_file2_coins.Name = "box_file2_coins"; + this.box_file2_coins.Size = new System.Drawing.Size(55, 20); + this.box_file2_coins.TabIndex = 3; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(6, 58); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 13); + this.label6.TabIndex = 10; + this.label6.Text = "start as ->"; + // + // box_file2_lives + // + this.box_file2_lives.Location = new System.Drawing.Point(37, 24); + this.box_file2_lives.MaxLength = 4; + this.box_file2_lives.Name = "box_file2_lives"; + this.box_file2_lives.Size = new System.Drawing.Size(55, 20); + this.box_file2_lives.TabIndex = 2; + // + // p2_itembox + // + this.p2_itembox.FormattingEnabled = true; + this.p2_itembox.Items.AddRange(new object[] { + "Nothing", + "Mushroom", + "Fire Flower", + "Tanooki Leaf", + "Statue Leaf", + "Boomerang Flower"}); + this.p2_itembox.Location = new System.Drawing.Point(67, 82); + this.p2_itembox.Name = "p2_itembox"; + this.p2_itembox.Size = new System.Drawing.Size(117, 21); + this.p2_itembox.TabIndex = 9; + // + // pictureBox3 + // + this.pictureBox3.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_starcoin; + this.pictureBox3.Location = new System.Drawing.Point(98, 19); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(25, 25); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox3.TabIndex = 1; + this.pictureBox3.TabStop = false; + // + // p2_start_as + // + this.p2_start_as.FormattingEnabled = true; + this.p2_start_as.Items.AddRange(new object[] { + "Big Mario", + "Small Mario", + "Fire Mario", + "Tanooki Mario", + "Boomerang Mario", + "Statue Mario"}); + this.p2_start_as.Location = new System.Drawing.Point(67, 55); + this.p2_start_as.Name = "p2_start_as"; + this.p2_start_as.Size = new System.Drawing.Size(117, 21); + this.p2_start_as.TabIndex = 8; + // + // pictureBox4 + // + this.pictureBox4.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_lives; + this.pictureBox4.Location = new System.Drawing.Point(6, 19); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(25, 25); + this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox4.TabIndex = 0; + this.pictureBox4.TabStop = false; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.unlock_worlds_s3); + this.groupBox3.Controls.Add(this.label3); + this.groupBox3.Controls.Add(this.box_file3_coins); + this.groupBox3.Controls.Add(this.label4); + this.groupBox3.Controls.Add(this.p3_itembox); + this.groupBox3.Controls.Add(this.box_file3_lives); + this.groupBox3.Controls.Add(this.p3_start_as); + this.groupBox3.Controls.Add(this.pictureBox5); + this.groupBox3.Controls.Add(this.pictureBox6); + this.groupBox3.Location = new System.Drawing.Point(212, 158); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(194, 140); + this.groupBox3.TabIndex = 5; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Save File 3"; + // + // unlock_worlds_s3 + // + this.unlock_worlds_s3.AutoSize = true; + this.unlock_worlds_s3.Location = new System.Drawing.Point(74, 117); + this.unlock_worlds_s3.Name = "unlock_worlds_s3"; + this.unlock_worlds_s3.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.unlock_worlds_s3.Size = new System.Drawing.Size(110, 17); + this.unlock_worlds_s3.TabIndex = 14; + this.unlock_worlds_s3.Text = "Unlock All Worlds"; + this.unlock_worlds_s3.UseVisualStyleBackColor = true; + this.unlock_worlds_s3.CheckedChanged += new System.EventHandler(this.unlock_worlds_s3_CheckedChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 85); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(55, 13); + this.label3.TabIndex = 11; + this.label3.Text = "itembox ->"; + // + // box_file3_coins + // + this.box_file3_coins.Location = new System.Drawing.Point(129, 24); + this.box_file3_coins.MaxLength = 3; + this.box_file3_coins.Name = "box_file3_coins"; + this.box_file3_coins.Size = new System.Drawing.Size(55, 20); + this.box_file3_coins.TabIndex = 3; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(6, 58); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 13); + this.label4.TabIndex = 10; + this.label4.Text = "start as ->"; + // + // p3_itembox + // + this.p3_itembox.FormattingEnabled = true; + this.p3_itembox.Items.AddRange(new object[] { + "Nothing", + "Mushroom", + "Fire Flower", + "Tanooki Leaf", + "Statue Leaf", + "Boomerang Flower"}); + this.p3_itembox.Location = new System.Drawing.Point(67, 82); + this.p3_itembox.Name = "p3_itembox"; + this.p3_itembox.Size = new System.Drawing.Size(117, 21); + this.p3_itembox.TabIndex = 9; + // + // box_file3_lives + // + this.box_file3_lives.Location = new System.Drawing.Point(37, 24); + this.box_file3_lives.MaxLength = 4; + this.box_file3_lives.Name = "box_file3_lives"; + this.box_file3_lives.Size = new System.Drawing.Size(55, 20); + this.box_file3_lives.TabIndex = 2; + // + // p3_start_as + // + this.p3_start_as.FormattingEnabled = true; + this.p3_start_as.Items.AddRange(new object[] { + "Big Mario", + "Small Mario", + "Fire Mario", + "Tanooki Mario", + "Boomerang Mario", + "Statue Mario"}); + this.p3_start_as.Location = new System.Drawing.Point(67, 55); + this.p3_start_as.Name = "p3_start_as"; + this.p3_start_as.Size = new System.Drawing.Size(117, 21); + this.p3_start_as.TabIndex = 8; + // + // pictureBox5 + // + this.pictureBox5.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_starcoin; + this.pictureBox5.Location = new System.Drawing.Point(98, 19); + this.pictureBox5.Name = "pictureBox5"; + this.pictureBox5.Size = new System.Drawing.Size(25, 25); + this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox5.TabIndex = 1; + this.pictureBox5.TabStop = false; + // + // pictureBox6 + // + this.pictureBox6.Image = global::Super_Mario_Land_3D_Savegame_Editor.Properties.Resources.nsmb2_lives; + this.pictureBox6.Location = new System.Drawing.Point(6, 19); + this.pictureBox6.Name = "pictureBox6"; + this.pictureBox6.Size = new System.Drawing.Size(25, 25); + this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox6.TabIndex = 0; + this.pictureBox6.TabStop = false; + // + // SM3DL_SGE + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(418, 313); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "SM3DL_SGE"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Super Mario 3D Land SGE v2b"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.TextBox box_file1_coins; + private System.Windows.Forms.TextBox box_file1_lives; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox box_file2_coins; + private System.Windows.Forms.TextBox box_file2_lives; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.PictureBox pictureBox4; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.TextBox box_file3_coins; + private System.Windows.Forms.TextBox box_file3_lives; + private System.Windows.Forms.PictureBox pictureBox5; + private System.Windows.Forms.PictureBox pictureBox6; + private System.Windows.Forms.ComboBox p1_start_as; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox p1_itembox; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox p2_itembox; + private System.Windows.Forms.ComboBox p2_start_as; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox p3_itembox; + private System.Windows.Forms.ComboBox p3_start_as; + private System.Windows.Forms.CheckBox unlock_worlds_s1; + private System.Windows.Forms.CheckBox unlock_worlds_s2; + private System.Windows.Forms.CheckBox unlock_worlds_s3; + } +} + diff --git a/Super Mario Land 3D Savegame Editor/SM3DL_SGE.cs b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.cs new file mode 100644 index 0000000..b1d4f2e --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.cs @@ -0,0 +1,661 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.IO; + + +namespace Super_Mario_Land_3D_Savegame_Editor +{ + public partial class SM3DL_SGE : Form + { + public SM3DL_SGE() + { + InitializeComponent(); + } + + public string savegame; + public byte[] crc32_data; + public byte[] world_unlock = { 0xFF, 0xFF, 0xFF, 0xFF }; + + public string ByteArrayToString(byte[] byteArray) + { + var hex = new StringBuilder(byteArray.Length * 2); + foreach (var b in byteArray) + hex.AppendFormat("{0:X2}", b); + return hex.ToString(); + } + public static byte[] BLKDTH_StringToByteArray(string hex) + { + return Enumerable.Range(0, hex.Length) + .Where(x => x % 2 == 0) + .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) + .ToArray(); + + } + + private void BLKDTH_get_openfile() + { + OpenFileDialog openFD = new OpenFileDialog(); + if (openFD.ShowDialog() == DialogResult.OK) + { + savegame = openFD.FileName; + } + } + private void BLKDTH_get_data() + { + { + FileStream savegame_fs = new FileStream(savegame, FileMode.Open); + BinaryReader savegame_br = new BinaryReader(savegame_fs); + long length = savegame_fs.Length; + + #region Save 1 main + // lives save 1 + savegame_br.BaseStream.Position = 0x34DF; + byte[] lives1 = savegame_br.ReadBytes(2); + int f1l = BitConverter.ToInt16(lives1, 0); + box_file1_lives.Text = (f1l.ToString()); + // star coins save 1 + savegame_br.BaseStream.Position = 0x34E1; + byte[] scoins1 = savegame_br.ReadBytes(2); + int f1c = BitConverter.ToInt16(scoins1, 0); + box_file1_coins.Text = (f1c.ToString()); + #endregion + #region Save 1 status item + // start as p1 + savegame_br.BaseStream.Position = 0x2B7A; + byte[] p1_start_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p1_start_byte) == "00") + { + p1_start_as.SelectedIndex = 0; + } + if (ByteArrayToString(p1_start_byte) == "01") + { + p1_start_as.SelectedIndex = 1; + } + if (ByteArrayToString(p1_start_byte) == "02") + { + p1_start_as.SelectedIndex = 2; + } + if (ByteArrayToString(p1_start_byte) == "03") + { + p1_start_as.SelectedIndex = 3; + } + if (ByteArrayToString(p1_start_byte) == "04") + { + p1_start_as.SelectedIndex = 4; + } + if (ByteArrayToString(p1_start_byte) == "05") + { + p1_start_as.SelectedIndex = 5; + } + else + { + } + // item p1 + savegame_br.BaseStream.Position = 0x2B7C; + byte[] p1_item_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p1_item_byte) == "00") + { + p1_itembox.SelectedIndex = 0; + } + if (ByteArrayToString(p1_item_byte) == "01") + { + p1_itembox.SelectedIndex = 1; + } + if (ByteArrayToString(p1_item_byte) == "02") + { + p1_itembox.SelectedIndex = 2; + } + if (ByteArrayToString(p1_item_byte) == "03") + { + p1_itembox.SelectedIndex = 3; + } + if (ByteArrayToString(p1_item_byte) == "04") + { + p1_itembox.SelectedIndex = 4; + } + if (ByteArrayToString(p1_item_byte) == "05") + { + p1_itembox.SelectedIndex = 5; + } + else + { + + } + #endregion + + #region Save 2 main + // lives save 2 + savegame_br.BaseStream.Position = 0x3E62; + byte[] lives2 = savegame_br.ReadBytes(2); + int f2l = BitConverter.ToInt16(lives2, 0); + box_file2_lives.Text = (f2l.ToString()); + // star coins save 2 + savegame_br.BaseStream.Position = 0x3E64; + byte[] scoins2 = savegame_br.ReadBytes(2); + int f2c = BitConverter.ToInt16(scoins2, 0); + box_file2_coins.Text = (f2c.ToString()); + #endregion + #region Save 2 status item + // start as p2 + savegame_br.BaseStream.Position = 0x34FD; + byte[] p2_start_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p2_start_byte) == "00") + { + p2_start_as.SelectedIndex = 0; + } + if (ByteArrayToString(p2_start_byte) == "01") + { + p2_start_as.SelectedIndex = 1; + } + if (ByteArrayToString(p2_start_byte) == "02") + { + p2_start_as.SelectedIndex = 2; + } + if (ByteArrayToString(p2_start_byte) == "03") + { + p2_start_as.SelectedIndex = 3; + } + if (ByteArrayToString(p2_start_byte) == "04") + { + p2_start_as.SelectedIndex = 4; + } + if (ByteArrayToString(p2_start_byte) == "05") + { + p2_start_as.SelectedIndex = 5; + } + else + { + } + // item p2 + savegame_br.BaseStream.Position = 0x34FF; + byte[] p2_item_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p2_item_byte) == "00") + { + p2_itembox.SelectedIndex = 0; + } + if (ByteArrayToString(p2_item_byte) == "01") + { + p2_itembox.SelectedIndex = 1; + } + if (ByteArrayToString(p2_item_byte) == "02") + { + p2_itembox.SelectedIndex = 2; + } + if (ByteArrayToString(p2_item_byte) == "03") + { + p2_itembox.SelectedIndex = 3; + } + if (ByteArrayToString(p2_item_byte) == "04") + { + p2_itembox.SelectedIndex = 4; + } + if (ByteArrayToString(p2_item_byte) == "05") + { + p2_itembox.SelectedIndex = 5; + } + else + { + } + #endregion + + #region Save 3 main + // lives save 3 + savegame_br.BaseStream.Position = 0x47E5; + byte[] lives3 = savegame_br.ReadBytes(2); + int f3l = BitConverter.ToInt16(lives3, 0); + box_file3_lives.Text = (f3l.ToString()); + // star coins save 3 + savegame_br.BaseStream.Position = 0x47E7; + byte[] scoins3 = savegame_br.ReadBytes(2); + int f3c = BitConverter.ToInt16(scoins3, 0); + box_file3_coins.Text = (f3c.ToString()); + #endregion + #region Save 3 status item + // start as p3 + savegame_br.BaseStream.Position = 0x3E80; + byte[] p3_start_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p3_start_byte) == "00") + { + p3_start_as.SelectedIndex = 0; + } + if (ByteArrayToString(p3_start_byte) == "01") + { + p3_start_as.SelectedIndex = 1; + } + else if (ByteArrayToString(p3_start_byte) == "02") + { + p3_start_as.SelectedIndex = 2; + } + else if (ByteArrayToString(p3_start_byte) == "03") + { + p3_start_as.SelectedIndex = 3; + } + else if (ByteArrayToString(p3_start_byte) == "04") + { + p3_start_as.SelectedIndex = 4; + } + else if (ByteArrayToString(p3_start_byte) == "05") + { + p3_start_as.SelectedIndex = 5; + } + else + { + } + // item p3 + savegame_br.BaseStream.Position = 0x3E82; + byte[] p3_item_byte = savegame_br.ReadBytes(1); + if (ByteArrayToString(p3_item_byte) == "00") + { + p3_itembox.SelectedIndex = 0; + } + if (ByteArrayToString(p3_item_byte) == "01") + { + p3_itembox.SelectedIndex = 1; + } + if (ByteArrayToString(p3_item_byte) == "02") + { + p3_itembox.SelectedIndex = 2; + } + if (ByteArrayToString(p3_item_byte) == "03") + { + p3_itembox.SelectedIndex = 3; + } + if (ByteArrayToString(p3_item_byte) == "04") + { + p3_itembox.SelectedIndex = 4; + } + if (ByteArrayToString(p3_item_byte) == "05") + { + p3_itembox.SelectedIndex = 5; + } + else + { + } + #endregion + + savegame_br.Close(); + } + } + private void BLKDTH_set_data() + { + FileStream update_save_open = null; + BinaryWriter update_save_write = null; + update_save_open = new FileStream(savegame, FileMode.OpenOrCreate); + update_save_write = new BinaryWriter(update_save_open); + + #region Save main + byte[] f1_lives = BLKDTH_StringToByteArray(int.Parse(box_file1_lives.Text).ToString("X8")); + Array.Reverse(f1_lives); + update_save_open.Position = Convert.ToInt64("34DF", 16); + update_save_write.Write(f1_lives); + + byte[] f1_coins = BLKDTH_StringToByteArray(int.Parse(box_file1_coins.Text).ToString("X8")); + Array.Reverse(f1_coins); + update_save_open.Position = Convert.ToInt64("34E1", 16); + update_save_write.Write(f1_coins); + #endregion + #region Save 1 status item + // p1 start as + update_save_open.Position = 0x2B7A; + + if (p1_start_as.SelectedIndex == 0) + { + byte[] x1s = { 0x00 }; + update_save_write.Write(x1s, 0, 1); + } + if (p1_start_as.SelectedIndex == 1) + { + byte[] x1s = { 0x01 }; + update_save_write.Write(x1s, 0, 1); + } + if (p1_start_as.SelectedIndex == 2) + { + byte[] x1s = { 0x02 }; + update_save_write.Write(x1s, 0, 1); + } + if (p1_start_as.SelectedIndex == 3) + { + byte[] x1s = { 0x03 }; + update_save_write.Write(x1s, 0, 1); + } + if (p1_start_as.SelectedIndex == 4) + { + byte[] x1s = { 0x04 }; + update_save_write.Write(x1s, 0, 1); + } + if (p1_start_as.SelectedIndex == 5) + { + byte[] x1s = { 0x05 }; + update_save_write.Write(x1s, 0, 1); + } + else + { + } + // p1 itembox + update_save_open.Position = 0x2B7C; + + if (p1_itembox.SelectedIndex == 0) + { + byte[] x1i = { 0x00 }; + update_save_write.Write(x1i, 0, 1); + } + if (p1_itembox.SelectedIndex == 1) + { + byte[] x1i = { 0x01 }; + update_save_write.Write(x1i, 0, 1); + } + if (p1_itembox.SelectedIndex == 2) + { + byte[] x1i = { 0x02 }; + update_save_write.Write(x1i, 0, 1); + } + if (p1_itembox.SelectedIndex == 3) + { + byte[] x1i = { 0x03 }; + update_save_write.Write(x1i, 0, 1); + } + if (p1_itembox.SelectedIndex == 4) + { + byte[] x1i = { 0x04 }; + update_save_write.Write(x1i, 0, 1); + } + if (p1_itembox.SelectedIndex == 5) + { + byte[] x1i = { 0x05 }; + update_save_write.Write(x1i, 0, 1); + } + else + { + } + #endregion + #region Save 1 unlock worlds + if (unlock_worlds_s1.Checked == true) + { + update_save_open.Position = 0x2B8C; + update_save_write.Write(world_unlock); + } + #endregion + + #region Save 2 main + byte[] f2_lives = BLKDTH_StringToByteArray(int.Parse(box_file2_lives.Text).ToString("X8")); + Array.Reverse(f2_lives); + update_save_open.Position = Convert.ToInt64("3E62", 16); + update_save_write.Write(f2_lives); + + byte[] f2_coins = BLKDTH_StringToByteArray(int.Parse(box_file2_coins.Text).ToString("X8")); + Array.Reverse(f2_coins); + update_save_open.Position = Convert.ToInt64("3E64", 16); + update_save_write.Write(f2_coins); + #endregion + #region Save 2 status item + // p2 start as + update_save_open.Position = 0x34FD; + + if (p2_start_as.SelectedIndex == 0) + { + byte[] x2s = { 0x00 }; + update_save_write.Write(x2s, 0, 1); + } + if (p2_start_as.SelectedIndex == 1) + { + byte[] x2s = { 0x01 }; + update_save_write.Write(x2s, 0, 1); + } + if (p2_start_as.SelectedIndex == 2) + { + byte[] x2s = { 0x02 }; + update_save_write.Write(x2s, 0, 1); + } + if (p2_start_as.SelectedIndex == 3) + { + byte[] x2s = { 0x03 }; + update_save_write.Write(x2s, 0, 1); + } + if (p2_start_as.SelectedIndex == 4) + { + byte[] x2s = { 0x04 }; + update_save_write.Write(x2s, 0, 1); + } + if (p2_start_as.SelectedIndex == 5) + { + byte[] x2s = { 0x05 }; + update_save_write.Write(x2s, 0, 1); + } + else + { + } + // p2 itembox + update_save_open.Position = 0x34FF; + + if (p2_itembox.SelectedIndex == 0) + { + byte[] x2i = { 0x00 }; + update_save_write.Write(x2i, 0, 1); + } + if (p2_itembox.SelectedIndex == 1) + { + byte[] x2i = { 0x01 }; + update_save_write.Write(x2i, 0, 1); + } + if (p2_itembox.SelectedIndex == 2) + { + byte[] x2i = { 0x02 }; + update_save_write.Write(x2i, 0, 1); + } + if (p2_itembox.SelectedIndex == 3) + { + byte[] x2i = { 0x03 }; + update_save_write.Write(x2i, 0, 1); + } + if (p2_itembox.SelectedIndex == 4) + { + byte[] x2i = { 0x04 }; + update_save_write.Write(x2i, 0, 1); + } + if (p2_itembox.SelectedIndex == 5) + { + byte[] x2i = { 0x05 }; + update_save_write.Write(x2i, 0, 1); + } + else + { + } + #endregion + #region Save 2 unlock worlds + if (unlock_worlds_s2.Checked == true) + { + update_save_open.Position = 0x350F; + update_save_write.Write(world_unlock); + } + #endregion + + #region Save 3 main + byte[] f3_lives = BLKDTH_StringToByteArray(int.Parse(box_file3_lives.Text).ToString("X8")); + Array.Reverse(f3_lives); + update_save_open.Position = Convert.ToInt64("47E5", 16); + update_save_write.Write(f3_lives); + + byte[] f3_coins = BLKDTH_StringToByteArray(int.Parse(box_file3_coins.Text).ToString("X8")); + Array.Reverse(f3_coins); + update_save_open.Position = Convert.ToInt64("47E7", 16); + update_save_write.Write(f3_coins); + #endregion + #region Save 3 status item + // p3 start as + update_save_open.Position = 0x3E80; + + if (p3_start_as.SelectedIndex == 0) + { + byte[] x3s = { 0x00 }; + update_save_write.Write(x3s, 0, 1); + } + if (p3_start_as.SelectedIndex == 1) + { + byte[] x3s = { 0x01 }; + update_save_write.Write(x3s, 0, 1); + } + if (p3_start_as.SelectedIndex == 2) + { + byte[] x3s = { 0x02 }; + update_save_write.Write(x3s, 0, 1); + } + if (p3_start_as.SelectedIndex == 3) + { + byte[] x3s = { 0x03 }; + update_save_write.Write(x3s, 0, 1); + } + if (p3_start_as.SelectedIndex == 4) + { + byte[] x3s = { 0x04 }; + update_save_write.Write(x3s, 0, 1); + } + if (p3_start_as.SelectedIndex == 5) + { + byte[] x3s = { 0x05 }; + update_save_write.Write(x3s, 0, 1); + } + else + { + } + // p3 itembox + update_save_open.Position = 0x3E82; + + if (p3_itembox.SelectedIndex == 0) + { + byte[] x3i = { 0x00 }; + update_save_write.Write(x3i, 0, 1); + } + if (p3_itembox.SelectedIndex == 1) + { + byte[] x3i = { 0x01 }; + update_save_write.Write(x3i, 0, 1); + } + if (p3_itembox.SelectedIndex == 2) + { + byte[] x3i = { 0x02 }; + update_save_write.Write(x3i, 0, 1); + } + if (p3_itembox.SelectedIndex == 3) + { + byte[] x3i = { 0x03 }; + update_save_write.Write(x3i, 0, 1); + } + if (p3_itembox.SelectedIndex == 4) + { + byte[] x3i = { 0x04 }; + update_save_write.Write(x3i, 0, 1); + } + if (p3_itembox.SelectedIndex == 5) + { + byte[] x3i = { 0x05 }; + update_save_write.Write(x3i, 0, 1); + } + else + { + } + #endregion + #region Save 3 unlock worlds + if (unlock_worlds_s3.Checked == true) + { + update_save_open.Position = 0x3E92; + update_save_write.Write(world_unlock); + } + #endregion + + update_save_open.Close(); + } + private void BLKDTH_crc32fix() + { + { + FileStream savegame_fs = new FileStream(savegame, FileMode.Open); + BinaryReader savegame_br = new BinaryReader(savegame_fs); + BinaryWriter update_save_crc32 = null; + + savegame_br.BaseStream.Position = 0x04; + byte[] crc32_data = savegame_br.ReadBytes(Convert.ToInt32(savegame_fs.Length)); + Crc32 crc32 = new Crc32(); + String hash = String.Empty; + foreach (byte b in crc32.ComputeHash(crc32_data)) hash += b.ToString("x2");//.ToLower(); + byte[] crc32_data_fixed = BLKDTH_StringToByteArray(hash); + Array.Reverse(crc32_data_fixed); + int f2c = BitConverter.ToInt32(crc32_data_fixed, 0); + + update_save_crc32 = new BinaryWriter(savegame_fs); + savegame_fs.Position = Convert.ToInt64("00", 16); + update_save_crc32.Write(crc32_data_fixed); + savegame_br.Close(); + } + } + + private void button2_Click(object sender, EventArgs e) + { + BLKDTH_set_data(); + BLKDTH_crc32fix(); + MessageBox.Show("Data saved"); + } + private void button1_Click(object sender, EventArgs e) + { + BLKDTH_get_openfile(); + if (string.IsNullOrEmpty(savegame)) + { + MessageBox.Show("no savegame selected"); + } + else + { + BLKDTH_get_data(); + } + } + +#region WIP Option +private void unlock_worlds_s1_CheckedChanged(object sender, EventArgs e) + { + if (unlock_worlds_s1.Checked == true) + { + if (MessageBox.Show("This is a WIP Option." + Environment.NewLine + "Make sure you have a backup of your savegame", "unlock all Worlds", MessageBoxButtons.OKCancel) == DialogResult.OK) + { + unlock_worlds_s1.Checked = true; + } + else + { + unlock_worlds_s1.Checked = false; + } + } + } + private void unlock_worlds_s2_CheckedChanged(object sender, EventArgs e) + { + if (unlock_worlds_s2.Checked == true) + { + if (MessageBox.Show("This is a WIP Option." + Environment.NewLine + "Make sure you have a backup of your savegame", "unlock all Worlds", MessageBoxButtons.OKCancel) == DialogResult.OK) + { + unlock_worlds_s2.Checked = true; + } + else + { + unlock_worlds_s2.Checked = false; + } + } + } + private void unlock_worlds_s3_CheckedChanged(object sender, EventArgs e) + { + if (unlock_worlds_s3.Checked == true) + { + if (MessageBox.Show("This is a WIP Option." + Environment.NewLine + "Make sure you have a backup of your savegame", "unlock all Worlds", MessageBoxButtons.OKCancel) == DialogResult.OK) + { + unlock_worlds_s3.Checked = true; + } + else + { + unlock_worlds_s3.Checked = false; + } + } + } +#endregion + + } +} diff --git a/Super Mario Land 3D Savegame Editor/SM3DL_SGE.resx b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/SM3DL_SGE.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Super Mario Land 3D Savegame Editor/Super Mario Land 3D Savegame Editor.csproj b/Super Mario Land 3D Savegame Editor/Super Mario Land 3D Savegame Editor.csproj new file mode 100644 index 0000000..5200947 --- /dev/null +++ b/Super Mario Land 3D Savegame Editor/Super Mario Land 3D Savegame Editor.csproj @@ -0,0 +1,95 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {EF07776A-F706-4494-A3E3-A46C2E4E0650} + WinExe + Properties + Super_Mario_Land_3D_Savegame_Editor + Super Mario Land 3D Savegame Editor + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + SM3DL_SGE.cs + + + + + SM3DL_SGE.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + \ No newline at end of file