Эта статья относится к играм: Автор материала: Михаил Бесчетнов aka Terminus
Описание формата BIM
Каждый файл представляет из себя сборник отдельных спрайтов. Количество спрайтов указано в последних 4-х байтах файла в виде значения LongInt, но значение это в некоторых случаях отсутствует, поэтому проще всего определить количество файлов следующим образом: В начале архива располагается область значений типа LongInt, определающих смещение на все спрайты. Т.о., если разделить смещение первого файла на 4 (длина значения типа LongInt) получится как раз общее количество содержащихся файлов-спрайтов.
Теперь опишем структуру самих спрайтов. В начале каждого спрайта размещены значения его ширины и высоты типа Word. А далее в разных BIM файлах могут быть расхождения. Условно спрайты можно разделить на два типа: сплошные области (например, поверхности земли), и прерывающиеся (например, юниты, у которых кроме значащих областей есть еще и прозрачные области).
Первый (сплошной) тип: За значениями ширины и высоты следует простая матрица пикселов размером Ширина*Высота.
Второй тип: В данном случае после между заголовком спрайта и областью данных записано некоторое подобие Таблицы Размещения Пикселов (ТРП). Суть ее в следующем. В каждой строке выявляются непрозрачные области и в указанную таблицу помещается количество таких областей, смещение по горизонтали до каждой области и размер области.
Например, сведения об области 00 FF FF 00 00 FF FF FF FF в таблице ТРП будут иметь следующий формат: 02 01 02 05 04. Иными словами: две непрозрачные области, первая из которых начинается со смещения $01 и имеет длину в 2 пиксела, а вторая - со смещения $05 и длиной в 4 пиксела. При чтении пустая область заполняется нулями, а непрозрачные пикселы читаются из области данных спрайта. Бывает, что при чтении количество сегментов равняется нулю. Это означает, что данная строка совершенно прозрачна.
Палитры для изображений хранятся в COL файлах в формате RGB.