init commit
This commit is contained in:
625
p2isPSX_CDToolkit/Additions.vb
Normal file
625
p2isPSX_CDToolkit/Additions.vb
Normal file
@@ -0,0 +1,625 @@
|
||||
Imports System.IO
|
||||
Imports System.Text
|
||||
Imports System.IO.Compression
|
||||
|
||||
Partial Class Form1
|
||||
|
||||
Private Sub ImportCode_Click(sender As Object, e As EventArgs) Handles ImportCode.Click
|
||||
|
||||
If Not UserRadio.Checked Then MsgBox("YOU CAN IMPORT ONLY IN USER ISO!!!") : Exit Sub
|
||||
|
||||
Dim cd = New ISOTools
|
||||
|
||||
'OpensFile
|
||||
|
||||
OpenFileDialog1.Multiselect = True
|
||||
If OpenFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
OpenFileDialog1.Multiselect = False
|
||||
|
||||
For Each filee In OpenFileDialog1.FileNames
|
||||
|
||||
Dim fileInfo = Path.GetFileName(filee)
|
||||
|
||||
Dim f = File.ReadAllBytes(filee)
|
||||
|
||||
If fileInfo.Contains("SLPS_028.25") Then
|
||||
cd.saveCDfile(UserPath.Text, 27, UBound(f) + 1, f)
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
|
||||
|
||||
MsgBox(String.Format("Imported {0} files ", UBound(OpenFileDialog1.FileNames) + 1), MsgBoxStyle.Exclamation)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub ExpMainExe_Click(sender As Object, e As EventArgs) Handles ExpMainExe.Click
|
||||
Dim iso = New ISOTools
|
||||
Dim fil = iso.getCDfile(getFilnam, 27, 1812408)
|
||||
SaveFileDialog1.FileName = WorkDir.Text & "SLPS_028.25"
|
||||
If SaveFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(SaveFileDialog1.FileName, fil.ToArray, False)
|
||||
End Sub
|
||||
|
||||
Private Sub Export181RUS_Click(sender As Object, e As EventArgs) Handles Export181RUS.Click
|
||||
|
||||
Dim files As New List(Of String)
|
||||
files = IO.Directory.GetFiles("D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\UnRLE\0057_ALL_SCENERY\", "*.TRNSL").ToList
|
||||
Dim OutPut_Dir = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\UnRLE\0057_ALL_SCENERY\TRANSLATED_RAW\"
|
||||
Dim iso = New ISOTools
|
||||
Dim filnam = getFilnam()
|
||||
Dim r = New rleTools
|
||||
|
||||
For a = 57 To 397
|
||||
|
||||
Dim fil = iso.getCDfile(filnam, files1(a).Sector, files1(a).Sizw)
|
||||
|
||||
If a = 397 Then
|
||||
fil = iso.getCDfile(filnam, files1(390).Sector, files1(390).Sizw) 'заменяем последний файл...
|
||||
My.Computer.FileSystem.WriteAllBytes(OutPut_Dir & a.ToString("D4") & "_orig.bin", fil.ToArray, False) : Continue For
|
||||
End If
|
||||
|
||||
Dim ind = files.FindIndex(Function(x) x.Contains(a.ToString("D4")))
|
||||
|
||||
'If file withoout translation
|
||||
If ind = -1 Then
|
||||
My.Computer.FileSystem.WriteAllBytes(OutPut_Dir & a.ToString("D4") & "_orig.bin", fil.ToArray, False) : Continue For
|
||||
End If
|
||||
|
||||
Debug.WriteLine("Working On......" & a.ToString("D4"))
|
||||
DeconstructFile(fil.ToArray) 'here is separated binfile
|
||||
|
||||
Dim curfile As rleFile = binFile.Last
|
||||
Dim RusFile = My.Computer.FileSystem.ReadAllBytes(files(ind))
|
||||
|
||||
binFile.Last.Bytes = r.decodeRLEnew(RusFile, curfile).ToArray 'Pack and replace 8th file
|
||||
|
||||
'АРХИВИРУЕМ МАССИВ ФАЙЛОВ ДЛЯ ЗАПИСИ В ОДИН ФАЙЛ
|
||||
Dim lastSectorID As Integer = 0
|
||||
Dim finalPack = New List(Of Byte)
|
||||
|
||||
For Each bin In binFile
|
||||
|
||||
'filling sector to end (making sectorgap) in the middle of the file
|
||||
If bin.SectorID <> lastSectorID Then
|
||||
Dim gap = 2048 - (finalPack.Count Mod 2048)
|
||||
For g = 0 To gap - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
End If
|
||||
|
||||
'Adding currentfile Sector Size (for at least 0004)
|
||||
bin.SectorSize = bin.Bytes.Count \ 2048
|
||||
If bin.Bytes.Count Mod 2048 > 0 Then bin.SectorSize += 1
|
||||
|
||||
'adding currentfile and address for 0x0090
|
||||
finalPack.AddRange(bin.Bytes)
|
||||
|
||||
'AddingBytesAfter
|
||||
For g = 0 To bin.BytesAfter - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
|
||||
lastSectorID = bin.SectorID
|
||||
Next
|
||||
|
||||
'Fill file to END of Sector
|
||||
If finalPack.Count Mod 2048 > 0 Then
|
||||
For g = 1 To (2048 - (finalPack.Count Mod 2048))
|
||||
finalPack.Add(0)
|
||||
Next g
|
||||
End If
|
||||
My.Computer.FileSystem.WriteAllBytes(OutPut_Dir & a.ToString("D4") & "_rus.bin", finalPack.ToArray, False)
|
||||
Next
|
||||
MsgBox("Export Done")
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub SceneryImport_Click(sender As Object, e As EventArgs) Handles SceneryImport.Click
|
||||
|
||||
|
||||
If Not UserRadio.Checked Then MsgBox("YOU CAN IMPORT ONLY IN USER ISO!!!") : Exit Sub
|
||||
If IsNothing(files1) Then MsgBox("PLEASE READ CD FILES FIRST!") : Exit Sub
|
||||
|
||||
Dim files = IO.Directory.GetFiles("D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\UnRLE\0057_ALL_SCENERY\TRANSLATED_RAW\", "*.bin").ToList
|
||||
Dim filesSize = 0
|
||||
'For Each f In files
|
||||
' filesSize += My.Computer.FileSystem.GetFileInfo(f).Length
|
||||
'Next
|
||||
Dim curSector = files1(57).Sector
|
||||
Dim max = files1(398).Sector
|
||||
|
||||
'MsgBox($"Sectors have - {max - curSector}" & vbCrLf & $"Sectors in files - {filesSize / 2048}") : Exit Sub
|
||||
Dim iso = New ISOTools
|
||||
Dim filnam = getFilnam()
|
||||
|
||||
|
||||
|
||||
For a = 57 To 397
|
||||
'reading files
|
||||
Debug.WriteLine("Working On......" & a.ToString("D4"))
|
||||
Dim ind = files.FindIndex(Function(x) x.Contains(a.ToString("D4")))
|
||||
If ind = -1 Then Debug.WriteLine("NOT FOUND") : Continue For
|
||||
Dim impFile = My.Computer.FileSystem.ReadAllBytes(files(ind))
|
||||
|
||||
Dim SectorSizw As Integer = (UBound(impFile) + 1) / 2048
|
||||
|
||||
'Overload check
|
||||
If curSector + SectorSizw >= max Then MsgBox("!!!OVERLOAD at file " & a) : Exit For
|
||||
|
||||
|
||||
|
||||
'debugfile move to end of disk
|
||||
' If a = 570 Then curSector = 278100
|
||||
|
||||
|
||||
|
||||
iso.saveCDfile(filnam, curSector, UBound(impFile) + 1, impFile)
|
||||
|
||||
'Update SectorNumber and FileSize In FileArray
|
||||
files1(a).Sizw = UBound(impFile) + 1
|
||||
files1(a).Sector = curSector
|
||||
|
||||
|
||||
|
||||
curSector += SectorSizw
|
||||
|
||||
|
||||
Next
|
||||
|
||||
'Update FileTable In ISO
|
||||
iso.UpdateFileListTable(filnam, files1)
|
||||
|
||||
MsgBox("Files Imported")
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub Export1112RUS_Click(sender As Object, e As EventArgs) Handles Export1112RUS.Click
|
||||
|
||||
Dim files As New List(Of String)
|
||||
files = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\UnRLE\1112_ALL_CITIES_SCRIPTS", "*.TRNSL").ToList
|
||||
Dim OutPut_Dir = "D:\Games\PSX\Persona.2.Innocent.Sin\Export\UnRLE\1112_ALL_CITIES_SCRIPTS\TRANSLATED_RAW\"
|
||||
Dim iso = New ISOTools
|
||||
Dim filnam = getFilnam()
|
||||
Dim r = New rleTools
|
||||
|
||||
For a = 1112 To 1117
|
||||
|
||||
Dim fil = iso.getCDfile(filnam, files1(a).Sector, files1(a).Sizw)
|
||||
|
||||
Dim ind = files.FindIndex(Function(x) x.Contains(a.ToString("D4")))
|
||||
'If file withoout translation
|
||||
If ind = -1 Then
|
||||
My.Computer.FileSystem.WriteAllBytes(OutPut_Dir & a.ToString("D4") & "_orig.bin", fil.ToArray, False) : Continue For
|
||||
End If
|
||||
|
||||
|
||||
Debug.WriteLine("Working On......" & a.ToString("D4"))
|
||||
DeconstructFile(fil.ToArray) 'here is separated binfile
|
||||
|
||||
Dim curfile As rleFile = binFile(binFile.Count - 1)
|
||||
Dim RusFile = My.Computer.FileSystem.ReadAllBytes(files(ind))
|
||||
|
||||
binFile(binFile.Count - 1).Bytes = r.decodeRLEnew(RusFile, curfile).ToArray 'Pack and replace 8th file
|
||||
|
||||
|
||||
'АРХИВИРУЕМ МАССИВ ФАЙЛОВ ДЛЯ ЗАПИСИ В ОДИН ФАЙЛ
|
||||
Dim lastSectorID As Integer = 0
|
||||
Dim finalPack = New List(Of Byte)
|
||||
Dim addresses = New List(Of Integer) 'Start Addr for all files
|
||||
|
||||
For Each bin In binFile
|
||||
|
||||
'filling sector to end (making sectorgap) in the middle of the file
|
||||
If bin.SectorID <> lastSectorID Then
|
||||
Dim gap = 2048 - (finalPack.Count Mod 2048)
|
||||
For g = 0 To gap - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
End If
|
||||
|
||||
'Adding currentfile Sector Size (for at least 0004)
|
||||
bin.SectorSize = bin.Bytes.Count \ 2048
|
||||
If bin.Bytes.Count Mod 2048 > 0 Then bin.SectorSize += 1
|
||||
|
||||
|
||||
'adding currentfile and address for 0x0090
|
||||
addresses.Add(finalPack.Count)
|
||||
finalPack.AddRange(bin.Bytes)
|
||||
|
||||
'AddingBytesAfter
|
||||
For g = 0 To bin.BytesAfter - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
|
||||
lastSectorID = bin.SectorID
|
||||
|
||||
|
||||
Next
|
||||
|
||||
'Fill file to END of Sector
|
||||
|
||||
If finalPack.Count Mod 2048 > 0 Then
|
||||
For g = 1 To (2048 - (finalPack.Count Mod 2048))
|
||||
finalPack.Add(0)
|
||||
Next g
|
||||
End If
|
||||
|
||||
'SAVING POINTERS TABLE
|
||||
SavePointersTableToFile(addresses, OutPut_Dir & a.ToString("D4") & ".pointers", binFile)
|
||||
|
||||
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(OutPut_Dir & a.ToString("D4") & "_rus.bin", finalPack.ToArray, False)
|
||||
|
||||
|
||||
Next
|
||||
|
||||
|
||||
MsgBox("Export Done")
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ConvertEventsForEditing_Click(sender As Object, e As EventArgs) Handles ConvertEventsForEditing.Click
|
||||
Dim srcDir = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\UnRLE\0057_ALL_SCENERY"
|
||||
Dim destDir = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\P2EP_Editing\"
|
||||
Dim files As New List(Of String)
|
||||
files = IO.Directory.GetFiles(srcDir, "*.txt").ToList
|
||||
Dim s = New ScriptTools
|
||||
For Each f In files
|
||||
Dim a = Path.GetFileName(f)
|
||||
s.ConvertForEdit(f, destDir & Path.GetFileName(f))
|
||||
Next
|
||||
|
||||
MsgBox("Done!")
|
||||
End Sub
|
||||
|
||||
Private Sub MakePointers_Click(sender As Object, e As EventArgs) Handles MakePointers.Click
|
||||
|
||||
If binFile.Count = 0 Or CDFileList.SelectedIndex = -1 Then Exit Sub
|
||||
Dim fil = MakePointersArray()
|
||||
If CreateBinDirCheck.Checked And CDFileList.SelectedIndex > -1 Then
|
||||
Dim cat = WorkDir.Text & Strings.Left(FilnamLabel.Text, 4) & "_" & files1(CDFileList.SelectedIndex).Descript
|
||||
If Not Directory.Exists(cat) Then
|
||||
Directory.CreateDirectory(cat)
|
||||
|
||||
End If
|
||||
ExportBinPath.Text = cat & "\"
|
||||
End If
|
||||
Dim filename = ExportBinPath.Text & Strings.Left(FilnamLabel.Text, 4)
|
||||
If japRadio.Checked Then filename &= "_J"
|
||||
If EngRadio.Checked Then filename &= "_E"
|
||||
If UserRadio.Checked Then filename &= "_U"
|
||||
|
||||
'SAVING POINTERS TABLE
|
||||
My.Computer.FileSystem.WriteAllBytes(filename & ".pointers", fil.ToArray, False)
|
||||
'SavePointersTableToFile(addresses, filename & ".pointers", binFile)
|
||||
'My.Computer.FileSystem.WriteAllBytes(filename & ".TEMPPACK", finalPack.ToArray, False)
|
||||
Savedlbl.Text = "SAVED TO " & filename
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SearchPointers_Click(sender As Object, e As EventArgs) Handles SearchPointers.Click
|
||||
If CDFileList.Items.Count = 0 Or CDFileList.SelectedIndex = -1 Then Exit Sub
|
||||
If Not IsNumeric(CompareBTS.Text) Then Exit Sub
|
||||
Dim xxx = Convert.ToInt16(CompareBTS.Text)
|
||||
|
||||
Dim fil As List(Of Byte) = MakePointersArray()
|
||||
Dim finfil = New List(Of Byte)
|
||||
|
||||
|
||||
|
||||
For a = 0 To xxx
|
||||
If a > fil.Count - 1 Then Exit For
|
||||
finfil.Add(fil(a))
|
||||
Next
|
||||
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim exeFile = cd.getCDfile(getFilnam, 27, 1812408)
|
||||
|
||||
'search in exe
|
||||
Dim res = ByteSearch(exeFile.ToArray, finfil.ToArray)
|
||||
If res > -1 Then MsgBox("FOUND! IN SLPS!" & vbCrLf & "Offset: " & res) : Exit Sub
|
||||
|
||||
|
||||
'all files to video
|
||||
For a = 0 To 864
|
||||
Dim curFile = cd.getCDfile(getFilnam, files1(a).Sector, files1(a).Sizw)
|
||||
'If curFile(0) = 1 Or curFile(0) = 2 Then Continue For 'IF ARCHIVE
|
||||
'If curFile(1) = 1 Or curFile(1) = 2 Then Continue For
|
||||
Debug.WriteLine("Searching... " & a)
|
||||
res = ByteSearch(curFile.ToArray, finfil.ToArray)
|
||||
If res > -1 Then MsgBox("FOUND! IN file #" & a & vbCrLf & "Offset: " & res) : Exit For
|
||||
Next
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Function MakePointersArray()
|
||||
|
||||
'АРХИВИРУЕМ МАССИВ ФАЙЛОВ ДЛЯ ЗАПИСИ В ОДИН ФАЙЛ
|
||||
Dim lastSectorID As Integer = 0
|
||||
Dim finalPack = New List(Of Byte)
|
||||
Dim addresses = New List(Of Integer) 'Start Addr for all files
|
||||
|
||||
For Each bin In binFile
|
||||
'filling sector to end (making sectorgap) in the middle of the file
|
||||
If bin.SectorID <> lastSectorID Then
|
||||
Dim gap = 2048 - (finalPack.Count Mod 2048)
|
||||
For g = 0 To gap - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
End If
|
||||
'Adding currentfile Sector Size (for at least 0004)
|
||||
bin.SectorSize = bin.Bytes.Count \ 2048
|
||||
If bin.Bytes.Count Mod 2048 > 0 Then bin.SectorSize += 1
|
||||
|
||||
addresses.Add(finalPack.Count)
|
||||
finalPack.AddRange(bin.Bytes)
|
||||
'AddingBytesAfter
|
||||
For g = 0 To bin.BytesAfter - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
lastSectorID = bin.SectorID
|
||||
Next
|
||||
'Fill file to END of Sector
|
||||
|
||||
If finalPack.Count Mod 2048 > 0 Then
|
||||
For g = 1 To (2048 - (finalPack.Count Mod 2048))
|
||||
finalPack.Add(0)
|
||||
Next g
|
||||
End If
|
||||
|
||||
'Making POINTERS TABLE
|
||||
Dim fil = New List(Of Byte)
|
||||
|
||||
For a = 0 To binFile.Count - 1
|
||||
'Dim curAddr = a * 8 + offset
|
||||
Dim cursect As Int16 = addresses(a) \ 2048
|
||||
Dim modSect As Int16 = addresses(a) Mod 2048
|
||||
fil.Add(BitConverter.GetBytes(modSect)(0))
|
||||
fil.Add(BitConverter.GetBytes(modSect)(1)) 'BE or LE???
|
||||
fil.Add(BitConverter.GetBytes(cursect)(0))
|
||||
fil.Add(BitConverter.GetBytes(cursect)(1)) 'BE or LE???
|
||||
|
||||
Dim bts As Integer = binFile(a).Bytes.Count
|
||||
If Tim8Shift.Checked And binFile(a).Compr = 0 Then bts -= 8 'Its Uncompressed TIM??
|
||||
|
||||
fil.Add(BitConverter.GetBytes(bts)(0)) 'Saving Size of file
|
||||
fil.Add(BitConverter.GetBytes(bts)(1)) 'BE or LE???
|
||||
fil.Add(BitConverter.GetBytes(bts)(2))
|
||||
fil.Add(BitConverter.GetBytes(bts)(3))
|
||||
Next
|
||||
Return fil
|
||||
End Function
|
||||
|
||||
Private Sub RelpaceTextExecs_Click(sender As Object, e As EventArgs) Handles RelpaceTextExecs.Click
|
||||
|
||||
If CDFileList.Items.Count = 0 Or CDFileList.SelectedIndex = -1 Then Exit Sub
|
||||
|
||||
Dim sb = New List(Of Byte) From {&HEA, &H68, 0, &HC}
|
||||
Dim cd = New ISOTools
|
||||
Dim curFile = cd.getCDfile(getFilnam, files1(CDFileList.SelectedIndex).Sector, files1(CDFileList.SelectedIndex).Sizw)
|
||||
Dim replaceCount As Integer = 0
|
||||
|
||||
For a = 0 To curFile.Count - 1 Step 4
|
||||
If curFile(a) = sb(0) And curFile(a + 1) = sb(1) And curFile(a + 2) = sb(2) And curFile(a + 3) = sb(3) Then
|
||||
replaceCount += 1
|
||||
curFile(a) = 0 : curFile(a + 1) = &H40 : curFile(a + 2) = &H2 : curFile(a + 3) = &HC
|
||||
End If
|
||||
Next
|
||||
|
||||
cd.saveCDfile(getFilnam, files1(CDFileList.SelectedIndex).Sector, files1(CDFileList.SelectedIndex).Sizw, curFile.ToArray)
|
||||
|
||||
|
||||
MsgBox("Found and replaced " & replaceCount & " text calls.")
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ExportDUNGScripts_Click(sender As Object, e As EventArgs) Handles ExportDUNGScripts.Click
|
||||
|
||||
Dim lengths = New List(Of Integer)
|
||||
lengths.AddRange({232, 228, 328, 336, 328, 336, 328, 336, 316, 332})
|
||||
Dim DungScr = New List(Of PointerAndSize)
|
||||
Dim initaddr = 114232
|
||||
For Each l In lengths
|
||||
DungScr.Add(New PointerAndSize With {.Addr = initaddr, .Sizw = l})
|
||||
initaddr += l
|
||||
Next
|
||||
|
||||
|
||||
|
||||
DungScr.Add(New PointerAndSize With {.Addr = 119336, .Sizw = 240})
|
||||
DungScr.Add(New PointerAndSize With {.Addr = 119576, .Sizw = 240})
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim txt = New ScriptTools
|
||||
|
||||
'Reading filetable and make array
|
||||
files1 = cd.makeFileList(UserPath.Text)
|
||||
'files2 = cd.makeFileList(EngISOPath.Text)
|
||||
Dim CurFile() As Byte = cd.getCDfile(UserPath.Text, files1(736).Sector, files1(736).Sizw).ToArray
|
||||
'Dim EngFile() As Byte = cd.getCDfile(EngISOPath.Text, files2(736).Sector, files2(736).Sizw).ToArray 'loading files
|
||||
Dim JRes = New ScriptFile
|
||||
Dim ERes = New ScriptFile
|
||||
|
||||
For Each scr In DungScr
|
||||
|
||||
Dim JapBytes(scr.Sizw - 1) As Byte : Dim EngBytes(scr.Sizw - 1) As Byte
|
||||
Array.Copy(CurFile, scr.Addr, JapBytes, 0, scr.Sizw) 'Array.Copy(EngFile, scr.Addr, EngBytes, 0, scr.Sizw) 'Copying Arrays
|
||||
|
||||
txt.ParseResource(JapBytes, JRes) : txt.ParseText(JRes, False)
|
||||
'txt.ParseResource(EngBytes, ERes) : txt.ParseText(ERes, True)
|
||||
Dim combText = txt.CombineParsedText(ERes, JRes)
|
||||
Dim combResData = txt.compileData(JRes)
|
||||
|
||||
Dim fil = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\0736_DUNG_SCRIPTS\" & DungScr.IndexOf(scr).ToString("D4") & ".txt"
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(fil, combResData & combText, False)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ConvertContact_Click(sender As Object, e As EventArgs) Handles ExportContact.Click
|
||||
|
||||
|
||||
Dim Japfiles = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\1075_Battle_Contacts", "*_J").ToList
|
||||
Dim Engfiles = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\1075_Battle_Contacts", "*_E*").ToList
|
||||
Dim OutPut_Dir = "D:\Games\PSX\Persona.2.Innocent.Sin\Export\1075_Battle_Contacts\Processing\Back\"
|
||||
|
||||
Dim scr = New ScriptTools
|
||||
Dim cnt = 0
|
||||
|
||||
For Each fil In Japfiles
|
||||
|
||||
Dim contact As String = scr.MakeExportFile(My.Computer.FileSystem.ReadAllBytes(fil), My.Computer.FileSystem.ReadAllBytes(Engfiles(Japfiles.IndexOf(fil))), cnt)
|
||||
|
||||
Dim filename = OutPut_Dir & Path.GetFileName(fil) & "_exp.txt"
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filename, contact, False, Encoding.GetEncoding(1251))
|
||||
Next
|
||||
|
||||
|
||||
MsgBox("Converted " & cnt & " dialogs!", MsgBoxStyle.Information)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Summon_Export_Click(sender As Object, e As EventArgs) Handles Summon_Export.Click
|
||||
|
||||
Dim Japfiles = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\0077_Summon_Text", "*_U").ToList
|
||||
Dim Engfiles = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\0077_Summon_Text", "*_E*").ToList
|
||||
Dim OutPut_Dir = "D:\Games\PSX\Persona.2.Innocent.Sin\Export\0077_Summon_Text\Processing\Back\"
|
||||
|
||||
Dim scr = New ScriptTools
|
||||
Dim cnt = 0
|
||||
|
||||
For Each fil In Japfiles
|
||||
|
||||
Dim contact As String = scr.MakeSummonExport(My.Computer.FileSystem.ReadAllBytes(fil), My.Computer.FileSystem.ReadAllBytes(Engfiles(Japfiles.IndexOf(fil))), cnt)
|
||||
|
||||
Dim filename = OutPut_Dir & Path.GetFileName(fil) & "_exp.txt"
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filename, contact, False, Encoding.GetEncoding(1251))
|
||||
Next
|
||||
|
||||
|
||||
MsgBox("Converted " & cnt & " dialogs!", MsgBoxStyle.Information)
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Convert_Summon_Click(sender As Object, e As EventArgs) Handles Convert_Summon.Click
|
||||
|
||||
Dim Japfiles = IO.Directory.GetFiles("D:\Games\PSX\Persona.2.Innocent.Sin\Export\0077_Summon_Text\Processing\", "*.txt").ToList
|
||||
|
||||
DialogCounter = 0
|
||||
|
||||
|
||||
Dim txt = New ScriptTools
|
||||
|
||||
|
||||
For Each JFile In Japfiles
|
||||
Debug.WriteLine("Converting " & JFile)
|
||||
txt.convertSummonScript(JFile, DialogCounter)
|
||||
Next
|
||||
|
||||
MsgBox("Success! Converted " & UBound(OpenFileDialog1.FileNames) + 1 & " file(s)" & vbCrLf & "Overall Dialogs Count: " & DialogCounter)
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub PSP_UNPACK_EVENT_BIN_Click(sender As Object, e As EventArgs) Handles PSP_UNPACK_EVENT_BIN.Click
|
||||
Dim zips = New List(Of Byte())
|
||||
|
||||
Dim fil = My.Computer.FileSystem.ReadAllBytes("D:\Games\PSX\Persona 2 - Innocent Sin USA\PSP_GAME\USRDIR\pack\unpack\event.bin")
|
||||
Dim filenames = New List(Of String)
|
||||
|
||||
For a = 0 To 396
|
||||
Dim a1 = BitConverter.ToInt32(fil, a * 8)
|
||||
Dim a2 = BitConverter.ToInt32(fil, a * 8 + 4)
|
||||
Dim zzz(a2 - a1) As Byte
|
||||
Array.Copy(fil, a1, zzz, 0, a2 - a1)
|
||||
Dim fn = ""
|
||||
For bbb = 0 To 8
|
||||
fn &= Chr(zzz(bbb + 10))
|
||||
Next
|
||||
filenames.Add(fn)
|
||||
Dim Decomp = DecompressGZip(zzz)
|
||||
zips.Add(Decomp)
|
||||
'My.Computer.FileSystem.WriteAllBytes("D:\Games\PSX\Persona 2 - Innocent Sin USA\PSP_GAME\USRDIR\pack\unpack\Event\" & a.ToString("D4") & "_" & (a + 181).ToString("D3") & "_" & fn, Decomp, False)
|
||||
|
||||
Next
|
||||
|
||||
Dim scr = New ScriptTools
|
||||
|
||||
For Each zip In zips
|
||||
Dim filePack = New List(Of Byte())
|
||||
Dim startRead As Integer = 48
|
||||
|
||||
For a = 0 To 8
|
||||
Dim a1 = BitConverter.ToInt32(zip, a * 4 + 4)
|
||||
Dim curFil(a1 - 1) As Byte
|
||||
Array.Copy(zip, startRead, curFil, 0, a1)
|
||||
|
||||
startRead += a1
|
||||
Dim BA = startRead Mod 16
|
||||
If BA > 0 Then startRead += 16 - BA
|
||||
|
||||
filePack.Add(curFil)
|
||||
|
||||
Next
|
||||
Dim b = zips.IndexOf(zip)
|
||||
Dim fn = "D:\Games\PSX\Persona 2 - Innocent Sin USA\PSP_GAME\USRDIR\pack\unpack\Event\" & b.ToString("D4") & "_" & (b + 181).ToString("D3") & "_" & filenames(b)
|
||||
'SAVING 8th LAST FILE!!!
|
||||
Dim txt = scr.ConvertPSPTextFile(filePack.Last)
|
||||
' My.Computer.FileSystem.WriteAllBytes(fn & ".txt", filePack.Last, False)
|
||||
My.Computer.FileSystem.WriteAllText(fn & ".txt", txt, False, Encoding.GetEncoding(1251))
|
||||
|
||||
Next
|
||||
|
||||
|
||||
'For Each z In
|
||||
|
||||
|
||||
MsgBox("EXPORTED")
|
||||
End Sub
|
||||
|
||||
Public Function DecompressGZip(bytesToDecompress As Byte()) As Byte()
|
||||
Using stream As New GZipStream(New MemoryStream(bytesToDecompress), CompressionMode.Decompress)
|
||||
Const size As Integer = 4096
|
||||
Dim buffer As Byte() = New Byte(size - 1) {}
|
||||
Using memoryStream As New MemoryStream()
|
||||
Dim count As Integer
|
||||
Do
|
||||
count = stream.Read(buffer, 0, size)
|
||||
If count > 0 Then
|
||||
memoryStream.Write(buffer, 0, count)
|
||||
End If
|
||||
Loop While count > 0
|
||||
Return memoryStream.ToArray()
|
||||
End Using
|
||||
End Using
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
Public Class PointerAndSize
|
||||
Public Addr As Integer
|
||||
Public Sizw As Integer
|
||||
End Class
|
||||
|
||||
6
p2isPSX_CDToolkit/App.config
Normal file
6
p2isPSX_CDToolkit/App.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
227
p2isPSX_CDToolkit/CityEditor.Designer.vb
generated
Normal file
227
p2isPSX_CDToolkit/CityEditor.Designer.vb
generated
Normal file
@@ -0,0 +1,227 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class CityEditor
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||
Me.ID = New System.Windows.Forms.TextBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.UserTitle = New System.Windows.Forms.TextBox()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.DataGridView1 = New System.Windows.Forms.DataGridView()
|
||||
Me.EngTitle = New System.Windows.Forms.TextBox()
|
||||
Me.SaveToISO = New System.Windows.Forms.Button()
|
||||
Me.Button4 = New System.Windows.Forms.Button()
|
||||
Me.ChrCount = New System.Windows.Forms.Label()
|
||||
Me.AreaCount = New System.Windows.Forms.Label()
|
||||
Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Column2 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Column3 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.STAT_E = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'ID
|
||||
'
|
||||
Me.ID.Location = New System.Drawing.Point(467, 7)
|
||||
Me.ID.Name = "ID"
|
||||
Me.ID.Size = New System.Drawing.Size(138, 20)
|
||||
Me.ID.TabIndex = 0
|
||||
Me.ID.Text = "713"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(351, 10)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(99, 13)
|
||||
Me.Label1.TabIndex = 1
|
||||
Me.Label1.Text = "DictrictID (713-719)"
|
||||
'
|
||||
'UserTitle
|
||||
'
|
||||
Me.UserTitle.Location = New System.Drawing.Point(12, 59)
|
||||
Me.UserTitle.Name = "UserTitle"
|
||||
Me.UserTitle.Size = New System.Drawing.Size(196, 20)
|
||||
Me.UserTitle.TabIndex = 2
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(467, 31)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(69, 22)
|
||||
Me.Button1.TabIndex = 3
|
||||
Me.Button1.Text = "<<<"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(542, 31)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(63, 22)
|
||||
Me.Button2.TabIndex = 3
|
||||
Me.Button2.Text = ">>>"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'DataGridView1
|
||||
'
|
||||
Me.DataGridView1.AllowUserToAddRows = False
|
||||
Me.DataGridView1.AllowUserToDeleteRows = False
|
||||
Me.DataGridView1.AllowUserToResizeRows = False
|
||||
Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
||||
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Column2, Me.Column3, Me.STAT_E})
|
||||
DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
|
||||
DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window
|
||||
DataGridViewCellStyle1.Font = New System.Drawing.Font("Consolas", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText
|
||||
DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight
|
||||
DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText
|
||||
DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
|
||||
Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle1
|
||||
Me.DataGridView1.Location = New System.Drawing.Point(12, 85)
|
||||
Me.DataGridView1.MultiSelect = False
|
||||
Me.DataGridView1.Name = "DataGridView1"
|
||||
Me.DataGridView1.RowHeadersVisible = False
|
||||
Me.DataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing
|
||||
DataGridViewCellStyle2.Font = New System.Drawing.Font("Lucida Sans Typewriter", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.DataGridView1.RowsDefaultCellStyle = DataGridViewCellStyle2
|
||||
Me.DataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect
|
||||
Me.DataGridView1.Size = New System.Drawing.Size(593, 675)
|
||||
Me.DataGridView1.TabIndex = 4
|
||||
'
|
||||
'EngTitle
|
||||
'
|
||||
Me.EngTitle.Location = New System.Drawing.Point(409, 59)
|
||||
Me.EngTitle.Name = "EngTitle"
|
||||
Me.EngTitle.Size = New System.Drawing.Size(196, 20)
|
||||
Me.EngTitle.TabIndex = 2
|
||||
'
|
||||
'SaveToISO
|
||||
'
|
||||
Me.SaveToISO.Location = New System.Drawing.Point(329, 766)
|
||||
Me.SaveToISO.Name = "SaveToISO"
|
||||
Me.SaveToISO.Size = New System.Drawing.Size(166, 40)
|
||||
Me.SaveToISO.TabIndex = 5
|
||||
Me.SaveToISO.Text = "SaveToUSERISO"
|
||||
Me.SaveToISO.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button4
|
||||
'
|
||||
Me.Button4.Location = New System.Drawing.Point(208, 783)
|
||||
Me.Button4.Name = "Button4"
|
||||
Me.Button4.Size = New System.Drawing.Size(115, 23)
|
||||
Me.Button4.TabIndex = 6
|
||||
Me.Button4.Text = "UpdateFileTable??"
|
||||
Me.Button4.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ChrCount
|
||||
'
|
||||
Me.ChrCount.AutoSize = True
|
||||
Me.ChrCount.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.ChrCount.Location = New System.Drawing.Point(189, 36)
|
||||
Me.ChrCount.Name = "ChrCount"
|
||||
Me.ChrCount.Size = New System.Drawing.Size(19, 20)
|
||||
Me.ChrCount.TabIndex = 7
|
||||
Me.ChrCount.Text = "0"
|
||||
'
|
||||
'AreaCount
|
||||
'
|
||||
Me.AreaCount.AutoSize = True
|
||||
Me.AreaCount.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.AreaCount.Location = New System.Drawing.Point(247, 59)
|
||||
Me.AreaCount.Name = "AreaCount"
|
||||
Me.AreaCount.Size = New System.Drawing.Size(19, 20)
|
||||
Me.AreaCount.TabIndex = 8
|
||||
Me.AreaCount.Text = "0"
|
||||
'
|
||||
'Column1
|
||||
'
|
||||
Me.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column1.FillWeight = 35.0!
|
||||
Me.Column1.HeaderText = "COORDS"
|
||||
Me.Column1.Name = "Column1"
|
||||
'
|
||||
'Column2
|
||||
'
|
||||
Me.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column2.HeaderText = "USER_TEXT"
|
||||
Me.Column2.Name = "Column2"
|
||||
'
|
||||
'Column3
|
||||
'
|
||||
Me.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column3.HeaderText = "ENG_TEXT"
|
||||
Me.Column3.Name = "Column3"
|
||||
'
|
||||
'STAT_E
|
||||
'
|
||||
Me.STAT_E.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.STAT_E.FillWeight = 35.0!
|
||||
Me.STAT_E.HeaderText = "COORDS_E"
|
||||
Me.STAT_E.Name = "STAT_E"
|
||||
'
|
||||
'CityEditor
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(608, 818)
|
||||
Me.Controls.Add(Me.AreaCount)
|
||||
Me.Controls.Add(Me.ChrCount)
|
||||
Me.Controls.Add(Me.Button4)
|
||||
Me.Controls.Add(Me.SaveToISO)
|
||||
Me.Controls.Add(Me.DataGridView1)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.EngTitle)
|
||||
Me.Controls.Add(Me.UserTitle)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.ID)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "CityEditor"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "CityEditor"
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents ID As TextBox
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents UserTitle As TextBox
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents Button2 As Button
|
||||
Friend WithEvents DataGridView1 As DataGridView
|
||||
Friend WithEvents EngTitle As TextBox
|
||||
Friend WithEvents SaveToISO As Button
|
||||
Friend WithEvents Button4 As Button
|
||||
Friend WithEvents ChrCount As Label
|
||||
Friend WithEvents AreaCount As Label
|
||||
Friend WithEvents Column1 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Column2 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Column3 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents STAT_E As DataGridViewTextBoxColumn
|
||||
End Class
|
||||
132
p2isPSX_CDToolkit/CityEditor.resx
Normal file
132
p2isPSX_CDToolkit/CityEditor.resx
Normal file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="STAT_E.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
268
p2isPSX_CDToolkit/CityEditor.vb
Normal file
268
p2isPSX_CDToolkit/CityEditor.vb
Normal file
@@ -0,0 +1,268 @@
|
||||
Public Class CityEditor
|
||||
|
||||
Public files1 As List(Of fileInfo)
|
||||
Public files2 As List(Of fileInfo)
|
||||
Public CurFile As rleFile
|
||||
Public CurFileUnrle As Byte()
|
||||
Public EngFile As rleFile
|
||||
Public EngFileUnrle As Byte()
|
||||
|
||||
|
||||
Private Sub DungeonEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
|
||||
Dim cd = New ISOTools
|
||||
|
||||
'Reading filetable and make array
|
||||
files1 = cd.makeFileList(Form1.UserPath.Text)
|
||||
files2 = cd.makeFileList(Form1.EngISOPath.Text)
|
||||
|
||||
|
||||
LoadDistrict()
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
If ID.Text = 713 Then
|
||||
ID.Text = 719
|
||||
Else
|
||||
ID.Text -= 1
|
||||
End If
|
||||
|
||||
|
||||
LoadDistrict()
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
If ID.Text = 719 Then
|
||||
ID.Text = 713
|
||||
Else
|
||||
ID.Text += 1
|
||||
End If
|
||||
|
||||
|
||||
LoadDistrict()
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub LoadDistrict()
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim rle = New rleTools
|
||||
|
||||
|
||||
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, files1(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
CurFile = Form1.binFile(Form1.binFile.Count - 2) 'Get Before Last File
|
||||
CurFileUnrle = CurFile.Bytes.ToArray
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.EngISOPath.Text, files2(ID.Text).Sector, files2(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
EngFile = Form1.binFile(Form1.binFile.Count - 2) 'Get Before Last File
|
||||
EngFileUnrle = EngFile.Bytes.ToArray
|
||||
'Dim curfile As rleFile = binFile(8)
|
||||
|
||||
|
||||
Dim JapBlock1Len = CurFileUnrle(8)
|
||||
Dim JapBlock2Len = CurFileUnrle(9)
|
||||
Dim JapBlockLines = CurFileUnrle(10)
|
||||
Dim EnBlock1Len = EngFileUnrle(8)
|
||||
Dim EnBlock2Len = EngFileUnrle(9)
|
||||
Dim EnBlockLines = EngFileUnrle(10)
|
||||
|
||||
Dim JapTextStart = JapBlock1Len * 16 + JapBlock2Len * 8 + 8 + 4 'header 8 + head 4 block
|
||||
Dim EngTextStart = EnBlock1Len * 16 + EnBlock2Len * 8 + 8 + 4
|
||||
|
||||
|
||||
EngTitle.Text = readEngText(EngTextStart + 4) 'after coords...
|
||||
UserTitle.Text = readRusText(JapTextStart + 4) 'after coords...
|
||||
DataGridView1.Rows.Clear()
|
||||
|
||||
|
||||
For a = 1 To JapBlockLines - 1
|
||||
JapTextStart += 40
|
||||
EngTextStart += 40 'Move to Next Block...
|
||||
Dim jap_coords As String = BitConverter.ToInt16(CurFileUnrle, JapTextStart) & " x " & BitConverter.ToInt16(CurFileUnrle, JapTextStart + 2)
|
||||
Dim japLoc = readRusText(JapTextStart + 4 + 14) ' aftercoords
|
||||
|
||||
Dim en_coords As String = BitConverter.ToInt16(CurFileUnrle, EngTextStart) & " x " & BitConverter.ToInt16(CurFileUnrle, EngTextStart + 2)
|
||||
Dim enLoc = readEngText(JapTextStart + 4 + 14) ' aftercoords
|
||||
DataGridView1.Rows.Add(jap_coords, japLoc, enLoc, en_coords)
|
||||
|
||||
Next
|
||||
|
||||
'Do
|
||||
' If pointer >= endByte Then Exit Do
|
||||
|
||||
' Dim status = BitConverter.ToInt16(CurFileUnrle, pointer)
|
||||
' Dim statusE = EngFileUnrle(pointer)
|
||||
|
||||
' pointer += 2
|
||||
' Dim engString = readEngText(pointer - 1)
|
||||
' Dim rustext = readRusText(pointer)
|
||||
|
||||
' DataGridView1.Rows.Add(status, rustext, engString, statusE)
|
||||
' pointer += 30
|
||||
'Loop
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function readEngText(ByVal Curbt As Integer)
|
||||
Dim a = ""
|
||||
Do
|
||||
If EngFileUnrle(Curbt) = 3 Or EngFileUnrle(Curbt) = 0 Then Exit Do
|
||||
If EngFileUnrle(Curbt) > 128 Then EngFileUnrle(Curbt) = Asc("-")
|
||||
a &= Chr(EngFileUnrle(Curbt))
|
||||
Curbt += 1
|
||||
Loop
|
||||
Return a
|
||||
End Function
|
||||
|
||||
|
||||
Public Function readRusText(ByVal Curbt As Integer)
|
||||
Dim a = ""
|
||||
If BitConverter.ToInt16(CurFileUnrle, Curbt) And &H2000 Then
|
||||
Dim len = BitConverter.ToInt16(CurFileUnrle, Curbt) And &HFF
|
||||
Curbt += 2
|
||||
For b = 0 To len - 1
|
||||
a &= Chr(CurFileUnrle(Curbt))
|
||||
Curbt += 1
|
||||
Next
|
||||
Else
|
||||
Dim b = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
|
||||
Do
|
||||
Dim curChar = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
If (curChar < &H1000) Then a &= Form1.chars(curChar)
|
||||
'a &= CurFileUnrle(Curbt).ToString("X2") & CurFileUnrle(Curbt + 1).ToString("X2")
|
||||
Curbt += 2
|
||||
If Curbt >= CurFileUnrle.Count Then Exit Do
|
||||
b = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
Loop Until (b And &H1000)
|
||||
End If
|
||||
Return a
|
||||
End Function
|
||||
|
||||
Private Sub UserTitle_TextChanged(sender As Object, e As EventArgs) Handles UserTitle.TextChanged
|
||||
ChrCount.Text = UserTitle.Text.Length
|
||||
If UserTitle.Text.Length > 14 Then
|
||||
ChrCount.ForeColor = Color.Red
|
||||
Else
|
||||
ChrCount.ForeColor = Color.DarkGreen
|
||||
End If
|
||||
End Sub
|
||||
Private Sub DataGridView1_CurrentCellChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellChanged
|
||||
If IsNothing(DataGridView1.CurrentCell) Then Exit Sub
|
||||
Dim a = DataGridView1.CurrentCell.Value.ToString.Length
|
||||
AreaCount.Text = a
|
||||
If a > 20 Then
|
||||
AreaCount.ForeColor = Color.Red
|
||||
Else
|
||||
AreaCount.ForeColor = Color.DarkGreen
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles SaveToISO.Click
|
||||
'CHANGING FILE!
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim rle = New rleTools
|
||||
|
||||
'Making title bytes
|
||||
MakeSaveRussianString(UserTitle.Text, 24, 0)
|
||||
|
||||
Dim off As Int32 = BitConverter.ToInt32(CurFileUnrle, 104)
|
||||
'Dim pointer As Int32 = BitConverter.ToInt32(CurFileUnrle, 104)
|
||||
Dim endByte As Int32 = BitConverter.ToInt32(CurFileUnrle, 60)
|
||||
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
|
||||
CurFileUnrle(off) = row.Cells(0).Value
|
||||
CurFileUnrle(off + 1) = 0
|
||||
|
||||
MakeSaveRussianString(Trim(row.Cells(1).Value), 30, off + 2)
|
||||
|
||||
off += 32
|
||||
Next
|
||||
|
||||
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, files1(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
Dim curfile = Form1.binFile(0)
|
||||
|
||||
Dim before = curfile.Bytes.Count
|
||||
Form1.binFile(0).Bytes = rle.decodeRLEnew(CurFileUnrle, curfile).ToArray
|
||||
Form1.binFile(0).BytesAfter = 0
|
||||
Dim after = Form1.binFile(0).Bytes.Count
|
||||
|
||||
'Packing
|
||||
Dim finalPack = New List(Of Byte)
|
||||
For Each bin In Form1.binFile
|
||||
finalPack.AddRange(bin.Bytes)
|
||||
|
||||
'AddingBytesAfter
|
||||
For g = 0 To bin.BytesAfter - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
|
||||
Next
|
||||
|
||||
|
||||
If finalPack.Count Mod 2048 > 0 Then
|
||||
For g = 1 To (2048 - (finalPack.Count Mod 2048))
|
||||
finalPack.Add(0)
|
||||
Next g
|
||||
End If
|
||||
|
||||
Dim beforeSize As Integer = files1(ID.Text).Sizw
|
||||
|
||||
If finalPack.Count <= files1(ID.Text).Sizw Then
|
||||
'If sizw matched
|
||||
|
||||
cd.saveCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, finalPack.Count, finalPack.ToArray)
|
||||
MsgBox("Succesfully Saved!" & vbCrLf & "Bofore: " & before & vbCrLf & "Afta: " & after & vbCrLf & after - before & "b.")
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
If MsgBox("finalPack is Bigger than source :(" &
|
||||
vbCrLf & "Bofore: " & before & vbCrLf & "Afta: " & after & vbCrLf & after - before & "b." &
|
||||
vbCrLf & "Do you wanna save it to file?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||
|
||||
If Form1.SaveFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(Form1.SaveFileDialog1.FileName, finalPack.ToArray, False)
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'My.Computer.FileSystem.WriteAllBytes("D:\Games\PSX\Persona.2.Innocent.Sin\Export\UnRLE\0097\EDITOR_TEST", CurFileUnrle, False)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub MakeSaveRussianString(ByVal str As String, ByVal maxBytes As Integer, ByVal offs As String)
|
||||
Dim a = New List(Of Byte)
|
||||
If str = "0010" Then
|
||||
For x = 0 To maxBytes - 1 Step 2
|
||||
CurFileUnrle(offs + x) = 0
|
||||
CurFileUnrle(offs + x + 1) = &H10
|
||||
Next
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
|
||||
a.Add(str.Length)
|
||||
a.Add(&H20)
|
||||
For x = 0 To str.Length - 1
|
||||
a.Add(Asc(str(x)))
|
||||
Next
|
||||
For x = 0 To maxBytes - str.Length - 3
|
||||
a.Add(0)
|
||||
Next
|
||||
For x = 0 To maxBytes - 1
|
||||
CurFileUnrle(x + offs) = a(x)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
227
p2isPSX_CDToolkit/DungeonEditor.Designer.vb
generated
Normal file
227
p2isPSX_CDToolkit/DungeonEditor.Designer.vb
generated
Normal file
@@ -0,0 +1,227 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class DungeonEditor
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||
Me.ID = New System.Windows.Forms.TextBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.UserTitle = New System.Windows.Forms.TextBox()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.DataGridView1 = New System.Windows.Forms.DataGridView()
|
||||
Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Column2 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Column3 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.STAT_E = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.EngTitle = New System.Windows.Forms.TextBox()
|
||||
Me.SaveToISO = New System.Windows.Forms.Button()
|
||||
Me.Button4 = New System.Windows.Forms.Button()
|
||||
Me.ChrCount = New System.Windows.Forms.Label()
|
||||
Me.AreaCount = New System.Windows.Forms.Label()
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'ID
|
||||
'
|
||||
Me.ID.Location = New System.Drawing.Point(358, 5)
|
||||
Me.ID.Name = "ID"
|
||||
Me.ID.Size = New System.Drawing.Size(138, 20)
|
||||
Me.ID.TabIndex = 0
|
||||
Me.ID.Text = "741"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(242, 8)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(110, 13)
|
||||
Me.Label1.TabIndex = 1
|
||||
Me.Label1.Text = "DungeonID (741-788)"
|
||||
'
|
||||
'UserTitle
|
||||
'
|
||||
Me.UserTitle.Location = New System.Drawing.Point(12, 59)
|
||||
Me.UserTitle.Name = "UserTitle"
|
||||
Me.UserTitle.Size = New System.Drawing.Size(196, 20)
|
||||
Me.UserTitle.TabIndex = 2
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(358, 29)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(69, 22)
|
||||
Me.Button1.TabIndex = 3
|
||||
Me.Button1.Text = "<<<"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(433, 29)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(63, 22)
|
||||
Me.Button2.TabIndex = 3
|
||||
Me.Button2.Text = ">>>"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'DataGridView1
|
||||
'
|
||||
Me.DataGridView1.AllowUserToAddRows = False
|
||||
Me.DataGridView1.AllowUserToDeleteRows = False
|
||||
Me.DataGridView1.AllowUserToResizeRows = False
|
||||
Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
||||
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Column2, Me.Column3, Me.STAT_E})
|
||||
DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
|
||||
DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window
|
||||
DataGridViewCellStyle1.Font = New System.Drawing.Font("Consolas", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText
|
||||
DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight
|
||||
DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText
|
||||
DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
|
||||
Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle1
|
||||
Me.DataGridView1.Location = New System.Drawing.Point(12, 85)
|
||||
Me.DataGridView1.MultiSelect = False
|
||||
Me.DataGridView1.Name = "DataGridView1"
|
||||
Me.DataGridView1.RowHeadersVisible = False
|
||||
Me.DataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing
|
||||
DataGridViewCellStyle2.Font = New System.Drawing.Font("Lucida Sans Typewriter", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.DataGridView1.RowsDefaultCellStyle = DataGridViewCellStyle2
|
||||
Me.DataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect
|
||||
Me.DataGridView1.Size = New System.Drawing.Size(484, 675)
|
||||
Me.DataGridView1.TabIndex = 4
|
||||
'
|
||||
'Column1
|
||||
'
|
||||
Me.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column1.FillWeight = 10.0!
|
||||
Me.Column1.HeaderText = "STATUS"
|
||||
Me.Column1.Name = "Column1"
|
||||
'
|
||||
'Column2
|
||||
'
|
||||
Me.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column2.HeaderText = "USER_TEXT"
|
||||
Me.Column2.Name = "Column2"
|
||||
'
|
||||
'Column3
|
||||
'
|
||||
Me.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column3.HeaderText = "ENG_TEXT"
|
||||
Me.Column3.Name = "Column3"
|
||||
'
|
||||
'STAT_E
|
||||
'
|
||||
Me.STAT_E.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.STAT_E.FillWeight = 15.0!
|
||||
Me.STAT_E.HeaderText = "STAT_E"
|
||||
Me.STAT_E.Name = "STAT_E"
|
||||
'
|
||||
'EngTitle
|
||||
'
|
||||
Me.EngTitle.Location = New System.Drawing.Point(300, 59)
|
||||
Me.EngTitle.Name = "EngTitle"
|
||||
Me.EngTitle.Size = New System.Drawing.Size(196, 20)
|
||||
Me.EngTitle.TabIndex = 2
|
||||
'
|
||||
'SaveToISO
|
||||
'
|
||||
Me.SaveToISO.Location = New System.Drawing.Point(329, 766)
|
||||
Me.SaveToISO.Name = "SaveToISO"
|
||||
Me.SaveToISO.Size = New System.Drawing.Size(166, 40)
|
||||
Me.SaveToISO.TabIndex = 5
|
||||
Me.SaveToISO.Text = "SaveToUSERISO"
|
||||
Me.SaveToISO.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button4
|
||||
'
|
||||
Me.Button4.Location = New System.Drawing.Point(208, 783)
|
||||
Me.Button4.Name = "Button4"
|
||||
Me.Button4.Size = New System.Drawing.Size(115, 23)
|
||||
Me.Button4.TabIndex = 6
|
||||
Me.Button4.Text = "UpdateFileTable??"
|
||||
Me.Button4.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ChrCount
|
||||
'
|
||||
Me.ChrCount.AutoSize = True
|
||||
Me.ChrCount.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.ChrCount.Location = New System.Drawing.Point(189, 36)
|
||||
Me.ChrCount.Name = "ChrCount"
|
||||
Me.ChrCount.Size = New System.Drawing.Size(19, 20)
|
||||
Me.ChrCount.TabIndex = 7
|
||||
Me.ChrCount.Text = "0"
|
||||
'
|
||||
'AreaCount
|
||||
'
|
||||
Me.AreaCount.AutoSize = True
|
||||
Me.AreaCount.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.AreaCount.Location = New System.Drawing.Point(247, 59)
|
||||
Me.AreaCount.Name = "AreaCount"
|
||||
Me.AreaCount.Size = New System.Drawing.Size(19, 20)
|
||||
Me.AreaCount.TabIndex = 8
|
||||
Me.AreaCount.Text = "0"
|
||||
'
|
||||
'DungeonEditor
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(507, 818)
|
||||
Me.Controls.Add(Me.AreaCount)
|
||||
Me.Controls.Add(Me.ChrCount)
|
||||
Me.Controls.Add(Me.Button4)
|
||||
Me.Controls.Add(Me.SaveToISO)
|
||||
Me.Controls.Add(Me.DataGridView1)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.EngTitle)
|
||||
Me.Controls.Add(Me.UserTitle)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.ID)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "DungeonEditor"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "DungeonEditor"
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents ID As TextBox
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents UserTitle As TextBox
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents Button2 As Button
|
||||
Friend WithEvents DataGridView1 As DataGridView
|
||||
Friend WithEvents EngTitle As TextBox
|
||||
Friend WithEvents SaveToISO As Button
|
||||
Friend WithEvents Button4 As Button
|
||||
Friend WithEvents Column1 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Column2 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Column3 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents STAT_E As DataGridViewTextBoxColumn
|
||||
Friend WithEvents ChrCount As Label
|
||||
Friend WithEvents AreaCount As Label
|
||||
End Class
|
||||
132
p2isPSX_CDToolkit/DungeonEditor.resx
Normal file
132
p2isPSX_CDToolkit/DungeonEditor.resx
Normal file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="STAT_E.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
247
p2isPSX_CDToolkit/DungeonEditor.vb
Normal file
247
p2isPSX_CDToolkit/DungeonEditor.vb
Normal file
@@ -0,0 +1,247 @@
|
||||
Public Class DungeonEditor
|
||||
|
||||
Public files1 As List(Of fileInfo)
|
||||
Public files2 As List(Of fileInfo)
|
||||
Public CurFile As rleFile
|
||||
Public CurFileUnrle As Byte()
|
||||
Public EngFile As rleFile
|
||||
Public EngFileUnrle As Byte()
|
||||
|
||||
|
||||
Private Sub DungeonEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
|
||||
Dim cd = New ISOTools
|
||||
|
||||
'Reading filetable and make array
|
||||
files1 = cd.makeFileList(form1.UserPath.Text)
|
||||
files2 = cd.makeFileList(Form1.EngISOPath.Text)
|
||||
|
||||
|
||||
LoadDungeon()
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
If ID.Text = 741 Then
|
||||
ID.Text = 788
|
||||
Else
|
||||
ID.Text -= 1
|
||||
End If
|
||||
|
||||
|
||||
LoadDungeon()
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
If ID.Text = 788 Then
|
||||
ID.Text = 741
|
||||
Else
|
||||
ID.Text += 1
|
||||
End If
|
||||
|
||||
|
||||
LoadDungeon()
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub LoadDungeon()
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim rle = New rleTools
|
||||
|
||||
|
||||
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, files1(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
CurFile = Form1.binFile(0)
|
||||
CurFileUnrle = rle.Unrle(CurFile.Bytes).ToArray
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.EngISOPath.Text, files2(ID.Text).Sector, files2(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
EngFile = Form1.binFile(0)
|
||||
EngFileUnrle = rle.Unrle(EngFile.Bytes).ToArray
|
||||
'Dim curfile As rleFile = binFile(8)
|
||||
|
||||
EngTitle.Text = readEngText(0)
|
||||
UserTitle.Text = readRusText(0)
|
||||
|
||||
|
||||
Dim pointer As Int32 = BitConverter.ToInt32(CurFileUnrle, 104)
|
||||
Dim endByte As Int32 = BitConverter.ToInt32(CurFileUnrle, 60)
|
||||
DataGridView1.Rows.Clear()
|
||||
|
||||
Do
|
||||
|
||||
If pointer >= endByte Then Exit Do
|
||||
|
||||
Dim status = BitConverter.ToInt16(CurFileUnrle, pointer)
|
||||
Dim statusE = EngFileUnrle(pointer)
|
||||
|
||||
pointer += 2
|
||||
Dim engString = readEngText(pointer - 1)
|
||||
Dim rustext = readRusText(pointer)
|
||||
|
||||
DataGridView1.Rows.Add(status, rustext, engString, statusE)
|
||||
pointer += 30
|
||||
Loop
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function readEngText(ByVal Curbt As Integer)
|
||||
Dim a = ""
|
||||
Do
|
||||
If EngFileUnrle(Curbt) = 3 Or EngFileUnrle(Curbt) = 0 Then Exit Do
|
||||
If EngFileUnrle(Curbt) > 128 Then EngFileUnrle(Curbt) = Asc("-")
|
||||
a &= Chr(EngFileUnrle(Curbt))
|
||||
Curbt += 1
|
||||
Loop
|
||||
Return a
|
||||
End Function
|
||||
|
||||
|
||||
Public Function readRusText(ByVal Curbt As Integer)
|
||||
Dim a = ""
|
||||
If BitConverter.ToInt16(CurFileUnrle, Curbt) And &H2000 Then
|
||||
Dim len = BitConverter.ToInt16(CurFileUnrle, Curbt) And &HFF
|
||||
Curbt += 2
|
||||
For b = 0 To len - 1
|
||||
a &= Chr(CurFileUnrle(Curbt))
|
||||
Curbt += 1
|
||||
Next
|
||||
Else
|
||||
Dim b = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
|
||||
Do
|
||||
Dim curChar = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
If (curChar < &H1000) Then a &= Form1.chars(curChar)
|
||||
'a &= CurFileUnrle(Curbt).ToString("X2") & CurFileUnrle(Curbt + 1).ToString("X2")
|
||||
Curbt += 2
|
||||
If Curbt >= CurFileUnrle.Count Then Exit Do
|
||||
b = BitConverter.ToInt16(CurFileUnrle, Curbt)
|
||||
Loop Until (b And &H1000)
|
||||
End If
|
||||
Return a
|
||||
End Function
|
||||
|
||||
Private Sub UserTitle_TextChanged(sender As Object, e As EventArgs) Handles UserTitle.TextChanged
|
||||
ChrCount.Text = UserTitle.Text.Length
|
||||
If UserTitle.Text.Length > 14 Then
|
||||
ChrCount.ForeColor = Color.Red
|
||||
Else
|
||||
ChrCount.ForeColor = Color.DarkGreen
|
||||
End If
|
||||
End Sub
|
||||
Private Sub DataGridView1_CurrentCellChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellChanged
|
||||
If IsNothing(DataGridView1.CurrentCell) Then Exit Sub
|
||||
Dim a = DataGridView1.CurrentCell.Value.ToString.Length
|
||||
AreaCount.Text = a
|
||||
If a > 20 Then
|
||||
AreaCount.ForeColor = Color.Red
|
||||
Else
|
||||
AreaCount.ForeColor = Color.DarkGreen
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles SaveToISO.Click
|
||||
'CHANGING FILE!
|
||||
|
||||
Dim cd = New ISOTools
|
||||
Dim rle = New rleTools
|
||||
|
||||
'Making title bytes
|
||||
MakeSaveRussianString(UserTitle.Text, 24, 0)
|
||||
|
||||
Dim off As Int32 = BitConverter.ToInt32(CurFileUnrle, 104)
|
||||
'Dim pointer As Int32 = BitConverter.ToInt32(CurFileUnrle, 104)
|
||||
Dim endByte As Int32 = BitConverter.ToInt32(CurFileUnrle, 60)
|
||||
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
|
||||
CurFileUnrle(off) = row.Cells(0).Value
|
||||
CurFileUnrle(off + 1) = 0
|
||||
|
||||
MakeSaveRussianString(Trim(row.Cells(1).Value), 30, off + 2)
|
||||
|
||||
off += 32
|
||||
Next
|
||||
|
||||
|
||||
Form1.DeconstructFile(cd.getCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, files1(ID.Text).Sizw).ToArray) 'here is separated binfile
|
||||
Dim curfile = Form1.binFile(0)
|
||||
|
||||
Dim before = curfile.Bytes.Count
|
||||
Form1.binFile(0).Bytes = rle.decodeRLEnew(CurFileUnrle, curfile).ToArray
|
||||
Form1.binFile(0).BytesAfter = 0
|
||||
Dim after = Form1.binFile(0).Bytes.Count
|
||||
|
||||
'Packing
|
||||
Dim finalPack = New List(Of Byte)
|
||||
For Each bin In Form1.binFile
|
||||
finalPack.AddRange(bin.Bytes)
|
||||
|
||||
'AddingBytesAfter
|
||||
For g = 0 To bin.BytesAfter - 1
|
||||
finalPack.Add(0)
|
||||
Next
|
||||
|
||||
Next
|
||||
|
||||
|
||||
If finalPack.Count Mod 2048 > 0 Then
|
||||
For g = 1 To (2048 - (finalPack.Count Mod 2048))
|
||||
finalPack.Add(0)
|
||||
Next g
|
||||
End If
|
||||
|
||||
Dim beforeSize As Integer = files1(ID.Text).Sizw
|
||||
|
||||
If finalPack.Count <= files1(ID.Text).Sizw Then
|
||||
'If sizw matched
|
||||
|
||||
cd.saveCDfile(Form1.UserPath.Text, files1(ID.Text).Sector, finalPack.Count, finalPack.ToArray)
|
||||
MsgBox("Succesfully Saved!" & vbCrLf & "Bofore: " & before & vbCrLf & "Afta: " & after & vbCrLf & after - before & "b.")
|
||||
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
If MsgBox("finalPack is Bigger than source :(" &
|
||||
vbCrLf & "Bofore: " & before & vbCrLf & "Afta: " & after & vbCrLf & after - before & "b." &
|
||||
vbCrLf & "Do you wanna save it to file?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||
|
||||
If Form1.SaveFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(Form1.SaveFileDialog1.FileName, finalPack.ToArray, False)
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'My.Computer.FileSystem.WriteAllBytes("D:\Games\PSX\Persona.2.Innocent.Sin\Export\UnRLE\0097\EDITOR_TEST", CurFileUnrle, False)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub MakeSaveRussianString(ByVal str As String, ByVal maxBytes As Integer, ByVal offs As String)
|
||||
Dim a = New List(Of Byte)
|
||||
If str = "0010" Then
|
||||
For x = 0 To maxBytes - 1 Step 2
|
||||
CurFileUnrle(offs + x) = 0
|
||||
CurFileUnrle(offs + x + 1) = &H10
|
||||
Next
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
|
||||
a.Add(str.Length)
|
||||
a.Add(&H20)
|
||||
For x = 0 To str.Length - 1
|
||||
a.Add(Asc(str(x)))
|
||||
Next
|
||||
For x = 0 To maxBytes - str.Length - 3
|
||||
a.Add(0)
|
||||
Next
|
||||
For x = 0 To maxBytes - 1
|
||||
CurFileUnrle(x + offs) = a(x)
|
||||
Next
|
||||
End Sub
|
||||
End Class
|
||||
262
p2isPSX_CDToolkit/FontTools.vb
Normal file
262
p2isPSX_CDToolkit/FontTools.vb
Normal file
@@ -0,0 +1,262 @@
|
||||
Public Class FontTools
|
||||
|
||||
Dim drawSurface As Bitmap
|
||||
Public Colors = New List(Of Color)
|
||||
|
||||
Public Function GetColors()
|
||||
Colors.Add(Color.Black)
|
||||
Colors.Add(Color.FromArgb(238, 238, 238))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(156, 156, 156))
|
||||
Colors.Add(Color.FromArgb(49, 49, 49))
|
||||
Colors.Add(Color.FromArgb(246, 82, 131))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(148, 213, 255)) 'Persona2 TEXT PALETTE
|
||||
Colors.Add(Color.FromArgb(24, 24, 49))
|
||||
Colors.Add(Color.FromArgb(131, 230, 131))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(230, 230, 74))
|
||||
Colors.Add(Color.FromArgb(49, 49, 24))
|
||||
Colors.Add(Color.FromArgb(255, 131, 49))
|
||||
Colors.Add(Color.FromArgb(49, 24, 24))
|
||||
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Public Sub convertTo16()
|
||||
|
||||
'DONE
|
||||
|
||||
Dim CurByte As Byte
|
||||
|
||||
Dim tempByte As Byte
|
||||
Dim tempByte2 As Byte
|
||||
Dim tempByte3 As Byte
|
||||
Dim tempByte4 As Byte
|
||||
Dim vertCounter As Integer
|
||||
Dim newFont = New List(Of Byte)
|
||||
|
||||
Dim fontRawData = My.Computer.FileSystem.ReadAllBytes("D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export/JapFont.bin")
|
||||
|
||||
Dim ReadCounter = 64919
|
||||
Dim readAddr = 1152
|
||||
|
||||
Do
|
||||
|
||||
If readAddr >= ReadCounter Then Exit Do
|
||||
|
||||
newFont.Add(ReverseBits(fontRawData(readAddr)))
|
||||
|
||||
tempByte2 = ReverseBits(fontRawData(readAddr + 1))
|
||||
newFont.Add(tempByte2 And &HF0)
|
||||
|
||||
|
||||
|
||||
tempByte3 = ReverseBits(fontRawData(readAddr + 2))
|
||||
|
||||
|
||||
|
||||
Dim collby3 As Byte = (tempByte3 >> 4)
|
||||
|
||||
newFont.Add(tempByte2 << 4 Or collby3) 'Need last 4 bits
|
||||
|
||||
tempByte4 = tempByte3 << 4
|
||||
newFont.Add(tempByte4)
|
||||
|
||||
readAddr += 3
|
||||
|
||||
vertCounter += 1
|
||||
If vertCounter = 6 Then
|
||||
vertCounter = 0
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
newFont.Add(0)
|
||||
End If
|
||||
Loop
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes("D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]/Export/WatchMyFont.bin.bak", newFont.ToArray, False)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
'DONE
|
||||
|
||||
Public Sub ConvertTo12()
|
||||
|
||||
Dim CurByte As Byte
|
||||
Dim newFont = New List(Of Byte)
|
||||
|
||||
Dim tempByte2 As Byte
|
||||
Dim tempByte3 As Byte
|
||||
Dim tempByte4 As Byte
|
||||
|
||||
If Not My.Computer.FileSystem.FileExists(Form1.WorkDir.Text & "/JapFont.bin") Then MsgBox(Form1.WorkDir.Text & "/JapFont.bin not found. Check Export path!") : Exit Sub
|
||||
Dim fontHeader As Byte() = My.Computer.FileSystem.ReadAllBytes(Form1.WorkDir.Text & "/JapFont.bin")
|
||||
ReDim Preserve fontHeader(1151) 'Loading font header (1152 bytes of normal first font)
|
||||
newFont.AddRange(fontHeader.ToList)
|
||||
|
||||
|
||||
Dim vertCounter As Integer
|
||||
Dim fontRawData = My.Computer.FileSystem.ReadAllBytes(Form1.WorkDir.Text & "/WatchMyFont.bin")
|
||||
Dim ReadCounter = 82572
|
||||
Dim readAddr = 0
|
||||
|
||||
Do
|
||||
|
||||
If readAddr >= ReadCounter Then Exit Do
|
||||
newFont.Add(ReverseBits(fontRawData(readAddr)))
|
||||
|
||||
tempByte2 = fontRawData(readAddr + 1) And &HF0
|
||||
tempByte3 = fontRawData(readAddr + 2) >> 4
|
||||
newFont.Add(ReverseBits(tempByte2 Or tempByte3))
|
||||
|
||||
tempByte3 = fontRawData(readAddr + 2) << 4
|
||||
tempByte4 = fontRawData(readAddr + 3) >> 4
|
||||
newFont.Add(ReverseBits(tempByte3 Or tempByte4))
|
||||
|
||||
readAddr += 4
|
||||
vertCounter += 1
|
||||
If vertCounter = 6 Then
|
||||
readAddr += 8
|
||||
vertCounter = 0
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Loop
|
||||
|
||||
|
||||
'Creating Rus 8x12 Font @ BA00 (47616)
|
||||
For aaa = 1 To 47616 - newFont.Count
|
||||
newFont.Add(0)
|
||||
Next
|
||||
|
||||
readAddr = 32 * 32 ' Starting with CHR32 (space)
|
||||
|
||||
Do
|
||||
For a = 0 To 11 '12 rows loop
|
||||
newFont.Add(ReverseBits(fontRawData(readAddr)))
|
||||
readAddr += 2 'skip 2 bytes
|
||||
Next
|
||||
readAddr += 8 'skip empty 12*4 bytes
|
||||
Loop While readAddr < 256 * 32 'All symbols readed - exit
|
||||
|
||||
|
||||
|
||||
|
||||
For aaa = 1 To 65520 - newFont.Count
|
||||
newFont.Add(0)
|
||||
Next
|
||||
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(Form1.WorkDir.Text & "/0059_00_0_0_U", newFont.ToArray, False)
|
||||
|
||||
MsgBox("OK to /Export/0059_00_0_0_U", MsgBoxStyle.Information)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
Public Function ReverseBits(x As Byte) As Byte
|
||||
x = (((x And &HAA) >> 1) Or ((x And &H55) << 1))
|
||||
x = (((x And &HCC) >> 2) Or ((x And &H33) << 2))
|
||||
x = (((x And &HF0) >> 4) Or ((x And &HF) << 4))
|
||||
Return ((x))
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Public Sub DrawChars(ByRef byt As List(Of Byte), ByRef df As Bitmap, ByVal y As Integer, ByRef CurColor As Integer)
|
||||
|
||||
Dim curX = 10
|
||||
Dim curY = 10 + y
|
||||
'Load Font Here
|
||||
Dim font = New List(Of List(Of Byte))
|
||||
Dim fil = My.Computer.FileSystem.ReadAllBytes("D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\WatchMyFont.bin.bak").ToList
|
||||
Dim charCount As Integer = fil.Count / 32
|
||||
For x = 0 To fil.Count - 32 Step 32
|
||||
Dim curChar = New List(Of Byte)
|
||||
curChar.AddRange(fil.GetRange(x, 32))
|
||||
font.Add(curChar)
|
||||
Next
|
||||
|
||||
|
||||
For a = 0 To byt.Count - 2 Step 2
|
||||
|
||||
Dim c = byt(a) + byt(a + 1) * 256
|
||||
|
||||
If c = &H1120 Or c = &H1131 Then
|
||||
curX = curX + 12
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If c = &H122E Then
|
||||
CurColor = byt(a + 2)
|
||||
a = a + 2
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If c = &H1103 Then
|
||||
y = y + 12
|
||||
Continue For
|
||||
End If
|
||||
|
||||
'DrawChar(font(c), curX, curY, df, CurColor)
|
||||
DrawChar(font(c), curX, curY, df, 0)
|
||||
curX = curX + 12
|
||||
notDraw:
|
||||
|
||||
|
||||
Next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub DrawChar(ByRef ch As List(Of Byte), ByVal tx As Integer, ByVal ty As Integer, ByRef df As Bitmap, ByRef CurColor As Integer)
|
||||
|
||||
Dim ch2 = New List(Of Byte)
|
||||
For Each C In ch
|
||||
ch2.Add(ReverseBits(C))
|
||||
Next
|
||||
Dim curSize = Form1.PictureBox1.Size
|
||||
|
||||
Dim bits = New BitArray(ch2.ToArray)
|
||||
|
||||
For x = 0 To 15
|
||||
For y = 0 To 15
|
||||
If x + tx >= curSize.Width Or y + ty >= curSize.Height Then Continue For
|
||||
|
||||
If Not bits(x + 16 * y) Then Continue For
|
||||
DrawX2(x + tx, y + ty, df, Colors(CurColor))
|
||||
Next
|
||||
Next
|
||||
|
||||
Form1.PictureBox1.Invalidate()
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub DrawX2(ByRef x As Integer, ByRef y As Integer, ByRef df As Bitmap, ByVal col As Color)
|
||||
|
||||
|
||||
df.SetPixel(x * 2, y * 2, col)
|
||||
df.SetPixel(x * 2 + 1, y * 2, col)
|
||||
df.SetPixel(x * 2, y * 2 + 1, col)
|
||||
df.SetPixel(x * 2 + 1, y * 2 + 1, col)
|
||||
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
2212
p2isPSX_CDToolkit/Form1.Designer.vb
generated
Normal file
2212
p2isPSX_CDToolkit/Form1.Designer.vb
generated
Normal file
File diff suppressed because it is too large
Load Diff
227
p2isPSX_CDToolkit/Form1.resx
Normal file
227
p2isPSX_CDToolkit/Form1.resx
Normal file
@@ -0,0 +1,227 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="DataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="JAP.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="SizeB.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Eng.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="EndSec.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Gap.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="SaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>159, 17</value>
|
||||
</metadata>
|
||||
<metadata name="BackgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>296, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAMMOAADDDgAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQkr+UkJK/ikh
|
||||
If4pISH+KSEh/ikhIf5SQkr+UkJK/joxMf5RQUn/UUFJ/2pZYv/EvLT/UkJK/joxMf4AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJC
|
||||
Sv5SQkr+KSEh/ikhIf4pISH+KSEh/lJCSv5SQkr+UkJK/lJCSv5qWWL/alli/2pZYv/FvbX+UkJK/jox
|
||||
Mf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAUkJK/lJCSv4pISH+KSEh/ikhIf4pISH+UkJK/lJCSv5SQkr+UkJK/joxMf5qWWL/a1pj/mta
|
||||
Y/7FvbX+OjEx/joxMf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAUkJK/ikhIf4pISH+KSEh/ikhIf5SQkr+UkJK/joxMf4pISH+KSEh/ikh
|
||||
If5rWmP+a1pj/lJCSv7FvbX+OjEx/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQkr+KSEh/mtaY/5rWmP+KSEh/lJCSv5SQkr+OjEx/ikh
|
||||
If4pISH+KSEh/lJCSv5SQkr+OjEx/pyUjP46MTH+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJCSv4pISH+a1pj/lJCSv46MTH+UkJK/jox
|
||||
Mf46MTH+KSEh/ikhIf4AAAAAOjEx/joxMf46MTH+nJSM/joxMf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkJK/ikhIf46MTH+KSEh/jox
|
||||
Mf5SQkr+OjEx/joxMf4pISH+KSEh/gAAAAA6MTH+OjEx/joxMf6clIz+OjEx/gAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6MTH+KSEh/mta
|
||||
Y/4pISH+OjEx/lJCSv46MTH+OjEx/ikhIf4pISH+AAAAADoxMf46MTH+nJSM/mtaY/46MTH+AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADox
|
||||
Mf4pISH+1oRz/joxMf46MTH+a1pj/mtaY/5SQkr+KSEh/ikhIf5RQUn/OjEx/joxMf6clIz+OjEx/gAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApISH+KSEh/ikhIf4pISH+AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAOjEx/ikhIf7WhHP+a1pj/joxMf5rWmP+a1pj/mtaY/46MTH+KSEh/lFBSf9SQkr+OjEx/pyU
|
||||
jP46MTH+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjEx/joxMf4pISH+KSEh/ikhIf4pISH+KSEh/gAA
|
||||
AAAAAAAAAAAAAAAAAABSQkr+KSEh/taEc/7WhHP+OjEx/lJCSv5rWmP+a1pj/lJCSv4pISH+UUFJ/1FB
|
||||
Sf+clIz+a1pj/joxMf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzpc7+QmOE/ikhIf4pISH+KSEh/ikh
|
||||
If4pISH+KSEh/ikhIf4AAAAAAAAAAFJCSv4pISH+1oRz/taEc/46MTH+nJSM/lJCSv5rWmP+a1pj/ikh
|
||||
If5RQUn/alli/5yUjP46MTH+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHOlzv5zpc7+QmOE/ikh
|
||||
If5CY4T+KSEh/ikhIf4pISH+KSEh/ikhIf4pISH+nJSM/ikhIf7WhHP+1oRz/joxMf5rWmP+nJSM/lJC
|
||||
Sv5rWmP+OjEx/lFBSf/EvLT/a1pj/joxMf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc6XO/nOl
|
||||
zv5zpc7+QmOE/ikhIf4pISH+OjEx/joxMf4pISH+KSEh/ikhIf6bk4v/KSEh/mtaY/5SQkr+OjEx/mta
|
||||
Y/5rWmP+nJSM/mtaY/5rWmP+UkJK/sS8tP85MDD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAc6XO/nOlzv5zpc7+AAAAAAAAAABrWmP+a1pj/lJCSv46MTH+m5OL/2pZYv8pISH+UkJK/jox
|
||||
Mf46MTH+a1pj/mtaY/5rWmP+xb21/mtaY/5rWmP+OjEx/1JCSv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrWmP+a1pj/mtaY/6bk4v/alli/ykh
|
||||
If7WhHP+UkJK/nNrY/46MTH+a1pj/mtaY/7FvbX+a1pj/mtaY/5rWmP+AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrWmP+a1pj/nJq
|
||||
Y/9qWWL/KSEh/taEc/7WhHP+xb21/nNrY/46MTH+a1pj/sW9tf5rWmP+UkJK/gAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGta
|
||||
Y/5rWmP+a1pj/2taY//FvbX+OjFC/ikhIf5rWmP+xb21/pyUjP46MTH+UkJK/joxMf4AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGtaY/5SQkr/a1pj/3NrY/46MUL+OjFC/joxQv46MUL+OjFC/mtaY/46MTH+AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADoxMf5SQkr+OjEx/nOlzv5zpc7+QmOE/joxQv46MUL+OjFC/gAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjEx/lJCSv5zpc7+lN73/pTe9/5zpc7+QmOE/jox
|
||||
Qv46MUL+OjFC/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJTe9/6U3vf+lN73/jox
|
||||
Mf7W3s7+OjFC/joxQv46MUL+OjFC/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjEx/pTe
|
||||
9/5zpc7+KSEh/joxMf46MUL+OjFC/joxQv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAApISH+lN73/nOlzv6U3vf+QmOE/joxQv5KQlr+OjFC/joxQv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAASkJa/pTe9/6U3vf+c6XO/kpCWv5KQlr+SkJa/kpCWv46MUL+OjFC/gAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAABKQlr+OjFC/nOlzv5KQlr+UmOl/lJjpf5SY6X+SkJa/kpCWv46MUL+AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJjpf46MUL+SkJa/lJjpf5SY6X+UmOl/lJjpf5SY6X+SkJa/jox
|
||||
Qv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUmOl/kpCWv5KQlr+SkJa/kpCWv5SY6X+UmOl/lJj
|
||||
pf5KQlr+OjFC/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUmOl/kpCWv5KQlr+SkJa/kpC
|
||||
Wv5SY6X+SkJa/joxQv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUmOl/lJj
|
||||
pf5KQlr+SkJa/kpCWv46MUL+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA//AAH//wAA//8AAH//gAB//4AAf/+AEH//gBB//4AQf/+AAP4fgAD8B4
|
||||
AA/AGAAfwAAAH8AAAD/jAAA//4AAf//AAP//wAH//+AD///wB///8AP///wB///8A////AH///gB///4
|
||||
Af//+AH///gB///8A////gf///////////8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
2049
p2isPSX_CDToolkit/Form1.vb
Normal file
2049
p2isPSX_CDToolkit/Form1.vb
Normal file
File diff suppressed because it is too large
Load Diff
94
p2isPSX_CDToolkit/Form2.Designer.vb
generated
Normal file
94
p2isPSX_CDToolkit/Form2.Designer.vb
generated
Normal file
@@ -0,0 +1,94 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class ScriptParserWin
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.ScriptVarCalculated = New System.Windows.Forms.TextBox()
|
||||
Me.ScriptVarAddr = New System.Windows.Forms.TextBox()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.TextBox1.BackColor = System.Drawing.Color.Black
|
||||
Me.TextBox1.Font = New System.Drawing.Font("Courier New", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.TextBox1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer))
|
||||
Me.TextBox1.Location = New System.Drawing.Point(13, 12)
|
||||
Me.TextBox1.Multiline = True
|
||||
Me.TextBox1.Name = "TextBox1"
|
||||
Me.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both
|
||||
Me.TextBox1.Size = New System.Drawing.Size(1291, 1312)
|
||||
Me.TextBox1.TabIndex = 0
|
||||
Me.TextBox1.WordWrap = False
|
||||
'
|
||||
'ScriptVarCalculated
|
||||
'
|
||||
Me.ScriptVarCalculated.Location = New System.Drawing.Point(1036, 1330)
|
||||
Me.ScriptVarCalculated.Name = "ScriptVarCalculated"
|
||||
Me.ScriptVarCalculated.Size = New System.Drawing.Size(268, 20)
|
||||
Me.ScriptVarCalculated.TabIndex = 27
|
||||
'
|
||||
'ScriptVarAddr
|
||||
'
|
||||
Me.ScriptVarAddr.Location = New System.Drawing.Point(545, 1330)
|
||||
Me.ScriptVarAddr.Name = "ScriptVarAddr"
|
||||
Me.ScriptVarAddr.Size = New System.Drawing.Size(204, 20)
|
||||
Me.ScriptVarAddr.TabIndex = 26
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.ForeColor = System.Drawing.Color.Black
|
||||
Me.Button2.Location = New System.Drawing.Point(755, 1330)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(276, 22)
|
||||
Me.Button2.TabIndex = 25
|
||||
Me.Button2.Text = "Calculate Script Var Addr"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ScriptParserWin
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.BackColor = System.Drawing.Color.Gray
|
||||
Me.ClientSize = New System.Drawing.Size(1316, 1362)
|
||||
Me.Controls.Add(Me.ScriptVarCalculated)
|
||||
Me.Controls.Add(Me.ScriptVarAddr)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
Me.ForeColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "ScriptParserWin"
|
||||
Me.ShowIcon = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "ScriptParser"
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents TextBox1 As TextBox
|
||||
Friend WithEvents ScriptVarCalculated As TextBox
|
||||
Friend WithEvents ScriptVarAddr As TextBox
|
||||
Friend WithEvents Button2 As Button
|
||||
End Class
|
||||
120
p2isPSX_CDToolkit/Form2.resx
Normal file
120
p2isPSX_CDToolkit/Form2.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
23
p2isPSX_CDToolkit/Form2.vb
Normal file
23
p2isPSX_CDToolkit/Form2.vb
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
Imports System.Runtime.Remoting.Metadata.W3cXsd2001
|
||||
|
||||
Public Class ScriptParserWin
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Dim addr As Integer
|
||||
|
||||
'ScriptVarAddr.Text = ScriptVarAddr.Text.ToString("X4")
|
||||
|
||||
|
||||
Try
|
||||
Dim addrArr = SoapHexBinary.Parse(ScriptVarAddr.Text).Value
|
||||
addr = addrArr(0) * 256 + addrArr(1)
|
||||
Catch ex As Exception
|
||||
MsgBox("error") : Exit Sub
|
||||
End Try
|
||||
|
||||
Dim blockNum = addr >> 5
|
||||
Dim bits As String = (1 << (addr And &H1F)).ToString("X8")
|
||||
Dim revBits = bits.Substring(6, 2) & bits.Substring(4, 2) & bits.Substring(2, 2) & bits.Substring(0, 2)
|
||||
ScriptVarCalculated.Text = "Blk Addr: " & (&H800820E0 + blockNum * 4).ToString("X8") & " | Onbyt: " & revBits
|
||||
End Sub
|
||||
End Class
|
||||
157
p2isPSX_CDToolkit/ISOTools.vb
Normal file
157
p2isPSX_CDToolkit/ISOTools.vb
Normal file
@@ -0,0 +1,157 @@
|
||||
Imports System
|
||||
Imports System.IO
|
||||
|
||||
Public Class ISOTools
|
||||
|
||||
Public Function getCDfile(ByVal ISOname As String, ByVal StartSector As Integer, ByVal FileSize As Integer)
|
||||
|
||||
|
||||
Dim fileArr = New List(Of Byte)
|
||||
Dim fs As New FileStream(ISOname, FileMode.Open, FileAccess.Read)
|
||||
Dim br As New BinaryReader(fs)
|
||||
|
||||
|
||||
If Not Form1.Mode2352.Checked Then
|
||||
|
||||
|
||||
Dim SectorsToRead As Integer = FileSize \ 2048
|
||||
If FileSize Mod 2048 > 0 Then SectorsToRead += 1
|
||||
|
||||
Dim bytesToread = 2048
|
||||
|
||||
For a = StartSector To SectorsToRead + StartSector - 1
|
||||
|
||||
Dim bytepos = a * &H930 + 24
|
||||
br.BaseStream.Position = bytepos
|
||||
fileArr.AddRange(br.ReadBytes(2048))
|
||||
|
||||
Next
|
||||
|
||||
|
||||
|
||||
Else
|
||||
|
||||
''''''''''READ RAW FILE WITH 2352 MODE!
|
||||
|
||||
br.BaseStream.Position = StartSector * &H930
|
||||
fileArr.AddRange(br.ReadBytes(FileSize))
|
||||
|
||||
|
||||
End If
|
||||
|
||||
br.Dispose()
|
||||
fs.Dispose()
|
||||
|
||||
Return fileArr
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Public Function saveCDfile(ByVal ISOname As String, ByVal StartSector As Integer, ByVal FileSize As Integer, ByRef bytes As Byte())
|
||||
Try
|
||||
|
||||
|
||||
Dim fs As New FileStream(ISOname, FileMode.Open, FileAccess.Write)
|
||||
Dim br As New BinaryWriter(fs)
|
||||
|
||||
If Not Form1.Mode2352.Checked Then
|
||||
|
||||
|
||||
|
||||
Dim SectorsToWrite As Integer = FileSize \ 2048
|
||||
If FileSize Mod 2048 > 0 Then
|
||||
SectorsToWrite += 1
|
||||
ReDim Preserve bytes(FileSize + (2048 - (FileSize Mod 2048)))
|
||||
End If
|
||||
|
||||
Dim bytecounter = 0
|
||||
|
||||
For a = StartSector To SectorsToWrite + StartSector - 1
|
||||
|
||||
Dim bytepos = a * &H930 + 24
|
||||
|
||||
br.BaseStream.Position = bytepos
|
||||
|
||||
br.Write(bytes, bytecounter, 2048)
|
||||
bytecounter += 2048
|
||||
|
||||
Next
|
||||
|
||||
|
||||
|
||||
Else ''''''''''READ RAW FILE WITH 2352 MODE!
|
||||
|
||||
|
||||
|
||||
|
||||
br.BaseStream.Position = StartSector * &H930
|
||||
br.Write(bytes, 0, FileSize)
|
||||
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
br.Dispose()
|
||||
fs.Dispose()
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("Error! Exception: " & vbCrLf & ex.ToString, MsgBoxStyle.Critical)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Sub UpdateFileListTable(ByVal ISOname As String, ByRef fileInf As List(Of fileInfo))
|
||||
|
||||
Dim tab = New List(Of Byte)
|
||||
|
||||
For Each fil In fileInf
|
||||
tab.AddRange(BitConverter.GetBytes(fil.Sector).ToList)
|
||||
tab.AddRange(BitConverter.GetBytes(fil.Sizw).ToList)
|
||||
Next
|
||||
saveCDfile(ISOname, &H17, &H1B88, tab.ToArray)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function makeFileList(ByVal ISOname As String)
|
||||
Dim a = New List(Of fileInfo)
|
||||
|
||||
Dim FilesSectors = getCDfile(ISOname, &H17, &H1B88).ToArray
|
||||
If ISOname.Contains("KUDOS") Then FilesSectors = getCDfile(ISOname, &H31, &H1B88).ToArray
|
||||
|
||||
For x = 0 To 880
|
||||
a.Add(New fileInfo With {.FileID = x, .Sector = Form1.Read32bitNum(FilesSectors, x * 8), .Sizw = Form1.Read32bitNum(FilesSectors, x * 8 + 4)})
|
||||
Next
|
||||
|
||||
Return a
|
||||
End Function
|
||||
|
||||
|
||||
Public Sub ReallocateDown(ByVal ISOname As String, ByRef fileInf As List(Of fileInfo), ByVal StartFile As Integer, ByVal BySectors As Integer)
|
||||
|
||||
|
||||
|
||||
|
||||
'Dim lastSector = fileInf.Last.Sector + (fileInf.Last.Sizw \ 2048)
|
||||
'If fileInf.Last.Sizw Mod 2048 > 0 Then lastSector += 1
|
||||
|
||||
|
||||
'For a = lastSector To fileInf(StartFile).Sector Step -1
|
||||
|
||||
|
||||
|
||||
|
||||
'Next
|
||||
|
||||
|
||||
''Reading eachFile from end and Save it +Bysectors
|
||||
'For a = 1143 To StartFile Step -1
|
||||
' fileInf(a).Sector += BySectors
|
||||
'Next
|
||||
''UpdateFileListTable(ISOname, fileInf)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
92
p2isPSX_CDToolkit/JapCharCodeGenerator.Designer.vb
generated
Normal file
92
p2isPSX_CDToolkit/JapCharCodeGenerator.Designer.vb
generated
Normal file
@@ -0,0 +1,92 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class JapCharCodeGenerator
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.TextBox2 = New System.Windows.Forms.TextBox()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.TextBox1.Font = New System.Drawing.Font("Lucida Sans Typewriter", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.TextBox1.Location = New System.Drawing.Point(1216, 12)
|
||||
Me.TextBox1.Multiline = True
|
||||
Me.TextBox1.Name = "TextBox1"
|
||||
Me.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
||||
Me.TextBox1.Size = New System.Drawing.Size(275, 663)
|
||||
Me.TextBox1.TabIndex = 0
|
||||
'
|
||||
'TextBox2
|
||||
'
|
||||
Me.TextBox2.Font = New System.Drawing.Font("Lucida Sans Typewriter", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.TextBox2.Location = New System.Drawing.Point(12, 12)
|
||||
Me.TextBox2.Multiline = True
|
||||
Me.TextBox2.Name = "TextBox2"
|
||||
Me.TextBox2.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
||||
Me.TextBox2.Size = New System.Drawing.Size(1198, 663)
|
||||
Me.TextBox2.TabIndex = 0
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(382, 694)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(121, 23)
|
||||
Me.Button1.TabIndex = 1
|
||||
Me.Button1.Text = "Generate >>>>"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(569, 694)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(75, 23)
|
||||
Me.Button2.TabIndex = 2
|
||||
Me.Button2.Text = "Save!"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'JapCharCodeGenerator
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(1503, 729)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.TextBox2)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "JapCharCodeGenerator"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "JapCharCodeGenerator"
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents TextBox1 As TextBox
|
||||
Friend WithEvents TextBox2 As TextBox
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents Button2 As Button
|
||||
End Class
|
||||
120
p2isPSX_CDToolkit/JapCharCodeGenerator.resx
Normal file
120
p2isPSX_CDToolkit/JapCharCodeGenerator.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
54
p2isPSX_CDToolkit/JapCharCodeGenerator.vb
Normal file
54
p2isPSX_CDToolkit/JapCharCodeGenerator.vb
Normal file
@@ -0,0 +1,54 @@
|
||||
Public Class JapCharCodeGenerator
|
||||
|
||||
Public allText As String
|
||||
Public curBlock As Integer
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
allText = ""
|
||||
TextBox2.Text = "Dim chars = New List(Of String)" & vbCrLf
|
||||
'TextBox2.Text = "d.AddRange({""a"", ""b"", ""c"", ""d""})"
|
||||
|
||||
curBlock = 0
|
||||
|
||||
Dim accum = ""
|
||||
Dim t = TextBox1.Text
|
||||
Dim x = 0
|
||||
Do
|
||||
If (t(x) = vbCr And t(x + 1) = vbLf) Or x = t.Length - 1 Then
|
||||
generateline(accum)
|
||||
accum = ""
|
||||
x += 2
|
||||
Continue Do
|
||||
End If
|
||||
|
||||
accum &= t(x)
|
||||
x += 1
|
||||
|
||||
Loop While x < t.Length - 2
|
||||
|
||||
|
||||
TextBox2.Text = allText
|
||||
End Sub
|
||||
|
||||
Public Sub generateline(accum)
|
||||
|
||||
If accum = "---" Then allText &= " 'Block " & curBlock & vbCrLf : curBlock += 1 : Exit Sub
|
||||
|
||||
|
||||
allText &= "chars.AddRange({"
|
||||
For a = 0 To accum.Length - 1
|
||||
|
||||
allText &= """" & accum(a) & """"
|
||||
If a <> accum.Length - 1 Then allText &= ", "
|
||||
Next
|
||||
allText &= "}) '" & accum.Length & vbCrLf
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Dim f = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\FontCode\AtlusFontAppend.vb"
|
||||
Dim f2 = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\FontCode\codes_source.txt"
|
||||
My.Computer.FileSystem.WriteAllText(f2, TextBox1.Text, False)
|
||||
My.Computer.FileSystem.WriteAllText(f, TextBox2.Text, False)
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
230
p2isPSX_CDToolkit/JapChars.vb
Normal file
230
p2isPSX_CDToolkit/JapChars.vb
Normal file
@@ -0,0 +1,230 @@
|
||||
Partial Class Form1
|
||||
|
||||
Public Sub LoadChars()
|
||||
|
||||
chars = New List(Of Char)
|
||||
'Block 0
|
||||
chars.AddRange({"「", "」", "、", "・", "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}) '14
|
||||
chars.AddRange({"十", "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "さ", "し", "す"}) '14
|
||||
chars.AddRange({"せ", "そ", "た", "ち", " ", "!", """", "#", "$", "%", "&", "'", "(", ")"}) '14
|
||||
chars.AddRange({"*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7"}) '14
|
||||
chars.AddRange({"8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E"}) '14
|
||||
chars.AddRange({"F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S"}) '14
|
||||
chars.AddRange({"T", "U", "V", "W", "X", "Y", "Z", "[", "¥", "]", " ", "_", "'", "a"}) '14
|
||||
chars.AddRange({"b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o"}) '14
|
||||
chars.AddRange({"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}"}) '14
|
||||
chars.AddRange({"_", "。", "覧", "酒", "ケ", "ン", "回", "を", "見", "る", "~", "ん", "課", "長"}) '14
|
||||
chars.AddRange({"代", "理", "以", "上", "は", "タ", "イ", "ム", "カ", "ー", "ド", "廃", "止", "接"}) '14
|
||||
chars.AddRange({"待", "で", "飲", "翌", "日", "つ", "ら", "前", "死", "ね", "デ", "バ", "ッ", "グ"}) '14
|
||||
chars.AddRange({"テ", "ス", "ト", "に", "て", "と", "仕", "置", "れ", "げ", "主", "人", "公", "じ"}) '14
|
||||
chars.AddRange({"ゃ", "が", "ラ", "メ", "食", "過", "ぎ", "腹", "わ", "よ", "ゲ", "リ", "ピ", "マ"}) '14
|
||||
chars.AddRange({"ク", "口", "な", "の", "早", "朝", "フ", "レ", "退", "社", "蛇", "苺", "紅", "茶"}) '14
|
||||
chars.AddRange({"キ", "サ", "本", "当", "嬉", "·", "モ", "ナ", "共", "生", "だ", "ア", "ど", "探"}) '14
|
||||
chars.AddRange({"み", "エ", "ル", "存", "道", "出", "来", "ば", "手", "伝", "無", "っ", "水", "都"}) '14
|
||||
chars.AddRange({"ろ", "自", "分", "何", "り", "も", "素", "晴", "俺", "遠", "恵", "ぜ", "私", "ま"}) '14
|
||||
chars.AddRange({"時", "老", "緒", "へ", "行", "兄", "彼", "女", "守", "ょ", "術", "世", "界", "身"}) '14
|
||||
chars.AddRange({"他", "方", "法", "異", "端", "者", "や", "血", "争", "ひ", "大", "丈", "夫", "戦"}) '14
|
||||
chars.AddRange({"闘", "開", "始", "動", "設", "定", "コ", "ズ", "ィ", "却", "工", "事", "中", "攻"}) '14
|
||||
'Block 1
|
||||
chars.AddRange({"撃", "魔", "ペ", "ソ", "防", "御", "舞", "耶", "淳", "ミ", "シ", "ェ", "ギ", "ユ"}) '14
|
||||
chars.AddRange({"ブ", "オ", "ダ", "ハ", "軣", "編", "僕", "買", "今", "半", "下", "め", "言", "損"}) '14
|
||||
chars.AddRange({"ず", "利", "用", "ぁ", "警", "団", "少", "铪", "料", "木", "夢", "ぇ", "取", "未"}) '14
|
||||
chars.AddRange({"精", "神", "持", "安", "心", "坂", "君", "文", "句", "間", "慟", "ぐ", "ふ", "怒"}) '14
|
||||
chars.AddRange({"触", "正", "直", "真", "傷", "藥", "次", "元", "消", "ゴ", "ガ", "仙", "桃", "宝"}) '14
|
||||
chars.AddRange({"玉", "チ", "ュ", "ウ", "卵", "ヒ", "ヤ", "地", "返", "反", "魂", "香", "崖", "縁"}) '14
|
||||
chars.AddRange({"粉", "末", "陣", "背", "解", "毒", "剤", "镇", "静", "パ", "幣", "升", "麻", "ジ"}) '14
|
||||
chars.AddRange({"セ", "封", "節", "逃", "銀", "二", "ャ", "懸", "肖", "鐘", "効", "果", "味", "量"}) '14
|
||||
chars.AddRange({"復", "使", "可", "能", "全", "最", "值", "亡", "猛", "狂", "暴", "幻", "影", "睡"}) '14
|
||||
chars.AddRange({"眠", "憑", "依", "的", "有", "読", "字", "ご", "移", "物", "射", "吸", "収", "避"}) '14
|
||||
chars.AddRange({"聖", "暗", "黒", "化", "応", "蒜", "音", "楽", "箱", "敵", "現", "率", "抑", "個"}) '14
|
||||
chars.AddRange({"X", "数", "哉", "漢", "枣", "叱", "举", "芝", "逹", "悪", "名", "表", "示", "説"}) '14
|
||||
chars.AddRange({"得", "語", "目", "殺", "ビ", "相", "談", "親", "子", "踊", "恋", "愛", "悩", "酔"}) '14
|
||||
chars.AddRange({"場", "切", "歌", "諭", "撮", "甘", "星", "占", "花", "ボ", "燃", "男", "ツ", "プ"}) '14
|
||||
chars.AddRange({"詰", "合", "視", "線", "ザ", "笑", "良", "居", "激", "写", "様", "議", "惑", "調"}) '14
|
||||
chars.AddRange({"べ", "誕", "光", "失", "畋", "性", "へ", "対", "象", "選", "択", "掛", "契", "約"}) '14
|
||||
chars.AddRange({"破", "栾", "戻", "ネ", "機", "诬", "熱", "送", "気", "急", "异", "ァ", "顥", "姉"}) '14
|
||||
chars.AddRange({"聞", "配", "ぞ", "絆", "強", "父", "母", "孝", "凄", "ワ", "ゅ", "ヨ", "家", "族"}) '14
|
||||
chars.AddRange({"林", "寺", "污", "好", "振", "向", "帝", "初", "覚", "会", "忘", "ぶ", "胸", "苦"}) '14
|
||||
chars.AddRange({"お", "う", "美", "罪", "オ", "許", "ウ", "ノ", "故", "ベ", "腰", "指", "瞳", "抱"}) '14
|
||||
chars.AddRange({"欲", "奴", "体", "驅", "訳", "話", "風", "情", "粋", "昔", "ヴ", "感", "贈", "受"}) '14
|
||||
'Block 2
|
||||
chars.AddRange({"曲", "ゆ", "価", "意", "志", "決", "違", "考", "位", "寝", "多", "思", "黙", "入"}) '14
|
||||
chars.AddRange({"ぱ", "歯", "落", "番", "不", "器", "顔", "須", "牡", "羊", "座", "義", "勇", "猪"}) '14
|
||||
chars.AddRange({"突", "進", "型", "牛", "堅", "実", "派", "忍", "耐", "双", "頭", "転", "速", "交"}) '14
|
||||
chars.AddRange({"奇", "旺", "盛", "面", "飽", "ぼ", "天", "屋", "費", "む", "獅", "流", "嗜", "労"}) '14
|
||||
chars.AddRange({"厭", "寂", "乙", "繊", "細", "完", "璧", "潔", "癖", "症", "批", "判", "厳", "秤"}) '14
|
||||
chars.AddRange({"庸", "柔", "断", "蠍", "秘", "密", "鋭", "洞", "察", "力", "倍", "慎", "重", "屈"}) '14
|
||||
chars.AddRange({"絶", "成", "功", "山", "第", "標", "努", "積", "瓶", "論", "科", "学", "客", "観"}) '14
|
||||
chars.AddRange({"独", "比", "類", "博", "左", "右", "同", "想", "必", "叶", "信", "ぬ", "赤", "似"}) '14
|
||||
chars.AddRange({"髙", "ポ", "込", "付", "恐", "確", "及", "恥", "度", "雑", "詰", "特", "集", "足"}) '14
|
||||
chars.AddRange({"記", "校", "答", "色", "總", "臣", "賣", "問", "周", "饒", "舌", "所", "知", "準"}) '14
|
||||
chars.AddRange({"備", "倒", "喋", "期", "枚", "甕", "永", "残", "ほ", "疇", "誰", "離", "加", "揮"}) '14
|
||||
chars.AddRange({"声", "聴", "皆", "歳", "若", "粧", "教", "室", "講", "師", "瞭", "綺", "露", "負"}) '14
|
||||
chars.AddRange({"週", "春", "超", "球", "口", "先", "士", "栄", "吉", "審", "頃", "邪", "仮", "党"}) '14
|
||||
chars.AddRange({"供", "包", "小", "悲", "ゼ", "訴", "任", "垚", "白", "々", "誤", "貴", "愉", "快"}) '14
|
||||
chars.AddRange({"変", "礼", "差", "関", "宜", "帚", "後", "悔", "惮", "千", "万", "円", "我", "慢"}) '14
|
||||
chars.AddRange({"癒", "葉", "巨", "蟹", "宮", "徴", "保", "護", "去", "順", "産", "排", "臆", "病"}) '14
|
||||
chars.AddRange({"題", "明", "活", "健", "康", "雰", "囲", "然", "噂", "武", "具", "飛", "曰", "野"}) '14
|
||||
chars.AddRange({"裕", "郎", "照", "電", "輝", "南", "澄", "騙", "限", "O", "池", "髑", "髏", "晶"}) '14
|
||||
chars.AddRange({"火", "属", "躊", "路", "尊", "散", "憐", "追", "憧", "書", "歓", "び", "喜", "厚"}) '14
|
||||
chars.AddRange({"謎", "注", "炎", "予", "告", "通", "焦", "塩", "期", "案", "運", "幅", "富", "潮"}) '14
|
||||
chars.AddRange({"外", "腕", "計", "煙", "草", "壞", "雇", "缶", "札", "駄", "桐", "ヨ", "件", "首"}) '14
|
||||
'Block 3
|
||||
chars.AddRange({"金", "曜", "部", "普", "太", "連", "支", "扎", "掃", "除", "ぼ", "満", "ヂ", "寸"}) '14
|
||||
chars.AddRange({"疑", "状", "渡", "姓", "書", "企", "い", "架", "宿", "命", "艦", "囚", "鳥", "嵐"}) '14
|
||||
chars.AddRange({"荒", "波", "浮", "拐", "ぎ", "招", "級", "朋", "続", "呼", "塗", "店", "並", "劣"}) '14
|
||||
chars.AddRange({"孤", "鎖", "哀", "堕", "杯", "息", "薏", "簡", "单", "仲", "脅", "迫", "弜", "難"}) '14
|
||||
chars.AddRange({"章", "呪", "材", "算", "由", "づ", "立", "幕", "助", "泣", "溶", "偶", "戒", "緊"}) '14
|
||||
chars.AddRange({"般", "禁", "宙", "監", "督", "ぴ", "群", "埋", "識", "放", "貌", "困", "内", "頼"}) '14
|
||||
chars.AddRange({"扱", "念", "新", "辱", "組", "罠", "佐", "木", "申", "渉", "権", "勝", "増", "迢"}) '14
|
||||
chars.AddRange({"鷙", "作", "壁", "徒", "垚", "憧", "蓮", "華", "台", "平", "区", "崎", "港", "蝸"}) '14
|
||||
chars.AddRange({"带", "園", "祭", "狙", "年", "休", "乓", "脱", "起", "冝", "補", "欠", "妹", "珠"}) '14
|
||||
chars.AddRange({"阯", "市", "打", "経", "抜", "納", "練", "習", "改", "造", "務", "魬", "淯", "怪"}) '14
|
||||
chars.AddRange({"路", "奪", "資", "格", "磁", "常", "月", "乗", "冴", "鳴", "羅", "門", "石", "近"}) '14
|
||||
chars.AddRange({"響", "勒", "妙", "著", "像", "婔", "発", "別", "毛", "災", "谷", "議", "験", "階"}) '14
|
||||
chars.AddRange({"職", "氿", "編", "赴", "譲", "横", "割", "壳", "卒", "業", "式", "降", "態", "険"}) '14
|
||||
chars.AddRange({"痴", "黛", "臨", "紀", "救", "忠", "寡", "訣", "己", "紹", "介", "覆", "辺", "広"}) '14
|
||||
chars.AddRange({"係", "危", "引", "街", "涙", "布", "密", "例", "証", "役", "ペ", "遊", "町", "勘"}) '14
|
||||
chars.AddRange({"原", "因", "究", "劇", "留", "驱", "深", "疲", "銃", "痛", "狭", "携", "儀", "臭"}) '14
|
||||
chars.AddRange({"固", "品", "ゾ", "要", "詳", "則", "村", "試", "罰", "步", "洋", "汝", "述", "掟"}) '14
|
||||
chars.AddRange({"形", "源", "貰", "終", "了", "劫", "冗", "馬", "鹿", "謇", "望", "与", "車", "輪"}) '14
|
||||
chars.AddRange({"導", "謝", "怨", "肉", "殻", "朽", "虫", "震", "哭", "寛", "容", "霜", "讐", "ヌ"}) '14
|
||||
chars.AddRange({"兵", "錵", "英", "称", "嘲", " ", "霊", "呆", "戚", "杏", "奈", "藤", "槍", "騎"}) '14
|
||||
chars.AddRange({"微", "攝", "痩", "制", "服", "盗", "住", "東", "亜", " ", "倫", "敦", "柊", "季"}) '14
|
||||
'Block 4
|
||||
chars.AddRange({"絵", "条", "装", "曝", "弾", "種", "駐", "段", "汎", "押", "土", "庭", "衝", "扉"}) '14
|
||||
chars.AddRange({"画", "処", "駅", "角", "空", "壕", "育", "館", "紫", "徐", "登", "刑", "陸", "点"}) '14
|
||||
chars.AddRange({"減", "洋", "堂", "袖", "控", "報", "吹", "船", "伴", "各", "崩", ">", "揺", "搭"}) '14
|
||||
chars.AddRange({"海", "岸", "砂", "浜", "基", "鏡", "泉", "砲", "雪", "岩", "橋", "環", "瓦", "礫"}) '14
|
||||
chars.AddRange({"殿", "炸", "裂", "川", "停", "泊", "走", "航", "滝", "壷", "床", "冷", "城", "跡"}) '14
|
||||
chars.AddRange({"商", "湯", "葛", "偵", "寿", "司", "参", "牧", "霧", "宙", "邸", "玄", "版", "局"}) '14
|
||||
chars.AddRange({"署", "庫", "閲", "箇", "従", "某", "鍵", "穂", "推", "緑", "管", "提", "嬢", "号"}) '14
|
||||
chars.AddRange({"拾", "挺", "膳", "摘", "柱", "躍", "丸", "距", "曹", "祖", "研", "漕", "在", "更"}) '14
|
||||
chars.AddRange({"仁", "浦", "賀", "汗", "認", "否", "拒", "刻", "逆", "為", "児", "獄", "将", "雷"}) '14
|
||||
chars.AddRange({"鉄", "津", "竜", "裁", "隕", "淀", "闇", "審", "乱", "投", "雄", "叫", "厔", "楼"}) '14
|
||||
chars.AddRange({"召", "喚", "祈", "扮", "竹", "梅", "雲", "隅", "幸", "妖", "烈", "咲", "百", "繚"}) '14
|
||||
chars.AddRange({"枢", "斬", "氷", "結", "疾", "稲", "妻", "孔", "針", "痺", "滴", "掻", "閃", "伽"}) '14
|
||||
chars.AddRange({"瑠", "圧", "瀑", "布", "魅", "蒸", "焔", "渦", "噴", "洪", "穴", "獣", "福", "剣"}) '14
|
||||
chars.AddRange({"王", "散", "整", "頓", "友", "碁", "嫁", "途", "唄", "被", "害", "卑", "嘘", "含"}) '14
|
||||
chars.AddRange({"辞", "粗", "匹", "狼", "珍", "迷", "姫", "詐", "欺", "逞", "随", "槙", "旅", "喫"}) '14
|
||||
chars.AddRange({"骸", "臓", "餓", "程", "揚", "詮", "眼", "看", "婦", "丁", "束", "民", "毎", "沢"}) '14
|
||||
chars.AddRange({"厄", "漕", "越", "減", "久", "捨", "墜", "壇", "操", "縦", "襲", "徹", "底", "勢"}) '14
|
||||
chars.AddRange({"恵", "井", "等", "挑", "軍", "鞭", "専", "印", "唱", "誠", "紳", "国", "雅", "肝"}) '14
|
||||
chars.AddRange({"稀", "極", "描", "踪", "扮", "如", "讃", "誇", "芸", "才", "届", "忽", "織", "根"}) '14
|
||||
chars.AddRange({"況", "犯", "軽", "尾", "鰭", "捏", "猥", "黒", "喧", "煤", "偽", "暮", "瞞", "替"}) '14
|
||||
chars.AddRange({"凍", "鬼", "忙", "混", "継", "巷", "拝", "拙", "擦", "勿", "幹", "隆", "皮", "ケ"}) '14
|
||||
'Block 5
|
||||
chars.AddRange({"酷", "省", "頓", "令", "様", "荒", "滝", "営", "悌", "額", "競", "是", "非", "短"}) '14
|
||||
chars.AddRange({"慌", "弥", "無", "託", "宝", "就", "謬", "到", "臓", "貫", "規", "賞", "迎", "範"}) '14
|
||||
chars.AddRange({"桁", "希", "悠", "儘", "訣", "昨", "幾", "歪", "再", "姓", "奥", "洗", "鼻", "載"}) '14
|
||||
chars.AddRange({"既", "繰", "暖", "昧", "修", "遅", "結", "洛", "醜", "紙", "候", "辛", "策", "尽"}) '14
|
||||
chars.AddRange({"耳", "挟", "刊", "委", "銀", "氣", "往", "應", "碑", "芝", "乏", "授", "医", "糖"}) '14
|
||||
chars.AddRange({"捕", "杉", "巧", "純", "睨", "思", "励", "書", "和", "茹", "派", "要", "戸", "汲"}) '14
|
||||
chars.AddRange({"慰", "肌", "井", "酒", "続", "領", "査", "掌", "革", "輌", "図", "暇", "坊", "猫"}) '14
|
||||
chars.AddRange({"沙", "法", "愛", "旗", "祖", "遺", "垂", "漢", "換", "餐", "防", "阻", "節", "胆"}) '14
|
||||
chars.AddRange({"倍", "製", "儲", "矛", "盾", "答", "繁", "姫", "象", "田", "舎", "古", "索", "麺"}) '14
|
||||
chars.AddRange({"餌", "常", "皿", "胃", "頑", "刀", "△", "折", "席", "捜", "測", "造", "齢", "俊"}) '14
|
||||
chars.AddRange({"匠", "犠", "性", "些", "悦", "凌", "惜", "片", "預", "焼", "析", "堪", "映", "棟"}) '14
|
||||
chars.AddRange({"渋", "油", "哮", "嚼", "髪", "伸", "揃", "秀", "彦", "凡", "趣", "勾", "建", "夜"}) '14
|
||||
chars.AddRange({"境", "鮮", "虐", "凶", "虚", "【", "】", "献", "患", "植", "君", "蜜", "維", "詳"}) '14
|
||||
chars.AddRange({"勉", "評", "清", "楚", "仔", "騎", "関", "両", "間", "刺", "❤", "哎", "貫", "墅"}) '14
|
||||
chars.AddRange({"ヅ", "籃", "喂", "嗎", "丹", "購", "纂", "低", "列", "討", "抵", "拠", "赫", "担"}) '14
|
||||
chars.AddRange({"肩", "凝", "揉", "喰", "療", "縮", "脚", "拠", "体", "遂", "覇", "闇", "脳", "洗"}) '14
|
||||
chars.AddRange({"壮", "冒", "側", "仏", "陀", "娘", "陸", "只", "易", "偲", "懲", "蹄", "荷", "検"}) '14
|
||||
chars.AddRange({"愚", "相", "概", "弁", "西", "剥", "戸", "吊", "漫", "閉", "仰", "湧", "腔", "康"}) '14
|
||||
chars.AddRange({"紡", "崎", "塞", "求", "雛", "獲", "伯", "爵", "桁", "総", "泌", "菌", "惨", "菊"}) '14
|
||||
chars.AddRange({"瘾", "冇", "哪", "間", "貯", "腫", "袋", "至", "何", "魚", "骨", "喉", "煮", "羽"}) '14
|
||||
chars.AddRange({"嘆", "昼", "抑", "旨", "靴", "蔦", "旦", "那", "釈", "迦", "適", "漁", "潤", "賑"}) '14
|
||||
'Block 6
|
||||
chars.AddRange({"催", "符", "鹸", "和", "濃", "捌", "綾", "委", "融", "繁", "晒", "握", "蘇", "尚"}) '14
|
||||
chars.AddRange({"矢", "播", "Ⓞ", "完", "捨", "淑", "稽", "裁", "暑", "蔡", "盆", "栽", "軸", "築"}) '14
|
||||
chars.AddRange({"衰", "煩", "締", "喜", "恩", "技", "泥", "貸", "吐", "冠", "陸", "狗", "敷", "倉"}) '14
|
||||
chars.AddRange({"協", "♪", "濁", "濫", "堤", "殊", "咆", "哮", "●", "▲", "灸", "据", "利", "嫉"}) '14
|
||||
chars.AddRange({"掴", "曇", "克", "昂", "睡", "悟", "竜", "伏", "請", "磨", "豆", "免", "詩", "肥"}) '14
|
||||
chars.AddRange({"盤", "阡", "釘", "婆", "翻", "叩", "慭", "想", "域", "播", "傾", "嚟", "嘞", "痣"}) '14
|
||||
chars.AddRange({"唯", "恨", "砕", "板", "星", "柄", "諸", "鉢", "詞", "歴", "史", "禍", "拘", "輸"}) '14
|
||||
chars.AddRange({"辿", "官", "噴", "冬", "輮", "稿", "採", "瞳", "鈍", "河", "童", "溺", "逮", "核"}) '14
|
||||
chars.AddRange({" ", " ", " ", " ", "窓", "覗", "軒", "項", "胞", "粱", "膨", "漂", "通", "僧"}) '14
|
||||
chars.AddRange({"致", "懇", "秒", "北", "没", "援", "陳", "宛", "濯", "漢", "拜", "慈", "紐", "宗"}) '14
|
||||
chars.AddRange({" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}) '14
|
||||
chars.AddRange({"狩", "狐", "詠", "犬", "澹", "妾", "俗", "尋", "阿", "弥", "扇", "芽", "疎", "滑"}) '14
|
||||
chars.AddRange({"穏", "溥", "政", "程", "泰", "旧", "尻", "拭", "律", "爽", "沸", "呟", "這", "沌"}) '14
|
||||
chars.AddRange({"弄", "苗", "弟", "伊", "鍛", "陽", "夏", "幼", "胡", "蝶", "炉", "瑠", "陶", "嚇"}) '14
|
||||
chars.AddRange({"江", "殴", "側", "溶", "院", "委", "惚", "里", "跳", "刃", "浩", "樹", "奮", "隙"}) '14
|
||||
chars.AddRange({"充", "羨", "黄", "睨", "糞", "剩", "濆", "謀", "執", "穫", "州", "碁", "爺", "隣"}) '14
|
||||
chars.AddRange({"鎌", "兜", "灼", "系", "瀕", "瀕", "即", "牙", "爪", "晩", "域", "楼", "絢", "爛"}) '14
|
||||
chars.AddRange({"釜", "翼", "創", "朱", "雀", "龍", "虎", "干", "挨", "拶", "誅", "淵", "壱", "恰"}) '14
|
||||
chars.AddRange({"幅", "駣", "衣", "弐", "畑", "賛", "甲", "斐", "鵜", "掘", "☆", "碑", "駒", "貝"}) '14
|
||||
chars.AddRange({"櫂", "祝", "庶", "脇", "蛍", "前", "鶴", "浄", "鋼", "侯", "揶", "撥", "楯", "斉"}) '14
|
||||
chars.AddRange({"基", "繩", "耗", "鞄", "償", "敢", "娯", "略", "濡", "妨", "悉", "峠", "暫", "穰"}) '14
|
||||
'Block 7
|
||||
chars.AddRange({"質", "彫", "醒", "温", "戯", "董", "巡", "潤", "稚", "蓋", "貼", "唱", "粘", "丘"}) '14
|
||||
chars.AddRange({"枝", "履", "旋", "錯", "雨", "粒", "塵", "翔", "喆", "兆", "膝", "盲", "軌", "逸"}) '14
|
||||
chars.AddRange({"策", "均", "衡", "揮", "冥", "府", "染", "蛰", "岡", "齊", "筆", "浅", "妥", "拉"}) '14
|
||||
chars.AddRange({"序", "攫", "炊", "滞", "棚", "路", "財", "廊", "展", "輔", "隷", "妄", "慨", "喩"}) '14
|
||||
chars.AddRange({"露", "宇", "宙", "副", "島", "宵", "钔", "媽", "掲", "瓢", "碧", "抹", "煌", "麓"}) '14
|
||||
chars.AddRange({"褪", "倉", "昏", "蒼", "穹", "相", "罵", "貌", "悶", "礎", "唐", "傑", "嚙", "囮"}) '14
|
||||
chars.AddRange({"臺", "透", "沼", "衤", "塵", "杖", "帝", "菩", "后", "鑰", "欧", "誓", "孫", "股"}) '14
|
||||
chars.AddRange({"兼", "侯", "祥", "秩", "問", "憲", "徳", "摂", "蔗", "殖", "忿", "竺", "治", "逐"}) '14
|
||||
chars.AddRange({"痒", "還", "『", "』", "厘", "涯", "棘", "類", "餅", "咥", "舵", "乃", "挿", "唇"}) '14
|
||||
chars.AddRange({"鞭", "銥", "堰", "梃", "摺", "庇", "暁", "遮", "塊", "倉", "慄", "發", "锋", "灯"}) '14
|
||||
chars.AddRange({"持", "汀", "措", "葬", "票", "戴", "遥", "ヵ", "迣", "掌", "宴", "帳", "燈", "享"}) '14
|
||||
chars.AddRange({"荻", "嶋", "柴", "俊", "辰", "弄", "噂", "也", "刷", "輝", "欄", "鉾", "涌", "岬"}) '14
|
||||
chars.AddRange({"矯", "承", "焚", "舟", "削", "玩", "尖", "把", "畝", "晶", "屓", "躯", "菪", "溯"}) '14
|
||||
chars.AddRange({"漏", "媒", "夕", "闊", "哲", "捲", "梁", "佇", "撼", "苛", "忌", "ヲ", "蝿", "詫"}) '14
|
||||
chars.AddRange({"悴", "怠", "枷", "妊", "蹴", "猿", "又", "v", "瀧", "机", " ", "蓋", "添", "乳"}) '14
|
||||
chars.AddRange({"拡", "臼", "勾", "褐", "剛", "紺", "淡", "迅", "鞘", "鳥", "狗", "粕", "濤", "涛"}) '14
|
||||
chars.AddRange({"鉤", "雁", "鍋", "鉱", "卦", "鶏", "圏", "乾", "坤", "亀", "咥", "髭", "柳", "智"}) '14
|
||||
chars.AddRange({"嶺", "絹", "錬", "屑", "謙", "弘", "糸", "棲", "慶", "漆", "熟", "衆", "ぢ", "訓"}) '14
|
||||
chars.AddRange({"肯", "俯", "埒", "但", "顕", "冊", "胎", "摩", "挫", "県", "沿", "泡", "妃", "戮"}) '14
|
||||
chars.AddRange({"刎", "无", "虹", "儂", "闢", "卵", "朕", "梵", "馴", "擁", "洲", "叢", "薙", "舐"}) '14
|
||||
chars.AddRange({"鼹", "蓬", "帥", "跡", "兼", "弑", "趨", "伶", "刹", "灰", "毘", "菜", "貧", "咎"}) '14
|
||||
'Block 8
|
||||
chars.AddRange({"廻", "碑", "竟", "潟", "憤", "帆", "酌", "衛", "綣", "簾", "惹", "朧", "淫", "曼"}) '14
|
||||
chars.AddRange({"森", "艱", "鬣", "屠", "働", "飢", "貞", "虚", "蒔", "叡", "卓", "征", "迂", "謳"}) '14
|
||||
chars.AddRange({"渾", "尺", "巾", "需", "芳", "桂", "顧", "吃", "猶", "傀", "儡", "譜", "拍", "隔"}) '14
|
||||
chars.AddRange({"浴", "云", "啓", "麦", "瀬", "咀", "螺", "遇", "喝", "伍", "膳", "禅", "惰", "殉"}) '14
|
||||
chars.AddRange({"蔑", "循", "約", "芹", "槌", "菩", "♂", "♀", "醬", "噌", "菜", "蘭", "米", "虚"}) '14
|
||||
chars.AddRange({"代", "籍", "培", "縋", "漬", "淆", "淵", "訂", " ", " ", " ", " ", "ヶ", "懺"}) '14
|
||||
chars.AddRange({"弓", "炭", "蝕", "窟", "披", "癇", "蛮", "彷", "徨", "鋳", "藉", "薰", "壞", "岐"}) '14
|
||||
chars.AddRange({"脆", "些", "脂", "肪", "辟", "窮", "抽", "◯", "獎", "遼", "过", "褄", "玲", "玲"}) '14
|
||||
chars.AddRange({"央", "揣", "餌", "巣", "朗", "隅", "併", "暗", "跨", "餌", "庁", "腸", "↺", "↻"}) '14
|
||||
chars.AddRange({" ", "穢", "畏", "眭", "奉", "聡", "益", "遜", "媚", "乞", "浸", "鞋", "涼", "坦"}) '14
|
||||
chars.AddRange({"舅", "撲", "沁", "哦", "緑", "茂", "惧", "囗", "煉", "崇", "促", "弐", "串", "枯"}) '14
|
||||
chars.AddRange({"騎", "舗", "耕", "陥", "呂", "施", "蔓", "延", "懊", "圭", "裸", "葵", "枕", "誹"}) '14
|
||||
chars.AddRange({"搬", "疼", "霜", "貸", "晹", "弊", "蔽", "沫", "班", "籠", "其", "棋", "湖", "綿"}) '14
|
||||
chars.AddRange({"豚", "熊", "韋", "臂", "農", "鍔", "嘴", "蔗", "猟", "棍", "侵", "飼", "轄", "宰"}) '14
|
||||
chars.AddRange({"屍", "蛙", "憩", "捷", "靡", "艷", "鳶", "伎", "茹", "馴", "働", "-", "盟", "採"}) '14
|
||||
chars.AddRange({"偲", "釣", "漸", "睦", "毅", "奢", "彗", "昆", "脈", "侍", "頻", "禄", "鬆", "墊"}) '14
|
||||
chars.AddRange({"艦", "湾", "适", "愕", "錠", "午", "泳", "顎", "媧", "←", "ゐ", "ゑ", "菓", "興"}) '14
|
||||
chars.AddRange({"廉", "緋", "侠", "謂", "↑", "↓", "吾", "捉", "ヰ", "ヱ", "D", "椎", "撤", "騰"}) '14
|
||||
chars.AddRange({"践", "該", "荘", "搾", "寮", "一", "眉", "栓", "叔", "秋", "峰", "義", "皺", "嬲"}) '14
|
||||
chars.AddRange({"畴", "閑", "発", "剌", "鳩", "傘", "洩", "接", "之", "撓", "緑", "閥", "曹", "斎"}) '14
|
||||
chars.AddRange({"勲", "匿", "弛", "叙", "諜", "硝", "什", "繕", "唸", "緩", "邁", "棊", "撰", "艦"}) '14
|
||||
'Block 9
|
||||
chars.AddRange({"隻", "療", "墟", "梧", "冤", "呉", "株", "哨", "嵯", "峨", "碱", "賽", "肖", "酬"}) '14
|
||||
chars.AddRange({"棟", "堀", "毟", "肃", "塔", "謡", "句", "暦", "毀", "錮", "凸", "凹", "瓜", "戚"}) '14
|
||||
chars.AddRange({"斡", "筒", "嵌", "甚", "慒", "管", "疫", "俳", "逝", "沖", "亭", "塀", "掠", "吧"}) '14
|
||||
chars.AddRange({"气", "么", "曾", "脊", "斜", "啊", "氓", "※", "猞", "猪", "菅", "莫", "慇", "懃"}) '14
|
||||
chars.AddRange({"窃", "癪", "斥", "呢", "啦", "①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "痕"}) '14
|
||||
chars.AddRange({"桑", "愴", "祠", "擲", "筮", "榖", "酵", "ン", "縞", "吼", "飴", "棺", "此", "貢"}) '14
|
||||
chars.AddRange({"頷", "寵", "駕", "恵", "貪", "褻", "芯", "鞆", "喘", "肘", "氾", "濫", "屁", "曝"}) '14
|
||||
chars.AddRange({"疚", "娑", "膏", "唾", "薀", "滴", "姑", "酉", "齧", "誑", "暢", "諾", "呈", "軟"}) '14
|
||||
chars.AddRange({"蟠", "且", "鋼", "狙", "京", "邦", "蟻", "糖", "尿", "糧", "趾", "卜", "篤", "吏"}) '14
|
||||
chars.AddRange({"巳", "墊", "括", "於", "楊", "綻", "世", "侶", "鶯", "嬉", "訟", "天", "更", "塞"}) '14
|
||||
chars.AddRange({"兌", "邂", "夬", "綬", "訝", "琥", "珀", "孕", "吠", "菱", "腿", "寞", "惟", "策"}) '14
|
||||
chars.AddRange({"篭", "燻", "券", "楠", "恒", "弔", "臢", "蠢", "駿", "阪", "倦", "壺", "斗", "攪"}) '14
|
||||
chars.AddRange({"拌", "旱", "魅", "蒙", "蝙", "蝠", "淙", "套", "蟲", "牢", "脹", "匍", "匋", "閇"}) '14
|
||||
chars.AddRange({"煤", "剖", "煤", "森", "径", "牌", "郣", "襟", "溪", "畦", "璃", "執", "雹", "徘"}) '14
|
||||
chars.AddRange({"徊", "★", "瞑", "窺", "擬", "薩", "乱", "畳", "涅", "槃", "曙", "胤", "裔", "咋"}) '14
|
||||
chars.AddRange({"峻", "橧", "麝", "拘", "櫞", "膜", "郵", "匋", "芙", "蓉", "祀", "礁", "響", "累"}) '14
|
||||
chars.AddRange({"糾", "呵", "祷", "竿", "諍", "胴", "巴", "磔", "唸", "嘗", "腱", "峰", "萎", "吉"}) '14
|
||||
chars.AddRange({"糾", "呵", "祷", "竿", "諍", "胴", "巴", "磔", "唸", "嘗", "腱", "峰", "萎", "嗚"}) '14
|
||||
chars.AddRange({"\"}) '1
|
||||
chars.AddRange({"\"}) '1
|
||||
chars.AddRange({"\"}) '1
|
||||
chars.AddRange({"\"}) '1
|
||||
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
38
p2isPSX_CDToolkit/My Project/Application.Designer.vb
generated
Normal file
38
p2isPSX_CDToolkit/My Project/Application.Designer.vb
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' Этот код создан программой.
|
||||
' Исполняемая версия:4.0.30319.42000
|
||||
'
|
||||
' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
' повторной генерации кода.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
|
||||
Namespace My
|
||||
|
||||
'ПРИМЕЧАНИЕ. Этот файл создан автоматически; не изменяйте его самостоятельно. Для внесения изменений
|
||||
' или, если в ходе сборки обнаружены ошибки в этом файле, перейдите в конструктор проектов
|
||||
' (перейдите к свойствам проекта или дважды щелкните узел "Мой проект" в
|
||||
' обозревателе решений), и внесите изменения на вкладке "Приложение".
|
||||
'
|
||||
Partial Friend Class MyApplication
|
||||
|
||||
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
|
||||
Public Sub New()
|
||||
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
|
||||
Me.IsSingleInstance = false
|
||||
Me.EnableVisualStyles = true
|
||||
Me.SaveMySettingsOnExit = true
|
||||
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
|
||||
End Sub
|
||||
|
||||
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
|
||||
Protected Overrides Sub OnCreateMainForm()
|
||||
Me.MainForm = Global.p2isPSX_CDView.Form1
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
11
p2isPSX_CDToolkit/My Project/Application.myapp
Normal file
11
p2isPSX_CDToolkit/My Project/Application.myapp
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MySubMain>true</MySubMain>
|
||||
<MainForm>Form1</MainForm>
|
||||
<SingleInstance>false</SingleInstance>
|
||||
<ShutdownMode>0</ShutdownMode>
|
||||
<EnableVisualStyles>true</EnableVisualStyles>
|
||||
<AuthenticationMode>0</AuthenticationMode>
|
||||
<ApplicationType>0</ApplicationType>
|
||||
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||
</MyApplicationData>
|
||||
35
p2isPSX_CDToolkit/My Project/AssemblyInfo.vb
Normal file
35
p2isPSX_CDToolkit/My Project/AssemblyInfo.vb
Normal file
@@ -0,0 +1,35 @@
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
' Общие сведения об этой сборке предоставляются следующим набором
|
||||
' атрибутов. Отредактируйте значения этих атрибутов, чтобы изменить
|
||||
' общие сведения об этой сборке.
|
||||
|
||||
' Проверьте значения атрибутов сборки
|
||||
|
||||
<Assembly: AssemblyTitle("p2isPSX_CDView")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Microsoft")>
|
||||
<Assembly: AssemblyProduct("p2isPSX_CDView")>
|
||||
<Assembly: AssemblyCopyright("Copyright © Microsoft 2021")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
'Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
|
||||
<Assembly: Guid("2f7cd285-77e2-41d0-91e7-6c7ad01b5b12")>
|
||||
|
||||
' Сведения о версии сборки состоят из следующих четырех значений:
|
||||
'
|
||||
' Основной номер версии
|
||||
' Дополнительный номер версии
|
||||
' Номер сборки
|
||||
' Редакция
|
||||
'
|
||||
' Можно задать все значения или принять номера сборки и редакции по умолчанию
|
||||
' используя "*", как показано ниже:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||
63
p2isPSX_CDToolkit/My Project/Resources.Designer.vb
generated
Normal file
63
p2isPSX_CDToolkit/My Project/Resources.Designer.vb
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' Этот код создан программой.
|
||||
' Исполняемая версия:4.0.30319.42000
|
||||
'
|
||||
' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
' повторной генерации кода.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
Imports System
|
||||
|
||||
Namespace My.Resources
|
||||
|
||||
'Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
||||
'с помощью такого средства, как ResGen или Visual Studio.
|
||||
'Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||
'с параметром /str или перестройте свой проект VS.
|
||||
'''<summary>
|
||||
''' Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
'''</summary>
|
||||
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
|
||||
Friend Module Resources
|
||||
|
||||
Private resourceMan As Global.System.Resources.ResourceManager
|
||||
|
||||
Private resourceCulture As Global.System.Globalization.CultureInfo
|
||||
|
||||
'''<summary>
|
||||
''' Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||
Get
|
||||
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("p2isPSX_CDView.Resources", GetType(Resources).Assembly)
|
||||
resourceMan = temp
|
||||
End If
|
||||
Return resourceMan
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
''' обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend Property Culture() As Global.System.Globalization.CultureInfo
|
||||
Get
|
||||
Return resourceCulture
|
||||
End Get
|
||||
Set
|
||||
resourceCulture = value
|
||||
End Set
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
||||
117
p2isPSX_CDToolkit/My Project/Resources.resx
Normal file
117
p2isPSX_CDToolkit/My Project/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
73
p2isPSX_CDToolkit/My Project/Settings.Designer.vb
generated
Normal file
73
p2isPSX_CDToolkit/My Project/Settings.Designer.vb
generated
Normal file
@@ -0,0 +1,73 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' Этот код создан программой.
|
||||
' Исполняемая версия:4.0.30319.42000
|
||||
'
|
||||
' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
' повторной генерации кода.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
|
||||
|
||||
#Region "Функция автоматического сохранения My.Settings"
|
||||
#If _MyType = "WindowsForms" Then
|
||||
Private Shared addedHandler As Boolean
|
||||
|
||||
Private Shared addedHandlerLockObject As New Object
|
||||
|
||||
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
|
||||
If My.Application.SaveMySettingsOnExit Then
|
||||
My.Settings.Save()
|
||||
End If
|
||||
End Sub
|
||||
#End If
|
||||
#End Region
|
||||
|
||||
Public Shared ReadOnly Property [Default]() As MySettings
|
||||
Get
|
||||
|
||||
#If _MyType = "WindowsForms" Then
|
||||
If Not addedHandler Then
|
||||
SyncLock addedHandlerLockObject
|
||||
If Not addedHandler Then
|
||||
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
|
||||
addedHandler = True
|
||||
End If
|
||||
End SyncLock
|
||||
End If
|
||||
#End If
|
||||
Return defaultInstance
|
||||
End Get
|
||||
End Property
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
|
||||
Friend Module MySettingsProperty
|
||||
|
||||
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||
Friend ReadOnly Property Settings() As Global.p2isPSX_CDView.My.MySettings
|
||||
Get
|
||||
Return Global.p2isPSX_CDView.My.MySettings.Default
|
||||
End Get
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
||||
7
p2isPSX_CDToolkit/My Project/Settings.settings
Normal file
7
p2isPSX_CDToolkit/My Project/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
265
p2isPSX_CDToolkit/ScriptCheck.Designer.vb
generated
Normal file
265
p2isPSX_CDToolkit/ScriptCheck.Designer.vb
generated
Normal file
@@ -0,0 +1,265 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class ScriptCheck
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ScriptCheck))
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
|
||||
Me.Dir = New System.Windows.Forms.TextBox()
|
||||
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
|
||||
Me.FilesLoad = New System.Windows.Forms.Button()
|
||||
Me.CurFileText = New System.Windows.Forms.Label()
|
||||
Me.CurFileName = New System.Windows.Forms.Label()
|
||||
Me.CurrentDial = New System.Windows.Forms.Label()
|
||||
Me.DemoText = New System.Windows.Forms.Label()
|
||||
Me.NxDial = New System.Windows.Forms.Button()
|
||||
Me.prevDial = New System.Windows.Forms.Button()
|
||||
Me.NxFile = New System.Windows.Forms.Button()
|
||||
Me.PrevFile = New System.Windows.Forms.Button()
|
||||
Me.Panel1 = New System.Windows.Forms.Panel()
|
||||
Me.IDsrch = New System.Windows.Forms.TextBox()
|
||||
Me.srch = New System.Windows.Forms.Button()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.Editor = New System.Windows.Forms.Button()
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.Panel1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'PictureBox1
|
||||
'
|
||||
Me.PictureBox1.BackColor = System.Drawing.Color.Transparent
|
||||
Me.PictureBox1.ErrorImage = Nothing
|
||||
Me.PictureBox1.InitialImage = Nothing
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.PictureBox1.Name = "PictureBox1"
|
||||
Me.PictureBox1.Size = New System.Drawing.Size(940, 188)
|
||||
Me.PictureBox1.TabIndex = 0
|
||||
Me.PictureBox1.TabStop = False
|
||||
'
|
||||
'Dir
|
||||
'
|
||||
Me.Dir.BackColor = System.Drawing.Color.Black
|
||||
Me.Dir.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.Dir.ForeColor = System.Drawing.SystemColors.InactiveCaption
|
||||
Me.Dir.Location = New System.Drawing.Point(183, 26)
|
||||
Me.Dir.Name = "Dir"
|
||||
Me.Dir.Size = New System.Drawing.Size(643, 13)
|
||||
Me.Dir.TabIndex = 1
|
||||
Me.Dir.Text = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\UnRLE\0057_ALL_SCENER" &
|
||||
"Y"
|
||||
'
|
||||
'ProgressBar1
|
||||
'
|
||||
Me.ProgressBar1.Location = New System.Drawing.Point(0, 475)
|
||||
Me.ProgressBar1.Name = "ProgressBar1"
|
||||
Me.ProgressBar1.Size = New System.Drawing.Size(940, 10)
|
||||
Me.ProgressBar1.TabIndex = 2
|
||||
'
|
||||
'FilesLoad
|
||||
'
|
||||
Me.FilesLoad.Location = New System.Drawing.Point(661, 45)
|
||||
Me.FilesLoad.Name = "FilesLoad"
|
||||
Me.FilesLoad.Size = New System.Drawing.Size(165, 23)
|
||||
Me.FilesLoad.TabIndex = 3
|
||||
Me.FilesLoad.Text = "Load TRNSL Files"
|
||||
Me.FilesLoad.UseVisualStyleBackColor = True
|
||||
'
|
||||
'CurFileText
|
||||
'
|
||||
Me.CurFileText.Font = New System.Drawing.Font("Montserrat", 27.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.CurFileText.ForeColor = System.Drawing.Color.DarkGray
|
||||
Me.CurFileText.Location = New System.Drawing.Point(492, 106)
|
||||
Me.CurFileText.Name = "CurFileText"
|
||||
Me.CurFileText.Size = New System.Drawing.Size(334, 52)
|
||||
Me.CurFileText.TabIndex = 4
|
||||
Me.CurFileText.Text = "0 / 0"
|
||||
Me.CurFileText.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'CurFileName
|
||||
'
|
||||
Me.CurFileName.Font = New System.Drawing.Font("Montserrat", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.CurFileName.ForeColor = System.Drawing.Color.DarkGray
|
||||
Me.CurFileName.Location = New System.Drawing.Point(292, 158)
|
||||
Me.CurFileName.Name = "CurFileName"
|
||||
Me.CurFileName.Size = New System.Drawing.Size(534, 29)
|
||||
Me.CurFileName.TabIndex = 4
|
||||
Me.CurFileName.Text = "Current File"
|
||||
Me.CurFileName.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'CurrentDial
|
||||
'
|
||||
Me.CurrentDial.Font = New System.Drawing.Font("Montserrat", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.CurrentDial.ForeColor = System.Drawing.Color.DarkGray
|
||||
Me.CurrentDial.Location = New System.Drawing.Point(596, 195)
|
||||
Me.CurrentDial.Name = "CurrentDial"
|
||||
Me.CurrentDial.Size = New System.Drawing.Size(230, 37)
|
||||
Me.CurrentDial.TabIndex = 4
|
||||
Me.CurrentDial.Text = "0 / 0"
|
||||
Me.CurrentDial.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'DemoText
|
||||
'
|
||||
Me.DemoText.BackColor = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer))
|
||||
Me.DemoText.Font = New System.Drawing.Font("Courier New", 15.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.DemoText.ForeColor = System.Drawing.Color.White
|
||||
Me.DemoText.Location = New System.Drawing.Point(12, 92)
|
||||
Me.DemoText.Name = "DemoText"
|
||||
Me.DemoText.Size = New System.Drawing.Size(206, 155)
|
||||
Me.DemoText.TabIndex = 5
|
||||
Me.DemoText.Visible = False
|
||||
'
|
||||
'NxDial
|
||||
'
|
||||
Me.NxDial.Location = New System.Drawing.Point(646, 241)
|
||||
Me.NxDial.Name = "NxDial"
|
||||
Me.NxDial.Size = New System.Drawing.Size(180, 38)
|
||||
Me.NxDial.TabIndex = 6
|
||||
Me.NxDial.Text = ">>"
|
||||
Me.NxDial.UseVisualStyleBackColor = True
|
||||
'
|
||||
'prevDial
|
||||
'
|
||||
Me.prevDial.Location = New System.Drawing.Point(556, 257)
|
||||
Me.prevDial.Name = "prevDial"
|
||||
Me.prevDial.Size = New System.Drawing.Size(75, 23)
|
||||
Me.prevDial.TabIndex = 7
|
||||
Me.prevDial.Text = "<<"
|
||||
Me.prevDial.UseVisualStyleBackColor = True
|
||||
'
|
||||
'NxFile
|
||||
'
|
||||
Me.NxFile.Location = New System.Drawing.Point(751, 80)
|
||||
Me.NxFile.Name = "NxFile"
|
||||
Me.NxFile.Size = New System.Drawing.Size(75, 23)
|
||||
Me.NxFile.TabIndex = 6
|
||||
Me.NxFile.Text = ">>"
|
||||
Me.NxFile.UseVisualStyleBackColor = True
|
||||
'
|
||||
'PrevFile
|
||||
'
|
||||
Me.PrevFile.Location = New System.Drawing.Point(661, 81)
|
||||
Me.PrevFile.Name = "PrevFile"
|
||||
Me.PrevFile.Size = New System.Drawing.Size(75, 23)
|
||||
Me.PrevFile.TabIndex = 7
|
||||
Me.PrevFile.Text = "<<"
|
||||
Me.PrevFile.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Panel1
|
||||
'
|
||||
Me.Panel1.BackgroundImage = CType(resources.GetObject("Panel1.BackgroundImage"), System.Drawing.Image)
|
||||
Me.Panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
|
||||
Me.Panel1.Controls.Add(Me.PictureBox1)
|
||||
Me.Panel1.Location = New System.Drawing.Point(0, 285)
|
||||
Me.Panel1.Name = "Panel1"
|
||||
Me.Panel1.Size = New System.Drawing.Size(931, 188)
|
||||
Me.Panel1.TabIndex = 9
|
||||
'
|
||||
'IDsrch
|
||||
'
|
||||
Me.IDsrch.Location = New System.Drawing.Point(492, 80)
|
||||
Me.IDsrch.Name = "IDsrch"
|
||||
Me.IDsrch.Size = New System.Drawing.Size(48, 20)
|
||||
Me.IDsrch.TabIndex = 10
|
||||
Me.IDsrch.Text = "0181"
|
||||
'
|
||||
'srch
|
||||
'
|
||||
Me.srch.Location = New System.Drawing.Point(547, 80)
|
||||
Me.srch.Name = "srch"
|
||||
Me.srch.Size = New System.Drawing.Size(75, 23)
|
||||
Me.srch.TabIndex = 11
|
||||
Me.srch.Text = "GO"
|
||||
Me.srch.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.Font = New System.Drawing.Font("Montserrat", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.Label1.ForeColor = System.Drawing.Color.DarkGray
|
||||
Me.Label1.Location = New System.Drawing.Point(315, 75)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(171, 29)
|
||||
Me.Label1.TabIndex = 4
|
||||
Me.Label1.Text = "SearchFileID -->"
|
||||
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'Editor
|
||||
'
|
||||
Me.Editor.Location = New System.Drawing.Point(219, 250)
|
||||
Me.Editor.Name = "Editor"
|
||||
Me.Editor.Size = New System.Drawing.Size(130, 23)
|
||||
Me.Editor.TabIndex = 12
|
||||
Me.Editor.Text = "Open Editor"
|
||||
Me.Editor.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ScriptCheck
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(64, Byte), Integer))
|
||||
Me.ClientSize = New System.Drawing.Size(941, 485)
|
||||
Me.Controls.Add(Me.Editor)
|
||||
Me.Controls.Add(Me.srch)
|
||||
Me.Controls.Add(Me.IDsrch)
|
||||
Me.Controls.Add(Me.PrevFile)
|
||||
Me.Controls.Add(Me.prevDial)
|
||||
Me.Controls.Add(Me.NxFile)
|
||||
Me.Controls.Add(Me.NxDial)
|
||||
Me.Controls.Add(Me.DemoText)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.CurFileName)
|
||||
Me.Controls.Add(Me.CurrentDial)
|
||||
Me.Controls.Add(Me.CurFileText)
|
||||
Me.Controls.Add(Me.FilesLoad)
|
||||
Me.Controls.Add(Me.ProgressBar1)
|
||||
Me.Controls.Add(Me.Dir)
|
||||
Me.Controls.Add(Me.Panel1)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "ScriptCheck"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "ScriptCheck"
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.Panel1.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents PictureBox1 As PictureBox
|
||||
Friend WithEvents Dir As TextBox
|
||||
Friend WithEvents ProgressBar1 As ProgressBar
|
||||
Friend WithEvents FilesLoad As Button
|
||||
Friend WithEvents CurFileText As Label
|
||||
Friend WithEvents CurFileName As Label
|
||||
Friend WithEvents CurrentDial As Label
|
||||
Friend WithEvents DemoText As Label
|
||||
Friend WithEvents NxDial As Button
|
||||
Friend WithEvents prevDial As Button
|
||||
Friend WithEvents NxFile As Button
|
||||
Friend WithEvents PrevFile As Button
|
||||
Friend WithEvents Panel1 As Panel
|
||||
Friend WithEvents IDsrch As TextBox
|
||||
Friend WithEvents srch As Button
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents Editor As Button
|
||||
End Class
|
||||
613
p2isPSX_CDToolkit/ScriptCheck.resx
Normal file
613
p2isPSX_CDToolkit/ScriptCheck.resx
Normal file
@@ -0,0 +1,613 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="Panel1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
RU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
413
p2isPSX_CDToolkit/ScriptCheck.vb
Normal file
413
p2isPSX_CDToolkit/ScriptCheck.vb
Normal file
@@ -0,0 +1,413 @@
|
||||
Imports IO
|
||||
Imports IO.Directory
|
||||
|
||||
Public Class ScriptCheck
|
||||
|
||||
Public files As New List(Of String)
|
||||
Public CurFilenum As Integer
|
||||
Public RRes As ScriptFile
|
||||
Public OverallDial As Integer
|
||||
Public CurDial As Integer
|
||||
|
||||
Public CurX, CurY
|
||||
Public CurColor As Color
|
||||
Public CurShadColor As Color
|
||||
Public IsNewWin As Boolean
|
||||
Public FontData As List(Of Byte)
|
||||
|
||||
Public Colors = New List(Of Color)
|
||||
|
||||
'Public CurEow As Integer
|
||||
Public NextEowPointer As Integer
|
||||
|
||||
Public SelectionCount As Integer
|
||||
Public Cursel As Integer
|
||||
|
||||
|
||||
Dim drawSurface As Bitmap
|
||||
|
||||
|
||||
Private Sub ScriptCheck_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
FontData = My.Computer.FileSystem.ReadAllBytes("D:\Games\PSX\Persona.2.Innocent.Sin\Export\0059_00_0_0_U").ToList
|
||||
Colors.Add(Color.Black)
|
||||
Colors.Add(Color.FromArgb(238, 238, 238))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(156, 156, 156))
|
||||
Colors.Add(Color.FromArgb(49, 49, 49))
|
||||
Colors.Add(Color.FromArgb(246, 82, 131))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(148, 213, 255)) 'Persona2 TEXT PALETTE
|
||||
Colors.Add(Color.FromArgb(24, 24, 49))
|
||||
Colors.Add(Color.FromArgb(131, 230, 131))
|
||||
Colors.Add(Color.FromArgb(24, 24, 24))
|
||||
Colors.Add(Color.FromArgb(230, 230, 74))
|
||||
Colors.Add(Color.FromArgb(49, 49, 24))
|
||||
Colors.Add(Color.FromArgb(255, 131, 49))
|
||||
Colors.Add(Color.FromArgb(49, 24, 24))
|
||||
|
||||
drawSurface = New Bitmap(PictureBox1.ClientSize.Width * 5, PictureBox1.ClientSize.Height * 5)
|
||||
PictureBox1.Image = drawSurface
|
||||
|
||||
|
||||
FilesLoad.PerformClick()
|
||||
|
||||
End Sub
|
||||
'Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
|
||||
' e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
|
||||
' e.Graphics.ScaleTransform(3, 3)
|
||||
' e.Graphics.DrawImage(drawSurface, 0, 0)
|
||||
'End Sub
|
||||
|
||||
|
||||
Private Sub FilesLoad_Click(sender As Object, e As EventArgs) Handles FilesLoad.Click
|
||||
|
||||
files = IO.Directory.GetFiles(Dir.Text, "*.TRNSL").ToList
|
||||
|
||||
CurFilenum = 0
|
||||
CurDial = 0
|
||||
If files.Count = 0 Then MsgBox("No TRNSL files in init directory!") : Exit Sub
|
||||
InitFile(0)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub InitFile(ByVal id As Integer)
|
||||
|
||||
Dim a = New ScriptTools
|
||||
|
||||
RRes = New ScriptFile
|
||||
a.ParseResource(My.Computer.FileSystem.ReadAllBytes(files(id)), RRes)
|
||||
' PictureBox2.Parent = PictureBox1
|
||||
|
||||
NextEowPointer = 0
|
||||
OverallDial = RRes.textPointers.Count
|
||||
CurDial = 0
|
||||
|
||||
PrintText()
|
||||
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub PrintText()
|
||||
|
||||
If IsNewWin Then ClearWinAndReset()
|
||||
|
||||
UpdateCurFileDial()
|
||||
|
||||
ShowDialodID(CurDial)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub ClearWinAndReset()
|
||||
|
||||
PictureBox1.BackColor = Color.Transparent
|
||||
PictureBox1.Invalidate()
|
||||
drawSurface = New Bitmap(PictureBox1.ClientSize.Width * 5, PictureBox1.ClientSize.Height * 5)
|
||||
PictureBox1.Image = drawSurface
|
||||
|
||||
CurX = 4
|
||||
CurY = 4
|
||||
|
||||
IsNewWin = False
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub UpdateCurFileDial()
|
||||
|
||||
CurFileText.Text = "f: " & CurFilenum + 1 & " / " & files.Count
|
||||
CurFileName.Text = Split(files(CurFilenum), "\").ToList.Last
|
||||
CurrentDial.Text = "w: " & CurDial + 1 & " / " & OverallDial
|
||||
|
||||
ProgressBar1.Value = CurDial / OverallDial * 100
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub ShowDialodID(ByVal id As Integer)
|
||||
|
||||
Dim m As List(Of Byte) = RRes.Text
|
||||
|
||||
|
||||
Dim a = RRes.textPointers(id) 'counter
|
||||
DemoText.Text = ""
|
||||
|
||||
If NextEowPointer <> 0 Then a = NextEowPointer
|
||||
|
||||
Do
|
||||
Dim c = get2(m, a)
|
||||
If c = &H122E Then 'Парсим код цвета текста
|
||||
CurColor = Colors(get2(m, a + 2))
|
||||
CurShadColor = Colors(get2(m, a + 2) + 1)
|
||||
a += 4
|
||||
GoTo endlineTest
|
||||
End If
|
||||
|
||||
|
||||
If c = &H1101 Then DemoText.Text &= vbCrLf : CurX = 3 : CurY += 14 : a += 2 : GoTo endlineTest ' Перенос строки
|
||||
If c = &H1131 Then DemoText.Text &= " " : CurX += 4 : a += 2 : GoTo endlineTest ' Табуляция (+12 пикс)
|
||||
|
||||
If c = &H1208 Then DemoText.Text &= "[SelectionMenu][" & get2(m, a + 2) & "]" : SelectionCount = get2(m, a + 2) : Cursel = 0 : a += 4 : GoTo endlineTest ' Пауза 1с при воспроизведении диалога
|
||||
|
||||
If c = &H1121 Then
|
||||
For vv = 0 To 3 : DrawChar(Asc("Суоу"(vv))) : Next
|
||||
a += 2 : GoTo endlineTest
|
||||
End If
|
||||
'Имя игрока
|
||||
If c = &H1120 Then
|
||||
For vv = 0 To 4 : DrawChar(Asc("Тацуя"(vv))) : Next
|
||||
a += 2
|
||||
GoTo endlineTest 'Фамилия игрока
|
||||
End If
|
||||
|
||||
'Кликуха
|
||||
If c = 4372 Then
|
||||
For vv = 0 To 3 : DrawChar(Asc("Тацу"(vv))) : Next
|
||||
a += 2
|
||||
GoTo endlineTest 'Кликуха
|
||||
End If
|
||||
|
||||
If c = &H1106 Then
|
||||
If get2(m, a + 2) = &H1102 Then
|
||||
If get2(m, a + 4) = &H1103 Then 'Закрыть окна диалога!
|
||||
IsNewWin = True
|
||||
NextEowPointer = 0
|
||||
Exit Do
|
||||
Else
|
||||
NextEowPointer = a + 4 'След диалог без закрытия окна
|
||||
Exit Do
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
If c = &H1109 Then
|
||||
If get2(m, a + 2) = &H1102 Then
|
||||
If get2(m, a + 4) = &H1103 Then 'Выбор варианта ответа!
|
||||
IsNewWin = True
|
||||
SelectionCount = 0 : Cursel = 0
|
||||
a += 6 : GoTo endlineTest
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
|
||||
If c = &H1103 Then Exit Do
|
||||
|
||||
If c And &H1000 Then 'COMMAND PARSE
|
||||
|
||||
Dim comLen = c >> 8
|
||||
comLen = comLen And &HF 'command length check
|
||||
'Dim comCode = c And &HFF
|
||||
|
||||
a += comLen * 2 'Jump command
|
||||
GoTo endlineTest
|
||||
|
||||
|
||||
|
||||
ElseIf c And &H2000 Then 'Если строка в моём однобайтном формате
|
||||
|
||||
Dim charNum = c And &HFF
|
||||
a += 2
|
||||
For x = 1 To charNum
|
||||
DemoText.Text &= Chr(m(a))
|
||||
DrawChar(m(a))
|
||||
a += 1
|
||||
Next
|
||||
If charNum And 1 Then a += 1 'if AND1 - +1
|
||||
GoTo endlineTest
|
||||
|
||||
End If
|
||||
|
||||
'draw any char from font!
|
||||
DrawChar(c)
|
||||
a += 2
|
||||
|
||||
|
||||
endlineTest:
|
||||
|
||||
'Читаем до следующего текст-поинтера или конца массива
|
||||
If id < RRes.textPointers.Count - 1 Then
|
||||
If a >= RRes.textPointers(id + 1) Then Exit Do
|
||||
Else
|
||||
If a >= m.Count - 1 Then Exit Do
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Loop
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub DrawChar(ByVal chr As Integer)
|
||||
|
||||
Dim f = New FontTools
|
||||
Dim readAddr = 1152 + 18 * chr '18 bytes per char
|
||||
|
||||
'making shadow
|
||||
|
||||
For a = 0 To 5
|
||||
Dim b1 As Byte = FontData(readAddr + (a * 3))
|
||||
Dim b2 As Byte = FontData(readAddr + (a * 3) + 1)
|
||||
Dim b3 As Byte = FontData(readAddr + (a * 3) + 2)
|
||||
Dim b1bits = New BitArray(BitConverter.GetBytes(b1))
|
||||
Dim b2bits = New BitArray(BitConverter.GetBytes(b2))
|
||||
Dim b3bits = New BitArray(BitConverter.GetBytes(b3))
|
||||
For x = 0 To 7
|
||||
If b1bits(x) Then drawpixel(x + CurX + 1, CurY + 1, True)
|
||||
Next
|
||||
|
||||
Dim addX = CurX + 9
|
||||
For x = 0 To 7
|
||||
If b2bits(x) Then drawpixel(x + addX, CurY + 1, True)
|
||||
If x = 3 Then addX -= 12 : CurY += 1
|
||||
Next
|
||||
|
||||
For x = 0 To 7
|
||||
If b3bits(x) Then drawpixel(x + CurX + 5, CurY + 1, True)
|
||||
Next
|
||||
CurY += 1
|
||||
Next
|
||||
|
||||
CurY -= 12
|
||||
|
||||
'making char
|
||||
|
||||
For a = 0 To 5
|
||||
Dim b1 As Byte = FontData(readAddr + (a * 3))
|
||||
Dim b2 As Byte = FontData(readAddr + (a * 3) + 1)
|
||||
Dim b3 As Byte = FontData(readAddr + (a * 3) + 2)
|
||||
Dim b1bits = New BitArray(BitConverter.GetBytes(b1))
|
||||
Dim b2bits = New BitArray(BitConverter.GetBytes(b2))
|
||||
Dim b3bits = New BitArray(BitConverter.GetBytes(b3))
|
||||
For x = 0 To 7
|
||||
If b1bits(x) Then drawpixel(x + CurX, CurY, False)
|
||||
Next
|
||||
|
||||
Dim addX = CurX + 8
|
||||
For x = 0 To 7
|
||||
If b2bits(x) Then drawpixel(x + addX, CurY, False)
|
||||
If x = 3 Then addX -= 12 : CurY += 1
|
||||
Next
|
||||
|
||||
For x = 0 To 7
|
||||
If b3bits(x) Then drawpixel(x + CurX + 4, CurY, False)
|
||||
Next
|
||||
CurY += 1
|
||||
Next
|
||||
|
||||
|
||||
|
||||
PictureBox1.Invalidate()
|
||||
CurY -= 12
|
||||
CurX += 6
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub drawpixel(ByVal x As Integer, ByVal y As Integer, ByVal isShadow As Boolean)
|
||||
|
||||
For a = 0 To 2
|
||||
For b = 0 To 2
|
||||
If isShadow Then
|
||||
drawSurface.SetPixel(x * 3 + a, y * 3 + b, CurShadColor)
|
||||
Else
|
||||
drawSurface.SetPixel(x * 3 + a, y * 3 + b, CurColor)
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function get2(ByRef f As List(Of Byte), ByVal Index As Integer)
|
||||
Return f(Index) + f(Index + 1) * 256
|
||||
End Function
|
||||
|
||||
Private Sub NxFile_Click(sender As Object, e As EventArgs) Handles NxFile.Click
|
||||
If CurFilenum = files.Count - 1 Then
|
||||
|
||||
CurFilenum = 0
|
||||
Else
|
||||
CurFilenum += 1
|
||||
End If
|
||||
|
||||
|
||||
|
||||
InitFile(CurFilenum)
|
||||
UpdateCurFileDial()
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub PrevFile_Click(sender As Object, e As EventArgs) Handles PrevFile.Click
|
||||
If CurFilenum = 0 Then CurFilenum = files.Count
|
||||
|
||||
|
||||
CurFilenum -= 1
|
||||
|
||||
InitFile(CurFilenum)
|
||||
UpdateCurFileDial()
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub NxDial_Click(sender As Object, e As EventArgs) Handles NxDial.Click
|
||||
If NextEowPointer <> 0 Then PrintText() : Exit Sub
|
||||
|
||||
If CurDial = OverallDial - 1 Then
|
||||
CurDial = 0
|
||||
If CurFilenum <> files.Count - 1 Then
|
||||
CurFilenum += 1
|
||||
InitFile(CurFilenum)
|
||||
UpdateCurFileDial()
|
||||
End If
|
||||
Else
|
||||
CurDial += 1
|
||||
End If
|
||||
|
||||
|
||||
|
||||
PrintText()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub srch_Click(sender As Object, e As EventArgs) Handles srch.Click
|
||||
Dim a = files.FindIndex(Function(x) x.Contains(IDsrch.Text))
|
||||
|
||||
If a = -1 Then
|
||||
MsgBox("File not found :(")
|
||||
Exit Sub
|
||||
Else
|
||||
InitFile(a)
|
||||
CurFilenum = a
|
||||
UpdateCurFileDial()
|
||||
End If
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub prevDial_Click(sender As Object, e As EventArgs) Handles prevDial.Click
|
||||
If CurDial = 0 Then CurDial = OverallDial
|
||||
NextEowPointer = 0
|
||||
CurDial -= 1
|
||||
PrintText()
|
||||
End Sub
|
||||
|
||||
Private Sub Editor_Click(sender As Object, e As EventArgs) Handles Editor.Click
|
||||
Dim fil = Replace("""C:\Program Files (x86)\Notepad++\Notepad++.exe"" """ & files(CurFilenum) & """", ".TRNSL", "")
|
||||
|
||||
Shell(fil)
|
||||
End Sub
|
||||
|
||||
Private Sub ScriptCheck_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
||||
If e.KeyCode = Keys.Add Then NxDial.PerformClick()
|
||||
End Sub
|
||||
End Class
|
||||
1853
p2isPSX_CDToolkit/ScriptTools.vb
Normal file
1853
p2isPSX_CDToolkit/ScriptTools.vb
Normal file
File diff suppressed because it is too large
Load Diff
687
p2isPSX_CDToolkit/StringsOffsetEditorvb.Designer.vb
generated
Normal file
687
p2isPSX_CDToolkit/StringsOffsetEditorvb.Designer.vb
generated
Normal file
@@ -0,0 +1,687 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class StringsOffsetEditorvb
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
|
||||
Me.FileID = New System.Windows.Forms.TextBox()
|
||||
Me.Offset = New System.Windows.Forms.TextBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.Label2 = New System.Windows.Forms.Label()
|
||||
Me.Label3 = New System.Windows.Forms.Label()
|
||||
Me.Label4 = New System.Windows.Forms.Label()
|
||||
Me.Label5 = New System.Windows.Forms.Label()
|
||||
Me.UserPath = New System.Windows.Forms.TextBox()
|
||||
Me.EngISOPath = New System.Windows.Forms.TextBox()
|
||||
Me.JapISOPath = New System.Windows.Forms.TextBox()
|
||||
Me.LoadBtn = New System.Windows.Forms.Button()
|
||||
Me.SaveBtn = New System.Windows.Forms.Button()
|
||||
Me.DataGridView1 = New System.Windows.Forms.DataGridView()
|
||||
Me.ID = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.JAP = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Eng = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
|
||||
Me.RadioFile = New System.Windows.Forms.RadioButton()
|
||||
Me.RadioSector = New System.Windows.Forms.RadioButton()
|
||||
Me.SetName = New System.Windows.Forms.TextBox()
|
||||
Me.Label6 = New System.Windows.Forms.Label()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.tempSave = New System.Windows.Forms.Button()
|
||||
Me.tempLoad = New System.Windows.Forms.Button()
|
||||
Me.SaveSettings = New System.Windows.Forms.Button()
|
||||
Me.LoadSettings = New System.Windows.Forms.Button()
|
||||
Me.OffSz = New System.Windows.Forms.Label()
|
||||
Me.TxtSz = New System.Windows.Forms.Label()
|
||||
Me.Allsz = New System.Windows.Forms.Label()
|
||||
Me.YourTxtSz = New System.Windows.Forms.Label()
|
||||
Me.CurLen = New System.Windows.Forms.Label()
|
||||
Me.patchFileID = New System.Windows.Forms.TextBox()
|
||||
Me.PatchFileBtn = New System.Windows.Forms.Button()
|
||||
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
|
||||
Me.ReplaceAll = New System.Windows.Forms.Button()
|
||||
Me.PatchFileRadio = New System.Windows.Forms.RadioButton()
|
||||
Me.PatchExeRadio = New System.Windows.Forms.RadioButton()
|
||||
Me.patchOffset = New System.Windows.Forms.TextBox()
|
||||
Me.Label7 = New System.Windows.Forms.Label()
|
||||
Me.LineModeSimple = New System.Windows.Forms.RadioButton()
|
||||
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
|
||||
Me.DontEnglish = New System.Windows.Forms.CheckBox()
|
||||
Me.OnlyCodes_Mode = New System.Windows.Forms.CheckBox()
|
||||
Me.LineModeComplex = New System.Windows.Forms.RadioButton()
|
||||
Me.EngSave = New System.Windows.Forms.Button()
|
||||
Me.EngOffset = New System.Windows.Forms.TextBox()
|
||||
Me.Label8 = New System.Windows.Forms.Label()
|
||||
Me.ListBox1 = New System.Windows.Forms.ListBox()
|
||||
Me.KudosLoad = New System.Windows.Forms.CheckBox()
|
||||
Me.Label9 = New System.Windows.Forms.Label()
|
||||
Me.KUDOSpath = New System.Windows.Forms.TextBox()
|
||||
Me.FindOffsetInJP = New System.Windows.Forms.Button()
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.GroupBox1.SuspendLayout()
|
||||
Me.GroupBox2.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'FileID
|
||||
'
|
||||
Me.FileID.Location = New System.Drawing.Point(54, 125)
|
||||
Me.FileID.Name = "FileID"
|
||||
Me.FileID.Size = New System.Drawing.Size(100, 20)
|
||||
Me.FileID.TabIndex = 0
|
||||
Me.FileID.Text = "0681"
|
||||
'
|
||||
'Offset
|
||||
'
|
||||
Me.Offset.Location = New System.Drawing.Point(218, 125)
|
||||
Me.Offset.Name = "Offset"
|
||||
Me.Offset.Size = New System.Drawing.Size(52, 20)
|
||||
Me.Offset.TabIndex = 1
|
||||
Me.Offset.Text = "49376"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(4, 128)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(44, 13)
|
||||
Me.Label1.TabIndex = 2
|
||||
Me.Label1.Text = "Number"
|
||||
'
|
||||
'Label2
|
||||
'
|
||||
Me.Label2.AutoSize = True
|
||||
Me.Label2.Location = New System.Drawing.Point(164, 128)
|
||||
Me.Label2.Name = "Label2"
|
||||
Me.Label2.Size = New System.Drawing.Size(54, 13)
|
||||
Me.Label2.TabIndex = 2
|
||||
Me.Label2.Text = "JAPOffset"
|
||||
'
|
||||
'Label3
|
||||
'
|
||||
Me.Label3.AutoSize = True
|
||||
Me.Label3.Location = New System.Drawing.Point(376, 23)
|
||||
Me.Label3.Name = "Label3"
|
||||
Me.Label3.Size = New System.Drawing.Size(102, 13)
|
||||
Me.Label3.TabIndex = 6
|
||||
Me.Label3.Text = "User (Modified) .BIN"
|
||||
'
|
||||
'Label4
|
||||
'
|
||||
Me.Label4.AutoSize = True
|
||||
Me.Label4.Location = New System.Drawing.Point(54, 62)
|
||||
Me.Label4.Name = "Label4"
|
||||
Me.Label4.Size = New System.Drawing.Size(120, 13)
|
||||
Me.Label4.TabIndex = 7
|
||||
Me.Label4.Text = "USA EP CD Image .BIN"
|
||||
'
|
||||
'Label5
|
||||
'
|
||||
Me.Label5.AutoSize = True
|
||||
Me.Label5.Location = New System.Drawing.Point(54, 23)
|
||||
Me.Label5.Name = "Label5"
|
||||
Me.Label5.Size = New System.Drawing.Size(127, 13)
|
||||
Me.Label5.TabIndex = 8
|
||||
Me.Label5.Text = "Japan EP CD Image .BIN"
|
||||
'
|
||||
'UserPath
|
||||
'
|
||||
Me.UserPath.Location = New System.Drawing.Point(376, 38)
|
||||
Me.UserPath.Name = "UserPath"
|
||||
Me.UserPath.Size = New System.Drawing.Size(300, 20)
|
||||
Me.UserPath.TabIndex = 3
|
||||
Me.UserPath.Text = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Persona 2 - Batsu USER.bin"
|
||||
'
|
||||
'EngISOPath
|
||||
'
|
||||
Me.EngISOPath.Location = New System.Drawing.Point(54, 77)
|
||||
Me.EngISOPath.Name = "EngISOPath"
|
||||
Me.EngISOPath.Size = New System.Drawing.Size(300, 20)
|
||||
Me.EngISOPath.TabIndex = 4
|
||||
Me.EngISOPath.Text = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Persona 2 - EP (USA) [Locali" &
|
||||
"zed - Undub].bin"
|
||||
'
|
||||
'JapISOPath
|
||||
'
|
||||
Me.JapISOPath.Location = New System.Drawing.Point(54, 39)
|
||||
Me.JapISOPath.Name = "JapISOPath"
|
||||
Me.JapISOPath.Size = New System.Drawing.Size(300, 20)
|
||||
Me.JapISOPath.TabIndex = 5
|
||||
Me.JapISOPath.Text = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Persona 2 - Batsu (NTSC-J) [" &
|
||||
"SLPS-02825].bin"
|
||||
'
|
||||
'LoadBtn
|
||||
'
|
||||
Me.LoadBtn.Location = New System.Drawing.Point(54, 172)
|
||||
Me.LoadBtn.Name = "LoadBtn"
|
||||
Me.LoadBtn.Size = New System.Drawing.Size(328, 23)
|
||||
Me.LoadBtn.TabIndex = 9
|
||||
Me.LoadBtn.Text = "READ"
|
||||
Me.LoadBtn.UseVisualStyleBackColor = True
|
||||
'
|
||||
'SaveBtn
|
||||
'
|
||||
Me.SaveBtn.Location = New System.Drawing.Point(1023, 1095)
|
||||
Me.SaveBtn.Name = "SaveBtn"
|
||||
Me.SaveBtn.Size = New System.Drawing.Size(148, 38)
|
||||
Me.SaveBtn.TabIndex = 9
|
||||
Me.SaveBtn.Text = "SAVE"
|
||||
Me.SaveBtn.UseVisualStyleBackColor = True
|
||||
'
|
||||
'DataGridView1
|
||||
'
|
||||
Me.DataGridView1.AllowUserToAddRows = False
|
||||
Me.DataGridView1.AllowUserToDeleteRows = False
|
||||
Me.DataGridView1.AllowUserToResizeRows = False
|
||||
Me.DataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells
|
||||
Me.DataGridView1.BackgroundColor = System.Drawing.Color.Gray
|
||||
Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
|
||||
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.ID, Me.JAP, Me.Eng, Me.Column1})
|
||||
Me.DataGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter
|
||||
Me.DataGridView1.Location = New System.Drawing.Point(12, 221)
|
||||
Me.DataGridView1.Name = "DataGridView1"
|
||||
Me.DataGridView1.RowHeadersVisible = False
|
||||
DataGridViewCellStyle1.Font = New System.Drawing.Font("Consolas", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.DataGridView1.RowsDefaultCellStyle = DataGridViewCellStyle1
|
||||
Me.DataGridView1.RowTemplate.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
|
||||
Me.DataGridView1.RowTemplate.DefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
||||
Me.DataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
|
||||
Me.DataGridView1.Size = New System.Drawing.Size(1433, 863)
|
||||
Me.DataGridView1.TabIndex = 11
|
||||
'
|
||||
'ID
|
||||
'
|
||||
Me.ID.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.ID.FillWeight = 20.0!
|
||||
Me.ID.HeaderText = "ID"
|
||||
Me.ID.Name = "ID"
|
||||
Me.ID.ReadOnly = True
|
||||
'
|
||||
'JAP
|
||||
'
|
||||
Me.JAP.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.JAP.HeaderText = "JAP_Str"
|
||||
Me.JAP.Name = "JAP"
|
||||
Me.JAP.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
|
||||
'
|
||||
'Eng
|
||||
'
|
||||
Me.Eng.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Eng.HeaderText = "Eng_Str"
|
||||
Me.Eng.Name = "Eng"
|
||||
Me.Eng.ReadOnly = True
|
||||
'
|
||||
'Column1
|
||||
'
|
||||
Me.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
|
||||
Me.Column1.FillWeight = 50.0!
|
||||
Me.Column1.HeaderText = "Kudos"
|
||||
Me.Column1.Name = "Column1"
|
||||
'
|
||||
'RadioFile
|
||||
'
|
||||
Me.RadioFile.AutoSize = True
|
||||
Me.RadioFile.Checked = True
|
||||
Me.RadioFile.Location = New System.Drawing.Point(67, 105)
|
||||
Me.RadioFile.Name = "RadioFile"
|
||||
Me.RadioFile.Size = New System.Drawing.Size(68, 17)
|
||||
Me.RadioFile.TabIndex = 12
|
||||
Me.RadioFile.TabStop = True
|
||||
Me.RadioFile.Text = "FILE or"
|
||||
Me.RadioFile.UseVisualStyleBackColor = True
|
||||
'
|
||||
'RadioSector
|
||||
'
|
||||
Me.RadioSector.AutoSize = True
|
||||
Me.RadioSector.Location = New System.Drawing.Point(142, 105)
|
||||
Me.RadioSector.Name = "RadioSector"
|
||||
Me.RadioSector.Size = New System.Drawing.Size(88, 17)
|
||||
Me.RadioSector.TabIndex = 13
|
||||
Me.RadioSector.Text = "SLPS002825"
|
||||
Me.RadioSector.UseVisualStyleBackColor = True
|
||||
'
|
||||
'SetName
|
||||
'
|
||||
Me.SetName.Location = New System.Drawing.Point(472, 64)
|
||||
Me.SetName.Name = "SetName"
|
||||
Me.SetName.Size = New System.Drawing.Size(204, 20)
|
||||
Me.SetName.TabIndex = 16
|
||||
'
|
||||
'Label6
|
||||
'
|
||||
Me.Label6.AutoSize = True
|
||||
Me.Label6.Location = New System.Drawing.Point(376, 67)
|
||||
Me.Label6.Name = "Label6"
|
||||
Me.Label6.Size = New System.Drawing.Size(73, 13)
|
||||
Me.Label6.TabIndex = 2
|
||||
Me.Label6.Text = "SettingsName"
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(42, 1095)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(112, 38)
|
||||
Me.Button1.TabIndex = 17
|
||||
Me.Button1.Text = "ClearJapText"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tempSave
|
||||
'
|
||||
Me.tempSave.Location = New System.Drawing.Point(309, 1095)
|
||||
Me.tempSave.Name = "tempSave"
|
||||
Me.tempSave.Size = New System.Drawing.Size(112, 38)
|
||||
Me.tempSave.TabIndex = 17
|
||||
Me.tempSave.Text = "TempSave"
|
||||
Me.tempSave.UseVisualStyleBackColor = True
|
||||
'
|
||||
'tempLoad
|
||||
'
|
||||
Me.tempLoad.Location = New System.Drawing.Point(181, 1094)
|
||||
Me.tempLoad.Name = "tempLoad"
|
||||
Me.tempLoad.Size = New System.Drawing.Size(112, 38)
|
||||
Me.tempLoad.TabIndex = 17
|
||||
Me.tempLoad.Text = "TempLoad"
|
||||
Me.tempLoad.UseVisualStyleBackColor = True
|
||||
'
|
||||
'SaveSettings
|
||||
'
|
||||
Me.SaveSettings.Location = New System.Drawing.Point(576, 92)
|
||||
Me.SaveSettings.Name = "SaveSettings"
|
||||
Me.SaveSettings.Size = New System.Drawing.Size(100, 23)
|
||||
Me.SaveSettings.TabIndex = 9
|
||||
Me.SaveSettings.Text = "SAVE"
|
||||
Me.SaveSettings.UseVisualStyleBackColor = True
|
||||
'
|
||||
'LoadSettings
|
||||
'
|
||||
Me.LoadSettings.Location = New System.Drawing.Point(472, 92)
|
||||
Me.LoadSettings.Name = "LoadSettings"
|
||||
Me.LoadSettings.Size = New System.Drawing.Size(100, 23)
|
||||
Me.LoadSettings.TabIndex = 9
|
||||
Me.LoadSettings.Text = "LOAD"
|
||||
Me.LoadSettings.UseVisualStyleBackColor = True
|
||||
'
|
||||
'OffSz
|
||||
'
|
||||
Me.OffSz.BackColor = System.Drawing.Color.LightGray
|
||||
Me.OffSz.Location = New System.Drawing.Point(732, 10)
|
||||
Me.OffSz.Name = "OffSz"
|
||||
Me.OffSz.Size = New System.Drawing.Size(128, 13)
|
||||
Me.OffSz.TabIndex = 2
|
||||
Me.OffSz.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'TxtSz
|
||||
'
|
||||
Me.TxtSz.BackColor = System.Drawing.Color.LightGray
|
||||
Me.TxtSz.Location = New System.Drawing.Point(732, 23)
|
||||
Me.TxtSz.Name = "TxtSz"
|
||||
Me.TxtSz.Size = New System.Drawing.Size(128, 13)
|
||||
Me.TxtSz.TabIndex = 2
|
||||
Me.TxtSz.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'Allsz
|
||||
'
|
||||
Me.Allsz.BackColor = System.Drawing.Color.LightGray
|
||||
Me.Allsz.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.Allsz.Location = New System.Drawing.Point(732, 36)
|
||||
Me.Allsz.Name = "Allsz"
|
||||
Me.Allsz.Size = New System.Drawing.Size(128, 13)
|
||||
Me.Allsz.TabIndex = 2
|
||||
Me.Allsz.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'YourTxtSz
|
||||
'
|
||||
Me.YourTxtSz.BackColor = System.Drawing.Color.LightGray
|
||||
Me.YourTxtSz.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.YourTxtSz.Location = New System.Drawing.Point(709, 61)
|
||||
Me.YourTxtSz.Name = "YourTxtSz"
|
||||
Me.YourTxtSz.Size = New System.Drawing.Size(151, 13)
|
||||
Me.YourTxtSz.TabIndex = 2
|
||||
Me.YourTxtSz.Text = " "
|
||||
Me.YourTxtSz.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'CurLen
|
||||
'
|
||||
Me.CurLen.AutoSize = True
|
||||
Me.CurLen.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
|
||||
Me.CurLen.Location = New System.Drawing.Point(253, 198)
|
||||
Me.CurLen.Name = "CurLen"
|
||||
Me.CurLen.Size = New System.Drawing.Size(17, 20)
|
||||
Me.CurLen.TabIndex = 18
|
||||
Me.CurLen.Text = "''"
|
||||
'
|
||||
'patchFileID
|
||||
'
|
||||
Me.patchFileID.Location = New System.Drawing.Point(29, 40)
|
||||
Me.patchFileID.Name = "patchFileID"
|
||||
Me.patchFileID.Size = New System.Drawing.Size(100, 20)
|
||||
Me.patchFileID.TabIndex = 19
|
||||
Me.patchFileID.Text = "0001"
|
||||
'
|
||||
'PatchFileBtn
|
||||
'
|
||||
Me.PatchFileBtn.Location = New System.Drawing.Point(29, 63)
|
||||
Me.PatchFileBtn.Name = "PatchFileBtn"
|
||||
Me.PatchFileBtn.Size = New System.Drawing.Size(246, 23)
|
||||
Me.PatchFileBtn.TabIndex = 21
|
||||
Me.PatchFileBtn.Text = "Patch"
|
||||
Me.PatchFileBtn.UseVisualStyleBackColor = True
|
||||
'
|
||||
'GroupBox1
|
||||
'
|
||||
Me.GroupBox1.Controls.Add(Me.PatchFileBtn)
|
||||
Me.GroupBox1.Controls.Add(Me.patchFileID)
|
||||
Me.GroupBox1.Controls.Add(Me.PatchFileRadio)
|
||||
Me.GroupBox1.Controls.Add(Me.PatchExeRadio)
|
||||
Me.GroupBox1.Controls.Add(Me.patchOffset)
|
||||
Me.GroupBox1.Controls.Add(Me.Label7)
|
||||
Me.GroupBox1.Enabled = False
|
||||
Me.GroupBox1.Location = New System.Drawing.Point(883, 12)
|
||||
Me.GroupBox1.Name = "GroupBox1"
|
||||
Me.GroupBox1.Size = New System.Drawing.Size(300, 103)
|
||||
Me.GroupBox1.TabIndex = 22
|
||||
Me.GroupBox1.TabStop = False
|
||||
Me.GroupBox1.Text = "Patch Text Routine Call"
|
||||
'
|
||||
'ReplaceAll
|
||||
'
|
||||
Me.ReplaceAll.Location = New System.Drawing.Point(912, 128)
|
||||
Me.ReplaceAll.Name = "ReplaceAll"
|
||||
Me.ReplaceAll.Size = New System.Drawing.Size(246, 42)
|
||||
Me.ReplaceAll.TabIndex = 22
|
||||
Me.ReplaceAll.Text = "Search And Replace All Text Calls"
|
||||
Me.ReplaceAll.UseVisualStyleBackColor = True
|
||||
'
|
||||
'PatchFileRadio
|
||||
'
|
||||
Me.PatchFileRadio.AutoSize = True
|
||||
Me.PatchFileRadio.Checked = True
|
||||
Me.PatchFileRadio.Location = New System.Drawing.Point(61, 19)
|
||||
Me.PatchFileRadio.Name = "PatchFileRadio"
|
||||
Me.PatchFileRadio.Size = New System.Drawing.Size(68, 17)
|
||||
Me.PatchFileRadio.TabIndex = 12
|
||||
Me.PatchFileRadio.TabStop = True
|
||||
Me.PatchFileRadio.Text = "FILE or"
|
||||
Me.PatchFileRadio.UseVisualStyleBackColor = True
|
||||
'
|
||||
'PatchExeRadio
|
||||
'
|
||||
Me.PatchExeRadio.AutoSize = True
|
||||
Me.PatchExeRadio.Location = New System.Drawing.Point(152, 19)
|
||||
Me.PatchExeRadio.Name = "PatchExeRadio"
|
||||
Me.PatchExeRadio.Size = New System.Drawing.Size(76, 17)
|
||||
Me.PatchExeRadio.TabIndex = 13
|
||||
Me.PatchExeRadio.Text = "SLPS0021"
|
||||
Me.PatchExeRadio.UseVisualStyleBackColor = True
|
||||
'
|
||||
'patchOffset
|
||||
'
|
||||
Me.patchOffset.Location = New System.Drawing.Point(175, 40)
|
||||
Me.patchOffset.Name = "patchOffset"
|
||||
Me.patchOffset.Size = New System.Drawing.Size(100, 20)
|
||||
Me.patchOffset.TabIndex = 1
|
||||
Me.patchOffset.Text = "361460"
|
||||
'
|
||||
'Label7
|
||||
'
|
||||
Me.Label7.AutoSize = True
|
||||
Me.Label7.Location = New System.Drawing.Point(240, 26)
|
||||
Me.Label7.Name = "Label7"
|
||||
Me.Label7.Size = New System.Drawing.Size(35, 13)
|
||||
Me.Label7.TabIndex = 2
|
||||
Me.Label7.Text = "Offset"
|
||||
'
|
||||
'LineModeSimple
|
||||
'
|
||||
Me.LineModeSimple.AutoSize = True
|
||||
Me.LineModeSimple.Checked = True
|
||||
Me.LineModeSimple.Location = New System.Drawing.Point(40, 19)
|
||||
Me.LineModeSimple.Name = "LineModeSimple"
|
||||
Me.LineModeSimple.Size = New System.Drawing.Size(56, 17)
|
||||
Me.LineModeSimple.TabIndex = 23
|
||||
Me.LineModeSimple.TabStop = True
|
||||
Me.LineModeSimple.Text = "Simple"
|
||||
Me.LineModeSimple.UseVisualStyleBackColor = True
|
||||
'
|
||||
'GroupBox2
|
||||
'
|
||||
Me.GroupBox2.Controls.Add(Me.DontEnglish)
|
||||
Me.GroupBox2.Controls.Add(Me.OnlyCodes_Mode)
|
||||
Me.GroupBox2.Controls.Add(Me.LineModeComplex)
|
||||
Me.GroupBox2.Controls.Add(Me.LineModeSimple)
|
||||
Me.GroupBox2.Location = New System.Drawing.Point(391, 121)
|
||||
Me.GroupBox2.Name = "GroupBox2"
|
||||
Me.GroupBox2.Size = New System.Drawing.Size(234, 68)
|
||||
Me.GroupBox2.TabIndex = 24
|
||||
Me.GroupBox2.TabStop = False
|
||||
Me.GroupBox2.Text = "LinesMode"
|
||||
'
|
||||
'DontEnglish
|
||||
'
|
||||
Me.DontEnglish.AutoSize = True
|
||||
Me.DontEnglish.Location = New System.Drawing.Point(114, 19)
|
||||
Me.DontEnglish.Name = "DontEnglish"
|
||||
Me.DontEnglish.Size = New System.Drawing.Size(115, 17)
|
||||
Me.DontEnglish.TabIndex = 25
|
||||
Me.DontEnglish.Text = "Dont Read English"
|
||||
Me.DontEnglish.UseVisualStyleBackColor = True
|
||||
'
|
||||
'OnlyCodes_Mode
|
||||
'
|
||||
Me.OnlyCodes_Mode.AutoSize = True
|
||||
Me.OnlyCodes_Mode.Location = New System.Drawing.Point(114, 42)
|
||||
Me.OnlyCodes_Mode.Name = "OnlyCodes_Mode"
|
||||
Me.OnlyCodes_Mode.Size = New System.Drawing.Size(67, 17)
|
||||
Me.OnlyCodes_Mode.TabIndex = 24
|
||||
Me.OnlyCodes_Mode.Text = "FullCode"
|
||||
Me.OnlyCodes_Mode.UseVisualStyleBackColor = True
|
||||
'
|
||||
'LineModeComplex
|
||||
'
|
||||
Me.LineModeComplex.AutoSize = True
|
||||
Me.LineModeComplex.Location = New System.Drawing.Point(40, 42)
|
||||
Me.LineModeComplex.Name = "LineModeComplex"
|
||||
Me.LineModeComplex.Size = New System.Drawing.Size(65, 17)
|
||||
Me.LineModeComplex.TabIndex = 23
|
||||
Me.LineModeComplex.Text = "Complex"
|
||||
Me.LineModeComplex.UseVisualStyleBackColor = True
|
||||
'
|
||||
'EngSave
|
||||
'
|
||||
Me.EngSave.Location = New System.Drawing.Point(529, 1094)
|
||||
Me.EngSave.Name = "EngSave"
|
||||
Me.EngSave.Size = New System.Drawing.Size(135, 38)
|
||||
Me.EngSave.TabIndex = 25
|
||||
Me.EngSave.Text = "ENG SAVE"
|
||||
Me.EngSave.UseVisualStyleBackColor = True
|
||||
'
|
||||
'EngOffset
|
||||
'
|
||||
Me.EngOffset.Location = New System.Drawing.Point(333, 125)
|
||||
Me.EngOffset.Name = "EngOffset"
|
||||
Me.EngOffset.Size = New System.Drawing.Size(49, 20)
|
||||
Me.EngOffset.TabIndex = 1
|
||||
Me.EngOffset.Text = "20332"
|
||||
'
|
||||
'Label8
|
||||
'
|
||||
Me.Label8.AutoSize = True
|
||||
Me.Label8.Location = New System.Drawing.Point(276, 128)
|
||||
Me.Label8.Name = "Label8"
|
||||
Me.Label8.Size = New System.Drawing.Size(58, 13)
|
||||
Me.Label8.TabIndex = 2
|
||||
Me.Label8.Text = "ENGOffset"
|
||||
'
|
||||
'ListBox1
|
||||
'
|
||||
Me.ListBox1.FormattingEnabled = True
|
||||
Me.ListBox1.Location = New System.Drawing.Point(698, 92)
|
||||
Me.ListBox1.Name = "ListBox1"
|
||||
Me.ListBox1.Size = New System.Drawing.Size(179, 82)
|
||||
Me.ListBox1.TabIndex = 26
|
||||
'
|
||||
'KudosLoad
|
||||
'
|
||||
Me.KudosLoad.AutoSize = True
|
||||
Me.KudosLoad.Location = New System.Drawing.Point(1258, 80)
|
||||
Me.KudosLoad.Name = "KudosLoad"
|
||||
Me.KudosLoad.Size = New System.Drawing.Size(113, 17)
|
||||
Me.KudosLoad.TabIndex = 27
|
||||
Me.KudosLoad.Text = "Load Kudos Text?"
|
||||
Me.KudosLoad.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Label9
|
||||
'
|
||||
Me.Label9.AutoSize = True
|
||||
Me.Label9.Location = New System.Drawing.Point(1189, 23)
|
||||
Me.Label9.Name = "Label9"
|
||||
Me.Label9.Size = New System.Drawing.Size(69, 13)
|
||||
Me.Label9.TabIndex = 29
|
||||
Me.Label9.Text = "KUDOS .BIN"
|
||||
'
|
||||
'KUDOSpath
|
||||
'
|
||||
Me.KUDOSpath.Location = New System.Drawing.Point(1189, 39)
|
||||
Me.KUDOSpath.Name = "KUDOSpath"
|
||||
Me.KUDOSpath.Size = New System.Drawing.Size(262, 20)
|
||||
Me.KUDOSpath.TabIndex = 28
|
||||
Me.KUDOSpath.Text = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\P2_KUDOS.bin"
|
||||
'
|
||||
'FindOffsetInJP
|
||||
'
|
||||
Me.FindOffsetInJP.Location = New System.Drawing.Point(307, 147)
|
||||
Me.FindOffsetInJP.Name = "FindOffsetInJP"
|
||||
Me.FindOffsetInJP.Size = New System.Drawing.Size(75, 23)
|
||||
Me.FindOffsetInJP.TabIndex = 30
|
||||
Me.FindOffsetInJP.Text = "Find in JP"
|
||||
Me.FindOffsetInJP.UseVisualStyleBackColor = True
|
||||
'
|
||||
'StringsOffsetEditorvb
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.BackColor = System.Drawing.Color.Gray
|
||||
Me.ClientSize = New System.Drawing.Size(1470, 1140)
|
||||
Me.Controls.Add(Me.FindOffsetInJP)
|
||||
Me.Controls.Add(Me.ReplaceAll)
|
||||
Me.Controls.Add(Me.Label9)
|
||||
Me.Controls.Add(Me.KUDOSpath)
|
||||
Me.Controls.Add(Me.KudosLoad)
|
||||
Me.Controls.Add(Me.ListBox1)
|
||||
Me.Controls.Add(Me.EngSave)
|
||||
Me.Controls.Add(Me.GroupBox2)
|
||||
Me.Controls.Add(Me.GroupBox1)
|
||||
Me.Controls.Add(Me.CurLen)
|
||||
Me.Controls.Add(Me.tempLoad)
|
||||
Me.Controls.Add(Me.tempSave)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.SetName)
|
||||
Me.Controls.Add(Me.RadioSector)
|
||||
Me.Controls.Add(Me.RadioFile)
|
||||
Me.Controls.Add(Me.DataGridView1)
|
||||
Me.Controls.Add(Me.SaveBtn)
|
||||
Me.Controls.Add(Me.SaveSettings)
|
||||
Me.Controls.Add(Me.LoadSettings)
|
||||
Me.Controls.Add(Me.LoadBtn)
|
||||
Me.Controls.Add(Me.Label3)
|
||||
Me.Controls.Add(Me.Label4)
|
||||
Me.Controls.Add(Me.Label5)
|
||||
Me.Controls.Add(Me.UserPath)
|
||||
Me.Controls.Add(Me.EngISOPath)
|
||||
Me.Controls.Add(Me.JapISOPath)
|
||||
Me.Controls.Add(Me.YourTxtSz)
|
||||
Me.Controls.Add(Me.Allsz)
|
||||
Me.Controls.Add(Me.TxtSz)
|
||||
Me.Controls.Add(Me.OffSz)
|
||||
Me.Controls.Add(Me.Label6)
|
||||
Me.Controls.Add(Me.Label8)
|
||||
Me.Controls.Add(Me.Label2)
|
||||
Me.Controls.Add(Me.EngOffset)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.Offset)
|
||||
Me.Controls.Add(Me.FileID)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.Name = "StringsOffsetEditorvb"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "StringsOffsetEditorvb"
|
||||
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.GroupBox1.ResumeLayout(False)
|
||||
Me.GroupBox1.PerformLayout()
|
||||
Me.GroupBox2.ResumeLayout(False)
|
||||
Me.GroupBox2.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents FileID As TextBox
|
||||
Friend WithEvents Offset As TextBox
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents Label2 As Label
|
||||
Friend WithEvents Label3 As Label
|
||||
Friend WithEvents Label4 As Label
|
||||
Friend WithEvents Label5 As Label
|
||||
Friend WithEvents UserPath As TextBox
|
||||
Friend WithEvents EngISOPath As TextBox
|
||||
Friend WithEvents JapISOPath As TextBox
|
||||
Friend WithEvents LoadBtn As Button
|
||||
Friend WithEvents SaveBtn As Button
|
||||
Friend WithEvents DataGridView1 As DataGridView
|
||||
Friend WithEvents RadioFile As RadioButton
|
||||
Friend WithEvents RadioSector As RadioButton
|
||||
Friend WithEvents SetName As TextBox
|
||||
Friend WithEvents Label6 As Label
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents tempSave As Button
|
||||
Friend WithEvents tempLoad As Button
|
||||
Friend WithEvents SaveSettings As Button
|
||||
Friend WithEvents LoadSettings As Button
|
||||
Friend WithEvents OffSz As Label
|
||||
Friend WithEvents TxtSz As Label
|
||||
Friend WithEvents Allsz As Label
|
||||
Friend WithEvents YourTxtSz As Label
|
||||
Friend WithEvents CurLen As Label
|
||||
Friend WithEvents patchFileID As TextBox
|
||||
Friend WithEvents PatchFileBtn As Button
|
||||
Friend WithEvents GroupBox1 As GroupBox
|
||||
Friend WithEvents PatchFileRadio As RadioButton
|
||||
Friend WithEvents PatchExeRadio As RadioButton
|
||||
Friend WithEvents patchOffset As TextBox
|
||||
Friend WithEvents Label7 As Label
|
||||
Friend WithEvents LineModeSimple As RadioButton
|
||||
Friend WithEvents GroupBox2 As GroupBox
|
||||
Friend WithEvents LineModeComplex As RadioButton
|
||||
Friend WithEvents EngSave As Button
|
||||
Friend WithEvents OnlyCodes_Mode As CheckBox
|
||||
Friend WithEvents EngOffset As TextBox
|
||||
Friend WithEvents Label8 As Label
|
||||
Friend WithEvents ReplaceAll As Button
|
||||
Friend WithEvents ListBox1 As ListBox
|
||||
Friend WithEvents DontEnglish As CheckBox
|
||||
Friend WithEvents ID As DataGridViewTextBoxColumn
|
||||
Friend WithEvents JAP As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Eng As DataGridViewTextBoxColumn
|
||||
Friend WithEvents Column1 As DataGridViewTextBoxColumn
|
||||
Friend WithEvents KudosLoad As CheckBox
|
||||
Friend WithEvents Label9 As Label
|
||||
Friend WithEvents KUDOSpath As TextBox
|
||||
Friend WithEvents FindOffsetInJP As Button
|
||||
End Class
|
||||
132
p2isPSX_CDToolkit/StringsOffsetEditorvb.resx
Normal file
132
p2isPSX_CDToolkit/StringsOffsetEditorvb.resx
Normal file
@@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="JAP.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Eng.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
741
p2isPSX_CDToolkit/StringsOffsetEditorvb.vb
Normal file
741
p2isPSX_CDToolkit/StringsOffsetEditorvb.vb
Normal file
@@ -0,0 +1,741 @@
|
||||
Imports System.IO
|
||||
Imports System.Runtime.Remoting.Metadata.W3cXsd2001
|
||||
|
||||
Public Class StringsOffsetEditorvb
|
||||
|
||||
Public files1 As List(Of fileInfo)
|
||||
Public files2 As List(Of fileInfo)
|
||||
Public files3 As List(Of fileInfo)
|
||||
Public files4 As List(Of fileInfo) 'KUDOS
|
||||
Public CurFile As Byte()
|
||||
Public EngFile As Byte()
|
||||
Public JapFile As Byte()
|
||||
Public KudosFile As Byte()
|
||||
|
||||
Public MaximusSize As Integer
|
||||
Public OffsetsTableSize As Integer
|
||||
Public TextSize As Integer
|
||||
|
||||
|
||||
Private Sub StringsOffsetEditorvb_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
|
||||
Dim cd = New ISOTools
|
||||
|
||||
'Reading filetable and make array
|
||||
files1 = cd.makeFileList(UserPath.Text)
|
||||
files2 = cd.makeFileList(EngISOPath.Text)
|
||||
files3 = cd.makeFileList(JapISOPath.Text)
|
||||
files4 = cd.makeFileList(KUDOSpath.Text)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub FindOffsetInJP_Click(sender As Object, e As EventArgs) Handles FindOffsetInJP.Click
|
||||
|
||||
Dim cd = New ISOTools
|
||||
If Not IsNumeric(FileID.Text) Then MsgBox("FILE ID IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If Not IsNumeric(EngOffset.Text) Then MsgBox("ENG OFFSET IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
|
||||
If RadioFile.Checked Then
|
||||
CurFile = cd.getCDfile(UserPath.Text, files1(FileID.Text).Sector, files1(FileID.Text).Sizw).ToArray
|
||||
EngFile = cd.getCDfile(EngISOPath.Text, files2(FileID.Text).Sector, files2(FileID.Text).Sizw).ToArray
|
||||
Else
|
||||
CurFile = cd.getCDfile(UserPath.Text, 27, 1812408).ToArray
|
||||
EngFile = cd.getCDfile(EngISOPath.Text, 27, 1812408).ToArray
|
||||
End If
|
||||
|
||||
Dim Off = BitConverter.ToInt32(EngFile, EngOffset.Text)
|
||||
If Off > 1000 Then MsgBox("Error in EngOffset (Kakaya-to Hnya)!", MsgBoxStyle.Critical) : Exit Sub
|
||||
|
||||
Dim offsets = New List(Of Integer)
|
||||
|
||||
For a = 0 To CurFile.Length - 1 Step 4
|
||||
If BitConverter.ToInt32(CurFile, a) = Off Then
|
||||
'Validate table with offsets
|
||||
If BitConverter.ToInt32(CurFile, a + 4) = Off * 4 + 4 Then offsets.Add(a) 'First_offset * 4 + 4 == must be address after offsets table
|
||||
End If
|
||||
Next
|
||||
|
||||
If offsets.Count = 0 Then MsgBox("Offsets not found in JAP ISO!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If offsets.Count = 1 Then Offset.Text = offsets(0) : LoadBtn.PerformClick() : Exit Sub
|
||||
|
||||
Dim txt = "Found " & offsets.Count & " offsets.Count" & vbCrLf
|
||||
For a = 0 To offsets.Count - 1
|
||||
txt &= offsets(a) & " : " & BitConverter.ToInt32(CurFile, offsets(a)).ToString("X8") & " "
|
||||
txt &= BitConverter.ToInt32(CurFile, offsets(a) + 4).ToString("X8") & " "
|
||||
txt &= BitConverter.ToInt32(CurFile, offsets(a) + 8).ToString("X8") & " "
|
||||
txt &= BitConverter.ToInt32(CurFile, offsets(a) + 12).ToString("X8") & vbCrLf
|
||||
Next
|
||||
|
||||
|
||||
|
||||
Dim Input = InputBox(txt & vbCrLf & "Enter offset ID:", "More than 1", "0")
|
||||
If Not IsNumeric(Input) Then Exit Sub
|
||||
If Int(Input) > offsets.Count - 1 Then Exit Sub
|
||||
|
||||
'Load offset and texts
|
||||
Offset.Text = offsets(Input) : LoadBtn.PerformClick()
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadBtn_Click(sender As Object, e As EventArgs) Handles LoadBtn.Click
|
||||
|
||||
Dim cd = New ISOTools
|
||||
|
||||
|
||||
If Not IsNumeric(FileID.Text) Then MsgBox("FILE ID IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If Not IsNumeric(Offset.Text) Then MsgBox("FILE OFFSET IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If RadioFile.Checked Then
|
||||
|
||||
CurFile = cd.getCDfile(UserPath.Text, files1(FileID.Text).Sector, files1(FileID.Text).Sizw).ToArray
|
||||
EngFile = cd.getCDfile(EngISOPath.Text, files2(FileID.Text).Sector, files2(FileID.Text).Sizw).ToArray
|
||||
JapFile = cd.getCDfile(JapISOPath.Text, files3(FileID.Text).Sector, files3(FileID.Text).Sizw).ToArray
|
||||
|
||||
KudosFile = cd.getCDfile(KUDOSpath.Text, files4(FileID.Text).Sector, files2(FileID.Text).Sizw).ToArray
|
||||
|
||||
|
||||
Else
|
||||
CurFile = cd.getCDfile(UserPath.Text, 27, 1812408).ToArray
|
||||
EngFile = cd.getCDfile(EngISOPath.Text, 27, 1812408).ToArray
|
||||
JapFile = cd.getCDfile(JapISOPath.Text, 27, 1812408).ToArray
|
||||
|
||||
KudosFile = cd.getCDfile(KUDOSpath.Text, 27 + 26, 1812408).ToArray
|
||||
|
||||
End If
|
||||
|
||||
|
||||
If BitConverter.ToInt32(CurFile, Offset.Text) > 1000 Then MsgBox("Error in MainfileOffset!", MsgBoxStyle.Critical) : Exit Sub
|
||||
'If BitConverter.ToInt32(EngFile, Offset.Text) > 1000 Then MsgBox("Error in ENGfileOffset!", MsgBoxStyle.Critical) : Exit Sub
|
||||
Dim rws As Integer = BitConverter.ToInt32(CurFile, Offset.Text)
|
||||
Dim reader = Offset.Text + 4
|
||||
Dim engReader = EngOffset.Text + 4
|
||||
Dim japRd = 0
|
||||
Dim engRd = 0
|
||||
Dim kudRd = 0
|
||||
Dim estr As String = ""
|
||||
Dim kstr As String = ""
|
||||
DataGridView1.Rows.Clear()
|
||||
For a = 0 To rws - 1
|
||||
If DontEnglish.Checked Then GoTo dontEnglish
|
||||
|
||||
'READING ENG STRING
|
||||
|
||||
Dim curAddr As Integer = BitConverter.ToInt32(EngFile, engReader) + EngOffset.Text
|
||||
estr = ""
|
||||
Do
|
||||
Dim chrr = BitConverter.ToUInt16(EngFile, curAddr) 'Reading 2 Bytes!
|
||||
If chrr = &H96E Then estr &= "[man]" : curAddr += 2 : Continue Do
|
||||
If chrr = &H96F Then estr &= "[woman]" : curAddr += 2 : Continue Do
|
||||
If (chrr And &H1000) Or OnlyCodes_Mode.Checked Then
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(EngFile, curAddr + 2) = &H1106 And
|
||||
BitConverter.ToUInt16(EngFile, curAddr + 4) = &H1101 And
|
||||
BitConverter.ToUInt16(EngFile, curAddr + 6) = &H1103 Then estr &= "[END]" : Exit Do
|
||||
If chrr = &H1136 Then
|
||||
curAddr += 2
|
||||
Dim aaa = EngFile(curAddr)
|
||||
Do Until aaa = 0
|
||||
estr &= Chr(aaa)
|
||||
curAddr += 1
|
||||
aaa = EngFile(curAddr)
|
||||
Loop
|
||||
If curAddr And 1 Then curAddr += 1
|
||||
Continue Do
|
||||
End If
|
||||
If chrr = &H1103 Then estr &= "[END311]" : Exit Do
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(EngFile, curAddr + 2) = &H1103 Then estr &= "[end]" : Exit Do
|
||||
If chrr = &H1120 Then estr &= " " : curAddr += 2 : Continue Do
|
||||
If chrr = &H1121 Then estr &= " " : curAddr += 2 : Continue Do
|
||||
Dim c1 = EngFile(curAddr) : Dim c2 = EngFile(curAddr + 1)
|
||||
Dim gg = c2 And 15
|
||||
If OnlyCodes_Mode.Checked Then
|
||||
estr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curAddr += 2
|
||||
Else
|
||||
For byteskip = 1 To gg
|
||||
estr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curAddr += 2
|
||||
c1 = EngFile(curAddr) : c2 = EngFile(curAddr + 1)
|
||||
Next
|
||||
End If
|
||||
Continue Do
|
||||
End If
|
||||
chrr = chrr And 255 : If chrr < 32 Then chrr += 32
|
||||
estr &= Chr(chrr)
|
||||
curAddr += 2
|
||||
Loop
|
||||
|
||||
|
||||
'reading Kudos
|
||||
If Not KudosLoad.Checked Then GoTo dontEnglish
|
||||
kstr = ""
|
||||
curAddr = BitConverter.ToInt32(KudosFile, engReader) + EngOffset.Text
|
||||
Do
|
||||
|
||||
Dim chrr = BitConverter.ToUInt16(KudosFile, curAddr) 'Reading 2 Bytes!
|
||||
|
||||
If (chrr And &H1000) Or OnlyCodes_Mode.Checked Then
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(KudosFile, curAddr + 2) = &H1106 And
|
||||
BitConverter.ToUInt16(KudosFile, curAddr + 4) = &H1101 And
|
||||
BitConverter.ToUInt16(KudosFile, curAddr + 6) = &H1103 Then kstr &= "[END]" : Exit Do
|
||||
If chrr = &H1136 Then
|
||||
curAddr += 2
|
||||
Dim aaa = KudosFile(curAddr)
|
||||
Do Until aaa = 0
|
||||
kstr &= Chr(aaa)
|
||||
curAddr += 1
|
||||
aaa = KudosFile(curAddr)
|
||||
Loop
|
||||
If curAddr And 1 Then curAddr += 1
|
||||
Continue Do
|
||||
End If
|
||||
If chrr = &H1103 Then Exit Do
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(KudosFile, curAddr + 2) = &H1103 Then Exit Do
|
||||
If chrr = &H1120 Then kstr &= " " : curAddr += 2 : Continue Do
|
||||
If chrr = &H1121 Then kstr &= " " : curAddr += 2 : Continue Do
|
||||
Dim c1 = KudosFile(curAddr) : Dim c2 = KudosFile(curAddr + 1)
|
||||
Dim gg = c2 And 15
|
||||
If OnlyCodes_Mode.Checked Then
|
||||
kstr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curAddr += 2
|
||||
Else
|
||||
For byteskip = 1 To gg
|
||||
kstr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curAddr += 2
|
||||
c1 = KudosFile(curAddr) : c2 = KudosFile(curAddr + 1)
|
||||
Next
|
||||
End If
|
||||
Continue Do
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
chrr = chrr And 255 : If chrr < 32 Then chrr += 32
|
||||
kstr &= Chr(chrr)
|
||||
curAddr += 2
|
||||
Loop
|
||||
|
||||
kstr = Unkudos(kstr)
|
||||
|
||||
|
||||
|
||||
dontEnglish:
|
||||
|
||||
'READING JAP STRING
|
||||
Dim jstr As String = ""
|
||||
Dim curJAddr As Integer = BitConverter.ToInt32(CurFile, reader) + Offset.Text
|
||||
|
||||
Do
|
||||
|
||||
If BitConverter.ToInt16(CurFile, curJAddr) And &H2000 Then 'If its my rus text
|
||||
curJAddr += 2
|
||||
For x = 0 To CurFile(curJAddr - 2) - 1
|
||||
jstr &= Chr(CurFile(curJAddr + x))
|
||||
Next
|
||||
|
||||
curJAddr += CurFile(curJAddr - 2)
|
||||
If curJAddr And 1 Then curJAddr += 1
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
If LineModeSimple.Checked Then Exit Do
|
||||
If BitConverter.ToInt16(CurFile, curJAddr) And &H2000 Then Exit Do
|
||||
|
||||
'If jstr.Length > 500 Then Exit Do
|
||||
|
||||
Dim chrr = BitConverter.ToUInt16(CurFile, curJAddr) 'Reading 2 Bytes!
|
||||
|
||||
If chrr = &H96E Then jstr &= "[man]" : curJAddr += 2 : Continue Do
|
||||
If chrr = &H96F Then jstr &= "[woman]" : curJAddr += 2 : Continue Do
|
||||
|
||||
|
||||
If (chrr And &H1000) Or OnlyCodes_Mode.Checked Then
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(CurFile, curJAddr + 2) = &H1106 And
|
||||
BitConverter.ToUInt16(CurFile, curJAddr + 4) = &H1101 And
|
||||
BitConverter.ToUInt16(CurFile, curJAddr + 6) = &H1103 Then jstr &= "[END]" : Exit Do
|
||||
|
||||
|
||||
If chrr = &H1103 Then jstr &= "[END311]" : Exit Do
|
||||
|
||||
If chrr = &H1101 And BitConverter.ToUInt16(CurFile, curJAddr + 2) = &H1103 Then Exit Do 'jstr &= "[end]" : Exit Do
|
||||
|
||||
If chrr = &H1120 Then jstr &= " " : curJAddr += 2 : Continue Do
|
||||
If chrr = &H1121 Then jstr &= " " : curJAddr += 2 : Continue Do
|
||||
|
||||
Dim c1 = CurFile(curJAddr) : Dim c2 = CurFile(curJAddr + 1)
|
||||
|
||||
Dim gg = c2 And 15
|
||||
If OnlyCodes_Mode.Checked Then
|
||||
|
||||
jstr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curJAddr += 2
|
||||
|
||||
Else
|
||||
For byteskip = 1 To gg
|
||||
jstr &= "[" & c1.ToString("X2") & c2.ToString("X2") & "]"
|
||||
curJAddr += 2
|
||||
c1 = CurFile(curJAddr) : c2 = CurFile(curJAddr + 1)
|
||||
Next
|
||||
End If
|
||||
|
||||
Continue Do
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'chrr = chrr And 255 : If chrr < 32 Then chrr += 32
|
||||
'jstr &= CurFile(curJAddr).ToString("X2") & CurFile(curJAddr + 1).ToString("X2")
|
||||
jstr &= Form1.chars(CurFile(curJAddr) + CurFile(curJAddr + 1) * 256)
|
||||
curJAddr += 2
|
||||
|
||||
Loop
|
||||
Myscr:
|
||||
DataGridView1.Rows.Add(a, jstr, estr, kstr)
|
||||
reader += 4 'shift offset addr
|
||||
engReader += 4
|
||||
Next
|
||||
OffsetsTableSize = BitConverter.ToInt32(JapFile, Offset.Text) * 4 + 4
|
||||
Dim lastJapStrOffs As Integer = BitConverter.ToInt32(JapFile, OffsetsTableSize + Offset.Text - 4) + Offset.Text
|
||||
'reading japan table limis
|
||||
reader = lastJapStrOffs
|
||||
Do
|
||||
If JapFile(reader) = 3 And JapFile(reader + 1) = &H11 Then
|
||||
TextSize = reader + 2 - Offset.Text - OffsetsTableSize
|
||||
MaximusSize = reader + 2 - Offset.Text
|
||||
Exit Do
|
||||
End If
|
||||
reader += 1
|
||||
Loop
|
||||
OffSz.Text = "Offset Table: " & OffsetsTableSize
|
||||
TxtSz.Text = "Text Size: " & TextSize
|
||||
Allsz.Text = "OverAll: " & MaximusSize
|
||||
End Sub
|
||||
|
||||
Public Function CompileLine(ByRef str As String)
|
||||
Dim bts = New List(Of Byte)
|
||||
|
||||
Dim c As Integer 'counter
|
||||
|
||||
If str.Length = 0 Then Return bts
|
||||
|
||||
'OLD JAP TEXT FORMAT
|
||||
If str(0) = "#" Then
|
||||
'xx += 1
|
||||
For xx = 1 To str.Length - 1
|
||||
bts.Add(Asc(str(xx)))
|
||||
bts.Add(0)
|
||||
|
||||
Next
|
||||
bts.Add(0)
|
||||
bts.Add(16) 'Close string
|
||||
Return bts
|
||||
End If
|
||||
|
||||
|
||||
|
||||
'NEW FORMAT
|
||||
For xx = 0 To str.Length - 1
|
||||
If str(xx) = "^" Then xx += 1
|
||||
|
||||
|
||||
|
||||
If str(xx) = "[" Then
|
||||
Dim skRes As String = getFromSkobki(str, xx)
|
||||
If skRes = "END" Then
|
||||
bts.AddRange({1, 17, 6, 17, 1, 17, 3, 17}) : Exit For
|
||||
End If
|
||||
|
||||
If skRes = "end" Then
|
||||
bts.AddRange({1, 17, 3, 17}) : Exit For
|
||||
End If
|
||||
|
||||
If skRes = "END311" Then
|
||||
bts.AddRange({3, 17}) : Exit For
|
||||
End If
|
||||
|
||||
|
||||
If skRes = "man" Then bts.AddRange({110, 9}) : Continue For
|
||||
If skRes = "woman" Then bts.AddRange({111, 9}) : Continue For
|
||||
|
||||
If skRes.Length = 4 Then
|
||||
bts.AddRange(SoapHexBinary.Parse(skRes).Value.ToList)
|
||||
End If
|
||||
Continue For
|
||||
End If
|
||||
|
||||
|
||||
Dim SimpleTextAccum = New List(Of Byte)
|
||||
Dim readCounter As Byte = 1
|
||||
|
||||
Do
|
||||
If xx = str.Length Then xx -= 1 : Exit Do
|
||||
If Asc(str(xx)) < 32 Or Asc(str(xx)) = 91 Then xx -= 1 : Exit Do
|
||||
SimpleTextAccum.Add(Asc(str(xx)))
|
||||
xx += 1
|
||||
Loop
|
||||
|
||||
'if 1 or 2 bytes
|
||||
If SimpleTextAccum.Count = 1 Then bts.AddRange({SimpleTextAccum(0), 0}) : Continue For
|
||||
If SimpleTextAccum.Count = 2 Then bts.AddRange({SimpleTextAccum(0), 0, SimpleTextAccum(1), 0}) : Continue For
|
||||
|
||||
|
||||
bts.Add(SimpleTextAccum.Count)
|
||||
bts.Add(&H20) 'command & length
|
||||
bts.AddRange(SimpleTextAccum) 'attach textline
|
||||
If SimpleTextAccum.Count And 1 Then bts.Add(0) ' if and 1 - add empty byte
|
||||
|
||||
|
||||
|
||||
Next
|
||||
|
||||
Return bts
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Sub SaveBtn_Click(sender As Object, e As EventArgs) Handles SaveBtn.Click
|
||||
Dim FinalArr = New List(Of Byte)
|
||||
For a = 0 To OffsetsTableSize - 1
|
||||
FinalArr.Add(CurFile(a + Offset.Text))
|
||||
Next
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
Dim isSimilar As Boolean = False
|
||||
Dim curIndx = DataGridView1.Rows.IndexOf(row)
|
||||
Dim curOffset As Integer = FinalArr.Count
|
||||
|
||||
'NEED TO SEARCH SIMILAR STRINGS!!! And MAKE INDEX without ADDING STRING!
|
||||
For xxx = 0 To curIndx - 1
|
||||
If DataGridView1.Rows(xxx).Cells(1).Value = row.Cells(1).Value Then
|
||||
isSimilar = True
|
||||
curOffset = BitConverter.ToInt32(FinalArr.ToArray, xxx * 4 + 4)
|
||||
Exit For
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
|
||||
Dim offsetAddr As Integer = curIndx * 4 + 4
|
||||
|
||||
FinalArr(offsetAddr) = BitConverter.GetBytes(curOffset)(0)
|
||||
FinalArr(offsetAddr + 1) = BitConverter.GetBytes(curOffset)(1)
|
||||
FinalArr(offsetAddr + 2) = BitConverter.GetBytes(curOffset)(2)
|
||||
|
||||
If isSimilar Then Continue For 'Similar String
|
||||
|
||||
Dim curStr = row.Cells(1).Value.ToString
|
||||
|
||||
|
||||
'TEXT ADDING PART
|
||||
|
||||
If curStr = "" Then Continue For
|
||||
|
||||
If LineModeSimple.Checked And curStr(0) <> "^" And curStr(0) <> "#" Then
|
||||
|
||||
FinalArr.AddRange({curStr.Length, &H20}) 'Length Of string
|
||||
For a = 0 To curStr.Length - 1
|
||||
FinalArr.Add(Asc(curStr(a)))
|
||||
Next
|
||||
If FinalArr.Count And 1 Then FinalArr.Add(0)
|
||||
Else
|
||||
FinalArr.AddRange(CompileLine(curStr))
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
'Saving & importing FIle
|
||||
If FinalArr.Count > MaximusSize Then MsgBox("SIZE EXCEED! " & FinalArr.Count) : Exit Sub
|
||||
For a = 0 To FinalArr.Count - 1
|
||||
CurFile(a + Offset.Text) = FinalArr(a)
|
||||
Next
|
||||
Dim cd = New ISOTools
|
||||
If RadioFile.Checked Then
|
||||
cd.saveCDfile(UserPath.Text, files1(FileID.Text).Sector, files1(FileID.Text).Sizw, CurFile)
|
||||
Else
|
||||
cd.saveCDfile(UserPath.Text, 27, 1812408, CurFile)
|
||||
End If
|
||||
|
||||
MsgBox("Succesfully Saved!", MsgBoxStyle.Information)
|
||||
'Dim filnam As String = "D:\Games\PSX\Persona.2.Innocent.Sin\Export\0063_SHOPS_CODE\EDITOR\TESTOUTPUT"
|
||||
'My.Computer.FileSystem.WriteAllBytes(filnam, FinalArr.ToArray, False)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub SaveSettings_Click(sender As Object, e As EventArgs) Handles SaveSettings.Click
|
||||
If SetName.Text.Count = 0 Then MsgBox("Enter name!") : Exit Sub
|
||||
Dim filnam As String = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\LINES_EDITOR\"
|
||||
If RadioFile.Checked Then filnam &= FileID.Text & "_" Else filnam &= "0000_"
|
||||
filnam &= Offset.Text & "_" & EngOffset.Text & "_" & SetName.Text & ".txt"
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filnam, SetName.Text, False)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadSettings_Click(sender As Object, e As EventArgs) Handles LoadSettings.Click
|
||||
|
||||
Form1.OpenFileDialog1.InitialDirectory = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\LINES_EDITOR\"
|
||||
If Form1.OpenFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
Dim fileInfo = Split(Path.GetFileNameWithoutExtension(Form1.OpenFileDialog1.FileName), "_")
|
||||
Dim Settings() = Split(My.Computer.FileSystem.ReadAllText(Form1.OpenFileDialog1.FileName), vbCrLf)
|
||||
SetName.Text = Settings(0)
|
||||
|
||||
If fileInfo(0) = "0000" Then
|
||||
RadioFile.Checked = False : RadioSector.Checked = True
|
||||
FileID.Text = fileInfo(0)
|
||||
Offset.Text = fileInfo(1)
|
||||
EngOffset.Text = fileInfo(2)
|
||||
|
||||
LoadBtn.PerformClick()
|
||||
Else
|
||||
RadioFile.Checked = True : RadioSector.Checked = False
|
||||
FileID.Text = fileInfo(0)
|
||||
Offset.Text = fileInfo(1)
|
||||
EngOffset.Text = fileInfo(2)
|
||||
|
||||
LoadBtn.PerformClick()
|
||||
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub CalcYourTextSize()
|
||||
Dim byteCount = 0
|
||||
|
||||
If LineModeSimple.Checked Then
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
|
||||
Dim rrr = row.Cells(1).Value
|
||||
If Not IsNothing(rrr) Then
|
||||
If rrr.ToString.Length = 0 Then Continue For
|
||||
|
||||
'if jap insert
|
||||
|
||||
If rrr(0) = "#" Then
|
||||
byteCount += (rrr.ToString.Length - 1) * 2 + 2
|
||||
Else
|
||||
byteCount += 2 + rrr.ToString.Length
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
If byteCount > TextSize Then
|
||||
YourTxtSz.ForeColor = Color.Red
|
||||
Else
|
||||
YourTxtSz.ForeColor = Color.Blue
|
||||
End If
|
||||
|
||||
If byteCount And 1 Then byteCount += 1
|
||||
|
||||
Else
|
||||
For Each row In DataGridView1.Rows
|
||||
Dim curIndx = DataGridView1.Rows.IndexOf(row)
|
||||
For xxx = 0 To curIndx - 1
|
||||
If DataGridView1.Rows(xxx).Cells(1).Value = row.Cells(1).Value Then GoTo simil
|
||||
Next
|
||||
Dim line As List(Of Byte) = CompileLine(row.Cells(1).Value.ToString) 'Check similar strings
|
||||
byteCount += line.Count
|
||||
|
||||
simil:
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
YourTxtSz.Text = "Your text sz: " & byteCount
|
||||
If byteCount > TextSize Then YourTxtSz.ForeColor = Color.Red Else YourTxtSz.ForeColor = Color.Blue
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function getFromSkobki(ByRef tx As String, ByRef x As Integer)
|
||||
|
||||
x = x + 1
|
||||
Dim accum = ""
|
||||
Do While tx(x) <> "]"
|
||||
accum &= tx(x)
|
||||
x += 1
|
||||
Loop
|
||||
Return accum
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
|
||||
CalcYourTextSize()
|
||||
End Sub
|
||||
|
||||
Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
|
||||
If LineModeComplex.Checked Then Exit Sub
|
||||
If DataGridView1.CurrentCell.ColumnIndex <> 1 Then Exit Sub
|
||||
Dim aaa = DataGridView1.CurrentCell
|
||||
If IsNothing(aaa.Value) Then Exit Sub
|
||||
Dim ddd = aaa.Value.ToString.Length
|
||||
CurLen.Text = "Cur. Len.: " & ddd
|
||||
If ddd > 19 Then CurLen.ForeColor = Color.Red Else CurLen.ForeColor = Color.Blue
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles tempSave.Click
|
||||
Dim filnam As String = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\LINES_EDITOR\TEMP_TEXT\"
|
||||
If RadioFile.Checked Then filnam &= FileID.Text & "_" Else filnam &= "0000_"
|
||||
filnam &= Offset.Text & "_" & SetName.Text & "_TEMP_TEXT.txt"
|
||||
|
||||
Dim txt As String = ""
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
Dim aaa = DataGridView1.CurrentCell
|
||||
If IsNothing(row.Cells(1).Value) Then MsgBox("Error reading tgable! Pleasem, resave!") : Exit Sub
|
||||
txt += row.Cells(1).Value.ToString & vbCrLf
|
||||
Next
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filnam, txt, False)
|
||||
End Sub
|
||||
|
||||
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles tempLoad.Click
|
||||
Form1.OpenFileDialog1.InitialDirectory = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\LINES_EDITOR\TEMP_TEXT\"
|
||||
If Form1.OpenFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub
|
||||
|
||||
Dim txt = Split(My.Computer.FileSystem.ReadAllText(Form1.OpenFileDialog1.FileName), vbCrLf)
|
||||
ReDim Preserve txt(DataGridView1.Rows.Count - 1)
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
|
||||
row.Cells(1).Value = txt(DataGridView1.Rows.IndexOf(row))
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub PatchFileBtn_Click(sender As Object, e As EventArgs) Handles PatchFileBtn.Click
|
||||
|
||||
|
||||
Dim cd = New ISOTools
|
||||
If Not IsNumeric(patchFileID.Text) Then MsgBox("FILE ID IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If Not IsNumeric(patchOffset.Text) Then MsgBox("FILE OFFSET IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
|
||||
Dim patchFile() As Byte
|
||||
If PatchFileRadio.Checked Then
|
||||
patchFile = cd.getCDfile(UserPath.Text, files1(patchFileID.Text).Sector, files1(patchFileID.Text).Sizw).ToArray
|
||||
Else
|
||||
patchFile = cd.getCDfile(UserPath.Text, 27, 1812408).ToArray
|
||||
End If
|
||||
|
||||
Dim test = BitConverter.ToInt32(patchFile, patchOffset.Text)
|
||||
|
||||
If test = 201474048 Then MsgBox("Already patched with 80090000! ;)", MsgBoxStyle.Information) : Exit Sub
|
||||
If test <> 201352384 Then MsgBox("Wrong 80019300 call!", MsgBoxStyle.Critical) : Exit Sub
|
||||
|
||||
patchFile(patchOffset.Text) = 0
|
||||
patchFile(patchOffset.Text + 1) = &H40
|
||||
patchFile(patchOffset.Text + 2) = 2
|
||||
patchFile(patchOffset.Text + 3) = &HC
|
||||
|
||||
If PatchFileRadio.Checked Then
|
||||
cd.saveCDfile(UserPath.Text, files1(patchFileID.Text).Sector, files1(patchFileID.Text).Sizw, patchFile)
|
||||
Else
|
||||
cd.saveCDfile(UserPath.Text, 27, 1812408, patchFile)
|
||||
End If
|
||||
MsgBox("Succesfull patched.", MsgBoxStyle.Information)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub ReplaceAll_Click(sender As Object, e As EventArgs) Handles ReplaceAll.Click
|
||||
If Not IsNumeric(patchFileID.Text) Then MsgBox("FILE ID IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
If Not IsNumeric(patchOffset.Text) Then MsgBox("FILE OFFSET IS NOT NUMERIC!", MsgBoxStyle.Critical) : Exit Sub
|
||||
Dim cd = New ISOTools
|
||||
Dim patchFile() As Byte
|
||||
If PatchFileRadio.Checked Then
|
||||
patchFile = cd.getCDfile(UserPath.Text, files1(FileID.Text).Sector, files1(FileID.Text).Sizw).ToArray
|
||||
Else
|
||||
patchFile = cd.getCDfile(UserPath.Text, 27, 1812408).ToArray
|
||||
End If
|
||||
|
||||
Dim overall = 0
|
||||
|
||||
For a = 0 To patchFile.Length - 1 Step 4
|
||||
|
||||
If a > 500000 Then Exit For 'don't touch my code and jumps if in main EXE
|
||||
|
||||
If BitConverter.ToInt32(patchFile, a) = 201353450 Then
|
||||
patchFile(a) = 0
|
||||
patchFile(a + 1) = &H40
|
||||
patchFile(a + 2) = 2
|
||||
patchFile(a + 3) = &HC
|
||||
overall += 1
|
||||
End If
|
||||
Next
|
||||
|
||||
If PatchFileRadio.Checked Then
|
||||
cd.saveCDfile(UserPath.Text, files1(FileID.Text).Sector, files1(FileID.Text).Sizw, patchFile)
|
||||
Else
|
||||
cd.saveCDfile(UserPath.Text, 27, 1812408, patchFile)
|
||||
End If
|
||||
|
||||
MsgBox("Patched " & overall & " text calls!", MsgBoxStyle.Information)
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub EngSave_Click(sender As Object, e As EventArgs) Handles EngSave.Click
|
||||
Dim filnam As String = "D:\Games\PSX\Persona 2 - Batsu (NTSC-J) [SLPS-02825]\Export\LINES_EDITOR\TEMP_TEXT\"
|
||||
If RadioFile.Checked Then filnam &= FileID.Text & "_" Else filnam &= "0000_"
|
||||
filnam &= Offset.Text & "_" & SetName.Text & "_ENG_TEXT.txt"
|
||||
|
||||
Dim txt As String = ""
|
||||
|
||||
For Each row In DataGridView1.Rows
|
||||
txt += row.Cells(2).Value.ToString & vbCrLf
|
||||
Next
|
||||
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filnam, txt, False)
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function Unkudos(ByRef Str As String)
|
||||
Str = Str.Replace("V", "л")
|
||||
Str = Str.Replace("v", "ф")
|
||||
Str = Str.Replace("D", "Д")
|
||||
Str = Str.Replace("h", "н")
|
||||
Str = Str.Replace("j", "у")
|
||||
Str = Str.Replace("w", "ж")
|
||||
Str = Str.Replace("W", "Ж")
|
||||
Str = Str.Replace("z", "ч")
|
||||
Str = Str.Replace("O", "Ф")
|
||||
Str = Str.Replace("t", "т")
|
||||
Str = Str.Replace("Y", "У")
|
||||
Str = Str.Replace("u", "ю")
|
||||
Str = Str.Replace("Q", "Э")
|
||||
Str = Str.Replace("q", "з")
|
||||
Str = Str.Replace("x", "б")
|
||||
Str = Str.Replace("m", "м")
|
||||
Str = Str.Replace("f", "г")
|
||||
Str = Str.Replace("y", "п")
|
||||
Str = Str.Replace("n", "и")
|
||||
Str = Str.Replace("N", "И")
|
||||
Str = Str.Replace("J", "П")
|
||||
Str = Str.Replace("Z", "Г")
|
||||
Str = Str.Replace("g", "ш")
|
||||
Str = Str.Replace("G", "Ш")
|
||||
Str = Str.Replace("b", "в")
|
||||
Str = Str.Replace("d", "д")
|
||||
Str = Str.Replace("-", "ч")
|
||||
Str = Str.Replace("S", "б")
|
||||
Str = Str.Replace("r", "я")
|
||||
Str = Str.Replace("s", "ы")
|
||||
Str = Str.Replace("&", "О")
|
||||
Str = Str.Replace("R", "Я")
|
||||
Str = Str.Replace("L", "л")
|
||||
Str = Str.Replace("l", "x")
|
||||
|
||||
Return Str
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/1
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/1
Normal file
Binary file not shown.
881
p2isPSX_CDToolkit/bin/Debug/FileDesc.txt
Normal file
881
p2isPSX_CDToolkit/bin/Debug/FileDesc.txt
Normal file
@@ -0,0 +1,881 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GRF_WILD9
|
||||
GRF_BJACK
|
||||
GRF_AROUS
|
||||
GRF_BINGO
|
||||
FONTS
|
||||
|
||||
TXTIN_COD
|
||||
|
||||
GRF_TATSU
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EVENTCODE
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GR_BTLSPR
|
||||
GRF_AVAS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EVENT_SPR
|
||||
EVENTPACK
|
||||
...
|
||||
...
|
||||
...
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.
|
||||
..
|
||||
...
|
||||
....
|
||||
LASTEVENT
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
GRF_FX
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GRF_FX
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GRFLASTFX
|
||||
GRFGAMOVR
|
||||
LittleFnt
|
||||
|
||||
|
||||
ExtraPack
|
||||
......
|
||||
.....
|
||||
....
|
||||
...
|
||||
..
|
||||
.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.
|
||||
..
|
||||
...
|
||||
....
|
||||
......
|
||||
LastExtra
|
||||
|
||||
|
||||
|
||||
|
||||
IntrFcTIM
|
||||
TitleCode
|
||||
TitleScrn
|
||||
|
||||
|
||||
BattlTxt?
|
||||
Gfx_Avata
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Gfx_Cards
|
||||
Gfx_Crds2
|
||||
Gfx_BGs
|
||||
Gfx_BGs2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CityPack1
|
||||
CityPack2
|
||||
CityPack3
|
||||
CityPack4
|
||||
CityPack5
|
||||
CityPack6
|
||||
CityPack7
|
||||
CityBGs
|
||||
|
||||
|
||||
|
||||
|
||||
City_HUD
|
||||
|
||||
|
||||
|
||||
EndGamePk
|
||||
|
||||
|
||||
R&DLogo
|
||||
Dung_HUD
|
||||
|
||||
Dung_TEXT
|
||||
Dung_CODE
|
||||
|
||||
|
||||
|
||||
|
||||
DungPack1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DngPkLast
|
||||
BattlMenu
|
||||
|
||||
|
||||
TxtBattl2
|
||||
TextBattl
|
||||
|
||||
|
||||
|
||||
GrfBattle
|
||||
GrfDemons
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PrsnSprts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MenuAvata
|
||||
PrsnaCard
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PrtySprts
|
||||
FX_SPR
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Vid_Intro
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/Free.Ports.libpng.dll
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/Free.Ports.libpng.dll
Normal file
Binary file not shown.
8
p2isPSX_CDToolkit/bin/Debug/Free.Ports.libpng.xml
Normal file
8
p2isPSX_CDToolkit/bin/Debug/Free.Ports.libpng.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Free.Ports.libpng</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/Free.Ports.zLib.dll
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/Free.Ports.zLib.dll
Normal file
Binary file not shown.
8
p2isPSX_CDToolkit/bin/Debug/Free.Ports.zLib.xml
Normal file
8
p2isPSX_CDToolkit/bin/Debug/Free.Ports.zLib.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Free.Ports.zLib</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/Zlib.Portable.dll
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/Zlib.Portable.dll
Normal file
Binary file not shown.
3430
p2isPSX_CDToolkit/bin/Debug/Zlib.Portable.xml
Normal file
3430
p2isPSX_CDToolkit/bin/Debug/Zlib.Portable.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.exe
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.exe
Normal file
Binary file not shown.
6
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.exe.config
Normal file
6
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.exe.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.pdb
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.pdb
Normal file
Binary file not shown.
26
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.xml
Normal file
26
p2isPSX_CDToolkit/bin/Debug/p2epPSX_CDToolkit.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>
|
||||
p2epPSX_CDToolkit
|
||||
</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:p2isPSX_CDView.My.Resources.Resources">
|
||||
<summary>
|
||||
Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.ResourceManager">
|
||||
<summary>
|
||||
Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.Culture">
|
||||
<summary>
|
||||
Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.exe
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.exe
Normal file
Binary file not shown.
6
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.exe.config
Normal file
6
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.exe.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.pdb
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.pdb
Normal file
Binary file not shown.
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.vshost.exe
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.vshost.exe
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
|
||||
</startup>
|
||||
</configuration>
|
||||
26
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.xml
Normal file
26
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDToolkit.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>
|
||||
p2isPSX_CDToolkit
|
||||
</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:p2isPSX_CDView.My.Resources.Resources">
|
||||
<summary>
|
||||
Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.ResourceManager">
|
||||
<summary>
|
||||
Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.Culture">
|
||||
<summary>
|
||||
Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
6
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDView.exe.config
Normal file
6
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDView.exe.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
|
||||
</startup>
|
||||
</configuration>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDView.vshost.exe
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/p2isPSX_CDView.vshost.exe
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
|
||||
</startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
</assembly>
|
||||
BIN
p2isPSX_CDToolkit/bin/Debug/unrle_.bin
Normal file
BIN
p2isPSX_CDToolkit/bin/Debug/unrle_.bin
Normal file
Binary file not shown.
26
p2isPSX_CDToolkit/bin/Debug/vs5988.tmp
Normal file
26
p2isPSX_CDToolkit/bin/Debug/vs5988.tmp
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>
|
||||
p2epPSX_CDToolkit
|
||||
</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:p2isPSX_CDView.My.Resources.Resources">
|
||||
<summary>
|
||||
Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.ResourceManager">
|
||||
<summary>
|
||||
Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.Culture">
|
||||
<summary>
|
||||
Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
75
p2isPSX_CDToolkit/convEventToObj.Designer.vb
generated
Normal file
75
p2isPSX_CDToolkit/convEventToObj.Designer.vb
generated
Normal file
@@ -0,0 +1,75 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class convEventToObj
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Форма переопределяет dispose для очистки списка компонентов.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Является обязательной для конструктора форм Windows Forms
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
|
||||
'Для ее изменения используйте конструктор форм Windows Form.
|
||||
'Не изменяйте ее в редакторе исходного кода.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.TextBox2 = New System.Windows.Forms.TextBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(164, 70)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(436, 232)
|
||||
Me.Button1.TabIndex = 0
|
||||
Me.Button1.Text = "COVERT TO OBJ"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.TextBox1.Location = New System.Drawing.Point(164, 44)
|
||||
Me.TextBox1.Name = "TextBox1"
|
||||
Me.TextBox1.Size = New System.Drawing.Size(100, 20)
|
||||
Me.TextBox1.TabIndex = 1
|
||||
Me.TextBox1.Text = "100"
|
||||
'
|
||||
'TextBox2
|
||||
'
|
||||
Me.TextBox2.Location = New System.Drawing.Point(383, 44)
|
||||
Me.TextBox2.Name = "TextBox2"
|
||||
Me.TextBox2.Size = New System.Drawing.Size(100, 20)
|
||||
Me.TextBox2.TabIndex = 1
|
||||
Me.TextBox2.Text = "110"
|
||||
'
|
||||
'convEventToObj
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(800, 450)
|
||||
Me.Controls.Add(Me.TextBox2)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.Name = "convEventToObj"
|
||||
Me.Text = "convEventToObj"
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents TextBox1 As TextBox
|
||||
Friend WithEvents TextBox2 As TextBox
|
||||
End Class
|
||||
120
p2isPSX_CDToolkit/convEventToObj.resx
Normal file
120
p2isPSX_CDToolkit/convEventToObj.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
317
p2isPSX_CDToolkit/convEventToObj.vb
Normal file
317
p2isPSX_CDToolkit/convEventToObj.vb
Normal file
@@ -0,0 +1,317 @@
|
||||
Imports System.IO
|
||||
|
||||
Public Class convEventToObj
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
|
||||
If Form1.CDFileList.SelectedIndex < 181 Or Form1.CDFileList.SelectedIndex > 577 Then MsgBox("PLEASE, SELECT PROPER SCENE FILE (181-577)!") : Exit Sub
|
||||
|
||||
Dim rle = New rleTools
|
||||
Dim texWidth As Integer
|
||||
|
||||
Dim fileName = "D:\Games\PSX\Persona.2.Innocent.Sin\Export3D\Scene" & Form1.CDFileList.SelectedIndex.ToString("D4")
|
||||
Dim matName = "Scene" & Form1.CDFileList.SelectedIndex.ToString("D4")
|
||||
'MAKING TEXTURE
|
||||
GenerateBigTexture(rle.Unrle(Form1.binFile(0).Bytes).ToArray, fileName, texWidth)
|
||||
createMaterial(matName, fileName)
|
||||
|
||||
'MAKING 3D
|
||||
Dim fil = rle.Unrle(Form1.binFile(1).Bytes).ToArray
|
||||
|
||||
|
||||
Dim objectsnum = BitConverter.ToInt16(fil, 16)
|
||||
Dim HZ = BitConverter.ToInt16(fil, 18)
|
||||
Dim CoordsAddr = BitConverter.ToInt32(fil, 20)
|
||||
Dim AdditionsAddr = BitConverter.ToInt32(fil, 24)
|
||||
Dim objects = New List(Of Obj3d)
|
||||
|
||||
|
||||
'init objects
|
||||
Dim ObjectsPointers = New List(Of Integer)
|
||||
For a = 0 To objectsnum - 1
|
||||
ObjectsPointers.Add(BitConverter.ToInt32(fil, 28 + a * 4))
|
||||
Next
|
||||
|
||||
'get all coords
|
||||
Dim coordsList = New List(Of Coord)
|
||||
For a = CoordsAddr To AdditionsAddr Step 8
|
||||
coordsList.Add(New Coord With {.X = BitConverter.ToInt16(fil, a), .Y = BitConverter.ToInt16(fil, a + 2) * -1, .Z = BitConverter.ToInt16(fil, a + 4) * -1})
|
||||
Next
|
||||
|
||||
|
||||
'resolve objects
|
||||
For a = 0 To objectsnum - 1
|
||||
Dim obj = New Obj3d
|
||||
Dim readAddr = ObjectsPointers(a)
|
||||
obj.commandNum = BitConverter.ToInt16(fil, readAddr)
|
||||
obj.id = BitConverter.ToInt32(fil, readAddr + 4)
|
||||
readAddr += 8 ' Moving to ChunkData
|
||||
|
||||
For x = 0 To obj.commandNum - 1 'Creating chunks
|
||||
obj.chunksAddr.Add(readAddr)
|
||||
Dim chunkLength = fil(readAddr + 1) * 4
|
||||
Dim draftChunk(chunkLength - 1) As Byte
|
||||
readAddr += 4
|
||||
Array.Copy(fil, readAddr, draftChunk, 0, chunkLength)
|
||||
obj.chunks.Add(draftChunk)
|
||||
readAddr += chunkLength
|
||||
|
||||
'Getting Coords
|
||||
Dim poly As New Poly
|
||||
poly.command = draftChunk(7)
|
||||
poly.vertNum = 0
|
||||
poly.Shading = Color.FromArgb(draftChunk(4), draftChunk(5), draftChunk(6))
|
||||
|
||||
Select Case poly.command
|
||||
Case &H20, &H22, &H24, &H25, &H26, &H27, &H30, &H32, &H34, &H36
|
||||
poly.vertNum = 3
|
||||
Case &H28, &H2A, &H2C, &H2D, &H2E, &H2F, &H38, &H3A, &H3C, &H3E
|
||||
poly.vertNum = 4
|
||||
|
||||
Case Else
|
||||
Debug.WriteLine("UNKNOWN COMMAND! " & poly.command & ". Object " & a & ". ChunkAddr " & obj.chunksAddr.Last & ". ")
|
||||
End Select
|
||||
|
||||
'calc Texture Position
|
||||
Select Case poly.command
|
||||
Case &H2C, &H2D, &H2E, &H3C, &H3E
|
||||
Dim TexPage = (draftChunk(22) And 127) - 26
|
||||
|
||||
Dim Cind1 = 12 : Dim Cind2 = 20 : Dim Cind3 = 28 : Dim Cind4 = 36
|
||||
|
||||
If poly.command = &H3C Or poly.command = &H3E Then
|
||||
Cind2 = 24 : Cind3 = 36 : Cind4 = 48 : TexPage = (draftChunk(26) And 127) - 26
|
||||
End If
|
||||
|
||||
poly.textureVertexs.add(New TexCoord With {.X = (draftChunk(Cind1) - 1 + TexPage * 128) / texWidth, .Y = 1 - draftChunk(Cind1 + 1) / 256})
|
||||
poly.textureVertexs.add(New TexCoord With {.X = (draftChunk(Cind2) - 1 + TexPage * 128) / texWidth, .Y = 1 - draftChunk(Cind2 + 1) / 256})
|
||||
|
||||
poly.textureVertexs.add(New TexCoord With {.X = (draftChunk(Cind3) - 1 + TexPage * 128) / texWidth, .Y = 1 - draftChunk(Cind3 + 1) / 256})
|
||||
poly.textureVertexs.add(New TexCoord With {.X = (draftChunk(Cind4) - 1 + TexPage * 128) / texWidth, .Y = 1 - draftChunk(Cind4 + 1) / 256})
|
||||
|
||||
|
||||
End Select
|
||||
|
||||
|
||||
' Dim bbb As Boolean = BitConverter.ToInt16(draftChunk, UBound(draftChunk) - 1) > coordsList.Count - 1
|
||||
|
||||
Dim coord1 As Coord = coordsList(BitConverter.ToInt16(draftChunk, UBound(draftChunk) - 7))
|
||||
Dim coord2 As Coord = coordsList(BitConverter.ToInt16(draftChunk, UBound(draftChunk) - 5))
|
||||
Dim coord3 As Coord = coordsList(BitConverter.ToInt16(draftChunk, UBound(draftChunk) - 3))
|
||||
Dim coord4 = New Coord
|
||||
If poly.vertNum = 4 Then
|
||||
coord4 = coordsList(BitConverter.ToInt16(draftChunk, UBound(draftChunk) - 1))
|
||||
poly.coords.AddRange({coord1, coord2, coord3, coord4})
|
||||
ElseIf poly.vertNum = 3 Then
|
||||
poly.coords.AddRange({coord1, coord2, coord3})
|
||||
End If
|
||||
|
||||
|
||||
|
||||
obj.Polys.Add(poly)
|
||||
|
||||
Next
|
||||
|
||||
|
||||
|
||||
objects.Add(obj)
|
||||
Next
|
||||
|
||||
Dim objfile As String
|
||||
|
||||
objfile = "#PERSONA 2 IS SCENE EXPORT /// SERGEY SHEMET" & vbCrLf & "mtllib " & matName & ".mtl" & vbCrLf & vbCrLf
|
||||
My.Computer.FileSystem.WriteAllText(fileName & ".obj", objfile, False)
|
||||
Dim vertexcount = 1
|
||||
Dim texturvertexCount = 1
|
||||
|
||||
For zzz = 0 To objects.Count - 1
|
||||
|
||||
Debug.WriteLine("Current object " & zzz + 1 & "\" & objects.Count)
|
||||
|
||||
Dim verts = ""
|
||||
Dim surfs = ""
|
||||
objfile = vbCrLf & vbCrLf & "o Huynya_" & zzz & vbCrLf & vbCrLf
|
||||
|
||||
Dim vrtsStrList = New List(Of String)
|
||||
Dim surfsStrList = New List(Of String)
|
||||
Dim verTexturList = New List(Of String)
|
||||
|
||||
'verTexturList.AddRange({"vt 0.00 0.00", "vt 1.00 0.00", "vt 1.00 1.00", "vt 0.00 1.00"})
|
||||
|
||||
Dim curobj As Obj3d = objects(zzz)
|
||||
|
||||
For a = 0 To curobj.Polys.Count - 1
|
||||
|
||||
For Each pol In curobj.Polys
|
||||
|
||||
For Each crd In pol.coords
|
||||
|
||||
|
||||
Dim X As Decimal = crd.X / 100
|
||||
Dim Y As Decimal = crd.Y / 100
|
||||
Dim Z As Decimal = crd.Z / 100
|
||||
|
||||
vrtsStrList.Add("v " & X.ToString("F5", Globalization.CultureInfo.InvariantCulture) & " " &
|
||||
Y.ToString("F5", Globalization.CultureInfo.InvariantCulture) & " " &
|
||||
Z.ToString("F5", Globalization.CultureInfo.InvariantCulture))
|
||||
Next
|
||||
|
||||
For Each texCoord In pol.textureVertexs
|
||||
Dim X As Decimal = texCoord.X
|
||||
'Dim X As Decimal = 1 - texCoord.X
|
||||
Dim Y As Decimal = texCoord.Y
|
||||
verTexturList.Add("vt " & X.ToString("F5", Globalization.CultureInfo.InvariantCulture) &
|
||||
" " & Y.ToString("F5", Globalization.CultureInfo.InvariantCulture))
|
||||
|
||||
|
||||
Next
|
||||
|
||||
|
||||
If pol.coords.Count = 4 Then
|
||||
If pol.texturevertexs.Count = 4 Then
|
||||
surfsStrList.Add("f " & vertexcount & "/" & texturvertexCount & " " &
|
||||
vertexcount + 1 & "/" & texturvertexCount + 1 & " " &
|
||||
vertexcount + 3 & "/" & texturvertexCount + 3 & " " &
|
||||
vertexcount + 2 & "/" & texturvertexCount + 2)
|
||||
Else
|
||||
surfsStrList.Add("f " & vertexcount & " " & vertexcount + 1 & " " & vertexcount + 3 & " " & vertexcount + 2)
|
||||
End If
|
||||
|
||||
End If
|
||||
If pol.coords.Count = 3 Then
|
||||
surfsStrList.Add("f " & vertexcount & " " & vertexcount + 2 & " " & vertexcount +1)
|
||||
End If
|
||||
|
||||
vertexcount += pol.coords.Count
|
||||
texturvertexCount += pol.texturevertexs.Count
|
||||
|
||||
Next
|
||||
|
||||
Next
|
||||
|
||||
Dim file As System.IO.StreamWriter
|
||||
file = My.Computer.FileSystem.OpenTextFileWriter(fileName & ".obj", True)
|
||||
|
||||
|
||||
file.WriteLine(objfile, True)
|
||||
|
||||
'objfile &= verts & vbCrLf
|
||||
For Each vvv In vrtsStrList
|
||||
file.WriteLine(vvv, True)
|
||||
Next
|
||||
|
||||
For Each vt In verTexturList
|
||||
file.WriteLine(vt, True)
|
||||
Next
|
||||
|
||||
objfile = vbCrLf & "usemtl " & matName & vbCrLf & "s off" & vbCrLf & vbCrLf
|
||||
file.WriteLine(objfile, True)
|
||||
|
||||
For Each sss In surfsStrList
|
||||
file.WriteLine(sss, True)
|
||||
Next
|
||||
|
||||
file.Close()
|
||||
|
||||
'If zzz = 3 Then Exit For
|
||||
Next
|
||||
|
||||
|
||||
MsgBox("DINE")
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub GenerateBigTexture(ByRef fil As Byte(), ByVal filnam As String, ByRef texwidth As Integer)
|
||||
|
||||
Dim textureCount = BitConverter.ToInt32(fil, 0)
|
||||
Dim cluts = New List(Of List(Of Byte))
|
||||
Dim Pics = New List(Of List(Of Byte))
|
||||
|
||||
Dim clutsOffs = New List(Of Integer)
|
||||
Dim picsOffs = New List(Of Integer)
|
||||
|
||||
Dim TxOffsets = New List(Of Integer)
|
||||
|
||||
For a = 0 To textureCount - 1 Step 2
|
||||
clutsOffs.Add(BitConverter.ToInt32(fil, a * 4 + 4))
|
||||
picsOffs.Add(BitConverter.ToInt32(fil, a * 4 + 8))
|
||||
Next
|
||||
|
||||
For Each clut In clutsOffs
|
||||
Dim cur = clutsOffs.IndexOf(clut)
|
||||
|
||||
Dim cltData(539) As Byte
|
||||
Dim picData(16391) As Byte
|
||||
Array.Copy(fil, clut, cltData, 0, 540)
|
||||
Array.Copy(fil, picsOffs(cur), picData, 0, 16392)
|
||||
Dim cl = New List(Of Byte) : cl.AddRange(cltData.ToList) : cluts.Add(cl)
|
||||
Dim pc = New List(Of Byte) : pc.AddRange(picData.ToList) : Pics.Add(pc)
|
||||
|
||||
Next
|
||||
|
||||
Dim png = New pngImage
|
||||
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(filnam & ".png", png.makeBigTexturePng(cluts, Pics).ToArray, False)
|
||||
|
||||
texwidth = picsOffs.Count * 64
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub createMaterial(ByVal matName As String, ByVal filnam As String)
|
||||
|
||||
|
||||
Dim mtl = "#Sergey Shemet Persona2 Material" & vbCrLf & vbCrLf
|
||||
|
||||
mtl &= "newmtl " & matName & vbCrLf
|
||||
mtl &= "Ns 250.000000" & vbCrLf
|
||||
mtl &= "Ka 1.000000 1.000000 1.000000" & vbCrLf
|
||||
mtl &= "Kd 0.100061 0.195986 0.082515" & vbCrLf
|
||||
mtl &= "Ks 0.500000 0.500000 0.500000" & vbCrLf
|
||||
mtl &= "Ke 0.000000 0.000000 0.000000" & vbCrLf
|
||||
mtl &= "Ni 1.450000" & vbCrLf
|
||||
mtl &= "d 1.000000" & vbCrLf
|
||||
mtl &= "illum 0.5" & vbCrLf
|
||||
mtl &= "map_Kd " & matName & ".png" & vbCrLf
|
||||
|
||||
My.Computer.FileSystem.WriteAllText(filnam & ".mtl", mtl, False)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
|
||||
|
||||
Public Class Obj3d
|
||||
|
||||
Public id As Integer
|
||||
Public commandNum As Integer
|
||||
Public chunks = New List(Of Byte())
|
||||
Public chunksAddr = New List(Of Integer)
|
||||
Public Polys = New List(Of Poly)
|
||||
|
||||
End Class
|
||||
|
||||
Public Class Poly
|
||||
Public coords = New List(Of Coord)
|
||||
Public vertNum As Byte
|
||||
Public Shading As Color
|
||||
Public command As Byte
|
||||
|
||||
Public textureVertexs = New List(Of TexCoord)
|
||||
|
||||
End Class
|
||||
|
||||
Public Class Coord
|
||||
Public X As Integer
|
||||
Public Y As Integer
|
||||
Public Z As Integer
|
||||
End Class
|
||||
|
||||
Public Class TexCoord
|
||||
Public X As Decimal
|
||||
Public Y As Decimal
|
||||
End Class
|
||||
@@ -0,0 +1,7 @@
|
||||
' <autogenerated/>
|
||||
Option Strict Off
|
||||
Option Explicit On
|
||||
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
<Assembly: Global.System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.1", FrameworkDisplayName:=".NET Framework 4.6.1")>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.exe
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.exe
Normal file
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.pdb
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.pdb
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
1ed733f7ef716e1628c8bd5501a6d0e2fc0850cebfdbf100c59affa0e885c14a
|
||||
@@ -0,0 +1,26 @@
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2epPSX_CDToolkit.exe.config
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2epPSX_CDToolkit.exe
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2epPSX_CDToolkit.pdb
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2epPSX_CDToolkit.xml
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.libpng.dll
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.zLib.dll
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Zlib.Portable.dll
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.libpng.xml
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.zLib.xml
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Zlib.Portable.xml
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.convEventToObj.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.DungeonEditor.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.Form1.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.Resources.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.ScriptCheck.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.StringsOffsetEditorvb.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.vbproj.GenerateResource.cache
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.vbproj.CoreCompileInputs.cache
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.exe
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.xml
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.pdb
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.JapCharCodeGenerator.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.ScriptParserWin.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.CityEditor.resources
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_CDToolkit.vbproj.AssemblyReference.cache
|
||||
C:\Users\Sergey\source\repos\p2epPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2epPSX_.D2426659.Up2Date
|
||||
Binary file not shown.
26
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.xml
Normal file
26
p2isPSX_CDToolkit/obj/Debug/p2epPSX_CDToolkit.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>
|
||||
p2epPSX_CDToolkit
|
||||
</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:p2isPSX_CDView.My.Resources.Resources">
|
||||
<summary>
|
||||
Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.ResourceManager">
|
||||
<summary>
|
||||
Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.Culture">
|
||||
<summary>
|
||||
Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.exe
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.exe
Normal file
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.pdb
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.pdb
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
326aa845c4bb0ba74cb72caca3fa7317da39d30e
|
||||
@@ -0,0 +1,24 @@
|
||||
C:\Users\ShemetSA.RADIO\Documents\Visual Studio 2015\Projects\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2isPSX_CDToolkit.exe.config
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2isPSX_CDToolkit.exe.config
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2isPSX_CDToolkit.exe
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2isPSX_CDToolkit.pdb
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\p2isPSX_CDToolkit.xml
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.vbprojAssemblyReference.cache
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.Form1.resources
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.Resources.resources
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.vbproj.GenerateResource.cache
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.vbproj.CoreCompileInputs.cache
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.exe
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.xml
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.pdb
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.ScriptCheck.resources
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Zlib.Portable.dll
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Zlib.Portable.xml
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDToolkit.vbproj.CopyComplete
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.StringsOffsetEditorvb.resources
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.DungeonEditor.resources
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.libpng.dll
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.zLib.dll
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.libpng.xml
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\bin\Debug\Free.Ports.zLib.xml
|
||||
C:\Users\Sergey\source\repos\p2isPSX_CDToolkit\p2isPSX_CDToolkit\obj\Debug\p2isPSX_CDView.convEventToObj.resources
|
||||
Binary file not shown.
Binary file not shown.
26
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.xml
Normal file
26
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDToolkit.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>
|
||||
p2isPSX_CDToolkit
|
||||
</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:p2isPSX_CDView.My.Resources.Resources">
|
||||
<summary>
|
||||
Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.ResourceManager">
|
||||
<summary>
|
||||
Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:p2isPSX_CDView.My.Resources.Resources.Culture">
|
||||
<summary>
|
||||
Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||
обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.CityEditor.resources
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.CityEditor.resources
Normal file
Binary file not shown.
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.Form1.resources
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.Form1.resources
Normal file
Binary file not shown.
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.Resources.resources
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.Resources.resources
Normal file
Binary file not shown.
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.ScriptCheck.resources
Normal file
BIN
p2isPSX_CDToolkit/obj/Debug/p2isPSX_CDView.ScriptCheck.resources
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
C:\Users\ShemetSA.RADIO\AppData\Local\Temporary Projects\p2isPSX_CDView\bin\Debug\p2isPSX_CDView.exe.config
|
||||
214
p2isPSX_CDToolkit/p2epPSX_CDToolkit.vbproj
Normal file
214
p2isPSX_CDToolkit/p2epPSX_CDToolkit.vbproj
Normal file
@@ -0,0 +1,214 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{E92973F5-DC31-4C53-B473-A203A0E6AA29}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<StartupObject>p2isPSX_CDView.My.MyApplication</StartupObject>
|
||||
<RootNamespace>p2isPSX_CDView</RootNamespace>
|
||||
<AssemblyName>p2epPSX_CDToolkit</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>WindowsForms</MyType>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>p2epPSX_CDToolkit.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>p2epPSX_CDToolkit.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Free.Ports.libpng, Version=1.4.3.0, Culture=neutral, PublicKeyToken=7d9de98de58c9d35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\LibPngPort.0.3.1\lib\net45\Free.Ports.libpng.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Free.Ports.zLib, Version=1.2.5.0, Culture=neutral, PublicKeyToken=7d9de98de58c9d35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\LibPngPort.0.3.1\lib\net45\Free.Ports.zLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="Zlib.Portable, Version=1.11.0.0, Culture=neutral, PublicKeyToken=431cba815f6a8b5b, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Drawing" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Windows.Forms" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Additions.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="convEventToObj.Designer.vb">
|
||||
<DependentUpon>convEventToObj.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="convEventToObj.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CityEditor.Designer.vb">
|
||||
<DependentUpon>CityEditor.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CityEditor.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DungeonEditor.Designer.vb">
|
||||
<DependentUpon>DungeonEditor.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DungeonEditor.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FontTools.vb" />
|
||||
<Compile Include="Form1.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.vb">
|
||||
<DependentUpon>Form1.vb</DependentUpon>
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form2.designer.vb">
|
||||
<DependentUpon>Form2.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Form2.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ISOTools.vb" />
|
||||
<Compile Include="JapCharCodeGenerator.Designer.vb">
|
||||
<DependentUpon>JapCharCodeGenerator.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="JapCharCodeGenerator.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="JapChars.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="pngImage.vb" />
|
||||
<Compile Include="rleTools.vb" />
|
||||
<Compile Include="ScriptCheck.Designer.vb">
|
||||
<DependentUpon>ScriptCheck.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ScriptCheck.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ScriptTools.vb" />
|
||||
<Compile Include="StringsOffsetEditorvb.Designer.vb">
|
||||
<DependentUpon>StringsOffsetEditorvb.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="StringsOffsetEditorvb.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="convEventToObj.resx">
|
||||
<DependentUpon>convEventToObj.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CityEditor.resx">
|
||||
<DependentUpon>CityEditor.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="DungeonEditor.resx">
|
||||
<DependentUpon>DungeonEditor.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Form2.resx">
|
||||
<DependentUpon>Form2.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="JapCharCodeGenerator.resx">
|
||||
<DependentUpon>JapCharCodeGenerator.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ScriptCheck.resx">
|
||||
<DependentUpon>ScriptCheck.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="StringsOffsetEditorvb.resx">
|
||||
<DependentUpon>StringsOffsetEditorvb.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
3
p2isPSX_CDToolkit/p2epPSX_CDToolkit.vbproj.user
Normal file
3
p2isPSX_CDToolkit/p2epPSX_CDToolkit.vbproj.user
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
</Project>
|
||||
5
p2isPSX_CDToolkit/packages.config
Normal file
5
p2isPSX_CDToolkit/packages.config
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="LibPngPort" version="0.3.1" targetFramework="net461" />
|
||||
<package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net461" />
|
||||
</packages>
|
||||
535
p2isPSX_CDToolkit/pngImage.vb
Normal file
535
p2isPSX_CDToolkit/pngImage.vb
Normal file
@@ -0,0 +1,535 @@
|
||||
Imports Ionic
|
||||
Imports Free.Ports.libpng
|
||||
Imports System.IO
|
||||
Imports System.IO.Compression
|
||||
Imports Microsoft.VisualBasic.VBMath
|
||||
|
||||
Public Class pngImage
|
||||
Public MagicWord = {137, 80, 78, 71, 13, 10, 26, 10}
|
||||
Public Width As Integer
|
||||
Public Heigth As Integer
|
||||
Public bit As Byte
|
||||
Public colors As Integer
|
||||
Public Palette = New List(Of Byte)
|
||||
Public Transp = New List(Of Byte)
|
||||
Public imageDATA = New List(Of Byte)
|
||||
Public Chunks As List(Of Chunk)
|
||||
Public IMG As Bitmap
|
||||
|
||||
Public Sub New()
|
||||
Chunks = New List(Of Chunk)
|
||||
End Sub
|
||||
|
||||
Public Sub InitBitMap(ByVal path As String)
|
||||
|
||||
|
||||
|
||||
IMG = Image.FromFile(path)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function makeBigTexturePng(ByRef cluts As List(Of List(Of Byte)), ByRef pics As List(Of List(Of Byte)))
|
||||
|
||||
Dim bigWidth = 64 * pics.Count
|
||||
|
||||
Dim ch = New Chunk With {.Type = "IHDR", .Size = 13}
|
||||
'Making header
|
||||
ch.Data.AddRange(BitConverter.GetBytes(bigWidth).Reverse)
|
||||
ch.Data.AddRange(BitConverter.GetBytes(256).Reverse)
|
||||
ch.Data.Add(8) '8 Bit bits per channel
|
||||
ch.Data.Add(2) 'Or 6 with alpha 'Color Type - RGB Mode (24bit) if 16bit
|
||||
ch.Data.Add(0) 'Compression (zlib)
|
||||
ch.Data.Add(0) 'Filter?
|
||||
ch.Data.Add(0) 'Interlace?
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "tRNS"} : ch.Data.Add(0) : Chunks.Add(ch) 'First Color is transparent
|
||||
|
||||
|
||||
ch = New Chunk With {.Type = "IDAT"}
|
||||
'Adding Image data
|
||||
|
||||
''Image loop here
|
||||
Dim img = New List(Of Byte)
|
||||
|
||||
|
||||
|
||||
For x = 0 To 255
|
||||
img.Add(0)
|
||||
For y = 0 To pics.Count - 1
|
||||
For z = 0 To 63
|
||||
Dim curPicIndex = x * 64 + z + 8 'PIC LINE * WIDTH + CURRENT PIX IN LINE + 8(INIT BYTES)
|
||||
Dim curCol = GetColFrom1555List(cluts(y), pics(y)(curPicIndex))
|
||||
img.AddRange({curCol(0), curCol(1), curCol(2)})
|
||||
Next
|
||||
Next
|
||||
Next
|
||||
|
||||
|
||||
Dim dstream = Zlib.ZlibStream.CompressBuffer(img.ToArray)
|
||||
ch.Data = dstream.ToList
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "IEND", .Size = 0}
|
||||
Chunks.Add(ch)
|
||||
|
||||
|
||||
Return (GenerateFile()) 'Return file to mainWindow
|
||||
End Function
|
||||
|
||||
Public Function GetColFrom1555List(ByRef bytes As List(Of Byte), ByVal ind As Integer)
|
||||
ind = ind * 2 + 8
|
||||
If ind > bytes.Count - 1 Then Return {0, 0, 0}
|
||||
|
||||
Dim col As Integer = (bytes(ind)) + CInt(bytes(ind + 1)) * 256
|
||||
Dim a = col And &H8000 >> 15, b = ((col And &H7C00) >> 10) * 8, g = ((col And &H3E0) >> 5) * 8, r = (col And &H1F) * 8
|
||||
Return {r, g, b}
|
||||
End Function
|
||||
|
||||
Public Function NewPng(ByRef pic As rleFile, ByRef clut As rleFile)
|
||||
|
||||
'Need to deconctruct and construct palettes and imagedata here
|
||||
|
||||
'need to set correct x&y
|
||||
If Form1.CurrentImgMode = 16 Then
|
||||
Width = pic.w
|
||||
|
||||
ElseIf clut.w = 16 Or Form1.Force4bit.Checked Then
|
||||
Width = pic.w * 4
|
||||
Else
|
||||
If clut.w = 256 Then Width = pic.w * 2 Else Width = pic.w
|
||||
End If
|
||||
|
||||
Heigth = pic.h
|
||||
|
||||
|
||||
GeneratePngChunks(pic, clut)
|
||||
Return (GenerateFile()) 'Return file to mainWindow
|
||||
End Function
|
||||
|
||||
|
||||
Public Sub GeneratePngChunks(ByRef pic As rleFile, ByRef clut As rleFile)
|
||||
|
||||
|
||||
|
||||
|
||||
Dim ch = New Chunk With {.Type = "IHDR", .Size = 13}
|
||||
'Making header
|
||||
ch.Data.AddRange(BitConverter.GetBytes(Width).Reverse)
|
||||
ch.Data.AddRange(BitConverter.GetBytes(Heigth).Reverse)
|
||||
If Form1.CurrentImgMode <> 16 Then
|
||||
ch.Data.Add(8) '8 Bit Depth in palette
|
||||
ch.Data.Add(3) 'Color Type - Indexed Colors 'If CLUT exists first!
|
||||
Else
|
||||
ch.Data.Add(8) '8 Bit bits per channel
|
||||
ch.Data.Add(2) 'Or 6 with alpha 'Color Type - RGB Mode (24bit) if 16bit
|
||||
End If
|
||||
|
||||
ch.Data.Add(0) 'Compression (zlib)
|
||||
ch.Data.Add(0) 'Filter?
|
||||
ch.Data.Add(0) 'Interlace?
|
||||
|
||||
|
||||
'not 16bit
|
||||
If Form1.CurrentImgMode <> 16 Then
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "PLTE"}
|
||||
'Making Palette
|
||||
ch.Data.AddRange(MakeCLUTList(clut))
|
||||
|
||||
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "tRNS"}
|
||||
'Making Trans
|
||||
If Form1.alpha0.Checked Then ch.Data.Add(0) 'First Color is transparent
|
||||
End If
|
||||
|
||||
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "IDAT"}
|
||||
'Adding Image data
|
||||
|
||||
|
||||
|
||||
Dim rle = New rleTools
|
||||
Dim picdata As Byte()
|
||||
If pic.Compr > 0 Then
|
||||
picdata = rle.Unrle2(pic.Bytes).ToArray
|
||||
Else
|
||||
Dim piclist = pic.Bytes.ToList
|
||||
piclist.RemoveRange(0, 16)
|
||||
picdata = piclist.ToArray
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Dim img = New List(Of Byte)
|
||||
|
||||
If Form1.Force4bit.Checked Then GoTo force4bit 'force 4 bit
|
||||
|
||||
If Form1.CurrentImgMode = 16 Then 'True color
|
||||
Dim piccc() = picdata.ToArray
|
||||
Dim reader = 0, x = 0
|
||||
img.Add(0) 'Fucking filter byte
|
||||
|
||||
'16bit_PNG_export
|
||||
Do
|
||||
If x = Width Then x = 0 : img.Add(0) 'Fucking filter byte
|
||||
Dim curCol = GetColFrom1555(piccc, reader)
|
||||
img.AddRange({curCol(0), curCol(1), curCol(2)})
|
||||
reader += 2
|
||||
x += 1
|
||||
If reader >= picdata.Count Then Exit Do
|
||||
|
||||
Loop
|
||||
|
||||
|
||||
|
||||
Else
|
||||
'other export
|
||||
|
||||
|
||||
Select Case clut.w
|
||||
Case 16
|
||||
'4bit mode
|
||||
force4bit:
|
||||
|
||||
For y = 0 To Heigth - 1
|
||||
img.Add(0) 'Fucking filter byte
|
||||
For x = 0 To Width / 2 - 1
|
||||
Dim fs = picdata(y * Width / 2 + x) 'Width/2 = Bytes in pic line
|
||||
Dim lp = fs And &HF 'get left byte
|
||||
Dim rp = (fs And &HF0) >> 4 'get right byte
|
||||
img.Add(lp)
|
||||
img.Add(rp)
|
||||
Next
|
||||
Next
|
||||
|
||||
Case 256
|
||||
'8bit mode
|
||||
For y = 0 To Heigth - 1
|
||||
img.Add(0) 'Fucking filter byte
|
||||
For x = 0 To Width - 1
|
||||
Dim fs = picdata(y * Width + x)
|
||||
img.Add(fs)
|
||||
Next
|
||||
Next
|
||||
End Select
|
||||
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Dim dstream = Zlib.ZlibStream.CompressBuffer(img.ToArray)
|
||||
|
||||
ch.Data = dstream.ToList
|
||||
|
||||
|
||||
|
||||
Chunks.Add(ch)
|
||||
ch = New Chunk With {.Type = "IEND", .Size = 0}
|
||||
Chunks.Add(ch)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function GenerateFile()
|
||||
|
||||
Dim file = New List(Of Byte)
|
||||
For Each a In MagicWord
|
||||
file.Add(a)
|
||||
Next
|
||||
|
||||
|
||||
|
||||
For Each ch As Chunk In Chunks
|
||||
Dim tempChunk = New List(Of Byte)
|
||||
ch.Size = ch.Data.Count
|
||||
file.AddRange(BitConverter.GetBytes(ch.Size).Reverse) 'Size of chunk Not Included in CRC
|
||||
|
||||
For chChar = 0 To 3 : tempChunk.Add(Asc(ch.Type(chChar))) : Next 'AddingChunkName
|
||||
tempChunk.AddRange(ch.Data)
|
||||
|
||||
Dim CRC = New Ionic.Crc.CRC32()
|
||||
CRC.SlurpBlock(tempChunk.ToArray, 0, tempChunk.Count) 'CRC CALCULATES HERE!
|
||||
file.AddRange(tempChunk)
|
||||
file.AddRange(BitConverter.GetBytes(CRC.Crc32Result).Reverse)
|
||||
|
||||
Next
|
||||
|
||||
|
||||
Return file
|
||||
End Function
|
||||
|
||||
Public Function MakeCLUTList(ByRef nx As rleFile)
|
||||
|
||||
Dim a = New List(Of Byte)
|
||||
Dim rle As New rleTools
|
||||
Dim unrl() As Byte
|
||||
|
||||
Select Case nx.Compr
|
||||
Case 0
|
||||
unrl = rle.UnrleNocompr(nx.Bytes).ToArray
|
||||
Case 1
|
||||
unrl = rle.Unrle2(nx.Bytes).ToArray 'Image
|
||||
Case Else
|
||||
unrl = rle.Unrle(nx.Bytes).ToArray 'data
|
||||
End Select
|
||||
|
||||
|
||||
|
||||
'4bit mode
|
||||
If nx.w = 16 Or Form1.Force4bit.Checked Then
|
||||
For x = 0 To 15
|
||||
Dim b As Integer() = GetColFrom1555(unrl, Form1.CLUTid.Value * 32 + x * 2)
|
||||
a.Add(b(0)) : a.Add(b(1)) : a.Add(b(2))
|
||||
Next
|
||||
Return a
|
||||
End If
|
||||
|
||||
|
||||
If nx.w = 256 Then
|
||||
For x = 0 To 255
|
||||
'a.Add(GetColFrom1555(nx.Bytes, 16 + CLUTid.Value * 256 + x * 2))
|
||||
Dim b As Integer() = GetColFrom1555(unrl, x * 2)
|
||||
a.Add(b(0)) : a.Add(b(1)) : a.Add(b(2))
|
||||
Next
|
||||
End If
|
||||
|
||||
Return a
|
||||
End Function
|
||||
|
||||
Public Function GetColFrom1555(ByRef bytes As Byte(), ByVal ind As Integer)
|
||||
If ind > UBound(bytes) - 1 Then Return {0, 0, 0}
|
||||
Dim col As Int16 = BitConverter.ToInt16(bytes, ind)
|
||||
Dim a = col And &H8000 >> 15, b = ((col And &H7C00) >> 10) * 8, g = ((col And &H3E0) >> 5) * 8, r = (col And &H1F) * 8
|
||||
Return {r, g, b}
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
Public Function Convert888To565(ByRef col As Color)
|
||||
Dim r = col.R : Dim g = col.G : Dim b = col.B
|
||||
|
||||
Dim res As Int32
|
||||
|
||||
res = ((b And &HF8) << 7) Or ((g And &HF8) << 2) Or ((r And &HF8) >> 3)
|
||||
'Dim x1 = (b And &HF8) Or (g >> 5)
|
||||
'Dim x2 = ((g And &H1C) << 3) Or (r >> 3)
|
||||
|
||||
'res = x2 Or (x1 << 8)
|
||||
|
||||
Return res
|
||||
End Function
|
||||
|
||||
Public Function ParsePNGgetData(ByRef src As List(Of Byte), ByRef rle As rleFile)
|
||||
Dim file = New List(Of Byte)
|
||||
|
||||
|
||||
If src(0) <> 137 And src(1) <> 80 And src(2) <> 78 Then MsgBox("Это не PNG!!!", MsgBoxStyle.Critical) : Return file
|
||||
|
||||
|
||||
'Loading Chunks
|
||||
Dim Reader As Integer = 8
|
||||
Do
|
||||
GenerateChunk(src, Reader)
|
||||
Loop Until Reader >= src.Count
|
||||
|
||||
Dim header As List(Of Byte) = GetChunk("IHDR").Data
|
||||
Width = Read32bitNumBE(header, 0)
|
||||
Heigth = Read32bitNumBE(header, 4)
|
||||
|
||||
|
||||
Dim plte As Chunk = GetChunk("PLTE")
|
||||
If Form1.imp4bit.Checked Then
|
||||
bit = 4
|
||||
Else
|
||||
If Form1.Imp8bit.Checked Then
|
||||
bit = 8
|
||||
Else
|
||||
bit = 16
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
Dim imgData = New List(Of Byte)
|
||||
'LoadingChunks
|
||||
|
||||
Dim chunks = GetChunks("IDAT") 'CONCAT ALL IDATS....
|
||||
Dim buff = New List(Of Byte)
|
||||
For Each ch In chunks
|
||||
buff.AddRange(ch.Data)
|
||||
Next
|
||||
|
||||
Dim dstream = Zlib.ZlibStream.UncompressBuffer(buff.ToArray()) '....AND DECOMPRESS
|
||||
|
||||
imgData.AddRange(dstream.ToList)
|
||||
Dim filter As Integer
|
||||
|
||||
Reader = 1
|
||||
|
||||
|
||||
Dim x, y As Integer
|
||||
|
||||
If bit = 4 Or bit = 8 Then UnfilterNew(imgData, Width, Heigth) 'unfilter ALL scanlines
|
||||
|
||||
|
||||
Do
|
||||
Select Case bit
|
||||
Case 4
|
||||
Dim lp = imgData(Reader)
|
||||
Dim rp = imgData(Reader + 1) : Reader += 1
|
||||
file.Add(((rp And &HF) << 4) Or (lp And &HF))
|
||||
x += 2
|
||||
Case 8
|
||||
If y = Heigth Then Exit Do
|
||||
file.Add(imgData(Reader))
|
||||
x += 1
|
||||
Case 16
|
||||
|
||||
Dim col As Color = IMG.GetPixel(x, y)
|
||||
|
||||
|
||||
|
||||
Dim res As Int32 = Convert888To565(col)
|
||||
file.AddRange({BitConverter.GetBytes(res)(0), BitConverter.GetBytes(res)(1)})
|
||||
|
||||
x += 1
|
||||
'Reader += 2
|
||||
End Select
|
||||
|
||||
If x >= Width Then
|
||||
If Reader >= imgData.Count - 1 Then Exit Do
|
||||
x = 0
|
||||
y += 1
|
||||
|
||||
Reader += 1
|
||||
|
||||
End If
|
||||
|
||||
If y >= Heigth Then Exit Do
|
||||
|
||||
|
||||
Reader += 1
|
||||
|
||||
|
||||
Loop
|
||||
|
||||
|
||||
|
||||
Return file
|
||||
End Function
|
||||
|
||||
Public Sub UnfilterNew(ByRef imgData As List(Of Byte), ByVal Width As Integer, ByVal Heigth As Integer)
|
||||
''''''NEW UNFILTER FROM PNGLIB OFFICIAL LIBRARY (3rd version)
|
||||
|
||||
Dim x = 0, y = 0, filter, reader As Integer
|
||||
filter = imgData(reader) ': Debug.WriteLine("Y=" & y & "FLT=" & filter) 'INIT
|
||||
reader += 1
|
||||
|
||||
Do
|
||||
Select Case filter
|
||||
Case 0 'none filter
|
||||
|
||||
Case 1 'sub filter
|
||||
For a = 1 To Width - 1
|
||||
Dim rp As Integer = imgData(reader + a)
|
||||
Dim rpp As Integer = imgData(reader + a - 1)
|
||||
imgData(reader + a) = (rp + rpp) And &HFF
|
||||
Next
|
||||
Case 2 'up filter
|
||||
For a = 0 To Width - 1
|
||||
Dim rp As Integer = imgData(reader + a)
|
||||
Dim pp As Integer = imgData(reader + a - Width - 1)
|
||||
imgData(reader + a) = (rp + pp) And &HFF
|
||||
Next
|
||||
Case 3 'average filter
|
||||
|
||||
Dim rp As Integer = imgData(reader)
|
||||
Dim pp As Integer = imgData(reader - Width - 1) 'first pixel
|
||||
imgData(reader) = (rp + (pp / 2)) And &HFF
|
||||
|
||||
For a = 1 To Width - 1
|
||||
rp = imgData(reader + a)
|
||||
pp = imgData(reader + a - Width - 1)
|
||||
Dim rpp As Integer = imgData(reader + a - 1)
|
||||
imgData(reader + a) = (rp + Math.Floor((pp + rpp) / 2)) And &HFF 'Other pixels
|
||||
Next
|
||||
|
||||
Case 4 'paeth 1-byte filter
|
||||
|
||||
Dim rp_end As Integer = reader + Width
|
||||
Dim a, c As Integer
|
||||
x = 0
|
||||
c = imgData(reader - Width - 1) 'first pixel
|
||||
a = imgData(reader) + c
|
||||
imgData(reader) = a And &HFF : reader += 1
|
||||
|
||||
While (reader < rp_end)
|
||||
Dim b, pa, pb, pc, p As Integer
|
||||
x = x + 1
|
||||
a = a And &HFF 'cleaning byte
|
||||
b = imgData(reader - Width - 1)
|
||||
|
||||
p = b - c
|
||||
pc = a - c
|
||||
|
||||
pa = Math.Abs(p)
|
||||
pb = Math.Abs(pc)
|
||||
pc = Math.Abs(p + pc)
|
||||
|
||||
If pb < pa Then pa = pb : a = b
|
||||
If pc < pa Then a = c
|
||||
|
||||
c = b
|
||||
a += imgData(reader)
|
||||
imgData(reader) = a And &HFF : reader += 1
|
||||
End While
|
||||
End Select
|
||||
If filter <> 4 Then reader += Width
|
||||
|
||||
y = y + 1
|
||||
If reader >= imgData.Count - 1 Or y = Heigth Then Exit Do
|
||||
|
||||
filter = imgData(reader)
|
||||
reader += 1
|
||||
'Debug.WriteLine("Y=" & y & "FLT=" & filter)
|
||||
|
||||
Loop
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub GenerateChunk(ByRef src As List(Of Byte), ByRef reader As Integer)
|
||||
Dim cc = New Chunk
|
||||
cc.Size = Read32bitNumBE(src, reader) : reader += 4
|
||||
For x = 0 To 3 : cc.Type &= Chr(src(x + reader)) : Next : reader += 4
|
||||
For x = 0 To cc.Size - 1 : cc.Data.Add(src(x + reader)) : Next : reader += cc.Size
|
||||
reader += 4 'Nahuy CRC-check!
|
||||
Chunks.add(cc)
|
||||
End Sub
|
||||
Public Function GetChunk(ByVal Tp As String)
|
||||
For Each cc In Chunks
|
||||
If cc.Type = Tp Then Return cc
|
||||
Next
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Public Function GetChunks(ByVal Tp As String)
|
||||
|
||||
Dim a = New List(Of Chunk)
|
||||
a = Chunks.FindAll(Function(x) x.Type = Tp)
|
||||
|
||||
Return a
|
||||
End Function
|
||||
|
||||
Public Function Read32bitNumBE(ByRef f As List(Of Byte), ByVal bytenum As Integer)
|
||||
Return f(bytenum + 3) + f(bytenum + 2) * 256 + f(bytenum + 1) * 65536 + f(bytenum) * 16777216
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Public Class Chunk
|
||||
Public Size As Integer
|
||||
Public Type As String
|
||||
Public Data = New List(Of Byte)
|
||||
End Class
|
||||
666
p2isPSX_CDToolkit/rleTools.vb
Normal file
666
p2isPSX_CDToolkit/rleTools.vb
Normal file
@@ -0,0 +1,666 @@
|
||||
Public Class rleTools
|
||||
|
||||
|
||||
|
||||
'This is implementation from ASM of ORIGINAL ATLUS GAME UNRLE PROCEDURE
|
||||
|
||||
'NEED TO FIX LAST BYTES!!! Fixed!
|
||||
|
||||
Public Function Unrle(ByRef readFile As Byte())
|
||||
|
||||
Dim newF As List(Of Byte)
|
||||
newF = New List(Of Byte)
|
||||
|
||||
Dim Overallbytes = Form1.Read32bitNum(readFile, 4) 'Compressed size
|
||||
Dim readCounter = Form1.Read32bitNum(readFile, 8) 'Uncompressed size
|
||||
Dim readAddr = 12
|
||||
|
||||
If readFile(0) = 2 Then readAddr = 16 'if picture
|
||||
|
||||
|
||||
Dim mode As Byte
|
||||
Dim curByte As Byte
|
||||
Dim params1readCounter As Byte
|
||||
Dim readOffset As Integer
|
||||
Dim writeIndex As Integer
|
||||
Dim params2 As Integer
|
||||
Dim params18 As Integer
|
||||
|
||||
|
||||
Do
|
||||
|
||||
If mode = 0 Then
|
||||
curByte = readFile(readAddr)
|
||||
readAddr += 1
|
||||
|
||||
If (curByte And &H80) = 0 Then
|
||||
params1readCounter = curByte + 1
|
||||
mode = 3 'simple read mode
|
||||
Else
|
||||
params1readCounter = curByte - &H7D
|
||||
mode = 1 'mode 1&2 - read pattern
|
||||
End If
|
||||
|
||||
Else
|
||||
readCounter -= 1
|
||||
If readCounter = 0 Then Form1.readerror = True : Return newF
|
||||
End If
|
||||
|
||||
|
||||
If mode = 2 Then
|
||||
LAB_80026700:
|
||||
writeIndex = newF.Count - 1
|
||||
readOffset = writeIndex - params2
|
||||
Dim bytesCounter = params1readCounter
|
||||
Do
|
||||
If readOffset > newF.Count - 1 Or readOffset < 0 Then 'Can Read empty memory
|
||||
curByte = 0
|
||||
Else
|
||||
curByte = newF(readOffset)
|
||||
End If
|
||||
|
||||
readOffset += 1
|
||||
bytesCounter -= 1
|
||||
newF.Add(curByte)
|
||||
Loop While bytesCounter <> 0
|
||||
|
||||
Else
|
||||
If mode < 3 Then
|
||||
If mode = 1 Then
|
||||
mode = 2
|
||||
curByte = readFile(readAddr)
|
||||
readAddr += 1
|
||||
readCounter -= 1
|
||||
params2 = curByte ' offset
|
||||
GoTo LAB_80026700
|
||||
End If
|
||||
Else
|
||||
If mode = 3 Then
|
||||
If readCounter < params1readCounter Then params1readCounter = readCounter
|
||||
CopyBytes(readFile, newF, readAddr, params1readCounter)
|
||||
readCounter -= params1readCounter
|
||||
readAddr += params1readCounter
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
curByte = params1readCounter
|
||||
mode = 0
|
||||
|
||||
If readCounter <= 0 Then Return newF
|
||||
If readAddr >= Overallbytes Then Return newF
|
||||
|
||||
Loop
|
||||
|
||||
Return newF
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Public Function Unrle2(ByRef readFile As Byte())
|
||||
|
||||
Dim newF As List(Of Byte)
|
||||
newF = New List(Of Byte)
|
||||
|
||||
Dim Overallbytes = Form1.Read32bitNum(readFile, 4) 'Compressed size
|
||||
Dim readOverallCounter = Overallbytes
|
||||
'THERE IS NO Uncompressed size??? 'BitConverter.ToInt16(readFile, 12) * BitConverter.ToInt16(readFile, 14)
|
||||
|
||||
Dim readAddr = 12
|
||||
If readFile(0) = 2 Then readAddr = 16 'if picture
|
||||
|
||||
Dim mode As Byte
|
||||
Dim curByte As Byte
|
||||
Dim params1readRepeatCounter As Byte 'params[1] 80080dc8 - Bytecounter to read
|
||||
Dim params2
|
||||
|
||||
|
||||
|
||||
Do
|
||||
|
||||
If mode = 0 Then
|
||||
curByte = readFile(readAddr)
|
||||
readAddr += 1
|
||||
|
||||
If (curByte And &H80) = 0 Then
|
||||
params1readRepeatCounter = curByte + 1
|
||||
mode = 3 'simple read mode
|
||||
Else
|
||||
params1readRepeatCounter = curByte - &H7D 'number of bytes to read
|
||||
mode = 1 'mode 1 then 2 (and proc) - repeat pattern
|
||||
End If
|
||||
|
||||
Else
|
||||
If readAddr >= Overallbytes Then Return newF
|
||||
|
||||
readOverallCounter -= 1
|
||||
If readOverallCounter = 0 Then Form1.readerror = True : Return newF
|
||||
End If
|
||||
|
||||
'Some Testing for overreading
|
||||
'If *params_addr+18h < params1 THEN params1 = params+18h
|
||||
|
||||
'Orig code:
|
||||
'param1 = param[1]
|
||||
'mode=param[0]
|
||||
|
||||
If mode = 2 Then
|
||||
LAB_80026510:
|
||||
|
||||
'/////////////////////////////////////////// PUROCESS PACKET BYTE
|
||||
'/////////////////////////////////////////// CPU 80022524
|
||||
|
||||
Dim counter = params1readRepeatCounter
|
||||
Dim packetByte = params2
|
||||
Dim tempByte = packetByte
|
||||
|
||||
Do
|
||||
newF.Add(tempByte)
|
||||
counter -= 1
|
||||
|
||||
Loop While counter <> 0
|
||||
|
||||
'DELETED ROUTINE WHATS MAKE 32BIT INTEGER AND FILLS MEMORY BY 4 BYTES STEPS
|
||||
'/////////////////////////////////////////// '///////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
Else
|
||||
If mode < 3 Then
|
||||
If mode = 1 Then
|
||||
mode = 2
|
||||
curByte = readFile(readAddr)
|
||||
readAddr += 1
|
||||
readOverallCounter -= 1
|
||||
params2 = curByte ' offset
|
||||
GoTo LAB_80026510
|
||||
End If
|
||||
Else
|
||||
If mode = 3 Then
|
||||
If readOverallCounter < params1readRepeatCounter Then params1readRepeatCounter = readOverallCounter
|
||||
CopyBytes(readFile, newF, readAddr, params1readRepeatCounter)
|
||||
readOverallCounter -= params1readRepeatCounter
|
||||
readAddr += params1readRepeatCounter
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
mode = 0
|
||||
|
||||
'If readOverallCounter <= 0 Then Return newF
|
||||
If readAddr >= Overallbytes Then Return newF
|
||||
|
||||
Loop
|
||||
|
||||
Return newF
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Function ArrayCheck(ByRef bytes() As Byte, ByVal PastByteIndex As Integer, ByVal FutureByteIndex As Integer, ByVal Size As Byte)
|
||||
For a = 0 To Size - 1
|
||||
If PastByteIndex < 0 Or FutureByteIndex + a > UBound(bytes) Then Return -1
|
||||
If bytes(PastByteIndex + a) <> bytes(FutureByteIndex + a) Then Return -1
|
||||
Next
|
||||
Return Size
|
||||
End Function
|
||||
|
||||
|
||||
Private Function SaveAccum(ByRef rleFile As List(Of Byte), ByRef accum As List(Of Byte))
|
||||
|
||||
|
||||
If accum.Count > 0 Then 'если что-то есть в аккумуляторе
|
||||
rleFile.Add(accum.Count - 1)
|
||||
rleFile.AddRange(accum)
|
||||
accum.Clear()
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Public Sub CopyBytes(ByRef src As Byte(), ByRef destAddr As List(Of Byte), ByVal readAddr As Integer, ByVal BytesToCopy As Byte)
|
||||
|
||||
Dim srcLen = UBound(src)
|
||||
If 0 < BytesToCopy Then
|
||||
Do
|
||||
If readAddr > srcLen Then MsgBox("ERROR COPYING BYTES IN rleTools.CopyBytes." & vbCrLf & "readAddr: " & readAddr & " Len: " & srcLen) : Exit Do
|
||||
Dim readedByte = src(readAddr)
|
||||
|
||||
readAddr += 1
|
||||
BytesToCopy -= 1
|
||||
destAddr.Add(readedByte)
|
||||
Loop While 0 < BytesToCopy
|
||||
End If
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function decodeRLEnew(ByRef filetoRLE As Byte(), ByRef curFile As rleFile)
|
||||
|
||||
Dim start = Microsoft.VisualBasic.DateAndTime.Timer
|
||||
|
||||
|
||||
|
||||
Dim fil As List(Of Byte) = filetoRLE.ToList
|
||||
|
||||
Dim rleFile = New List(Of Byte)
|
||||
rleFile.Add(curFile.Type) : rleFile.Add(2) '////////////////TODO: MAKE SELECTABLE COMPRESSION !
|
||||
'Init new RLE with source Type/Compression
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(0)) 'Convert ID
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(1))
|
||||
|
||||
Dim uncomprSize = UBound(filetoRLE) + 1
|
||||
|
||||
'DEPENDS ON TYPE
|
||||
Select Case curFile.Type
|
||||
Case 1 'FOR Type1(Data) - This
|
||||
rleFile.AddRange({12, 0, 0, 0}) 'Compressed size here! At least 12 (rle, mode, I, D, Comprsize, OverallSize)
|
||||
Case Else
|
||||
MsgBox("Unsupported type :( - " & curFile.Type) : Return New List(Of Byte)
|
||||
End Select
|
||||
|
||||
|
||||
|
||||
|
||||
'////////////////TODO: ADD FILE TYPE 2 - PICTURE WITH X,Y,W,H
|
||||
'///////////////// THIS BYTES FOR TYPE 0
|
||||
rleFile.AddRange(BitConverter.GetBytes(uncomprSize).ToList) 'UNCOMPRESSED SIZE
|
||||
|
||||
|
||||
|
||||
|
||||
Dim accum = New List(Of Byte)
|
||||
|
||||
Dim dict = New List(Of DictElem)
|
||||
Dim repeatPattern = New List(Of RepeatElem)
|
||||
MakeDictTree(fil, dict, repeatPattern) 'making tree and pattern
|
||||
Dim curlvl As Byte
|
||||
Dim CurDickBranch As DictElem
|
||||
|
||||
Dim indexes = New List(Of indexElem)
|
||||
|
||||
For c = 0 To fil.Count - 1
|
||||
|
||||
'If c = 25500 Then SaveAccum(rleFile, accum) : Exit For
|
||||
|
||||
indexes = New List(Of indexElem)
|
||||
|
||||
Dim readed = fil(c)
|
||||
curlvl = 0
|
||||
|
||||
|
||||
Dim curlevel As List(Of DictElem) = dict
|
||||
CurDickBranch = curlevel.Find(Function(x) x.Byt = readed) 'checking avialable indexes
|
||||
|
||||
If c < 4 Then GoTo start4
|
||||
|
||||
|
||||
Do
|
||||
If IsNothing(CurDickBranch) Then Exit Do
|
||||
If CurDickBranch.Indexes.Count = 1 Then Exit Do
|
||||
Dim lastIndexes As List(Of Integer) = CurDickBranch.Indexes
|
||||
Dim filtered = (From s As Integer In lastIndexes 'FILTER INDEXES
|
||||
Where s < c And s >= c - 256).ToList()
|
||||
If filtered.Count < 1 Then Exit Do
|
||||
|
||||
For Each i In filtered
|
||||
indexes.Add(New indexElem With {.len = curlvl, .index = i}) 'making index table
|
||||
Next
|
||||
curlvl += 1
|
||||
If c + curlvl = fil.Count Then Exit Do
|
||||
Dim rd = fil(c + curlvl)
|
||||
|
||||
curlevel = CurDickBranch.elems
|
||||
CurDickBranch = curlevel.Find(Function(x) x.Byt = rd)
|
||||
Loop
|
||||
|
||||
|
||||
|
||||
Dim repeat As Byte = 0
|
||||
Dim byt As Byte = 0
|
||||
|
||||
'Testing Repeating Byte
|
||||
For Each rep In repeatPattern
|
||||
|
||||
If rep.index < c And c < rep.index + rep.Repeat Then
|
||||
repeat = rep.index + rep.Repeat - c
|
||||
|
||||
Exit For 'Filtering repeat pattern
|
||||
End If
|
||||
Next
|
||||
|
||||
|
||||
start4:
|
||||
|
||||
If curlvl < 4 And repeat < 4 Then
|
||||
If accum.Count = 128 Then SaveAccum(rleFile, accum)
|
||||
accum.Add(readed)
|
||||
|
||||
|
||||
Else
|
||||
'repeat pattern is much better than char pattern
|
||||
If repeat >= curlvl Then
|
||||
SaveAccum(rleFile, accum)
|
||||
|
||||
rleFile.Add(&H7D + repeat) 'Команда повтора и сколько раз
|
||||
rleFile.Add(0) 'Повторять со смещением 0 (последний байт)
|
||||
|
||||
c = c + repeat - 1
|
||||
|
||||
Else
|
||||
|
||||
SaveAccum(rleFile, accum)
|
||||
indexes.Sort(Function(x, y) x.len.CompareTo(y.len))
|
||||
|
||||
rleFile.Add(&H7E + indexes.Last.len)
|
||||
rleFile.Add(c - indexes.Last.index - 1)
|
||||
c = c + indexes.Last.len
|
||||
|
||||
End If
|
||||
End If
|
||||
If c = fil.Count - 1 Then SaveAccum(rleFile, accum) : Exit For
|
||||
Next
|
||||
|
||||
|
||||
|
||||
'My.Computer.FileSystem.WriteAllBytes("D:\Games\PSX\Persona.2.Innocent.Sin\Export\UnRLE\0181_ALL_SCENERY\1112.rle", rleFile.ToArray, False)
|
||||
Debug.WriteLine(Microsoft.VisualBasic.DateAndTime.Timer - start)
|
||||
|
||||
|
||||
|
||||
'Set rle compressed size
|
||||
rleFile(4) = BitConverter.GetBytes(rleFile.Count)(0)
|
||||
rleFile(5) = BitConverter.GetBytes(rleFile.Count)(1)
|
||||
rleFile(6) = BitConverter.GetBytes(rleFile.Count)(2)
|
||||
rleFile(7) = BitConverter.GetBytes(rleFile.Count)(3)
|
||||
|
||||
'adding bytes to read MOD4
|
||||
Dim addedBytes = rleFile.Count Mod 4
|
||||
If addedBytes > 0 Then addedBytes = 4 - addedBytes
|
||||
For a = 0 To addedBytes - 1
|
||||
rleFile.Add(0)
|
||||
Next
|
||||
|
||||
Return rleFile
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Public Function decodeRLE2images(ByRef filetoRLE As Byte(), ByRef curFile As rleFile)
|
||||
|
||||
Dim start = Microsoft.VisualBasic.DateAndTime.Timer
|
||||
|
||||
Dim fil As List(Of Byte) = filetoRLE.ToList
|
||||
|
||||
Dim rleFile = New List(Of Byte)
|
||||
rleFile.Add(curFile.Type) : rleFile.Add(1) '////////////////IMAGE COMPRESSION
|
||||
'Init new RLE with source Type/Compression
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(0)) 'Convert ID
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(1))
|
||||
|
||||
'DEPENDS ON TYPE
|
||||
Select Case curFile.Type
|
||||
Case 2 'FOR Type2(Image) - This
|
||||
rleFile.AddRange({12, 0, 0, 0}) 'Compressed size here! At least 12 (rle, mode, I, D, Comprsize, OverallSize)
|
||||
Case Else
|
||||
MsgBox("Unsupported type :( - " & curFile.Type) : Return New List(Of Byte)
|
||||
End Select
|
||||
For a = 8 To 15 : rleFile.Add(curFile.Bytes(a)) : Next a 'Copying image params x,y,h,w
|
||||
|
||||
Dim repeatPattern = New List(Of RepeatElem)
|
||||
MakeRepeatPattern(fil, repeatPattern)
|
||||
Dim accum = New List(Of Byte)
|
||||
For c = 0 To fil.Count - 1
|
||||
Dim readed = fil(c)
|
||||
Dim repeat As Byte = 0
|
||||
Dim byt As Byte = 0
|
||||
|
||||
'Testing Repeating Byte
|
||||
For Each rep In repeatPattern
|
||||
If rep.index = c Then
|
||||
repeat = rep.Repeat
|
||||
Exit For 'Filtering repeat pattern
|
||||
End If
|
||||
Next
|
||||
If repeat < 2 Then
|
||||
If accum.Count = 126 Then SaveAccum(rleFile, accum)
|
||||
accum.Add(readed)
|
||||
Else
|
||||
SaveAccum(rleFile, accum)
|
||||
|
||||
rleFile.Add(&H7D + repeat) 'Команда повтора и сколько раз
|
||||
rleFile.Add(readed) 'Повторять байт
|
||||
c = c + repeat - 1 'Shifting For
|
||||
End If
|
||||
|
||||
If c = fil.Count - 1 Then
|
||||
SaveAccum(rleFile, accum)
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
Debug.WriteLine((Microsoft.VisualBasic.DateAndTime.Timer - start) & " - " & rleFile.Count & " bytes")
|
||||
|
||||
'Set rle compressed size
|
||||
rleFile(4) = BitConverter.GetBytes(rleFile.Count)(0)
|
||||
rleFile(5) = BitConverter.GetBytes(rleFile.Count)(1)
|
||||
rleFile(6) = BitConverter.GetBytes(rleFile.Count)(2)
|
||||
rleFile(7) = BitConverter.GetBytes(rleFile.Count)(3)
|
||||
|
||||
'adding bytes to read MOD4
|
||||
Dim addedBytes = rleFile.Count Mod 4
|
||||
If addedBytes > 0 Then addedBytes = 4 - addedBytes
|
||||
For a = 0 To addedBytes - 1
|
||||
rleFile.Add(0)
|
||||
Next
|
||||
|
||||
Return rleFile
|
||||
|
||||
|
||||
End Function
|
||||
Public Function MakeUncompressedImage(ByRef filetoRLE As Byte(), ByRef curFile As rleFile)
|
||||
|
||||
Dim fil As List(Of Byte) = filetoRLE.ToList
|
||||
|
||||
Dim rleFile = New List(Of Byte)
|
||||
rleFile.Add(2) : rleFile.Add(0) '////////////////TYPE: IMAGE / COMPRESSION - NONE
|
||||
'Init new image
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(0)) 'Convert ID
|
||||
rleFile.Add(BitConverter.GetBytes(curFile.ID)(1))
|
||||
|
||||
'DEPENDS ON TYPE
|
||||
|
||||
rleFile.AddRange({12, 0, 0, 0}) 'Uncompressed Size here! At least 12 (rle, mode, I, D, Comprsize, OverallSize)
|
||||
For a = 8 To 15 : rleFile.Add(curFile.Bytes(a)) : Next a 'Copying image params x,y,h,w
|
||||
|
||||
rleFile.AddRange(fil) 'Add uncomressed Data
|
||||
|
||||
'Set file size in header
|
||||
rleFile(4) = BitConverter.GetBytes(rleFile.Count)(0)
|
||||
rleFile(5) = BitConverter.GetBytes(rleFile.Count)(1)
|
||||
rleFile(6) = BitConverter.GetBytes(rleFile.Count)(2)
|
||||
rleFile(7) = BitConverter.GetBytes(rleFile.Count)(3)
|
||||
|
||||
'adding bytes to read MOD4
|
||||
Dim addedBytes = rleFile.Count Mod 4
|
||||
If addedBytes > 0 Then addedBytes = 4 - addedBytes
|
||||
For a = 0 To addedBytes - 1
|
||||
rleFile.Add(0)
|
||||
Next
|
||||
|
||||
Return rleFile
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Public Function GetBranch(ByRef CurDickBranch As DictElem, ByRef fil As List(Of Byte), ByRef c As Integer, ByRef curLevel As Integer)
|
||||
|
||||
Dim rd = fil(c + curLevel)
|
||||
Dim NextBranch As DictElem = CurDickBranch.elems.Find(Function(x) x.Byt = rd)
|
||||
|
||||
Dim lastIndexes As List(Of Integer) = CurDickBranch.Indexes
|
||||
|
||||
If NextBranch.Indexes > 1 Then
|
||||
curLevel += 1
|
||||
GetBranch(NextBranch, fil, c, curLevel)
|
||||
|
||||
Else
|
||||
Return lastIndexes
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Public Sub MakeDictTree(ByRef fil As List(Of Byte), ByRef dict As List(Of DictElem), ByRef repeatPattern As List(Of RepeatElem))
|
||||
|
||||
|
||||
|
||||
|
||||
Dim tempRepeatByte As Byte
|
||||
Dim tempRepeatCounter As Integer
|
||||
Dim tempIndex As Integer
|
||||
Dim curByte As Integer
|
||||
Dim chk As DictElem
|
||||
'MAKING BYTE TREE!!!
|
||||
For b = 0 To fil.Count - 1
|
||||
Dim curlevel As List(Of DictElem) = dict
|
||||
Dim LvlNum As Byte = 1
|
||||
Dim max = 130 'maximum window
|
||||
If fil.Count - b < max Then max = fil.Count - b 'if end of file - decrease window to end of file
|
||||
For wind = 0 To max - 1
|
||||
curByte = fil(b + wind)
|
||||
chk = curlevel.Find(Function(x) x.Byt = curByte)
|
||||
If IsNothing(chk) Then
|
||||
Dim newElem = New DictElem With {.Byt = curByte, .Indexes = New List(Of Integer) From {b}}
|
||||
curlevel.Add(newElem)
|
||||
curlevel = curlevel.Last.elems
|
||||
Else
|
||||
chk.Indexes.add(b)
|
||||
chk.lvl = LvlNum
|
||||
curlevel = chk.elems
|
||||
End If
|
||||
Next
|
||||
|
||||
'REPEATPATTERN CHECK
|
||||
If tempRepeatByte = fil(b) And tempRepeatCounter <= 130 Then
|
||||
tempRepeatCounter += 1
|
||||
Else
|
||||
If tempRepeatCounter > 3 Then repeatPattern.Add(New RepeatElem With {.Byt = tempRepeatByte, .index = tempIndex, .Repeat = tempRepeatCounter})
|
||||
tempIndex = b
|
||||
tempRepeatCounter = 1
|
||||
tempRepeatByte = fil(b)
|
||||
|
||||
End If
|
||||
Next
|
||||
dict.Sort(Function(x, y) x.Byt.CompareTo(y.Byt))
|
||||
repeatPattern.Sort(Function(x, y) x.Repeat.CompareTo(y.Repeat)) 'Need to check inbeetween
|
||||
Dim curdict = dict
|
||||
|
||||
refr:
|
||||
|
||||
'For Each a In curdict
|
||||
' If a.Indexes.count < 3 Then curdict.Remove(a) : GoTo refr
|
||||
'Next
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
Public Sub MakeRepeatPattern(ByRef fil As List(Of Byte), ByRef repeatPattern As List(Of RepeatElem))
|
||||
Dim tempRepeatByte As Byte
|
||||
Dim tempRepeatCounter As Integer
|
||||
Dim curByte As Byte
|
||||
Dim tempIndex As Integer
|
||||
|
||||
For b = 0 To fil.Count - 1
|
||||
|
||||
|
||||
If tempRepeatByte = fil(b) And tempRepeatCounter < 130 Then
|
||||
tempRepeatCounter += 1
|
||||
Else
|
||||
|
||||
If tempRepeatCounter > 3 Then repeatPattern.Add(New RepeatElem With {.Byt = tempRepeatByte, .index = tempIndex, .Repeat = tempRepeatCounter})
|
||||
tempIndex = b
|
||||
tempRepeatCounter = 1
|
||||
tempRepeatByte = fil(b)
|
||||
|
||||
End If
|
||||
|
||||
'If its last byte
|
||||
If tempRepeatByte = fil(b) And tempRepeatCounter < 130 And b = fil.Count - 1 Then
|
||||
repeatPattern.Add(New RepeatElem With {.Byt = tempRepeatByte, .index = tempIndex, .Repeat = tempRepeatCounter})
|
||||
End If
|
||||
|
||||
|
||||
|
||||
Next
|
||||
repeatPattern.Sort(Function(x, y) x.index.CompareTo(y.index))
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function UnrleNocompr(ByRef readFile As Byte())
|
||||
|
||||
|
||||
Dim newF = New List(Of Byte)
|
||||
|
||||
Dim Overallbytes = Form1.Read32bitNum(readFile, 4) 'Compressed size
|
||||
If readFile(0) = 2 Then
|
||||
For a = 16 To Overallbytes - 1 'If uncompressed image (CLUT etc.)
|
||||
newF.Add(readFile(a))
|
||||
Next
|
||||
Else
|
||||
For a = 8 To Overallbytes - 1
|
||||
newF.Add(readFile(a))
|
||||
Next
|
||||
End If
|
||||
|
||||
|
||||
Return newF
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
Public Class indexElem
|
||||
|
||||
Public index As Integer
|
||||
Public len As Byte
|
||||
|
||||
End Class
|
||||
|
||||
Public Class RepeatElem
|
||||
|
||||
Public Byt As Byte
|
||||
Public Repeat As Byte
|
||||
Public index As Integer
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
Public Class DictElem
|
||||
Public Byt As Byte
|
||||
Public lvl As Byte
|
||||
Public Indexes = New List(Of Integer)
|
||||
Public elems = New List(Of DictElem)
|
||||
End Class
|
||||
|
||||
Public Class RepeatObject
|
||||
Public SrcIndex
|
||||
Public Offset
|
||||
Public DstIndex
|
||||
Public Bytes As List(Of Byte)
|
||||
Public NumOfRepeat
|
||||
End Class
|
||||
Reference in New Issue
Block a user