diff --git a/applications/PoP/roomtest/pop_bg.h b/applications/PoP/roomtest/pop_bg.h index c193ea0..8d60ca7 100644 --- a/applications/PoP/roomtest/pop_bg.h +++ b/applications/PoP/roomtest/pop_bg.h @@ -35,6 +35,9 @@ * трогает W3; проверенный порядок). Палитру pop_bg.pal грузит ПРИЛОЖЕНИЕ * после initgraph (gfx_pal_fload). 0 — OK, -1 — ошибка. */ int pop_bg_load(uint8_t set) __banked; /* 0 подземелье, 1 дворец */ +/* Пере-применить 32 записи палитры текущего тайлсета (env 0x50, wall 0x60). + * Звать после gfx_pal_fload(kid.pal): та собрана из VDUNGEON и затирает их. */ +int pop_bg_pal_apply(void) __banked; /* Освободить EMM-страницы атласов. */ void pop_bg_free(void) __banked; diff --git a/applications/PoP/roomtest/pop_room.c b/applications/PoP/roomtest/pop_room.c index f6cbc5b..e46812f 100644 --- a/applications/PoP/roomtest/pop_room.c +++ b/applications/PoP/roomtest/pop_room.c @@ -96,6 +96,17 @@ int pop_bg_load(uint8_t set) __banked return bg_load_tile_pal(pop_tile_pal[set]); } +/* Пере-применить палитру ТЕКУЩЕГО набора. Нужна отдельно от pop_bg_load + * из-за порядка старта: атласы грузятся ДО initgraph (тот снимает + * DSS-страницу W0), а общая игровая палитра kid.pal читается ПОСЛЕ него и + * затирает слоты 0x50..0x6F — она собрана из VDUNGEON + * (pop_pack_kid.py build_palette). Звать сразу за gfx_pal_fload. */ +int pop_bg_pal_apply(void) __banked +{ + if (bg_set == 0xFF) return -1; + return bg_load_tile_pal(pop_tile_pal[bg_set]); +} + void pop_bg_free(void) __banked { int i; diff --git a/applications/PoP/roomtest/roomtest.c b/applications/PoP/roomtest/roomtest.c index 476ad6f..6ed5c15 100644 --- a/applications/PoP/roomtest/roomtest.c +++ b/applications/PoP/roomtest/roomtest.c @@ -512,6 +512,11 @@ int main(void) if (gfx_pal_fload(0, "KID\\kid.pal") < 0) /* единая игровая палитра */ gfx_pal_fload(0, "a:\\kid.pal"); gfx_pal_sync(); /* палитра 0 -> плоскость 1 */ + /* kid.pal — ЕДИНАЯ игровая палитра, собранная из VDUNGEON, и она только + * что затёрла слоты тайлсета. Возвращаем цвета текущего набора: на + * дворцовых уровнях без этого рисуется дворцовая геометрия подземельными + * красками (сине-серое вместо песочного). */ + pop_bg_pal_apply(); /* Фон комнаты рисуется в ОБЕ графические страницы: у каждой своя * ОЗУ-копия/видео-ОЗУ, а heal берёт чистый фон из ОЗУ-копии ТОЙ