April 10, 20242 yr Localization What is *.btw from Starsky and Hutch and are there programs that can unpack data with filenames? File formats inside Common.btw include in offset 0x388DD6C https://drive.google.com/file/d/1x4gaCGoz0gyDO_rlxYxn_nbdsxcJGQPO/view?usp=sharing Edited April 10, 20242 yr by mrmaller1905
April 10Apr 10 Localization Newest game extractor version added support https://github.com/wattostudios/GameExtractor
April 11Apr 11 Author Localization 12 hours ago, NeoGT404 said: Newest game extractor version added support https://github.com/wattostudios/GameExtractor I tried Game Extractor but I got no filenames from BTWs. Can you add support for BTW files to your extractor with proper filenames, instead of using Game Extractor by Watto Studios? Here is the file format spec for BTWs: struct BTW { Header header; Offsets offsets; byte Data[x]; FileNameInfo fileNameInfos[offsets.FileNameCount]; FileDataInfo fileDataInfos[offsets.FileDataInfoCount]; PackedName packedNames[offsets.PackedNameCount]; char extensionNames[offsets.ExtensionNameCount][4]; // null padded to 4 chars PackedName packedNumberedNames[offsets.PackedNumberedNameCount]; char stringTable[offsets.StringTableSize]; } struct Header { int Unknown00; int Unknown04; char Magic[4]; // "WAD!" int Version; byte Unknown10[8]; char Description[128]; } struct Offsets { int DataOffset; int DataSize; int FileNameCount; int FileNameOffset; int FileNamePtr; int FileDataInfoCount; int FileDataInfoOffset; int PackedNameCount; int PackedNameOffset; ushort NameDelta; ushort FileDelta; int ExtensionNameOffset; int ExtensionNameCount; int PackedNumberedNameOffset; int PackedNumberedNameCount; int StringTableOffset; int StringTableSize; } struct FileNameInfo { ushort DirNameCount; ushort DirNameOffset; ushort FileNameCount; ushort FileNameOffset; } struct FileDataInfo { int Size; int Offset; } struct PackedName { // 0x7F = no extension i.e. folder // 0x7E = invalid extension // 0x79 - 0x7D = ordinal string of (0x7E - n) length // 0x77 - 0x78 = ordinal string with separator // else = extension index int ExtIndex : 7 int NameLength : 8 int NameIndex : 17 }
April 11Apr 11 Localization That was difficult lol but here you go: https://github.com/smiRaphi/UniPyX (https://github.com/smiRaphi/UniPyX/commit/de873ac23b61142e5b95b04244ef408afe747db0)
Create an account or sign in to comment