8,452
edits
m (+cat) |
Paradox-01 (talk | contribs) (scanning the mountain compound AKEV xml for textures takes about 20 secs for me, reading the oni file directly takes just 1 second) |
||
Line 173: | Line 173: | ||
'qW = ... * -1 | 'qW = ... * -1 | ||
'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ) | 'set qRotation = XSIMath.CreateQuaternion (qW, qX, qY, qZ) | ||
===read file=== | |||
====as binary==== | |||
scan_AKEV_file_table | |||
sub scan_AKEV_file_table | |||
' ############################################## | |||
OniInputFile = "H:\Oni\AE\GameDataFolder\level1_Final\AKEVEnvWarehouse.oni" | |||
' ############################################## | |||
Set OniInputFileStream = CreateObject("ADODB.Stream") | |||
OniInputFileStream.Type = 1 | |||
OniInputFileStream.Open | |||
OniInputFileStream.LoadFromFile OniInputFile | |||
' ### read AKEV textures table offset and size | |||
ByteNum = 4 | |||
' ############################################## | |||
TOffset = cLng("&H" & "28") | |||
' ############################################## | |||
OniInputFileStream.Position = TOffset | |||
BArr1 = OniInputFileStream.Read(ByteNum) | |||
ByteNum = 4 | |||
' ############################################## | |||
TSize = cLng ("&H" & "2C") | |||
' ############################################## | |||
OniInputFileStream.Position = TSize | |||
BArr2 = OniInputFileStream.Read(ByteNum) | |||
' ### get AKEV textures table offset and size | |||
TOffsetHex = SimpleBinaryToString(BArr1) | |||
for i = ubound(TOffsetHex ) - 1 to 0 step -1 | |||
newhex = newhex & hex(Asc(TOffsetHex(i))) | |||
next | |||
logmessage newhex | |||
logmessage "name table offset: " & cLng("&H" & newhex) | |||
TOffsetInt = cLng("&H" & newhex) | |||
newhex = "" | |||
TSizeHex = SimpleBinaryToString(BArr2) | |||
for i = ubound(TSizeHex) - 1 to 0 step -1 | |||
newhex = newhex & hex(Asc(TSizeHex(i))) | |||
next | |||
logmessage newhex | |||
logmessage "name table size: " & cLng("&H" & newhex) | |||
TSizeInt = cLng("&H" & newhex) | |||
logmessage "------------------------------" | |||
' ### read table content | |||
ByteNum = TSizeInt | |||
OniInputFileStream.Position = TOffsetInt | |||
BArr3 = OniInputFileStream.Read(ByteNum) | |||
TContent = SimpleBinaryToString(BArr3) | |||
' ### name grapper | |||
NG = "" | |||
for each n in TContent | |||
if not Asc(n) = 0 then | |||
NG = NG & n | |||
else | |||
'if instr(NG, "TXMP") = 1 then | |||
' write TXMP to array ? | |||
logmessage NG | |||
'end if | |||
NG = "" | |||
end if | |||
next | |||
end sub | |||
Function SimpleBinaryToString(Binary) | |||
ReDim tmpArr(LenB(Binary) - 1) | |||
For I = 1 To LenB(Binary) | |||
S = Chr(AscB(MidB(Binary, I, 1))) | |||
tmpArr(I - 1) = S | |||
Next | |||
SimpleBinaryToString = tmpArr | |||
End Function | |||
Output: | |||
' INFO : 0E40 | |||
' INFO : name table offset: 3648 | |||
' INFO : 0A4A | |||
' INFO : name table size: 2634 | |||
' INFO : ------------------------------ | |||
' INFO : AKEVEnvWarehouse | |||
' INFO : AGDBEnvWarehouse | |||
' INFO : TXMP_DOOR_FRAME | |||
' INFO : TXMPNONE | |||
' INFO : TXMPSUMI_1 | |||
' INFO : TXMPTC_CONTROL_01 | |||
' [...] | |||
' INFO : TXMPWH_DCTRBND | |||
[[Category:Windows-only modding tools]] | [[Category:Windows-only modding tools]] |
edits