diff --git a/.vs/GBAPokemonGameEditor/v14/.suo b/.vs/GBAPokemonGameEditor/v14/.suo index 96216c4..34f4dc6 100644 Binary files a/.vs/GBAPokemonGameEditor/v14/.suo and b/.vs/GBAPokemonGameEditor/v14/.suo differ diff --git a/GBAPokemonGameEditor/AbilityAdder.Designer.vb b/GBAPokemonGameEditor/AbilityAdder.Designer.vb index 720aba1..cdcdb34 100644 --- a/GBAPokemonGameEditor/AbilityAdder.Designer.vb +++ b/GBAPokemonGameEditor/AbilityAdder.Designer.vb @@ -24,21 +24,21 @@ Partial Class AbilityAdder Private Sub InitializeComponent() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(AbilityAdder)) Me.TabControl1 = New System.Windows.Forms.TabControl() + Me.TabPage1 = New System.Windows.Forms.TabPage() + Me.CheckBox3 = New System.Windows.Forms.CheckBox() + Me.Button1 = New System.Windows.Forms.Button() + Me.TextBox1 = New System.Windows.Forms.TextBox() + Me.Label2 = New System.Windows.Forms.Label() + Me.Label1 = New System.Windows.Forms.Label() Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.CheckBox1 = New System.Windows.Forms.CheckBox() Me.Button2 = New System.Windows.Forms.Button() Me.TextBox2 = New System.Windows.Forms.TextBox() Me.Label3 = New System.Windows.Forms.Label() Me.Label4 = New System.Windows.Forms.Label() - Me.Label1 = New System.Windows.Forms.Label() - Me.Label2 = New System.Windows.Forms.Label() - Me.TextBox1 = New System.Windows.Forms.TextBox() - Me.Button1 = New System.Windows.Forms.Button() - Me.TabPage1 = New System.Windows.Forms.TabPage() - Me.CheckBox3 = New System.Windows.Forms.CheckBox() - Me.CheckBox1 = New System.Windows.Forms.CheckBox() Me.TabControl1.SuspendLayout() - Me.TabPage2.SuspendLayout() Me.TabPage1.SuspendLayout() + Me.TabPage2.SuspendLayout() Me.SuspendLayout() ' 'TabControl1 @@ -51,6 +51,66 @@ Partial Class AbilityAdder Me.TabControl1.Size = New System.Drawing.Size(229, 174) Me.TabControl1.TabIndex = 1 ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.CheckBox3) + Me.TabPage1.Controls.Add(Me.Button1) + Me.TabPage1.Controls.Add(Me.TextBox1) + Me.TabPage1.Controls.Add(Me.Label2) + Me.TabPage1.Controls.Add(Me.Label1) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(221, 148) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "Fire Red" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'CheckBox3 + ' + Me.CheckBox3.AutoSize = True + Me.CheckBox3.Location = New System.Drawing.Point(20, 74) + Me.CheckBox3.Name = "CheckBox3" + Me.CheckBox3.Size = New System.Drawing.Size(100, 17) + Me.CheckBox3.TabIndex = 12 + Me.CheckBox3.Text = "Delete Old data" + Me.CheckBox3.UseVisualStyleBackColor = True + ' + 'Button1 + ' + Me.Button1.Location = New System.Drawing.Point(20, 97) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(180, 45) + Me.Button1.TabIndex = 3 + Me.Button1.Text = "Expand" + Me.Button1.UseVisualStyleBackColor = True + ' + 'TextBox1 + ' + Me.TextBox1.Location = New System.Drawing.Point(154, 47) + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Size = New System.Drawing.Size(46, 20) + Me.TextBox1.TabIndex = 2 + Me.TextBox1.Text = "100" + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(17, 50) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(129, 13) + Me.Label2.TabIndex = 1 + Me.Label2.Text = "Number of abilities to add:" + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(17, 26) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(135, 13) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Number of abilities in ROM:" + ' 'TabPage2 ' Me.TabPage2.Controls.Add(Me.CheckBox1) @@ -66,6 +126,16 @@ Partial Class AbilityAdder Me.TabPage2.Text = "Emerald" Me.TabPage2.UseVisualStyleBackColor = True ' + 'CheckBox1 + ' + Me.CheckBox1.AutoSize = True + Me.CheckBox1.Location = New System.Drawing.Point(20, 74) + Me.CheckBox1.Name = "CheckBox1" + Me.CheckBox1.Size = New System.Drawing.Size(100, 17) + Me.CheckBox1.TabIndex = 12 + Me.CheckBox1.Text = "Delete Old data" + Me.CheckBox1.UseVisualStyleBackColor = True + ' 'Button2 ' Me.Button2.Location = New System.Drawing.Point(20, 97) @@ -101,76 +171,6 @@ Partial Class AbilityAdder Me.Label4.TabIndex = 4 Me.Label4.Text = "Number of abilities in ROM:" ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(17, 26) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(135, 13) - Me.Label1.TabIndex = 0 - Me.Label1.Text = "Number of abilities in ROM:" - ' - 'Label2 - ' - Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(17, 50) - Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(129, 13) - Me.Label2.TabIndex = 1 - Me.Label2.Text = "Number of abilities to add:" - ' - 'TextBox1 - ' - Me.TextBox1.Location = New System.Drawing.Point(154, 47) - Me.TextBox1.Name = "TextBox1" - Me.TextBox1.Size = New System.Drawing.Size(46, 20) - Me.TextBox1.TabIndex = 2 - Me.TextBox1.Text = "100" - ' - 'Button1 - ' - Me.Button1.Location = New System.Drawing.Point(20, 97) - Me.Button1.Name = "Button1" - Me.Button1.Size = New System.Drawing.Size(180, 45) - Me.Button1.TabIndex = 3 - Me.Button1.Text = "Expand" - Me.Button1.UseVisualStyleBackColor = True - ' - 'TabPage1 - ' - Me.TabPage1.Controls.Add(Me.CheckBox3) - Me.TabPage1.Controls.Add(Me.Button1) - Me.TabPage1.Controls.Add(Me.TextBox1) - Me.TabPage1.Controls.Add(Me.Label2) - Me.TabPage1.Controls.Add(Me.Label1) - Me.TabPage1.Location = New System.Drawing.Point(4, 22) - Me.TabPage1.Name = "TabPage1" - Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(221, 148) - Me.TabPage1.TabIndex = 0 - Me.TabPage1.Text = "Fire Red" - Me.TabPage1.UseVisualStyleBackColor = True - ' - 'CheckBox3 - ' - Me.CheckBox3.AutoSize = True - Me.CheckBox3.Location = New System.Drawing.Point(20, 74) - Me.CheckBox3.Name = "CheckBox3" - Me.CheckBox3.Size = New System.Drawing.Size(100, 17) - Me.CheckBox3.TabIndex = 12 - Me.CheckBox3.Text = "Delete Old data" - Me.CheckBox3.UseVisualStyleBackColor = True - ' - 'CheckBox1 - ' - Me.CheckBox1.AutoSize = True - Me.CheckBox1.Location = New System.Drawing.Point(20, 74) - Me.CheckBox1.Name = "CheckBox1" - Me.CheckBox1.Size = New System.Drawing.Size(100, 17) - Me.CheckBox1.TabIndex = 12 - Me.CheckBox1.Text = "Delete Old data" - Me.CheckBox1.UseVisualStyleBackColor = True - ' 'AbilityAdder ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -184,10 +184,10 @@ Partial Class AbilityAdder Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "Ability Adder" Me.TabControl1.ResumeLayout(False) - Me.TabPage2.ResumeLayout(False) - Me.TabPage2.PerformLayout() Me.TabPage1.ResumeLayout(False) Me.TabPage1.PerformLayout() + Me.TabPage2.ResumeLayout(False) + Me.TabPage2.PerformLayout() Me.ResumeLayout(False) End Sub diff --git a/GBAPokemonGameEditor/AbilityAdder.vb b/GBAPokemonGameEditor/AbilityAdder.vb index 3fa8a50..d9e7749 100644 --- a/GBAPokemonGameEditor/AbilityAdder.vb +++ b/GBAPokemonGameEditor/AbilityAdder.vb @@ -132,4 +132,104 @@ Public Class AbilityAdder MsgBox("Abilities expanded successfully!") End Sub + + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + + Dim countervar As Integer + + Dim AbilitiesNamesBuffer As String + Dim AbilitiesNamesNewOffset As String + + Dim AbilitiesDescriptionTableBuffer As String + Dim AbilitiesDescriptionTableNewOffset As String + + If System.IO.File.Exists((LoadedROM).Substring(0, LoadedROM.Length - 4) & ".ini") = True Then + + MsgBox("An INI for this ROM has been detected! Values will be updated as needed.") + + Else + + MsgBox("INI not found! One will now be created for this ROM in the same location as the ROM. Keep the ini with the ROM so that PGE can know the location of the data.") + + File.Copy(AppPath & "ini\roms.ini", (LoadedROM).Substring(0, LoadedROM.Length - 4) & ".ini", True) + + End If + + Cursor = Cursors.WaitCursor + + 'Ability Names + + AbilitiesNamesBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "AbilityNames", "")), System.Globalization.NumberStyles.HexNumber), (GetString(GetINIFileLocation(), header, "NumberOfAbilities", "")) * 13) + + 'Deletes old data + + If CheckBox1.Checked Then + WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "AbilityNames", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(AbilitiesNamesBuffer) / 2))) + End If + + countervar = 0 + + While countervar < TextBox2.Text + countervar = countervar + 1 + + AbilitiesNamesBuffer = AbilitiesNamesBuffer & "ACACACACACACACFF0000000000" + + End While + + + AbilitiesNamesNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(AbilitiesNamesBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000")) + + WriteHEX(LoadedROM, AbilitiesNamesNewOffset, AbilitiesNamesBuffer) + + WriteString(GetINIFileLocation(), header, "AbilityNames", Hex(AbilitiesNamesNewOffset)) + + 'Repoint ability Names + + WriteHEX(LoadedROM, &H1C0, ReverseHEX(Hex((AbilitiesNamesNewOffset) + &H8000000))) + WriteHEX(LoadedROM, &H14F0D4, ReverseHEX(Hex((AbilitiesNamesNewOffset) + &H8000000))) + WriteHEX(LoadedROM, &H14F854, ReverseHEX(Hex((AbilitiesNamesNewOffset) + &H8000000))) + WriteHEX(LoadedROM, &H1C3028, ReverseHEX(Hex((AbilitiesNamesNewOffset) + &H8000000))) + + 'ability Descriptions + + AbilitiesDescriptionTableBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "AbilityDescriptionTable", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfAbilities", ""))) * 4) + + 'Deletes old data + + If CheckBox1.Checked Then + WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "AbilityDescriptionTable", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(AbilitiesDescriptionTableBuffer) / 2))) + End If + + countervar = 0 + + While countervar < TextBox2.Text + countervar = countervar + 1 + + AbilitiesDescriptionTableBuffer = AbilitiesDescriptionTableBuffer & "98AF3108" + + End While + + + AbilitiesDescriptionTableNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(AbilitiesDescriptionTableBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000")) + + WriteHEX(LoadedROM, AbilitiesDescriptionTableNewOffset, AbilitiesDescriptionTableBuffer) + + WriteString(GetINIFileLocation(), header, "AbilityDescriptionTable", Hex(AbilitiesDescriptionTableNewOffset)) + + 'Repoint Abilities Description Table + + WriteHEX(LoadedROM, &H1C4, ReverseHEX(Hex((AbilitiesDescriptionTableNewOffset) + &H8000000))) + WriteHEX(LoadedROM, &H1C3078, ReverseHEX(Hex((AbilitiesDescriptionTableNewOffset) + &H8000000))) + + + 'Updates the number of Abilities + WriteString(GetINIFileLocation(), header, "NumberOfAbilities", CInt((GetString(GetINIFileLocation(), header, "NumberOfAbilities", ""))) + CInt(TextBox2.Text)) + + Label4.Text = "Number of abilities in ROM: " & (GetString(GetINIFileLocation(), header, "NumberOfAbilities", "")) + + Cursor = Cursors.Arrow + + MsgBox("Abilities expanded successfully!") + + End Sub End Class \ No newline at end of file diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application index 28713f4..248b609 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application @@ -16,7 +16,7 @@ - QnyXznts4kcUxr7YwkFqFYAWzF8= + NitTHYSEJKneAu0uHO1bphjdGN0= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe index 28b499d..0314faa 100644 Binary files a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe and b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe differ diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest index 08c396f..000a91b 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest @@ -43,14 +43,14 @@ - + - eQ5S6eQDbg3uxr8lKVXHbOa2ZgE= + DkRp3J/cipGGfrMgmfcb+7jPPk0= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb index 41fd49e..cde76cc 100644 Binary files a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb and b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb differ diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application index 28713f4..248b609 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application @@ -16,7 +16,7 @@ - QnyXznts4kcUxr7YwkFqFYAWzF8= + NitTHYSEJKneAu0uHO1bphjdGN0= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest index 08c396f..000a91b 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest @@ -43,14 +43,14 @@ - + - eQ5S6eQDbg3uxr8lKVXHbOa2ZgE= + DkRp3J/cipGGfrMgmfcb+7jPPk0= diff --git a/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe b/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe index 28b499d..0314faa 100644 Binary files a/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe and b/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache b/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache index 5a0f7e9..7ae2ba0 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache and b/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application index 28713f4..248b609 100644 --- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application +++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application @@ -16,7 +16,7 @@ - QnyXznts4kcUxr7YwkFqFYAWzF8= + NitTHYSEJKneAu0uHO1bphjdGN0= diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe index 28b499d..0314faa 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe and b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest index 08c396f..000a91b 100644 --- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest +++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest @@ -43,14 +43,14 @@ - + - eQ5S6eQDbg3uxr8lKVXHbOa2ZgE= + DkRp3J/cipGGfrMgmfcb+7jPPk0= diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb index 41fd49e..cde76cc 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb and b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb differ diff --git a/README.md b/README.md index f2335dc..d8592a4 100644 --- a/README.md +++ b/README.md @@ -21,57 +21,50 @@ Screenshots Features ================= -Editable INI that contains all the offsets +Editable INI that contains all the offsets. Each ROM can have it's own INI. -Pokemon Editor +Pokemon Editor. -Attack Editor +Attack Editor. -RSE Starter Editor +RSE Starter Editor. -Pokedex Order Editor +Pokedex Order Editor. -Ability Editor +Ability Editor. -Move Tutor Editor - -Linux Support - Runs with mono. *Please note that I currently can't test under Linux so some things may have become broken since PGE was able to run on Linux.* +Move Tutor Editor. Multiple Windows open at once. Add up to 20 external programs. -Windows RT support (On Jailbroken devices) +Battle Frontier Editor. -Windows XP support +Pokedex Editor. -Battle Frontier Editor +Support for more than 5 evolutions per Pokemon. -Pokedex Editor - -Support for more than 5 evolutions per Pokemon - -Support for more types +Support for more types. Ability to define evolutions. -Item editor +Item editor. -TM/HM Editor - -Ability to use a seperate ini +TM/HM Editor. Ability to add more attacks. Egg move editor. +Habitat editor. + Planned Features ================= Ability to add more Pokemon. -Ability to add more items. - +Improved Pokemon data importing and exporting. Program Requirements ==================== @@ -144,6 +137,8 @@ Wichu colcolstyles +RomHackersWorld + Downloads ================================ https://github.com/Gamer2020/PokemonGameEditor/releases