/*
 * 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);
}
