/* * pop_pal.h — единый lifecycle палитры PoP, банк 10. * * Атласы запечены под фиксированные диапазоны: env/wall 0x50..0x6F, * Kid 0x70..0x8F, страж 0x90..0x9F, Тень 0xA0..0xAF. Поэтому palette * уровня нельзя «восстановить fade-ом» из старого снимка: сначала надо * загрузить логический источник, затем только выбрать яркость apply/fade. */ #ifndef POP_PAL_H #define POP_PAL_H #include /* Все 256 записей обеих графических страниц = чёрный; снимок не меняет. */ void pop_pal_black(void) __banked; /* Логические источники палитры. Они обновляют снимок, но сами не выбирают * яркость: caller обязан явно вызвать apply()/fade_in(). */ void pop_pal_game_load(void) __banked; void pop_pal_level_load(uint8_t full) __banked; void pop_pal_title_load(void) __banked; /* Фон текстовой рамки story лежит в отдельном индексе палитры: ending=1 * красит его тёмно-красным (финал), 0 оставляет файловый тёмно-синий. */ #define POP_PAL_STORY_BG 16 void pop_pal_story_load(uint8_t ending) __banked; void pop_pal_pv_load(void) __banked; /* Показ текущего снимка: 0 — исходная яркость, 4 — чёрный. */ void pop_pal_snapshot(void) __banked; void pop_pal_apply(uint8_t fade) __banked; void pop_pal_fade_out(uint8_t steps) __banked; void pop_pal_fade_in(uint8_t steps) __banked; /* Слот POP_COL_OUTSIDE (всё вне игрового поля) — чёрным. Динамический * слот: file-load палитры кладёт в него своё, поэтому доплачивается после * каждого источника, как тайлсет/Тень/соперник. */ void pop_pal_outside_apply(void) __banked; /* do_flash/remove_flash SDLPoP: меняется только нулевая запись обеих * page-палитр, сама картинка и снимок логической палитры не затрагиваются. */ void pop_pal_flash_white(uint8_t on) __banked; /* Меню — единственный пользователь keep_ui (0x37..0x3F не темнеют). */ void pop_pal_menu_dim(uint8_t fade) __banked; #endif /* POP_PAL_H */