diff --git a/GBAPokemonGameEditor.v12.suo b/GBAPokemonGameEditor.v12.suo index 3fb411b..b2a350f 100644 Binary files a/GBAPokemonGameEditor.v12.suo and b/GBAPokemonGameEditor.v12.suo differ diff --git a/GBAPokemonGameEditor/App.config b/GBAPokemonGameEditor/App.config index 3a327fa..1729194 100644 --- a/GBAPokemonGameEditor/App.config +++ b/GBAPokemonGameEditor/App.config @@ -1,6 +1,6 @@ - + diff --git a/GBAPokemonGameEditor/CryFunctions.vb b/GBAPokemonGameEditor/CryFunctions.vb index 5e7a95f..a283fd8 100644 --- a/GBAPokemonGameEditor/CryFunctions.vb +++ b/GBAPokemonGameEditor/CryFunctions.vb @@ -1,4 +1,8 @@ - +Imports System +Imports System.IO +Imports System.Text +Imports System.Media + 'These functions are based off the ones found in this project: https://github.com/doom-desire/Cry-Editor 'Credit goes to doom-desire for these functions. @@ -60,57 +64,180 @@ Module CryFunctions CryToLoad.LoopStart = Int32.Parse(ReverseHEX((ReadHEX(LoadedROM, (cryOffset) + 8, 4))), System.Globalization.NumberStyles.HexNumber) CryToLoad.Size = Int32.Parse(ReverseHEX((ReadHEX(LoadedROM, (cryOffset) + 12, 4))), System.Globalization.NumberStyles.HexNumber) + 1 - 'If Not CryToLoad.Compressed Then - ' ' uncompressed, 1 sample per 1 byte of size - ' CryToLoad.Data = New SByte(CryToLoad.Size - 1) {} - ' For i As Integer = 0 To CryToLoad.Size - 1 - ' CryToLoad.Data(i) = ledrom.ReadSByte() - ' Next - 'Else - ' ' compressed, a bit of a hassle - ' Dim lookup = New SByte() {0, 1, 4, 9, 16, 25, _ - ' 36, 49, -64, -49, -36, -25, _ - ' -16, -9, -4, -1} - ' Dim start = ledrom.Position + If Not CryToLoad.Compressed Then + ' uncompressed, 1 sample per 1 byte of size + CryToLoad.Data = New SByte(CryToLoad.Size - 1) {} + For g As Integer = 0 To CryToLoad.Size - 1 - ' Dim alignment As Integer = 0, size As Integer = 0 - ' Dim pcmLevel As SByte = 0 + CryToLoad.Data(g) = ByteToSignedInt("&H" & (ReadHEX(LoadedROM, (cryOffset) + 16 + g, 1))) + Next + Else + ' compressed, a bit of a hassle + Dim lookup = New SByte() {0, 1, 4, 9, 16, 25, _ + 36, 49, -64, -49, -36, -25, _ + -16, -9, -4, -1} - ' Dim data = New List(Of SByte)() - ' While True - ' If alignment = 0 Then - ' pcmLevel = ledrom.ReadSByte() - ' data.Add(pcmLevel) + Dim start = (cryOffset) + 16 + Dim offtrack = (cryOffset) + 16 - ' alignment = &H20 - ' End If + Dim alignment As Integer = 0, size As Integer = 0 + Dim pcmLevel As SByte = 0 - ' Dim input = ledrom.ReadByte() - ' If alignment < &H20 Then - ' ' first nybble - ' pcmLevel += lookup(input >> 4) - ' data.Add(pcmLevel) - ' End If + Dim data = New List(Of SByte)() - ' ' second nybble - ' pcmLevel += lookup(input And &HF) - ' data.Add(pcmLevel) + While True - ' ' exit when currentSize >= cry.Size - ' size += 2 - ' If size >= CryToLoad.Size Then - ' Exit While - ' End If + If alignment = 0 Then - ' alignment -= 1 - ' End While + pcmLevel = ByteToSignedInt("&H" & (ReadHEX(LoadedROM, offtrack, 1))) + offtrack = offtrack + 1 + data.Add(pcmLevel) - ' CryToLoad.Data = data.ToArray() - ' ' bytes needed to recompress - ' CryToLoad.Size = ledrom.Position - start - 'End If + alignment = &H20 + End If + + Dim input As Byte = ("&H" & (ReadHEX(LoadedROM, offtrack, 1))) + offtrack = offtrack + 1 + + If alignment < &H20 Then + ' first nybble + pcmLevel += lookup(input >> 4) + data.Add(pcmLevel) + End If + + ' second nybble + pcmLevel += lookup(input And &HF) + data.Add(pcmLevel) + + ' exit when currentSize >= cry.Size + size += 2 + If size >= CryToLoad.Size Then + Exit While + End If + + alignment -= 1 + End While + + CryToLoad.Data = data.ToArray() + ' bytes needed to recompress + CryToLoad.Size = offtrack - start + End If Return CryToLoad End Function + Public Function GetCryImage(cry As Cry) As Bitmap + + Dim cryImage As Bitmap + + + cryImage = New Bitmap(cry.Data.Length, 128) + + Using g = Graphics.FromImage(cryImage) + For i As Integer = 1 To cry.Data.Length - 1 + g.DrawLine(Pens.Green, i - 1, 64 + cry.Data(i - 1), i, 64 + cry.Data(i)) + Next + End Using + + Return cryImage + + End Function + + + Public Sub PlayCry(cry As Cry) + ' TODO: we could do this in another thread :O + If cry.Offset = 0 Then + Exit Sub + End If + + Using stream = New MemoryStream() + ' "save" the cry to a memorystream + Using writer As BinaryWriter = New BinaryWriter(stream, Encoding.ASCII, True) + ' RIFF header + writer.Write(Encoding.ASCII.GetBytes("RIFF")) + writer.Write(0) + writer.Write(Encoding.ASCII.GetBytes("WAVE")) + + ' fmt chunk + writer.Write(Encoding.ASCII.GetBytes("fmt ")) + writer.Write(16) + writer.Write(CUShort(1)) + writer.Write(CUShort(1)) + writer.Write(cry.SampleRate) + writer.Write(cry.SampleRate) + writer.Write(CUShort(1)) + writer.Write(CUShort(8)) + + ' data chunk + writer.Write(Encoding.ASCII.GetBytes("data")) + writer.Write(cry.Data.Length) + For Each sample As SByte In cry.Data + writer.Write(CByte(sample + &H80)) + Next + + ' fix header + writer.Seek(4, SeekOrigin.Begin) + writer.Write(CInt(writer.BaseStream.Length) - 8) + + End Using + + ' play it via a soundplayer + stream.Seek(0L, SeekOrigin.Begin) + Using player = New SoundPlayer(stream) + player.Load() + player.Play() + End Using + End Using + End Sub + + + Public Sub ExportCry(filename As String, cry As Cry) + If Cry.Offset = 0 Then + Return + End If + + ' http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html + ' http://soundfile.sapp.org/doc/WaveFormat/ + Using writer = New BinaryWriter(File.Create(filename)) + ' RIFF header + writer.Write(Encoding.ASCII.GetBytes("RIFF")) + ' file ID + writer.Write(0) + ' file size placeholder + writer.Write(Encoding.ASCII.GetBytes("WAVE")) + ' format + ' fmt chunk + writer.Write(Encoding.ASCII.GetBytes("fmt ")) + ' chunk ID + writer.Write(16) + ' chunk size, 16 for PCM + writer.Write(CUShort(1)) + ' format: 1 = wave_format_pcm + writer.Write(CUShort(1)) + ' channel count + writer.Write(Cry.SampleRate) + ' sample rate + ' * 1 * 8 / 8 + writer.Write(Cry.SampleRate) + ' SampleRate * NumChannels * BitsPerSample/8 + ' * 8 / 8 + writer.Write(CUShort(1)) + ' NumChannels * BitsPerSample/8 + writer.Write(CUShort(8)) + ' bits per sample + ' data chunk + writer.Write(Encoding.ASCII.GetBytes("data")) + ' chunk ID + writer.Write(Cry.Data.Length) + ' chunk size + For Each sample As SByte In cry.Data + writer.Write(CByte(sample + &H80)) + Next + ' wave PCM is unsigned unlike GBA PCM which is + ' fix header + writer.Seek(4, SeekOrigin.Begin) + writer.Write(CInt(writer.BaseStream.Length) - 8) + End Using + End Sub + End Module diff --git a/GBAPokemonGameEditor/GBAPokemonGameEditor.vbproj b/GBAPokemonGameEditor/GBAPokemonGameEditor.vbproj index 86a57de..a398c66 100644 --- a/GBAPokemonGameEditor/GBAPokemonGameEditor.vbproj +++ b/GBAPokemonGameEditor/GBAPokemonGameEditor.vbproj @@ -13,7 +13,7 @@ PokemonGameEditor 512 WindowsForms - v4.0 + v4.5 false @@ -46,6 +46,7 @@ PokemonGameEditor.xml 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 true + false AnyCPU @@ -56,6 +57,7 @@ bin\Release\ PokemonGameEditor.xml 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + false On @@ -255,7 +257,6 @@ Form - RomExpander.vb diff --git a/GBAPokemonGameEditor/HexFunctions.vb b/GBAPokemonGameEditor/HexFunctions.vb index a90f204..6a7b180 100644 --- a/GBAPokemonGameEditor/HexFunctions.vb +++ b/GBAPokemonGameEditor/HexFunctions.vb @@ -42,14 +42,17 @@ EndNow: ReverseHEX = HEXHolder End Function - Public Function ReadHEX(ByRef FilePath As String, ByRef Start As Integer, ByRef Length As Integer) As String + Public Function ReadHEX(ByRef FilePath As String, ByRef Start2 As Integer, ByRef Length As Integer) As String On Error GoTo ErrHandle Dim iFile As Integer Dim bytHex As Byte Dim sHex As String Dim i As Integer - Start = Start + 1 - iFile = FreeFile + Dim Start As Integer + + Start = Start2 + 1 + + iFile = FreeFile() sHex = "" i = 0 FileOpen(iFile, FilePath, OpenMode.Binary) @@ -62,7 +65,7 @@ EndNow: ReadHEX = sHex Exit Function ErrHandle: - MsgBox(Err.Description, MsgBoxStyle.OKOnly, "Error: " & Err.Number) + MsgBox(Err.Description, MsgBoxStyle.OkOnly, "Error: " & Err.Number) End Function Public Function WriteHEX(ByRef FilePath As String, ByRef Start As Integer, ByRef Data As String) As Object diff --git a/GBAPokemonGameEditor/My Project/Settings.Designer.vb b/GBAPokemonGameEditor/My Project/Settings.Designer.vb index 0478b60..afa7c05 100644 --- a/GBAPokemonGameEditor/My Project/Settings.Designer.vb +++ b/GBAPokemonGameEditor/My Project/Settings.Designer.vb @@ -15,7 +15,7 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase diff --git a/GBAPokemonGameEditor/Pokemonedit.Designer.vb b/GBAPokemonGameEditor/Pokemonedit.Designer.vb index b449c70..9020556 100644 --- a/GBAPokemonGameEditor/Pokemonedit.Designer.vb +++ b/GBAPokemonGameEditor/Pokemonedit.Designer.vb @@ -218,6 +218,10 @@ Partial Class Pokemonedit Me.Clr1 = New System.Windows.Forms.ComboBox() Me.TabPage5 = New System.Windows.Forms.TabPage() Me.GroupBox35 = New System.Windows.Forms.GroupBox() + Me.Panel2 = New System.Windows.Forms.Panel() + Me.pSample2 = New System.Windows.Forms.PictureBox() + Me.chkCompressed2 = New System.Windows.Forms.CheckBox() + Me.Label56 = New System.Windows.Forms.Label() Me.Label54 = New System.Windows.Forms.Label() Me.Button31 = New System.Windows.Forms.Button() Me.Label52 = New System.Windows.Forms.Label() @@ -225,6 +229,11 @@ Partial Class Pokemonedit Me.CryComp2 = New System.Windows.Forms.TextBox() Me.CryPointer2 = New System.Windows.Forms.TextBox() Me.GroupBox34 = New System.Windows.Forms.GroupBox() + Me.Button32 = New System.Windows.Forms.Button() + Me.chkCompressed1 = New System.Windows.Forms.CheckBox() + Me.panel1 = New System.Windows.Forms.Panel() + Me.pSample = New System.Windows.Forms.PictureBox() + Me.Label55 = New System.Windows.Forms.Label() Me.Label53 = New System.Windows.Forms.Label() Me.Label17 = New System.Windows.Forms.Label() Me.CryPointer = New System.Windows.Forms.TextBox() @@ -258,8 +267,11 @@ Partial Class Pokemonedit Me.Button28 = New System.Windows.Forms.Button() Me.Button29 = New System.Windows.Forms.Button() Me.Button30 = New System.Windows.Forms.Button() - Me.Label55 = New System.Windows.Forms.Label() - Me.Label56 = New System.Windows.Forms.Label() + Me.Button33 = New System.Windows.Forms.Button() + Me.Button34 = New System.Windows.Forms.Button() + Me.Button35 = New System.Windows.Forms.Button() + Me.Button36 = New System.Windows.Forms.Button() + Me.Button37 = New System.Windows.Forms.Button() Me.TabControl1.SuspendLayout() Me.TabPage1.SuspendLayout() Me.GroupBox26.SuspendLayout() @@ -318,7 +330,11 @@ Partial Class Pokemonedit Me.GroupBox2.SuspendLayout() Me.TabPage5.SuspendLayout() Me.GroupBox35.SuspendLayout() + Me.Panel2.SuspendLayout() + CType(Me.pSample2, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox34.SuspendLayout() + Me.panel1.SuspendLayout() + CType(Me.pSample, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox21.SuspendLayout() Me.GroupBox18.SuspendLayout() Me.GroupBox19.SuspendLayout() @@ -2447,6 +2463,11 @@ Partial Class Pokemonedit ' 'GroupBox35 ' + Me.GroupBox35.Controls.Add(Me.Button35) + Me.GroupBox35.Controls.Add(Me.Button36) + Me.GroupBox35.Controls.Add(Me.Button37) + Me.GroupBox35.Controls.Add(Me.Panel2) + Me.GroupBox35.Controls.Add(Me.chkCompressed2) Me.GroupBox35.Controls.Add(Me.Label56) Me.GroupBox35.Controls.Add(Me.Label54) Me.GroupBox35.Controls.Add(Me.Button31) @@ -2456,15 +2477,52 @@ Partial Class Pokemonedit Me.GroupBox35.Controls.Add(Me.CryPointer2) Me.GroupBox35.Location = New System.Drawing.Point(17, 290) Me.GroupBox35.Name = "GroupBox35" - Me.GroupBox35.Size = New System.Drawing.Size(400, 250) + Me.GroupBox35.Size = New System.Drawing.Size(666, 250) Me.GroupBox35.TabIndex = 8 Me.GroupBox35.TabStop = False Me.GroupBox35.Text = "Growl Cry" ' + 'Panel2 + ' + Me.Panel2.AutoScroll = True + Me.Panel2.Controls.Add(Me.pSample2) + Me.Panel2.Location = New System.Drawing.Point(218, 18) + Me.Panel2.Name = "Panel2" + Me.Panel2.Size = New System.Drawing.Size(430, 188) + Me.Panel2.TabIndex = 26 + ' + 'pSample2 + ' + Me.pSample2.Location = New System.Drawing.Point(0, 0) + Me.pSample2.Name = "pSample2" + Me.pSample2.Size = New System.Drawing.Size(16, 16) + Me.pSample2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.pSample2.TabIndex = 0 + Me.pSample2.TabStop = False + ' + 'chkCompressed2 + ' + Me.chkCompressed2.AutoSize = True + Me.chkCompressed2.Location = New System.Drawing.Point(25, 189) + Me.chkCompressed2.Name = "chkCompressed2" + Me.chkCompressed2.Size = New System.Drawing.Size(109, 21) + Me.chkCompressed2.TabIndex = 25 + Me.chkCompressed2.Text = "Compressed" + Me.chkCompressed2.UseVisualStyleBackColor = True + ' + 'Label56 + ' + Me.Label56.AutoSize = True + Me.Label56.Location = New System.Drawing.Point(22, 164) + Me.Label56.Name = "Label56" + Me.Label56.Size = New System.Drawing.Size(107, 17) + Me.Label56.TabIndex = 24 + Me.Label56.Text = "Size: 0 samples" + ' 'Label54 ' Me.Label54.AutoSize = True - Me.Label54.Location = New System.Drawing.Point(20, 152) + Me.Label54.Location = New System.Drawing.Point(21, 134) Me.Label54.Name = "Label54" Me.Label54.Size = New System.Drawing.Size(126, 17) Me.Label54.TabIndex = 23 @@ -2472,7 +2530,7 @@ Partial Class Pokemonedit ' 'Button31 ' - Me.Button31.Location = New System.Drawing.Point(24, 114) + Me.Button31.Location = New System.Drawing.Point(24, 94) Me.Button31.Margin = New System.Windows.Forms.Padding(4) Me.Button31.Name = "Button31" Me.Button31.Size = New System.Drawing.Size(187, 26) @@ -2518,6 +2576,11 @@ Partial Class Pokemonedit ' 'GroupBox34 ' + Me.GroupBox34.Controls.Add(Me.Button34) + Me.GroupBox34.Controls.Add(Me.Button33) + Me.GroupBox34.Controls.Add(Me.Button32) + Me.GroupBox34.Controls.Add(Me.chkCompressed1) + Me.GroupBox34.Controls.Add(Me.panel1) Me.GroupBox34.Controls.Add(Me.Label55) Me.GroupBox34.Controls.Add(Me.Label53) Me.GroupBox34.Controls.Add(Me.Label17) @@ -2527,11 +2590,57 @@ Partial Class Pokemonedit Me.GroupBox34.Controls.Add(Me.CryComp1) Me.GroupBox34.Location = New System.Drawing.Point(17, 23) Me.GroupBox34.Name = "GroupBox34" - Me.GroupBox34.Size = New System.Drawing.Size(400, 250) + Me.GroupBox34.Size = New System.Drawing.Size(666, 250) Me.GroupBox34.TabIndex = 7 Me.GroupBox34.TabStop = False Me.GroupBox34.Text = "Normal Cry" ' + 'Button32 + ' + Me.Button32.Location = New System.Drawing.Point(218, 211) + Me.Button32.Name = "Button32" + Me.Button32.Size = New System.Drawing.Size(75, 33) + Me.Button32.TabIndex = 25 + Me.Button32.Text = "Play" + Me.Button32.UseVisualStyleBackColor = True + ' + 'chkCompressed1 + ' + Me.chkCompressed1.AutoSize = True + Me.chkCompressed1.Location = New System.Drawing.Point(23, 184) + Me.chkCompressed1.Name = "chkCompressed1" + Me.chkCompressed1.Size = New System.Drawing.Size(109, 21) + Me.chkCompressed1.TabIndex = 24 + Me.chkCompressed1.Text = "Compressed" + Me.chkCompressed1.UseVisualStyleBackColor = True + ' + 'panel1 + ' + Me.panel1.AutoScroll = True + Me.panel1.Controls.Add(Me.pSample) + Me.panel1.Location = New System.Drawing.Point(218, 17) + Me.panel1.Name = "panel1" + Me.panel1.Size = New System.Drawing.Size(430, 188) + Me.panel1.TabIndex = 23 + ' + 'pSample + ' + Me.pSample.Location = New System.Drawing.Point(0, 0) + Me.pSample.Name = "pSample" + Me.pSample.Size = New System.Drawing.Size(16, 16) + Me.pSample.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize + Me.pSample.TabIndex = 0 + Me.pSample.TabStop = False + ' + 'Label55 + ' + Me.Label55.AutoSize = True + Me.Label55.Location = New System.Drawing.Point(21, 156) + Me.Label55.Name = "Label55" + Me.Label55.Size = New System.Drawing.Size(107, 17) + Me.Label55.TabIndex = 22 + Me.Label55.Text = "Size: 0 samples" + ' 'Label53 ' Me.Label53.AutoSize = True @@ -2592,18 +2701,18 @@ Partial Class Pokemonedit Me.GroupBox21.Controls.Add(Me.Button13) Me.GroupBox21.Controls.Add(Me.CryConver) Me.GroupBox21.Controls.Add(Me.Label18) - Me.GroupBox21.Location = New System.Drawing.Point(498, 407) + Me.GroupBox21.Location = New System.Drawing.Point(690, 23) Me.GroupBox21.Margin = New System.Windows.Forms.Padding(4) Me.GroupBox21.Name = "GroupBox21" Me.GroupBox21.Padding = New System.Windows.Forms.Padding(4) - Me.GroupBox21.Size = New System.Drawing.Size(223, 111) + Me.GroupBox21.Size = New System.Drawing.Size(115, 157) Me.GroupBox21.TabIndex = 6 Me.GroupBox21.TabStop = False Me.GroupBox21.Text = "Cry" ' 'Button13 ' - Me.Button13.Location = New System.Drawing.Point(111, 53) + Me.Button13.Location = New System.Drawing.Point(12, 78) Me.Button13.Margin = New System.Windows.Forms.Padding(4) Me.Button13.Name = "Button13" Me.Button13.Size = New System.Drawing.Size(91, 26) @@ -2613,7 +2722,7 @@ Partial Class Pokemonedit ' 'CryConver ' - Me.CryConver.Location = New System.Drawing.Point(111, 22) + Me.CryConver.Location = New System.Drawing.Point(12, 47) Me.CryConver.Margin = New System.Windows.Forms.Padding(4) Me.CryConver.Name = "CryConver" Me.CryConver.Size = New System.Drawing.Size(89, 22) @@ -2839,23 +2948,50 @@ Partial Class Pokemonedit Me.Button30.Text = "Import All Footprints" Me.Button30.UseVisualStyleBackColor = True ' - 'Label55 + 'Button33 ' - Me.Label55.AutoSize = True - Me.Label55.Location = New System.Drawing.Point(21, 156) - Me.Label55.Name = "Label55" - Me.Label55.Size = New System.Drawing.Size(107, 17) - Me.Label55.TabIndex = 22 - Me.Label55.Text = "Size: 0 samples" + Me.Button33.Location = New System.Drawing.Point(299, 211) + Me.Button33.Name = "Button33" + Me.Button33.Size = New System.Drawing.Size(75, 33) + Me.Button33.TabIndex = 26 + Me.Button33.Text = "Import" + Me.Button33.UseVisualStyleBackColor = True ' - 'Label56 + 'Button34 ' - Me.Label56.AutoSize = True - Me.Label56.Location = New System.Drawing.Point(21, 182) - Me.Label56.Name = "Label56" - Me.Label56.Size = New System.Drawing.Size(107, 17) - Me.Label56.TabIndex = 24 - Me.Label56.Text = "Size: 0 samples" + Me.Button34.Location = New System.Drawing.Point(380, 211) + Me.Button34.Name = "Button34" + Me.Button34.Size = New System.Drawing.Size(75, 33) + Me.Button34.TabIndex = 27 + Me.Button34.Text = "Export" + Me.Button34.UseVisualStyleBackColor = True + ' + 'Button35 + ' + Me.Button35.Location = New System.Drawing.Point(380, 212) + Me.Button35.Name = "Button35" + Me.Button35.Size = New System.Drawing.Size(75, 33) + Me.Button35.TabIndex = 30 + Me.Button35.Text = "Export" + Me.Button35.UseVisualStyleBackColor = True + ' + 'Button36 + ' + Me.Button36.Location = New System.Drawing.Point(299, 211) + Me.Button36.Name = "Button36" + Me.Button36.Size = New System.Drawing.Size(75, 33) + Me.Button36.TabIndex = 29 + Me.Button36.Text = "Import" + Me.Button36.UseVisualStyleBackColor = True + ' + 'Button37 + ' + Me.Button37.Location = New System.Drawing.Point(218, 212) + Me.Button37.Name = "Button37" + Me.Button37.Size = New System.Drawing.Size(75, 33) + Me.Button37.TabIndex = 28 + Me.Button37.Text = "Play" + Me.Button37.UseVisualStyleBackColor = True ' 'Pokemonedit ' @@ -2963,8 +3099,14 @@ Partial Class Pokemonedit Me.TabPage5.ResumeLayout(False) Me.GroupBox35.ResumeLayout(False) Me.GroupBox35.PerformLayout() + Me.Panel2.ResumeLayout(False) + Me.Panel2.PerformLayout() + CType(Me.pSample2, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox34.ResumeLayout(False) Me.GroupBox34.PerformLayout() + Me.panel1.ResumeLayout(False) + Me.panel1.PerformLayout() + CType(Me.pSample, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox21.ResumeLayout(False) Me.GroupBox21.PerformLayout() Me.GroupBox18.ResumeLayout(False) @@ -3211,4 +3353,16 @@ Partial Class Pokemonedit Friend WithEvents Label54 As System.Windows.Forms.Label Friend WithEvents Label56 As System.Windows.Forms.Label Friend WithEvents Label55 As System.Windows.Forms.Label + Private WithEvents panel1 As System.Windows.Forms.Panel + Private WithEvents pSample As System.Windows.Forms.PictureBox + Private WithEvents chkCompressed2 As System.Windows.Forms.CheckBox + Private WithEvents chkCompressed1 As System.Windows.Forms.CheckBox + Private WithEvents Panel2 As System.Windows.Forms.Panel + Private WithEvents pSample2 As System.Windows.Forms.PictureBox + Friend WithEvents Button32 As System.Windows.Forms.Button + Friend WithEvents Button35 As System.Windows.Forms.Button + Friend WithEvents Button36 As System.Windows.Forms.Button + Friend WithEvents Button37 As System.Windows.Forms.Button + Friend WithEvents Button34 As System.Windows.Forms.Button + Friend WithEvents Button33 As System.Windows.Forms.Button End Class diff --git a/GBAPokemonGameEditor/Pokemonedit.vb b/GBAPokemonGameEditor/Pokemonedit.vb index 5744fa7..77819b1 100644 --- a/GBAPokemonGameEditor/Pokemonedit.vb +++ b/GBAPokemonGameEditor/Pokemonedit.vb @@ -676,8 +676,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) 'Label53.Text = "Sample Rate: " & ((Int32.Parse(((ReverseHEX(ReadHEX(LoadedROM, ("&H" & CryPointer.Text) + (4), 4)))), System.Globalization.NumberStyles.HexNumber)) >> 10) & " Hz" 'Label54.Text = "Sample Rate: " & ((Int32.Parse(((ReverseHEX(ReadHEX(LoadedROM, ("&H" & CryPointer2.Text) + (4), 4)))), System.Globalization.NumberStyles.HexNumber)) >> 10) & " Hz" @@ -707,6 +713,12 @@ Public Class Pokemonedit Label55.Text = "Size: 0 samples" Label56.Text = "Size: 0 samples" + chkCompressed1.Checked = False + chkCompressed2.Checked = False + + pSample.Image.Dispose() + pSample2.Image.Dispose() + End If @@ -731,8 +743,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) End If @@ -1758,8 +1776,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) ElseIf (i + 1) > 251 And (i + 1) < 276 Then @@ -1779,8 +1803,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) End If End Sub @@ -2113,8 +2143,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) End If End Sub @@ -3640,8 +3676,14 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) ElseIf (i + 1) > 251 And (i + 1) < 276 Then @@ -3661,10 +3703,129 @@ Public Class Pokemonedit Label54.Text = "Sample Rate: " & crygrowl.SampleRate & " Hz" - Label55.Text = "Size: " & crynorm.Size & " samples" - Label56.Text = "Size: " & crygrowl.Size & " samples" + Label55.Text = "Size: " & crynorm.Data.Length & " samples" + Label56.Text = "Size: " & crygrowl.Data.Length & " samples" + + chkCompressed1.Checked = crynorm.Compressed + chkCompressed2.Checked = crygrowl.Compressed + + pSample.Image = GetCryImage(crynorm) + pSample2.Image = GetCryImage(crygrowl) End If End Sub + Private Sub Button32_Click(sender As Object, e As EventArgs) Handles Button32.Click + PlayCry(crynorm) + End Sub + + Private Sub Button37_Click(sender As Object, e As EventArgs) Handles Button37.Click + PlayCry(crygrowl) + End Sub + + Private Sub Button34_Click(sender As Object, e As EventArgs) Handles Button34.Click + SaveFileDialog.FileName = (PKMNames.SelectedIndex + 1) & ".wav" + 'SaveFileDialog.CheckFileExists = True + + ' Check to ensure that the selected path exists. Dialog box displays + ' a warning otherwise. + SaveFileDialog.CheckPathExists = True + + ' Get or set default extension. Doesn't include the leading ".". + SaveFileDialog.DefaultExt = "wav" + + ' Return the file referenced by a link? If False, simply returns the selected link + ' file. If True, returns the file linked to the LNK file. + SaveFileDialog.DereferenceLinks = True + + ' Just as in VB6, use a set of pairs of filters, separated with "|". Each + ' pair consists of a description|file spec. Use a "|" between pairs. No need to put a + ' trailing "|". You can set the FilterIndex property as well, to select the default + ' filter. The first filter is numbered 1 (not 0). The default is 1. + SaveFileDialog.Filter = + "(*.wav)|*.wav*" + + 'SaveFileDialog.Multiselect = False + + ' Restore the original directory when done selecting + ' a file? If False, the current directory changes + ' to the directory in which you selected the file. + ' Set this to True to put the current folder back + ' where it was when you started. + ' The default is False. + '.RestoreDirectory = False + + ' Show the Help button and Read-Only checkbox? + SaveFileDialog.ShowHelp = False + 'SaveFileDialog.ShowReadOnly = False + + ' Start out with the read-only check box checked? + ' This only make sense if ShowReadOnly is True. + 'SaveFileDialog.ReadOnlyChecked = False + + SaveFileDialog.Title = "Save as" + + ' Only accept valid Win32 file names? + SaveFileDialog.ValidateNames = True + + + If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then + + ExportCry(SaveFileDialog.FileName, crynorm) + + End If + End Sub + + Private Sub Button35_Click(sender As Object, e As EventArgs) Handles Button35.Click + SaveFileDialog.FileName = (PKMNames.SelectedIndex + 1) & ".wav" + 'SaveFileDialog.CheckFileExists = True + + ' Check to ensure that the selected path exists. Dialog box displays + ' a warning otherwise. + SaveFileDialog.CheckPathExists = True + + ' Get or set default extension. Doesn't include the leading ".". + SaveFileDialog.DefaultExt = "wav" + + ' Return the file referenced by a link? If False, simply returns the selected link + ' file. If True, returns the file linked to the LNK file. + SaveFileDialog.DereferenceLinks = True + + ' Just as in VB6, use a set of pairs of filters, separated with "|". Each + ' pair consists of a description|file spec. Use a "|" between pairs. No need to put a + ' trailing "|". You can set the FilterIndex property as well, to select the default + ' filter. The first filter is numbered 1 (not 0). The default is 1. + SaveFileDialog.Filter = + "(*.wav)|*.wav*" + + 'SaveFileDialog.Multiselect = False + + ' Restore the original directory when done selecting + ' a file? If False, the current directory changes + ' to the directory in which you selected the file. + ' Set this to True to put the current folder back + ' where it was when you started. + ' The default is False. + '.RestoreDirectory = False + + ' Show the Help button and Read-Only checkbox? + SaveFileDialog.ShowHelp = False + 'SaveFileDialog.ShowReadOnly = False + + ' Start out with the read-only check box checked? + ' This only make sense if ShowReadOnly is True. + 'SaveFileDialog.ReadOnlyChecked = False + + SaveFileDialog.Title = "Save as" + + ' Only accept valid Win32 file names? + SaveFileDialog.ValidateNames = True + + + If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then + + ExportCry(SaveFileDialog.FileName, crygrowl) + + End If + End Sub End Class \ No newline at end of file diff --git a/GBAPokemonGameEditor/ROM.vb b/GBAPokemonGameEditor/ROM.vb deleted file mode 100644 index 1f42c08..0000000 --- a/GBAPokemonGameEditor/ROM.vb +++ /dev/null @@ -1,340 +0,0 @@ -Imports System -Imports System.Collections.Generic -Imports System.Drawing -Imports System.IO -Imports System.Text - - -Public Class ROM - 'Implements IDisposable - Private buffer As Byte() - Private pos As Integer = 0 - Private m_filePath As String - Private fileWatcher As FileSystemWatcher - Private ignoreChange As Boolean - - Private disposed As Boolean - - Public Sub New(filePath As String) - Try - ' read contents of file into buffer - Using fs = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) - buffer = New Byte(fs.Length - 1) {} - fs.Read(buffer, 0, buffer.Length) - End Using - - ' create file watcher to monitor ROM being modified - fileWatcher = New FileSystemWatcher() - fileWatcher.Path = Path.GetDirectoryName(filePath) - fileWatcher.Filter = "*.gba" - - AddHandler fileWatcher.Changed, AddressOf OnSourceFileChanged - AddHandler fileWatcher.Renamed, AddressOf OnSourceFileRenamed - - fileWatcher.EnableRaisingEvents = True - Catch - Throw New Exception("Unable to open {filePath}!") - End Try - - Me.m_filePath = filePath - End Sub - - Protected Overrides Sub Finalize() - Try - Dispose() - Finally - MyBase.Finalize() - End Try - End Sub - - Public Sub Dispose() - If disposed Then - Return - End If - disposed = True - - fileWatcher.Dispose() - buffer = Nothing - End Sub - - Public Sub Save() - If String.IsNullOrEmpty(m_filePath) Then - Return - End If - - Using fs = File.Open(m_filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite) - fs.Write(buffer, 0, buffer.Length) - End Using - - ignoreChange = True - End Sub - - Public Sub Seek(offset As Integer) - If offset < 0 OrElse offset > buffer.Length Then - Throw New IndexOutOfRangeException() - End If - - pos = offset - End Sub - - Public Sub Skip(bytes As Integer) - pos += bytes - - If pos < 0 OrElse pos > buffer.Length Then - Throw New IndexOutOfRangeException() - End If - End Sub - -#Region "Read" - - Public Function ReadByte() As Byte - Return buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) - End Function - - Public Function PeekByte() As Byte - Return buffer(pos) - End Function - - Public Function ReadSByte() As SByte - Return CSByte(ReadByte()) - End Function - - Public Function ReadUInt16() As UShort - Return CUShort(buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 8)) - End Function - - Public Function ReadInt32() As Integer - Return buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 8) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 16) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 24) - End Function - - Public Function ReadUInt32() As UInteger - Return CUInt(buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 8) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 16) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 24)) - End Function - - Public Function ReadUInt64() As ULong - Return CULng(buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 8) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 16) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 24) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 32) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 40) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 48) Or (buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) << 56)) - End Function - - Public Function ReadBytes(count As Integer) As Byte() - Dim b = New Byte(count - 1) {} - For i As Integer = 0 To count - 1 - b(i) = buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) - Next - Return b - End Function - - ' Read a UTF8 encoded string - Public Function ReadString(length As Integer) As String - Return Encoding.UTF8.GetString(ReadBytes(length)) - End Function - - Public Function ReadPointer() As Integer - ' read value - Dim ptr = ReadInt32() - - ' return on blank pointer - If ptr = 0 Then - Return 0 - End If - - ' a pointer must be between 0x0 and 0x1FFFFFF to be valid on the GBA - ' ROM pointer format is OFFSET | 0x8000000, so 0x8000000 <= POINTER <= 0x9FFFFFF - If ptr < &H8000000 OrElse ptr > &H9FFFFFF Then - Throw New Exception(String.Format("Bad pointer at 0x{0:X6}", pos - 4)) - End If - - ' easy way to extract - Return ptr And &H1FFFFFF - End Function - - ' read a GBA string - 'Public Function ReadText(length As Integer, Optional encoding As CharacterEncoding = CharacterEncoding.English) As String - ' Return TextTable.GetString(ReadBytes(length), encoding) - 'End Function - - 'Public Function ReadTextTable(stringLength As Integer, tableSize As Integer, Optional encoding As CharacterEncoding = CharacterEncoding.English) As String() - ' Dim table = New String(tableSize - 1) {} - ' For i As Integer = 0 To tableSize - 1 - ' table(i) = ReadText(stringLength, encoding) - ' Next - - ' Return table - 'End Function - - - -#End Region - -#Region "Write" - - Public Sub WriteByte(value As Byte) - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = value - End Sub - - Public Sub WriteSByte(value As SByte) - WriteByte(CByte(value)) - End Sub - - Public Sub WriteUInt16(value As UShort) - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = CByte(value) - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = CByte(value >> 8) - End Sub - - Public Sub WriteInt32(value As Integer) - For i As Integer = 0 To 3 - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = CByte(value >> (i * 8)) - Next - End Sub - - Public Sub WriteUInt32(value As UInteger) - For i As Integer = 0 To 3 - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = CByte(value >> (i * 8)) - Next - End Sub - - Public Sub WriteUInt64(value As ULong) - For i As Integer = 0 To 7 - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = CByte(value >> (i * 8)) - Next - End Sub - - Public Sub WriteBytes(bytes As Byte()) - For i As Integer = 0 To bytes.Length - 1 - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = bytes(i) - Next - End Sub - - ' Write a byte value count number of times - Public Sub WriteBytes(value As Byte, count As Integer) - For i As Integer = 0 To count - 1 - buffer(System.Math.Max(System.Threading.Interlocked.Increment(pos), pos - 1)) = value - Next - End Sub - - Public Sub WritePointer(offset As Integer) - If offset > &H1FFFFFF Then - Throw New Exception(String.Format("Offset 0x{0:X6} too large for a ROM pointer (0 <= offset <= 0x1FFFFFF)!")) - End If - - WriteInt32(offset Or &H8000000) - End Sub - - ' Write a UTF8 encoded string - Public Sub WriteString(str As String) - WriteBytes(Encoding.UTF8.GetBytes(str)) - End Sub - -#End Region - -#Region "Search" - - Public Function FindFreeSpace(length As Integer, Optional freespace As Byte = &HFF, Optional startOffset As Integer = 0, Optional alignment As Integer = 1) As Integer - ' The simpest freespace finder I could think of - If alignment > 1 AndAlso startOffset Mod alignment <> 0 Then - startOffset += alignment - (startOffset Mod alignment) - End If - - Dim i As Integer = startOffset - While i < buffer.Length - length - Dim match As Boolean = True - For j As Integer = 0 To length - 1 - If buffer(i + j) <> freespace Then - match = False - Exit For - End If - Next - - If match Then - Return i - End If - i += alignment - End While - Return -1 - End Function - -#End Region - -#Region "Properties" - - Public ReadOnly Property FilePath() As String - Get - Return m_filePath - End Get - End Property - - Public ReadOnly Property Length() As Integer - Get - Return buffer.Length - End Get - End Property - - Public Property Position() As Integer - Get - Return pos - End Get - Set(value As Integer) - pos = value - - If pos < 0 OrElse pos > buffer.Length Then - Throw New IndexOutOfRangeException() - End If - End Set - End Property - - Public ReadOnly Property EndOfStream() As Boolean - Get - Return pos >= buffer.Length - End Get - End Property - - ' ROM specific properties - ' TODO: better to store these as existing strings - - Public ReadOnly Property Name() As String - Get - Return Encoding.UTF8.GetString(buffer, &HA0, 12) - End Get - End Property - - Public ReadOnly Property Code() As String - Get - Return Encoding.UTF8.GetString(buffer, &HAC, 4) - End Get - End Property - - Public ReadOnly Property Maker() As String - Get - Return Encoding.UTF8.GetString(buffer, &HB0, 2) - End Get - End Property - -#End Region - - Private Sub OnSourceFileChanged(sender As Object, e As FileSystemEventArgs) - Console.WriteLine("ROM {e.FullPath} changed {e.ChangeType}.") - If ignoreChange Then - ignoreChange = False - Return - End If - - If e.FullPath = m_filePath Then - Console.WriteLine("Reloading buffer...") - Using fs = File.Open(m_filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) - If buffer.Length <> fs.Length Then - buffer = New Byte(fs.Length - 1) {} - End If - - fs.Read(buffer, 0, buffer.Length) - End Using - End If - End Sub - - Private Sub OnSourceFileRenamed(sender As Object, e As RenamedEventArgs) - Console.WriteLine("{e.OldFullPath} renamed to {e.FullPath}!") - - If e.OldFullPath = m_filePath Then - m_filePath = e.FullPath - End If - End Sub -End Class - diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application index dd4ac09..04f54cd 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.application @@ -6,17 +6,17 @@ - + - + - - cEChvezvtmhv3eHbLmFCkRtITkk= + + SBrRbZ8u/DVQqIBKdscjmLSX83CHGmDm8MT7Nzknq/4= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe index 7826ebf..811653d 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.config b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.config index 3a327fa..1729194 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.config +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.config @@ -1,6 +1,6 @@ - + diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest index 1ee351e..2cc7492 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.exe.manifest @@ -43,14 +43,14 @@ - + - - GrraqbCuBqWEnZ+CKRBzJpXfl+g= + + ytlUc7etDRo6JcZECVTvZje22CeYY2nX3QpMB/xaPZY= @@ -59,8 +59,8 @@ - - zSGVcEGIWr3V6kRbwOGSlYIDyTs= + + JnkgjOeeffBrvL44oYWhkDcQcjP1ZMSvae9S7XoDhYE= @@ -68,8 +68,8 @@ - - zmtMKrAEuvsQh2jJFtlCNruBIWE= + + fqCFSMI71/18dcpyCsWg6MqUy1HQbNRev19BLku919c= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.pdb index d262d5c..6b0832e 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 dd4ac09..04f54cd 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.application @@ -6,17 +6,17 @@ - + - + - - cEChvezvtmhv3eHbLmFCkRtITkk= + + SBrRbZ8u/DVQqIBKdscjmLSX83CHGmDm8MT7Nzknq/4= diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.config b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.config index 3a327fa..1729194 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.config +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.config @@ -1,6 +1,6 @@ - + diff --git a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest index 1ee351e..2cc7492 100644 --- a/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest +++ b/GBAPokemonGameEditor/bin/Debug/PokemonGameEditor.vshost.exe.manifest @@ -43,14 +43,14 @@ - + - - GrraqbCuBqWEnZ+CKRBzJpXfl+g= + + ytlUc7etDRo6JcZECVTvZje22CeYY2nX3QpMB/xaPZY= @@ -59,8 +59,8 @@ - - zSGVcEGIWr3V6kRbwOGSlYIDyTs= + + JnkgjOeeffBrvL44oYWhkDcQcjP1ZMSvae9S7XoDhYE= @@ -68,8 +68,8 @@ - - zmtMKrAEuvsQh2jJFtlCNruBIWE= + + fqCFSMI71/18dcpyCsWg6MqUy1HQbNRev19BLku919c= diff --git a/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache b/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache index 6b28a1b..e0ee730 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache and b/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache index c56ca43..2014ef3 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/GBAPokemonGameEditor/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache b/GBAPokemonGameEditor/obj/x86/Debug/GBAPokemonGameEditor.vbproj.GenerateResource.Cache index cde25fc..e05ca4f 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 dd4ac09..04f54cd 100644 --- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application +++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.application @@ -6,17 +6,17 @@ - + - + - - cEChvezvtmhv3eHbLmFCkRtITkk= + + SBrRbZ8u/DVQqIBKdscjmLSX83CHGmDm8MT7Nzknq/4= diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe index 7826ebf..811653d 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 1ee351e..2cc7492 100644 --- a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest +++ b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.exe.manifest @@ -43,14 +43,14 @@ - + - - GrraqbCuBqWEnZ+CKRBzJpXfl+g= + + ytlUc7etDRo6JcZECVTvZje22CeYY2nX3QpMB/xaPZY= @@ -59,8 +59,8 @@ - - zSGVcEGIWr3V6kRbwOGSlYIDyTs= + + JnkgjOeeffBrvL44oYWhkDcQcjP1ZMSvae9S7XoDhYE= @@ -68,8 +68,8 @@ - - zmtMKrAEuvsQh2jJFtlCNruBIWE= + + fqCFSMI71/18dcpyCsWg6MqUy1HQbNRev19BLku919c= diff --git a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb index d262d5c..6b0832e 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb and b/GBAPokemonGameEditor/obj/x86/Debug/PokemonGameEditor.pdb differ diff --git a/GBAPokemonGameEditor/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll b/GBAPokemonGameEditor/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll index 43bc4f5..5987bb4 100644 Binary files a/GBAPokemonGameEditor/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll and b/GBAPokemonGameEditor/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll differ diff --git a/README.md b/README.md index 64b8380..ed53410 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ Code Pokemon Adder for Emerald Program Requirements ==================== -Windows: Install 4.0 .Net Framework +Windows: Install 4.5 .Net Framework Windows RT: Have Jailbreak installed that allows unsigned programs.