mirror of
				https://github.com/sampletext32/ParkanPlayground.git
				synced 2025-11-03 14:59:44 +03:00 
			
		
		
		
	Библиотека для работы с 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
- Первые 16 байт это заголовок архива.
 
- [0..4] ASCII NRes
 - [4..8] Версия кодировщика (должно быть всегда 0x100)
 - [8..12] Количество файлов
 - [12..16] Общая длина всего файла в байтах
 
- 
Далее идут сами файлы в архиве.
 - 
В конце файла есть метаданные. Поскольку 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, не больше чем кол-во файлов)