/* * pop_bg.h — отрисовка СТАТИЧЕСКОГО фона комнаты PoP композицией слоёв * (порт seg008.c draw_tile/wall_pattern, Шаг 3). Рисует прямо в текущую * страницу (banked GFX_BANK_TRANSPARENT — в видео-ОЗУ + теневую копию, * 0xFF прозрачен), ОДИН раз при входе в комнату. * * Данные: getimage-спрайты в атласах pop_env0..4/pop_wall/pop_fore * (toolchain/pop_pack_bg.py), палитра pop_bg.pal. Прямая адресация * id: env[id>>5] idx id&31, wall idx=id, fore idx=id — ноль remap-таблиц. */ #ifndef POP_BG_H #define POP_BG_H #include /* Загрузить 7 атласов фона. Звать ДО initgraph (как poc.c — atlas_load * трогает W3; проверенный порядок). Палитру pop_bg.pal грузит ПРИЛОЖЕНИЕ * после initgraph (gfx_pal_fload). 0 — OK, -1 — ошибка. */ int pop_bg_load(void); /* Освободить EMM-страницы атласов. */ void pop_bg_free(void); /* Нарисовать комнату: fg[30]/bg[30] — foretable-коды/backtable-модификаторы * (по строкам, row*10+col). lcol_fg/lcol_bg — 3 тайла правого столбца * ЛЕВОЙ соседней комнаты (для границы, напр. решётки ворот), или 0 — * тогда левая кромка = стена. room_num — номер комнаты (зерно стен). */ void pop_room_draw(uint8_t room_num, const uint8_t *fg, const uint8_t *bg, const uint8_t *lcol_fg, const uint8_t *lcol_bg); /* Перерисовать передний слой (fore) тайлов футпринта Kid ПОВЕРХ него — * звать ПОСЛЕ kid_draw. obj_x — ЛОГИЧЕСКАЯ X кадра (до ×8/7), obj_y — низ * спрайта, w/h — размер кадра, dir — направление Kid (<0 влево). Метрики * берутся из pop_kid (kid_fp_*). См. redraw_at_char/set_char_collision. */ void pop_fore_over_kid(int obj_x, int obj_y, uint16_t w, uint16_t h, int8_t dir); #endif