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