diff --git a/.vs/GBAPokemonGameEditor/v14/.suo b/.vs/GBAPokemonGameEditor/v14/.suo
index 8766a00..4623e5b 100644
Binary files a/.vs/GBAPokemonGameEditor/v14/.suo and b/.vs/GBAPokemonGameEditor/v14/.suo differ
diff --git a/GBAPokemonGameEditor/PokemonAdder.vb b/GBAPokemonGameEditor/PokemonAdder.vb
index e5f4ba3..3e850b3 100644
--- a/GBAPokemonGameEditor/PokemonAdder.vb
+++ b/GBAPokemonGameEditor/PokemonAdder.vb
@@ -40,6 +40,25 @@ Public Class PokemonAdder
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
+ 'Declare buffers I will use for adding stuff.
+
+ Dim countervar As Integer
+
+ Dim PokemonNamesBuffer As String
+ Dim PokemonNamesNewOffset As String
+
+ Dim PokemonDataBuffer As String
+ Dim PokemonDataNewOffset As String
+
+ Dim PokemonAttackDataBuffer As String
+ Dim PokemonAttackDataNewOffset As String
+
+ Dim PokemonFrontSpriteTableBuffer As String
+ Dim PokemonFrontSpriteTableNewOffset As String
+
+ Dim PokemonBackSpriteTableBuffer As String
+ Dim PokemonBackSpriteTableNewOffset As String
+
If System.IO.File.Exists((LoadedROM).Substring(0, LoadedROM.Length - 4) & ".ini") = True Then
@@ -126,6 +145,344 @@ Public Class PokemonAdder
End If
+ 'Pokemon Names
+
+ PokemonNamesBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonNames", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) + 0) * 11)
+
+ 'Deletes old data
+
+ If CheckBox2.Checked Then
+ WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonNames", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(PokemonNamesBuffer) / 2)))
+ End If
+
+ 'Handles Unowns
+
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ PokemonNamesBuffer = PokemonNamesBuffer & "BFC1C1FF00000000000000CFC8C9D1C8BCFFFFFFFFFFCFC8C9D1C8BDFFFFFFFFFFCFC8C9D1C8BEFFFFFFFFFFCFC8C9D1C8BFFFFFFFFFFFCFC8C9D1C8C0FFFFFFFFFFCFC8C9D1C8C1FFFFFFFFFFCFC8C9D1C8C2FFFFFFFFFFCFC8C9D1C8C3FFFFFFFFFFCFC8C9D1C8C4FFFFFFFFFFCFC8C9D1C8C5FFFFFFFFFFCFC8C9D1C8C6FFFFFFFFFFCFC8C9D1C8C7FFFFFFFFFFCFC8C9D1C8C8FFFFFFFFFFCFC8C9D1C8C9FFFFFFFFFFCFC8C9D1C8CAFFFFFFFFFFCFC8C9D1C8CBFFFFFFFFFFCFC8C9D1C8CCFFFFFFFFFFCFC8C9D1C8CDFFFFFFFFFFCFC8C9D1C8CEFFFFFFFFFFCFC8C9D1C8CFFFFFFFFFFFCFC8C9D1C8D0FFFFFFFFFFCFC8C9D1C8D1FFFFFFFFFFCFC8C9D1C8D2FFFFFFFFFFCFC8C9D1C8D3FFFFFFFFFFCFC8C9D1C8D4FFFFFFFFFFCFC8C9D1C8ABFFFFFFFFFFCFC8C9D1C8ACFF00000000"
+ End If
+
+ 'Adds new data
+
+ countervar = 0
+
+ While countervar < TextBox1.Text
+ countervar = countervar + 1
+
+ PokemonNamesBuffer = PokemonNamesBuffer & "ACACACACACACACACACACFF"
+
+ End While
+
+ PokemonNamesNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(PokemonNamesBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000"))
+
+ WriteHEX(LoadedROM, PokemonNamesNewOffset, PokemonNamesBuffer)
+
+ WriteString(GetINIFileLocation(), header, "PokemonNames", Hex(PokemonNamesNewOffset))
+
+ 'Repoint Pokemon Names
+
+ WriteHEX(LoadedROM, &H000144, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H011450, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H01150C, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0115A4, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0116BC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H034D80, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H040FEC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0435DC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H049768, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H053ADC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H053B44, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H06BCC4, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H06BD10, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H093E8C, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H09F560, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0A0900, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0BD820, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CB120, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CBEAC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE0B4, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE6B8, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE8D0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0E651C, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0F3324, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1035C0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H103698, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H103738, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1037D0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H10386C, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1038CC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H104E70, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H105FE0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1066B0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H113EFC, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H119458, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H11ACA0, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H11AFF4, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H11B048, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H12190C, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H136318, ReverseHEX(Hex((PokemonNamesNewOffset) + &H8000000)))
+
+ 'This will cause the repointed name table to actually get used.
+ WriteHEX(LoadedROM, &H41000, "000000000000")
+
+ 'Pokemon Data
+
+ PokemonDataBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonData", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) + 0) * 28)
+
+ 'Deletes old data
+
+ If CheckBox2.Checked Then
+ WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonData", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(PokemonDataBuffer) / 2)))
+ End If
+
+ 'Handles Unowns
+
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ PokemonDataBuffer = PokemonDataBuffer & "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ End If
+
+ 'Adds new data
+
+ countervar = 0
+
+ While countervar < TextBox1.Text
+ countervar = countervar + 1
+
+ PokemonDataBuffer = PokemonDataBuffer & "00000000000000000000000000000000000000000000000000000000"
+
+ End While
+
+ PokemonDataNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(PokemonDataBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000"))
+
+ WriteHEX(LoadedROM, PokemonDataNewOffset, PokemonDataBuffer)
+
+ WriteString(GetINIFileLocation(), header, "PokemonData", Hex(PokemonDataNewOffset))
+
+ 'Repoint Pokemon Data
+
+ WriteHEX(LoadedROM, &H0001BC, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H012754, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H012FA8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H013230, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H016A60, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H01F008, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H021C28, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0240B4, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H02BABC, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H02CE90, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H02D53C, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H02FFBC, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0300E8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0301F8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H039558, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0399BC, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H039A68, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H039FE8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03DCC4, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03DD94, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03E734, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03E82C, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03E898, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03F780, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03F7C8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H040D58, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H040D78, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0413B8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0419A0, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043914, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043928, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H04393C, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043950, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043964, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0439A4, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043B8C, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H043C10, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H044208, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H044458, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H046600, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H049F4C, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H04FC88, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0C84E0, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CA850, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0E7F14, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0E8040, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0E8150, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H103AC4, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1066B4, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H11AE48, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1361F8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H136794, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H13AAE0, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H1569EC, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H156B18, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H156C28, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000000)))
+
+ 'egg hatching time
+ WriteHEX(LoadedROM, &H46204, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000011)))
+ WriteHEX(LoadedROM, &H462A8, ReverseHEX(Hex((PokemonDataNewOffset) + &H8000011)))
+
+ 'Pokemon Attack Table
+
+ PokemonAttackDataBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonAttackTable", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) + 0) * 4)
+
+ 'Deletes old data
+
+ If CheckBox2.Checked Then
+ WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonAttackTable", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(PokemonAttackDataBuffer) / 2)))
+ End If
+
+ 'Handles Unowns
+
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ PokemonAttackDataBuffer = PokemonAttackDataBuffer & "94742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508947425089474250894742508"
+ End If
+
+ 'Adds new data
+
+ countervar = 0
+
+ While countervar < TextBox1.Text
+ countervar = countervar + 1
+
+ PokemonAttackDataBuffer = PokemonAttackDataBuffer & "94742508"
+
+ End While
+
+ PokemonAttackDataNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(PokemonAttackDataBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000"))
+
+ WriteHEX(LoadedROM, PokemonAttackDataNewOffset, PokemonAttackDataBuffer)
+
+ WriteString(GetINIFileLocation(), header, "PokemonAttackTable", Hex(PokemonAttackDataNewOffset))
+
+ 'Repoint Pokemon Attack Table
+
+ WriteHEX(LoadedROM, &H3EA7C, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H3EB10, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H3EB84, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H43DC8, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H43E20, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H43F84, ReverseHEX(Hex((PokemonAttackDataNewOffset) + &H8000000)))
+
+ 'Pokemon Front Sprite table
+
+ PokemonFrontSpriteTableBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonFrontSprites", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) + 0) * 8)
+
+ 'Deletes old data
+
+ If CheckBox2.Checked Then
+ WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonFrontSprites", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(PokemonFrontSpriteTableBuffer) / 2)))
+ End If
+
+ 'Handles Unowns
+
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ PokemonFrontSpriteTableBuffer = PokemonFrontSpriteTableBuffer & ReadHEX(LoadedROM, ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) * 8) + Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonFrontSprites", "")), System.Globalization.NumberStyles.HexNumber), (28 * 8))
+
+ End If
+
+ 'Adds new data
+
+ countervar = 0
+
+ While countervar < TextBox1.Text
+ countervar = countervar + 1
+
+ PokemonFrontSpriteTableBuffer = PokemonFrontSpriteTableBuffer & "4807D00800080000"
+
+ End While
+
+ PokemonFrontSpriteTableNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(PokemonFrontSpriteTableBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000"))
+
+ WriteHEX(LoadedROM, PokemonFrontSpriteTableNewOffset, PokemonFrontSpriteTableBuffer)
+
+ WriteString(GetINIFileLocation(), header, "PokemonFrontSprites", Hex(PokemonFrontSpriteTableNewOffset))
+
+ 'Repoint Pokemon Front Sprite Table
+
+ WriteHEX(LoadedROM, &H000128, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00ECA8, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00ECEC, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00ED68, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00ED80, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00F0F8, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00F130, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00F1AC, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00F1C4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0343C4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H034D60, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H03507C, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H046F64, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H050074, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0500BC, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H052068, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0534C4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0769C0, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0769E4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H08F470, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE0B8, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE2B8, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE454, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H0CE6C4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H10BBE4, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H10BBF0, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H11D900, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H14AED8, ReverseHEX(Hex((PokemonFrontSpriteTableNewOffset) + &H8000000)))
+
+ 'Pokemon Back Sprite table
+
+ PokemonBackSpriteTableBuffer = ReadHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonBackSprites", "")), System.Globalization.NumberStyles.HexNumber), ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) + 0) * 8)
+
+ 'Deletes old data
+
+ If CheckBox2.Checked Then
+ WriteHEX(LoadedROM, Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonBackSprites", "")), System.Globalization.NumberStyles.HexNumber), MakeFreeSpaceString((Len(PokemonBackSpriteTableBuffer) / 2)))
+ End If
+
+ 'Handles Unowns
+
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ PokemonBackSpriteTableBuffer = PokemonBackSpriteTableBuffer & ReadHEX(LoadedROM, ((GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) * 8) + Int32.Parse((GetString(GetINIFileLocation(), header, "PokemonBackSprites", "")), System.Globalization.NumberStyles.HexNumber), (28 * 8))
+ End If
+
+ 'Adds new data
+
+ countervar = 0
+
+ While countervar < TextBox1.Text
+ countervar = countervar + 1
+
+ PokemonBackSpriteTableBuffer = PokemonBackSpriteTableBuffer & "8C09D00800080000"
+
+ End While
+
+ PokemonBackSpriteTableNewOffset = SearchFreeSpaceFourAligned(LoadedROM, &HFF, ((Len(PokemonBackSpriteTableBuffer) / 2)), "&H" & GetString(GetINIFileLocation(), header, "StartSearchingForSpaceOffset", "800000"))
+
+ WriteHEX(LoadedROM, PokemonBackSpriteTableNewOffset, PokemonBackSpriteTableBuffer)
+
+ WriteString(GetINIFileLocation(), header, "PokemonBackSprites", Hex(PokemonBackSpriteTableNewOffset))
+
+ 'Repoint Pokemon Back Sprite Table
+
+ WriteHEX(LoadedROM, &H00012C, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00ED58, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H00F19C, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H034540, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H034584, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H034F04, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H076A58, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H076AC8, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H10BC0C, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+ WriteHEX(LoadedROM, &H10BC24, ReverseHEX(Hex((PokemonBackSpriteTableNewOffset) + &H8000000)))
+
+ 'These will break the limiters preventing sprites from showing up.
+ WriteHEX(LoadedROM, &HED72, "07E0")
+ WriteHEX(LoadedROM, &HF1B6, "07E0")
+
+ 'Updates the number of Pokemon
+ If (GetString(GetINIFileLocation(), header, "NumberOfPokemon", "")) = "412" Then
+ WriteString(GetINIFileLocation(), header, "NumberOfPokemon", CInt((GetString(GetINIFileLocation(), header, "NumberOfPokemon", ""))) + 28 + CInt(TextBox1.Text))
+ Else
+ WriteString(GetINIFileLocation(), header, "NumberOfPokemon", CInt((GetString(GetINIFileLocation(), header, "NumberOfPokemon", ""))) + CInt(TextBox1.Text))
+ End If
Cursor = Cursors.WaitCursor
diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application
index 16ec3d4..de0f8f8 100644
--- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application
+++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application
@@ -16,7 +16,7 @@
- pCqkq+LSAeqQfxGH2m3zMH9a2JM=
+ BggM4nBMbgXE/2qJKKKT2lQQVY0=
diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe
index dde1f7c..6ffebd8 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 67d5079..4369f0f 100644
--- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest
+++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest
@@ -43,14 +43,14 @@
-
+
- lCfPFZWS7yVGGz5D6qE03u5i9cI=
+ gd329iNHIo60ayeNxa8CPHtGZRc=
diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb
index 48e019d..d39371e 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 16ec3d4..de0f8f8 100644
--- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application
+++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application
@@ -16,7 +16,7 @@
- pCqkq+LSAeqQfxGH2m3zMH9a2JM=
+ BggM4nBMbgXE/2qJKKKT2lQQVY0=
diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest
index 67d5079..4369f0f 100644
--- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest
+++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest
@@ -43,14 +43,14 @@
-
+
- lCfPFZWS7yVGGz5D6qE03u5i9cI=
+ gd329iNHIo60ayeNxa8CPHtGZRc=
diff --git a/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe b/GBAPokemonGameEditor/bin/Debug/app.publish/PokemonGameEditor.exe
index dde1f7c..6ffebd8 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/PokemonGameEditor.application b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application
index 16ec3d4..de0f8f8 100644
--- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application
+++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application
@@ -16,7 +16,7 @@
- pCqkq+LSAeqQfxGH2m3zMH9a2JM=
+ BggM4nBMbgXE/2qJKKKT2lQQVY0=
diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe
index dde1f7c..6ffebd8 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 67d5079..4369f0f 100644
--- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest
+++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest
@@ -43,14 +43,14 @@
-
+
- lCfPFZWS7yVGGz5D6qE03u5i9cI=
+ gd329iNHIo60ayeNxa8CPHtGZRc=
diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb
index 48e019d..d39371e 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 f713fae..5b92ea7 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ Item editor.
TM/HM Editor.
-Ability to add more attacks.
+Attack adder.
Egg move editor.
@@ -59,6 +59,8 @@ Habitat editor.
ROM expander.
+Ability adder.
+
Planned Features
=================