Растровое изображение 1bpp из RAM растрового видео - Windows не может открыть файл - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю над эмулятором процессора Intel 8080, и мне нужно проверить работоспособность видеопамяти в игре Space Invaders.

Я получил растровые данные из ОЗУ и создал растровый заголовок 1bpp вДля того, чтобы проверить, как это видео вывод.

Разрешение Space Invaders составляет 256x224 пикселей, поэтому видео RAM составляет 7168 байт.Это мой заголовок:

FILEHEADER (14 bytes)
42 4D
36 1C 00 00
00 00 00 00
36 00 00 00

INFOHEADER (40 bytes)
28 00 00 00
00 01 00 00
E0 00 00 00
01 00
01 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00

RASTER DATA (7168 bytes)
1st ...  31th (bytes for line 1)
32th ... 63th (bytes for line 2)
...           (bytes for line n)
...           (bytes for line 224)

Заголовок растрового изображения в порядке с прямым порядком байтов.

Когда я пытаюсь открыть файл в Windows 10, он выдает ошибку обнеподдерживаемый файл.

Может ли Windows 10 открыть изображение Bitmap v3 1bpp?

1 Ответ

0 голосов
/ 03 декабря 2018

1bpp рассматривается как индексированный цветной формат (такой же, как для 4bpp и 8bpp).Поэтому таблица цветов является обязательной.

Таким образом, ваше изображение тоже выглядит примерно так:

FILEHEADER (14 bytes)
42 4D
3E 1C 00 00  <-- updated
00 00 00 00
3E 00 00 00  <-- updated

INFOHEADER (40 bytes)
28 00 00 00
00 01 00 00
E0 00 00 00
01 00
01 00
00 00 00 00
00 00 00 00 <-- is this correct?
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00

COLOR TABLE (8 bytes)  <-- added
FF FF FF 00
00 00 00 00

RASTER DATA (7168 bytes)
1st ...  31th (bytes for line 1)
32th ... 63th (bytes for line 2)
...           (bytes for line n)
...           (bytes for line 224)

Обновление

Значения пикселей вРаздел растровых данных интерпретируется как индексы в таблице цветов.А таблица цветов - это массив значений RGBA.Вы можете указать количество записей в заголовке или - если оно равно 0 - предполагается, что оно равно 2 ** n, где ni - число бит на пиксель.

В вашем случае 0-битный будет индекс0 и цвет будет 0xffffff00, т.е. белый.1 бит будет индексом 1, а цвет будет 0x00000000, т.е. белым.Если бит 0 черный, поменяйте местами записи цвета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...