Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_BEGIN As Long = 0
Private Const FILE_SHARE_READ As Long = 1
Private Const GENERIC_READ As Long = &H80000000
Private Const GENERIC_WRITE As Long = &H40000000
Private Const OPEN_EXISTING As Long = 3
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Function TrimNDSRom(ByRef vsFilePath As String) As Long
Dim nRomSize As Long
Dim hFile As Long
On Error GoTo XE
Open vsFilePath For Binary Access Read As #1
Seek #1, 129
Get #1, , nRomSize
TrimNDSRom = LOF(1) - nRomSize
Close #1
If TrimNDSRom Then
hFile = CreateFile(vsFilePath, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ, ByVal 0&, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hFile <> -1 Then
SetFilePointer hFile, nRomSize, 0, FILE_BEGIN
SetEndOfFile hFile
CloseHandle hFile
End If
End If
XE:
Close
End Function