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. Координаты, угол поворота и размер шрифта - числа с плавающей запятой.
Счётчики