Files
Sprinter-SDCC/applications
snark13 9a50ab20d7 Коридор heal падающего куска — по высоте композита (-12 тыс. на кадр)
Держали константные 24 строки «на всякий случай», хотя собранный композит
знает свою высоту: у дворца 16 строк, у подземелья 19.  Теперь коридор =
высота композита + две строки сверху и одна снизу (mob_heal_up/mob_heal_h
ставит mob_spr_build).  На самой дорогой операции кадра, помноженной на шесть
падающих плит:

  pop_loose_mob_tick   168 600 -> 156 762
  зелёная пик          557 706 -> 546 948
  работа пик           931 782 -> 920 862

Плюс ТРЕТЬЯ проверка окна клипа в pop_floor_bake — снова хуже (179 914 ->
188 417), и теперь ясно ПОЧЕМУ: детальный зонд по каждому блиту показал, что
клипованный путь стоит +1 500 такта на КАЖДОМ из 7,6 блитов (+11 400), а
режет он только редкие высокие куски (в трассе нашлись два: 34 878 -> 25 872
и 28 818 -> 24 090, всего -13 700), которых в среднем по 12 перерисовкам нет.
Запись в коде: больше не пробовать.

Заодно снят детальный профиль pop_floor_bake (одна перерисовка, 179 914):
  вход                                   2 382
  pop_bar_black 60x39 (вкл. pop_cd_touch) ~15 500
  контекст draw_tile #1                  13 584
  4 блита тайла #1                       50 718
  диспетчер между блитами #1             11 388
  контекст draw_tile #2                  13 584
  4 блита тайла #2                       ~54 000
  диспетчер между блитами #2             11 388
  хвост                                   6 474

Итог по сцене от базового замера:
  работа   1 437 150 -> 920 862  (-36%)
  зелёная    805 000 -> 546 948  (-32%)
  циан       631 800 -> 273 108  (-57%, в бюджете)

Проверено: 8 наборов tests-host зелёные; в MAME кадр с четырьмя плитами в
воздухе чистый (коридор сузился — следов нет), итоговая картинка прежняя.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 14:14:12 +03:00
..