Allegro 4.2.4 в режиме палитры при повреждении Windows7 - PullRequest
0 голосов
/ 23 сентября 2011

У меня проблема с Allegro 4.2.4, работающим в режиме палитры (256 цветов) в Windows 7. Я нашел в Интернете решение по уничтожению проводника, и оно действительно работает, однако было бы нелепо ожидать, что конечный пользователь убьет проводник при попыткеиграть в игру.

Тогда я нашел решение заменить DDraw.dll взломанной версией, но она тоже не работает - DDHack просто приводит к тому, что после запуска приложения экран вообще не отображается.

Тогда я нашел решение добавить взлом реестра:

Windows Registry Editor Version 5.00
;This file has been created with DirectDraw Compatibility Tool (http://crappybitter.livejournal.com/tag/ddc_tool)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\MyApp]
"Name"="MyApp.exe"
"ID"=dword:4E7B8A88
"Flags"=hex:00,08,00,00

Но, к сожалению, это тоже не сработает, палитра продолжает мерцать всеми цветами радуги.

Есть ли у меня какое-либо другое решение, кромечем портировать все приложение на разные программные библиотеки?Можно ли исправить проблему DDraw на Vista / W7, не касаясь палитр?Если нет, то какая библиотека даст мне программирование палитр (я делаю игру, которая требует палитр) без таких проблем в Vista / W7?

Я знаю еще одно решение - я могу скомпилировать приложение Allegro 4.2.4 в качестве DOSприложение и запустить в DosBox.К сожалению, но это все, что я могу думать сейчас ...

Заранее спасибо за другие решения!

1 Ответ

1 голос
/ 23 сентября 2011

Во-первых, такой версии 4.2.4 не существует.Я предполагаю, что вы имеете в виду 4.4.2.

Истинные палитры - умирающая вещь.Установка 8-битной глубины цвета просто не очень хорошо поддерживается в современных операционных системах.Что касается Allegro 4.4, вы можете сделать это:

set_color_depth(8);
set_gfx_mode(GFX_GDI, w, h, 0, 0);

Это даст вам оконный режим и самую совместимую поддержку палитры в Windows, которую предлагает Allegro 4.4.Если вам действительно нужен полноэкранный режим, вы можете попробовать этот патч:

Это исправляет проблему с поврежденными палитрами во время игры.Это может помочь с проблемой, которую вы описываете.

Или вы можете попробовать использовать 32-битную глубину цвета для экрана и использовать 8-битные битовые карты для спрайтов и буферов:

set_color_depth(desktop_color_depth());
set_gfx_mode(GFX_AUTODETECT, w, h, 0, 0);
BITMAP *buffer = create_bitmap_ex(8, w, h);

Конечно, вам придется снова перетаскивать растровое изображение на экран после изменения палитры, поэтому, если вам нужны очень быстрые эффекты в реальном времени, это может не сработать.

В качестве альтернативы, Allegro 5.1 (то есть невыпущенная версия SVN)имеет аддон палитры, который работает через шейдеры.Это, вероятно, недокументировано и может измениться.(Обратите внимание, что серия 5 не совместима с источниками серии 4).

...