2nd demon file & contact parser

This commit is contained in:
sShemet
2026-03-23 16:26:40 +05:00
parent c362b8b319
commit 42d3cdbff9
15 changed files with 11409 additions and 1400 deletions

View File

@@ -0,0 +1,30 @@
struct Header {
u16 scriptPointersTableOffset;
u16 scriptStartOffset;
u16 textPointersTableOffset;
u16 textStartOffset;
};
Header header @ 0x00;
// Важно: вычитание двух u16 может дать underflow → результат интерпретируется как большое положительное число
// Поэтому лучше сразу привести к u32, чтобы избежать проблем
u32 scriptCount = (u32(header.scriptStartOffset) - u32(header.scriptPointersTableOffset)) / 2;
u32 textCount = (u32(header.textStartOffset) - u32(header.textPointersTableOffset)) / 2;
struct ScriptEntry {
u16 relativeOffset;
// Явно приводим к u32 перед сложением — на всякий случай
u16 firstWord @ (u32(header.scriptStartOffset) + this.relativeOffset);
};
ScriptEntry scripts[scriptCount] @ header.scriptPointersTableOffset;
struct TextEntry {
u16 relativeOffset;
u16 firstWord @ (u32(header.textStartOffset) + this.relativeOffset);
};
TextEntry texts[textCount] @ header.textPointersTableOffset;