aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-11 20:57:01 +0300
committerValentin Popov <valentin@popov.link>2026-10-11 20:57:01 +0300
commit1af4007433c9c140426ab251a78355691f0e25b3 (patch)
treec26f05714a572943704a011522d74b30591ae5e0 /docs
parentc90ec80dc0cc90e76b78f84d98d1ac9c5f02c4eb (diff)
downloadfparkan-1af4007433c9c140426ab251a78355691f0e25b3.tar.xz
fparkan-1af4007433c9c140426ab251a78355691f0e25b3.zip
Fix FXID resource reference offsets
Diffstat (limited to 'docs')
-rw-r--r--docs/tomes/05-render.md25
1 files changed, 21 insertions, 4 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index b104f7a..01038b7 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -735,10 +735,27 @@ struct FxResourceRef64 {
};
```
-Имена сравниваются case-insensitive по ASCII, а tail после первого nul byte
-сохраняется. Resolve выполняется при создании command object или лениво при
-первом запуске, но ошибка должна включать имя эффекта, номер команды, archive
-и resource name.
+Offsets относятся к body команды, сразу после `command_word`. Native loaders
+получают pointer на всю запись, поэтому record offset на 4 байта больше:
+
+| Opcode | Body offset | Record offset |
+| --- | ---: | ---: |
+| 2 | `0x50` | `0x54` |
+| 3 | `0x84` | `0x88` |
+| 4 | `0x84` | `0x88` |
+| 5 | `0x2C` | `0x30` |
+| 7 | `0x8C` | `0x90` |
+| 8 | `0xB4` | `0xB8` |
+| 9 | `0x84` | `0x88` |
+| 10 | `0x8C` | `0x90` |
+
+Parser сохраняет все 64 байта пары, включая suffix после первого nul byte и
+пустые поля. Декодированные имена заканчиваются на первом nul byte.
+Извлечение dependency не подтверждает визуальную parity команд.
+
+Имена сравниваются case-insensitive по ASCII. Resolve выполняется при создании
+command object или лениво при первом запуске, но ошибка должна включать имя
+эффекта, номер команды, archive и resource name.
Базовый normalized age: