Тайлсет дворца: палитра применялась до kid.pal и затиралась ею
Симптом (эталон SDLPoP против нашего кадра, уровень 4): дворцовая геометрия рисовалась подземельными красками — сине-серые арки вместо песочных, бирюзовая дверь уровня вместо кремовой, сланцевый пол вместо коричнево-розового. Бирюза и зелень — это dungeon-слоты 0x5E (0,117,76) и 0x5F (0,165,157). Причина в порядке старта: атласы (и вместе с ними палитра тайлсета) грузятся ДО initgraph, потому что тот снимает DSS-страницу W0. А kid.pal — ЕДИНАЯ игровая палитра, собранная из VDUNGEON (pop_pack_kid.py build_palette), — читается ПОСЛЕ initgraph и затирает слоты 0x50..0x6F. pop_bg_pal_apply() возвращает 32 записи текущего набора; зовётся сразу за gfx_pal_sync(). На смене уровня палитра по-прежнему едет внутри pop_bg_load — там initgraph давно позади. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user