Silent Hill: Shattered Memories/RWS

Материал из ConsolWiki
Перейти к: навигация, поиск
Карта, конвертированная в формат SVG.

RWS содержит векторную карту, которая является единственной во всей игре. Факт того, что она векторная, а не растровая, позволяет масштабировать её и использовать отдельные фрагменты в качестве карт локаций.

Структура файла:

Размер Описание
Размер заголовка Заголовок
Размер блока вершин Блок вершин
Размер блока цветов Блок цветов
Размер блока надписей Блок текста
Размер блока слоёв Блок слоёв

Заголовок

Смещение Размер Описание
0x00 4 байта Вероятно сигнатура (встречалось только 0x7EC7F11E)
0x04 4 байта Ширина карты
0x08 4 байта Высота карты
Показать код на языке: C++, Delphi

Блок вершин

Вершина представляет собой координату на плоскости (x и y). Используются числа с плавающей запятой.
Структура вершины:

Смещение Размер Описание
0x00 4 байта X-координата
0x04 4 байта Y-координата
Показать код на языке: C++, Delphi

Структура блока вершин выглядит так:

Размер Описание
4 байта Количество вершин
Количество вершин × размер вершины Массив вершин
Показать код на языке: C++ (псевдокод)

Блок цветов

Используются цвета в формате RGBA8888 (4 канала, 8 бит на канал).
Структура цвета:

Смещение Размер Описание
0x00 1 байт Значение компоненты красного цвета
0x01 1 байт Значение компоненты зелёного цвета
0x02 1 байт Значение компоненты синего цвета
0x03 1 байт Значение альфа-канала
Показать код на языке: C++

Структура блока цветов:

Размер Описание
4 байта Количество цветов
Количество цветов × размер записи цвета Массив цветов
Показать код на языке: C++ (псевдокод)

Блок текста

Блок текста состоит из массива символов, представляющего собой последовательность нуль-терминированных строк.

Размер Описание
4 байта Количество символов
Количество символов Символы нуль-терминированных строк
Показать код на языке: C++ (псевдокод)


Блок слоёв

Блок слоёв содержит в себе слои карты. Его структура выглядит так:

Размер Описание
4 байта Количество слоёв
Суммарный размер слоёв Последовательность слоёв

Структура слоя

Структура слоя выглядит так:

Размер Описание
4 байта или 0 байтов для первого слоя Смещение имени в массиве блока текста, у первого слоя отсутствует
4 байта Количество полигонов
Количество полигонов × размер записи полигона Массив записей полигонов
4 байта Количество линий
Количество линий × размер записи линии Массив записей линий
4 байта Количество надписей
Количество надписей × размер записи надписи Массив записей надписей
Показать код на языке: C++ (псевдокод)


В слоях не используются напрямую координаты, цвета и тексты надписей - вместо них указываются индексы (в случае надписей - смещения строк) в массивах соответствующих блоков. Т.е. вместо вершин указываются индексы вершин, вместо цветов - индексы цветов, а вместо строк - смещения (индексы первого символа).

Полигоны

Структура полигона:

Смещение Размер Описание
0x02 2 байта Индекс цвета
0x04 2 байта Индекс вершины 1
0x06 2 байта Индекс вершины 2
0x08 2 байта Индекс вершины 3
Показать код на языке: C++

Линии

Структура линии:

Смещение Размер Описание
0x02 2 байта Индекс цвета
0x04 2 байта Индекс вершины 1
0x06 2 байта Индекс вершины 2
Показать код на языке: C++

Надписи

Структура надписи:

Смещение Размер Описание
0x00 2 байта Смещение строки в массиве символов блока текста
0x02 2 байта Индекс цвета
0x04 4 байта X-координата надписи на карте [1]
0x08 4 байта Y-координата надписи на карте
0x08 4 байта Угол поворота
0x08 4 байта Размер шрифта
Показать код на языке: C++
  1. Координаты, угол поворота и размер шрифта - числа с плавающей запятой.