Бітмапи · bei.pm

Опубліковано 19.11.2015·Оновлено 13.02.2025·Українська
Цей текст був автоматично перекладений за допомогою OpenAI GPT-4o Mini.

Описані на цій сторінці формати файлів базуються на технічному аналізі інтелектуальної власності Dynamix, Inc. та Sierra Entertainment.
Інтелектуальна власність сьогодні є частиною маси Activision Publishing, Inc. / Activision Blizzard, Inc. і наразі належить Microsoft Corp..

Інформація була зібрана за допомогою реверс-інженерії та аналізу даних з метою архівування та взаємодії з історичними даними.
Не використовувалися жодні власницькі або конфіденційні специфікації.

Гру наразі можна придбати на gog.com як завантаження.

Адр x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF симв.
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Зсув Тип даних Назва Пояснення
0x0000 uint(32) Вирівняна ширина

Вказує ширину рядків піксельних даних в байтах - оскільки вони вирівняні по межах у 4 байти.

Таким чином, швидко можна перейти до певного рядка зображення.

Чому це значення зберігається окремо, хоча його можна було б обчислити, незрозуміло.
Можливо, це оптимізація для коду рендеринга.

0x0004 uint(32) Зміщення

Вказує зсув першого рядка в бітовій мапі

0x0008 uint(32) Висота

Вказує висоту зображення в пікселях

0x000c uint(32) Ширина

Вказує ширину зображення в пікселях

0x0010 uint(16) Тип

Вказує тип зображення. Схоже, що це бітова маска:

  • 0x04 встановлено, якщо це графіка 1bpp.
  • 0x40 встановлено, якщо це графіка, яка повинна реалізувати віконний режим
0x0012 uint(16) Палітра

Визначає, яка палітра з файлу PRT має бути використана

Ця структура даних PRT-файлу вказує на те, як побудовані бітмапи, що використовуються для спрайтів. Ці бітмапи служать окремим елементом, з якого кілька збираються в анімаційний кадр спрайта.

Конкретні зображення даних приховані в op2_art.BMP в каталозі гри.
Чому цей файл бітмапи має (в основному правильний) заголовок RIFF-бітмапа, залишається незрозумілим. Ймовірно, Outpost 2 використовує системні API для завантаження графіки, тимчасово приймаючи цей заголовок і перезаписуючи відповідні, змінні поля.

Піксельні дані в BMP-файлі можна знайти за позначкою Offset + uint32-Offset, який можна знайти в BMP-файлі за адресою 0x000A (RIFF-офсет даних бітмапа) - і вони знову відповідають рядковій структурі зліва направо зверху вниз.

Монохромні графіки 1bpp можуть бути намальовані так, що колір 0 є повністю прозорим, а колір 1 є напівпрозорим чорним/сірим, оскільки монохромні графіки звичайно використовуються для тіней автомобілів і будівель в анімаціях.

Таким чином, можна скласти вже багато графіків.

Захищений житловий модуль (Плімуут)