0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-05-18 19:31:17 +03:00
bird_egop 465a7cb336 fix
2024-11-15 19:17:57 +03:00
..
2024-11-15 19:06:44 +03:00
2024-11-15 19:06:44 +03:00
2024-11-15 19:06:44 +03:00
2024-11-15 19:06:44 +03:00
fix
2024-11-15 19:17:57 +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

  1. Первые 16 байт это заголовок архива.
  • [0..4] ASCII NRes
  • [4..8] Версия кодировщика (должно быть всегда 0x100)
  • [8..12] Количество файлов
  • [12..16] Общая длина всего файла в байтах
  1. Далее идут сами файлы в архиве.

  2. В конце файла есть метаданные. Поскольку 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, не больше чем кол-во файлов)