/* * putsprite — вывести спрайт getimage-формата (0xFF = прозрачно, кадр * ≤ 64×64) в (x,y). Банк на время вызова — GFX_BANK_SPRITE (0x5C): * прозрачные байты (bit3) не пишутся, ОЗУ-копия фона (bit2) цела → * спрайт стирается gfx_heal/movesprite без save-буфера. Пользовательский * банк сохраняется/восстанавливается (уважаем вложенный temp-режим). * * Идёт через лин-ядро _gfx_blit_sprite (без split'а >256, 8-бит w/h) — * спрайтовая программа не тянет общий _gfx_blit_full. Клип по экрану — * в ядре. w,h — младшие байты заголовка (кадр ≤ 64). */ #include "../_bgi.h" void putsprite(int x, int y, const void *img) { const uint8_t *p = (const uint8_t *)img; uint8_t saved = gfx_get_bank(); gfx_set_bank(GFX_BANK_SPRITE); _bgi_begin(); /* Ядро принимает готовый src+stride (кэш-схема 2026-07-14): для * целой картинки src = пиксели за заголовком, stride = её ширина. */ (*_gfx_blit_fn)(x, y, p + 4, (uint16_t)(p[0] | (p[1] << 8)), p[0], p[2]); _bgi_end(); gfx_set_bank(saved); }