2016-05-19 3 views
0

В настоящее время я работаю над старой классической компьютерной игрой. Программирование сталкивается с множеством проблем, поскольку я иду, главным образом потому, что я не получил образование программистом или дизайнером. Хотя моя страсть к этой конкретной игре заставляет ее сушить ее.8-разрядные индексированные изображения для игр, разработанных в 90-х годах

В настоящее время я пытаюсь открыть изображение для себя. Изображения сделаны с использованием Paint Deluxe 2. Из того, что я выяснил, они все PCX-формат, когда вы открываете их для добавления изменений. Затем они сохраняются в игре во внешнем достижении рядом с исполняемым файлом в виде .bmp-файлов (из того, что я могу понять). Используемая палитра на самом деле немного странная с 6-битными каналами (не 8-битные, как вы ожидали бы).

Я сталкиваюсь с проблемой, когда разработчики это делают. Перед добавлением изображений в файл заголовок был отключен, а палитра хранилась во внешнем файле. As Paint Deluxe 2 сохраняет длину пикселей для 190x107 по 20544 байта (189x107-190x107-191x107 и 192x107 хранятся как 20544 байта пикселей, исключая заголовок и палитру). Пока должно быть 20330 байт. Это вызывает у меня головную боль. Как и кажется, изображения, используемые для игры, как-то наоборот. Похоже, что изображения хранятся в обратном направлении.

Для устранения неполадок: FILE34, который является 20330 байт, представляет собой файл ORGINAL, загружаемый игрой на экран. FILE34, который является байтом 20544, - это то, что я получаю, когда я удаляю файл после его изменения в формате pcx, а затем в формате bmp. Файл pcx также включен и может быть открыт с помощью GIMP, например. BIN_PALETTE.PAL - это палитра, используемая для изображений.

Кто-нибудь знаком с этой проблемой и может дать мне несколько советов? enter link description here

+1

Любопытно, какая игра – naomik

+0

это большая: Actua Soccer 1 – Thomas

ответ

0

BMP-файлы обычно хранятся снизу вверх (последняя строка сканирования сохраняется сначала, все вверх, до первой строки сканирования). Более свежие файлы BMP также могут храниться сверху вниз, как и в других форматах, но это реже. Если файлы игры хранятся сверху вниз, они будут отображаться вверх дном, по сравнению с обычным файлом BMP.

Кроме того, формат BMP накладывает каждую строку сканирования на 32-разрядную (длинное слово) границу, поэтому размер файла одинаковый для ширины 189-192 (для них требуется 192 байт на строку сканирования). Если файлы игры хранятся без этого дополнения, это является причиной разницы.

Для получения дополнительной информации см. BMP file format в Википедии.

Очень легко переписать ваши BMP без заголовка в формат, используемый в игре (учитывая эти два отличия). Я опишу псевдо-код процесса/использования, так как в вашем вопросе нет языкового тега:

  • Прочитайте весь массив BMP в памяти (192 x 107).
  • Создать новый массив, который может содержать выходной сигнал (190 х 107)
  • цикла по строкам в исходном
    • для каждой строки, скопировать первые 190 байт (пропустить 2 дополнените байты)
    • Хранить эти байты в новый массив, но заполнять с конца
  • Написать результирующие байты на диск

(Я могу написать выше на Java, если это вам поможет).

+0

Спасибо за ответ. Есть ли простой способ удалить отступы из файлов, ожидающих от ручного удаления их? – Thomas

+0

Привет Харальд. Было бы здорово, если бы вы могли мне помочь. В этом случае они также будут подбираться под размер игры. У меня мало опыта работы с изображениями, и для меня это очень болезненный материал. Я действительно работаю как PCX-изображения, но не работает. Поэтому я действительно запутался, почему изображения одинакового размера с одним заголовком могут привести к некоторым правильным, а некоторые неверны. – Thomas

+0

Hi Harald. Я добавил два файла на карту Dropbox. Проверьте файлы 4x4.bmp. Являются ли черно-белые поля вокруг желтого цвета цветом прокладки? – Thomas