/* * gfx_heal_noclip — восстановить прямоугольник экрана из ОЗУ-копии БЕЗ * клипа: вызывающий гарантирует, что прямоугольник целиком на экране, * w,h ≤ 255. Быстрый вариант gfx_heal для тайловых движков (пара к * gfx_blit_noclip). * * Зачем: gfx_heal идёт через общее ядро _gfx_heal_full (клип, нарезка * полос >256, 16-битная арифметика) — замер в MAME (PoP roomtest, * 2026-07-27): heal области 22×22 стоил 11 658 тактов при кадре 430 080, * т.е. цена почти вся в обвязке, а не в пикселях. Линейное спрайтовое * ядро _gfx_heal_sprite_noclip делает ту же работу без этого груза. * * Банк — как у gfx_heal: на время операции ВСЕГДА GFX_BANK_NORMAL * (чтение отдаёт ОЗУ-копию, запись должна дойти и до ОЗУ), затем * пользовательский банк восстанавливается. W3-скобка ставится ЗДЕСЬ: * из модуля, собранного с --w3, её вызывать нельзя (после _bgi_begin * окно W3 занято видеобанком и код вызывающего исчезает). */ #include "../_bgi.h" void gfx_heal_noclip(int x, int y, uint8_t w, uint8_t h) { uint8_t saved = gfx_get_bank(); gfx_set_bank(GFX_BANK_NORMAL); _bgi_begin(); _gfx_heal_sprite_noclip(x, y, w, h); _bgi_end(); gfx_set_bank(saved); }