2nd demon file & contact parser
This commit is contained in:
30
_Utils/Dungeon/ContTRNSL.hexpat
Normal file
30
_Utils/Dungeon/ContTRNSL.hexpat
Normal 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;
|
||||
Reference in New Issue
Block a user