Files
P2EP_Toolkit/p2isPSX_CDToolkit/Additions.vb
sShemet 3475406781 CD extra & settings support
Written on book
2025-10-24 22:03:21 +05:00

636 lines
23 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 And Not CDExtraBtn.Checked Then MsgBox("YOU CAN IMPORT ONLY IN USER OR CDEXTRA 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") And UserRadio.Checked Then
cd.saveCDfile(UserPath.Text, 27, UBound(f) + 1, f)
End If
If fileInfo.Contains("SLPS_028.26") And CDExtraBtn.Checked Then
cd.saveCDfile(CDEXTRApath.Text, 28, 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 targetSector = 27
If CDExtraBtn.Checked Then targetSector = 28
Dim fil = iso.getCDfile(getFilnam, targetSector, 1812408)
Dim fn = ""
If CDExtraBtn.Checked Then
fn = "SLPS_028.26"
Else
fn = "SLPS_028.25"
End If
SaveFileDialog1.FileName = WorkDir.Text & fn
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