/*
 * gfx_heal — восстановить прямоугольник экрана из ОЗУ-копии (стирание
 * спрайта/оверлея, нарисованного банком с битом 2: 0x54/0x5C).
 *
 * Механизм (docs/sprite-api-design.md §2): чтение из #50..#5F всегда
 * возвращает ОЗУ-копию (видео-ОЗУ write-only), поэтому accel-копия
 * src == dst == адрес экрана в банке 0x50 читает ФОН из ОЗУ и пишет
 * его в видео-ОЗУ (+ в ОЗУ то же самое — безвредно).  Оба stride = 0:
 * строку и чтения и записи выбирает один Port_Y.  Save-буфер не нужен.
 *
 * Банк на время операции — ВСЕГДА GFX_BANK_NORMAL (независимо от
 * gfx_set_bank: heal через 0x54/0x5C не имел бы смысла — запись не
 * дошла бы до ОЗУ, а через 0x58 дырявила бы FF-байты фона);
 * пользовательский банк сохраняется и восстанавливается.  Клип, полосы
 * и accel-heal — в bracket-free ядре _gfx_heal_full (общем с batch-путём
 * спрайтового движка); здесь — только банк-дисциплина и W3-скобка.
 */
#include "../_bgi.h"

void gfx_heal(int x, int y, int w, int h)
{
    uint8_t saved = gfx_get_bank();

    gfx_set_bank(GFX_BANK_NORMAL);
    _bgi_begin();
    _gfx_heal_full(x, y, w, h);
    _bgi_end();
    gfx_set_bank(saved);
}
