patterns: Add a pattern for Roblox .pack files (#435)

* Added the .pack format

* Clarified some fields by changing the naming
This commit is contained in:
mjarduk
2025-08-25 23:22:32 +03:00
committed by GitHub
parent 7278a22eb2
commit c4c75a9ab2
3 changed files with 34 additions and 0 deletions

View File

@@ -128,6 +128,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi
| NTFS | | [`patterns/fs/ntfs.hexpat`](patterns/fs/ntfs.hexpat) | NTFS (NT File System) | | NTFS | | [`patterns/fs/ntfs.hexpat`](patterns/fs/ntfs.hexpat) | NTFS (NT File System) |
| OGG | `audio/ogg` | [`patterns/ogg.hexpat`](patterns/ogg.hexpat) | OGG Audio format | | OGG | `audio/ogg` | [`patterns/ogg.hexpat`](patterns/ogg.hexpat) | OGG Audio format |
| ORP / ORS | | [`patterns/orp.hexpat`](patterns/orp.hexpat) | OpenRGB profile format | | ORP / ORS | | [`patterns/orp.hexpat`](patterns/orp.hexpat) | OpenRGB profile format |
| PACK | | [`patterns/roblox_pack.hexpat`](patterns/roblox_pack.hexpat) | Roblox shader archive format |
| PAK | | [`patterns/xgspak.hexpat`](patterns/xgspak.hexpat) | Exient XGS Engine Pak files | | PAK | | [`patterns/xgspak.hexpat`](patterns/xgspak.hexpat) | Exient XGS Engine Pak files |
| PCAP | `application/vnd.tcpdump.pcap` | [`patterns/pcap.hexpat`](patterns/pcap.hexpat) | pcap header and packets | | PCAP | `application/vnd.tcpdump.pcap` | [`patterns/pcap.hexpat`](patterns/pcap.hexpat) | pcap header and packets |
| PcapNG | `application/vnd.tcpdump.pcap` | [`patterns/pcapng.hexpat`](patterns/pcapng.hexpat) | pcapng header and packets | | PcapNG | `application/vnd.tcpdump.pcap` | [`patterns/pcapng.hexpat`](patterns/pcapng.hexpat) | pcapng header and packets |

View File

@@ -0,0 +1,33 @@
#pragma author marduk.ru
#pragma description Roblox .pack shader archive format
#pragma magic [ 52 42 58 53 ] @ 0x00
import std.string;
import hex.core;
import type.magic;
struct Header {
type::Magic<"RBXS"> magic;
u32 fileCount;
};
struct FileIndex {
char name[0x40];
u128 md5Hash;
u32 offset;
u32 size;
u64 reserved;
u8 file[size] @ offset;
#ifdef __IMHEX__
hex::core::add_virtual_file(name, file);
#endif
} [[name(name)]];
struct RBXPack {
Header header;
FileIndex files[header.fileCount];
};
RBXPack pack @ 0x0;

Binary file not shown.