/* * _pop_sfx.h — внутренний контракт между половинами звука (НЕ публичный, * публичный — pop_sfx.h). Горячая половина живёт в резиденте * (pop_sfx.c), холодная в банке (pop_sfx_cold.c); делят они массив * физических страниц и насос. */ #ifndef _POP_SFX_INTERNAL_H #define _POP_SFX_INTERNAL_H #include #include "pop_snd_tbl.h" /* тип записи и инварианты (НЕ генерируется) */ /* РАСКЛАДКА НАБОРА и его страницы — общие данные обеих половин, живут в * pop_snd_data.c. Значения приезжают с диска (SND/snd.idx): холодная * половина их читает и проверяет, горячая только пользуется. */ extern pop_snd_ent_t pop_snd_tbl[POP_SND_COUNT]; extern uint8_t pop_snd_page[POP_SND_MAX_PAGES]; /* Сколько страниц у загруженного набора; 0 — набор не поднят. */ extern uint8_t pop_snd_pages; /* 1 — набор поднят и CBL открыт; 0 — играем молча. */ extern uint8_t pop_snd_ok; /* Насос: отдать n байт в CBL. Резидентный — его адрес отдаётся в * cbl_open() холодной половиной. */ int pop_sfx_fill(uint16_t n); #endif