/* * 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(); if (_gfx_sprite_clip) _gfx_blit_sprite(x, y, img, 0, 0, p[0], p[2]); else _gfx_blit_sprite_noclip(x, y, img, 0, 0, p[0], p[2]); _bgi_end(); gfx_set_bank(saved); }