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