/*
 * _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;
