From 3c26addcee4d7b014fcf912ed3e52bb74e477668 Mon Sep 17 00:00:00 2001 From: bird_egop Date: Fri, 15 Nov 2024 19:17:20 +0300 Subject: [PATCH] add NRes readme --- NResLib/README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 NResLib/README.md diff --git a/NResLib/README.md b/NResLib/README.md new file mode 100644 index 0000000..5f40e2a --- /dev/null +++ b/NResLib/README.md @@ -0,0 +1,45 @@ +# Библиотека для работы с 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..8] ASCII описание типа файла, например TEXM или MAT0 + [8..12] Неизвестное число + [12..16] Длина файла в байтах + [16..20] Неизвестное число + [20..40] ASCII имя файла + [40..44] Неизвестное число + [44..48] Неизвестное число + [48..52] Неизвестное число + [52..56] Неизвестное число + [56..60] Смещение подфайла от начала NRes (именно самого NRes) в байтах + [60..64] Индекс в файле (от 0, не больше чем кол-во файлов) +