Мои предположения на счёт структуры файла геодаты.
Для анализа возьмём файл 16_21_conv.dat
Сначало идёт заголовок 18 байт:
Смещение Значение Комментарий
0x00 0x10 (16) Ид области по Х
0x01 0x15 (21) Ид области по Y
0x02 0x0080 Во всех файлах одинаково
0x04 0x0010 Во всех файлах одинаково
0x06 0x000372D8 Пока не знаю
0x0A 0x0000FF19 Пока не знаю
0x0E 0x0000F257 Пока не знаю
Далее собственно данные.
В каждом файле описано 65536 (256x256) зон. Длина зоны может быть разной (минимум 6 байт).
У каждой зоны есть ид описывающий её структруру. Ид занимает 2 байта, может быть 0x0000,0x4000,
0x4100, 0x4200 и т.д. Каждая зона описывает 64 (8x8) элементов, хотя у элемента может быть несколько высот (наверно так
описываются многослойные карты). У зоны с ид 0x000 есть только две коорд. высоты, возможно предпологается что у всех элементов
зоны высота одинаковая.
Зона 0x0000:
Ид Длина Пример
0x0000 6 байт 00 00 30 F2 30 F2
| | |
| | ------------ 0xF230, это координата Z = -3536
| ------------------- 0xF230, это координата Z = -3536 зачем тут две координаты пока не понятно
-------------------------- Ид зоны 0x0000
Зона 0x4000 (64 координаты)
Ид Длина Пример
0x4000 130 байт 40 00 0F E4 E7 E3 .....
| | |
| | ------------ 0xE3E7, это координата Z = -7193
| ------------------- 0xE40F, это координата Z = -7153
-------------------------- Ид зоны 0x4000
Зоны 0x4100,0x4200 (64 элемента, каждый элемент может содержать несколько координат)
Ид Длина Пример
0x4100 Переменная 41 00 01 00 06 E4 01 00 E6 E3 .....
| | | | |
| | | | ------------ 0xE3E6 это координата Z = -7194 элемента 1
| | | ------------------- 0x0001 количество координат у элемента 1
| | ---------------------------- 0xE406 это координата Z = -7162 элемента 0
| ----------------------------------- 0x0001 количество координат у элемента 0
------------------------------------------ Ид зоны 0x4100
Немного покапавшись в коде ОФФ сервака нашел как он преобразовавает файлы геодаты при загрузке.
Он создаёт для каждого файла три буфера (через CreateFileMapping и MapViewOfFile) с названиями
L2World_GeoDataZones..., L2World_GeoDataCells... L2World_GeoDataCellOffest...
Дамп этих буферов для файла 16_21_conv.dat