/* * atlas_image — W0-адрес ленты idx (из каталога атласа). Каталог * читается через временный мап страницы в W3 (setup-путь, не горячий). * Возвращённый указатель разыменовывать ТОЛЬКО при подключенной * странице (sprite_update мапит сам; вручную — gfx_w0_map/unmap). */ #include #include #include "../_bgi.h" const void *atlas_image(const atlas_t *a, uint8_t idx) { uint8_t saved = _io_page_w3; const uint8_t *e; uint16_t off; sprinter_page_w3(a->page); e = (const uint8_t *)(0xC000 + _ATL_DIR_OFF) + (uint16_t)idx * 8; off = e[0] | (uint16_t)(e[1] << 8); sprinter_page_w3(saved); return (const void *)off; }