/* * _pop_kid.h — ВНУТРЕННИЙ контракт движка Kid: pop_kid.c (резидент W1, * интерпретатор seqtbl) ↔ pop_kboot.c (банк 8, загрузка ресурсов). * * Загрузка атласов Кида и страницы анимации отрабатывает РАЗ ЗА ИГРУ, и * держать её в дефицитном W1 незачем; интерпретатор же зовут из четырёх * банков каждый тик — он остался в резиденте. Общее между ними — только * дескриптор страницы данных: он объявлен здесь и определён в pop_kid.c * (данные банковых модулей всё равно линкуются в общий _DATA). */ #ifndef _POP_KID_H #define _POP_KID_H #include /* Смещение данных в странице анимации; ниже 0x100 — ISR-стаб W0. */ #define KD_DATA_OFF 0x100u extern uint8_t kdat_blk; /* EMM-блок страницы kid_data.bin */ extern uint8_t kdat_page; /* её номер (маппится в W0 на время play_seq) */ extern uint8_t kdat_ok; /* данные загружены */ /* ПРАВИЛО ОКНА W3: банковый модуль исполняется из W3 и переключать это окно * не может (следующая инструкция придёт уже из чужой страницы). Поэтому * ЧТЕНИЕ kid_data.bin — pop_kid_data_load — осталось в резиденте, а в банк * уехало только то, что читает через W0 или вообще не трогает окна. * То же правило и в _pop_level.h. */ #endif /* _POP_KID_H */