/* * _gfx_state — общее состояние графики (модуль только с данными). * * Пишут gfx_set_visible_page / gfx_set_draw_page / * gfx_set_bank; читают все mode-специфичные примитивы. */ #include "../_bgi.h" uint8_t _gfx_visible_page; uint8_t _gfx_draw_page; /* См. memory/sprinter_vram_transparency.md про биты 0x50..0x5F * (0x50 normal, 0x54 temp, 0x58 transparent, 0x5C оба). */ uint8_t _gfx_bank = 0x50; /* Каждая VRAM-строка — 1024 байта: page 0 занимает байты 0..319 * (CPU 0xC000+), page 1 — 320..639 (CPU 0xC140+), остаток — дескрипторы * режима/палитра, их не трогаем. */ uint16_t _gfx_addr_base = 0xC000; uint16_t _gfx_addr_shadow_base = 0xC140; /* Клип спрайтов по экрану: 1 = включён (безопасно, дефолт), 0 = выключен * (приложение само гарантирует, что спрайты не выходят за края — даёт * ~+19% на анимации, см. docs/sprite-api-design.md). Читает движок/ * putsprite/movesprite: при 1 зовут clip-ядра, при 0 — noclip-ядра. * Ненулевой дефолт → в _INITIALIZED (как _gfx_bank). */ uint8_t _gfx_sprite_clip = 1;