a65da96960
Постановка пользователя: проверять, нужна ли отрисовка стража, когда он не двигается. Если движется — лишние ~150 000 тактов приемлемы: в оригинале во время боя число физических кадров на логический тоже растёт на единицу. Замер чтением pop_cd из памяти машины показал, насколько цена несоразмерна поводу: страж x 257..284, y 18..56 28 x 39 пламя (0,7) x 264..279, y 5..22 16 x 18 пересечение x 264..279, y 18..22 16 x 5 То есть пламя задевает страже только макушку — 80 пикселей, — а перерисовывается он целиком за 148 302 такта (85 524 спрайт с клинком и снимком + 62 778 fore-проход), это 23 % работы кадра. Пересечение при этом настоящее: дело не в грубости маски меток, проверено числами. В задаче записаны два варианта: A — частичная перерисовка только пересечения (безопаснее, укладывается в контракт pop_cd), B — не рисовать фон там, где он всё равно перекрыт неподвижным персонажем (дешевле, но обрезанное пламя попадёт в ОЗУ-копию и heal вернёт дыру, когда персонаж сдвинется). Заодно уточнено, чем НЕ является P13 (вопрос пользователя): это не перерисовка комнаты заново каждый кадр — такой вариант стоил бы порядка 3 000 000 тактов, семь растровых кадров, и оригинал так тоже не делает. Разница в цене ПОСЕЩЕНИЯ тайла: у нас fore_tile сразу блитит, у оригинала add_*table только кладёт запись, а рисует один draw_table в конце. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>