patterns: Added Minecraft LCE LOC file pattern (#311)

* create LOC hexpat

* loc to list
This commit is contained in:
Dexrn ZacAttack
2024-11-17 04:59:44 -08:00
committed by GitHub
parent 1d680fbf5e
commit c8d9a8deb7
2 changed files with 47 additions and 0 deletions

View File

@@ -83,6 +83,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi
| ISO | | [`patterns/iso.hexpat`](patterns/iso.hexpat) | ISO 9660 file system |
| Java Class | `application/x-java-applet` | [`patterns/java_class.hexpat`](patterns/java_class.hexpat) | Java Class files |
| JPEG | `image/jpeg` | [`patterns/jpeg.hexpat`](patterns/jpeg.hexpat) | JPEG Image Format |
| LOC | | [`patterns/loc.hexpat`](patterns/loc.hexpat) | Minecraft Legacy Console Edition Language file |
| Lua 5.1 | | [`patterns/lua51.hexpat`](patterns/lua51.hexpat) | Lua 5.1 bytecode |
| Lua 5.2 | | [`patterns/lua52.hexpat`](patterns/lua52.hexpat) | Lua 5.2 bytecode |
| Lua 5.3 | | [`patterns/lua53.hexpat`](patterns/lua53.hexpat) | Lua 5.3 bytecode |

46
patterns/loc.hexpat Normal file
View File

@@ -0,0 +1,46 @@
#pragma author DexrnZacAttack
#pragma description Minecraft LCE LOC file
#pragma endian big
#pragma array_limit 739845729834
#pragma pattern_limit 34893726894
import std.string;
struct Keys {
bool useUniqueIDs;
u32 count;
u32 key[count];
};
struct LangIds {
u16 len;
char id[len];
u32 unk;
} [[name(id)]];
struct LocString {
u16 keySize;
char key[keySize];
} [[name(std::string::to_string(key))]];
struct Language {
u32 read;
if (read > 0)
u8 unk;
u16 len;
char id[len];
u32 count;
LocString strings[count];
} [[name(id)]];
struct Loc {
u32 version;
u32 count;
if (version == 2)
Keys keys;
LangIds ids[count];
Language language[count];
};
Loc loc @ 0x00;