/*
 * atlas_image — W0-адрес ленты idx (из каталога атласа).  Каталог
 * читается через временный мап страницы в W3 (setup-путь, не горячий).
 * Возвращённый указатель разыменовывать ТОЛЬКО при подключенной
 * странице (sprite_update мапит сам; вручную — gfx_w0_map/unmap).
 */
#include <sprinter.h>
#include <sprite.h>
#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;
}
