aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes/05-render.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-11 17:45:54 +0300
committerValentin Popov <valentin@popov.link>2026-10-11 17:45:54 +0300
commit1c4140792def36042d641ec7456817a1f73512ba (patch)
treef8da610f55f2c2d16aff25216f775f37a9d4c1a3 /docs/tomes/05-render.md
parent45fcf0eb50b4e93cc3900671859cb20d8b1c34d0 (diff)
downloadfparkan-1c4140792def36042d641ec7456817a1f73512ba.tar.xz
fparkan-1c4140792def36042d641ec7456817a1f73512ba.zip
fix: decode TEXM 888 channels in native order
Diffstat (limited to 'docs/tomes/05-render.md')
-rw-r--r--docs/tomes/05-render.md10
1 files changed, 7 insertions, 3 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 16dd94f..a3beb02 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -521,14 +521,18 @@ struct TexmHeader32 {
556 R5 G5 B6
4444 A4 R4 G4 B4
88 L8 A8
-888 RGB8 в четырёхбайтовом element
-8888 A8 R8 G8 B8
+888 packed 0xXXRRGGBB; little-endian bytes [B,G,R,X], RGBA output использует alpha 255
+8888 packed 0xAARRGGBB; little-endian bytes [B,G,R,A], декодируется как RGBA
```
Formats 556 и 88 являются loader-confirmed, но не corpus-verified для
доступных игровых payload. CPU decoder расширяет короткие каналы до 8 bit через
повторение значимых bit, а не простым shift. Для 888 служебный четвёртый byte
-сохраняется при roundtrip.
+сохраняется в raw mip, но не попадает в RGBA output.
+Нативный код Ngi32 подтверждает layout: VA `0x10005930` упаковывает
+`0xAARRGGBB` в ARGB4444, а VA `0x1000F620`/`0x1000F70C` направляют 888/8888
+по byte-copy пути `0x1000F730` без перестановки каналов. На диске little-endian
+байты имеют порядок `[B,G,R,A]` для 8888 и `[B,G,R,X]` для 888.
Layout: