init commit
This commit is contained in:
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
|
||||
Reference in New Issue
Block a user