Files
ImHex-Patterns/patterns/AC Unity/acu_forge.hexpat

65 lines
1.4 KiB
Rust

#pragma description Assassin's Creed: Unity's .forge archive file
#pragma author haru233
// many thanks to AxCut
// ImHex Hex Pattern File for Assassin's Creed: Unity's .forge files
import std.core;
struct Forge_Header {
char MAGIC[8];
padding[1];
u32 Version;
u32 File_Data_Header_Offset;
};
struct File_Data_Header {
u32 File_Count;
padding[32];
u64 File_Data_Header2_Offset;
};
struct File_Data_Header2 {
u32 File_Count2;
padding[4];
u64 File_Table_Offset;
padding[12];
u32 File_Count3;
u64 File_Name_Table_Offset;
padding[8];
};
struct File_Table {
u64 Raw_Data_Offset;
u64 File_ID;
u32 Raw_Data_Size;
};
struct File_Name_Table {
u32 Raw_Data_Size;
padding[40];
char Filename[128];
padding[20];
};
Forge_Header forge_header @0x00;
File_Data_Header file_data_header @(forge_header.File_Data_Header_Offset);
File_Data_Header2 file_data_header2 @(file_data_header.File_Data_Header2_Offset);
File_Table file_table[file_data_header.File_Count] @(file_data_header2.File_Table_Offset);
File_Name_Table file_name_table[file_data_header.File_Count] @(file_data_header2.File_Name_Table_Offset);
struct Raw_Data_Table {
u64 i = std::core::array_index();
u8 Raw_Data[file_table[i].Raw_Data_Size] @ file_table[i].Raw_Data_Offset;
};
Raw_Data_Table raw_data_table[file_data_header.File_Count] @0x00;