Во-первых, такой версии 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).