# Библиотека для работы с 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, не больше чем кол-во файлов)