0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-05-18 19:31:17 +03:00

48 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Библиотека для работы с NRes архивом
## Реализация на C# под .NET 8
кросс-платформенная, можно запустить на любой ОС
### Что такое NRes
Это внутренний формат данных игры, по сути представляющий из себя архив с кучей файлов.
### Примерами NRes файлов являются:
- lightmap.lib
- voices.lib
- Textures.lib
- Material.lib
- Data/Maps/*/Land.map
- Data/Maps/*/Land.msh
### Структура NRes файла
Внимание, все числа кодируются как Little-Endian, то есть `0x00_01` - это на самом деле `0x01_00`
1. Первые 16 байт это заголовок архива.
+ [0..4] ASCII NRes
+ [4..8] Версия кодировщика (должно быть всегда 0x100)
+ [8..12] Количество файлов
+ [12..16] Общая длина всего файла в байтах
2. Далее идут сами файлы в архиве.
3. В конце файла есть метаданные.
Поскольку NRes это по сути архив, длина метаданных у каждого файла разная и считается как `Количество файлов * 64`, каждый элемент метаданных - 64 байта.
+ [0..4] ASCII описание типа файла, например TEXM или MAT0
+ [4..8] Количество элементов в файле (если файл составной, например .trf)
+ [8..12] Неизвестное число
+ [12..16] Длина файла в байтах
+ [16..20] Размер элемента в файле (если файл составной, например .trf)
+ [20..40] ASCII имя файла
+ [40..44] Неизвестное число
+ [44..48] Неизвестное число
+ [48..52] Неизвестное число
+ [52..56] Неизвестное число
+ [56..60] Смещение подфайла от начала NRes (именно самого NRes) в байтах
+ [60..64] Индекс в файле (от 0, не больше чем кол-во файлов)