Files
Sprinter-SDCC/applications
snark13 d0030922ff Оптимизация логики, шаг 2: пробеги вместо ветвления на колонку
- move_coll_to_prev -> memcpy (LDIR): цикл на C пересчитывал адрес
  назначения через слот кадра IX и обходился в 5 514 тактов на 14 байт.
- Окно перебора режется на НЕПРЕРЫВНЫЕ пробеги (комната слева / своя /
  справа), по каждому идёт coll_scan с шагающим указателем.  Прежний
  «быстрый путь для окна внутри комнаты» не срабатывал почти никогда: Кид
  в колонке 0 даёт окно с −1, и всегда шёл медленный сбор во временный
  буфер с тернарником на колонку (1 340 тактов на колонку).
- Пролог ряда (координата грани, длина окна, смещение слота) вынесен из
  тела ряда на кадр; базы соседних рядов — те же ±10 без пересчёта.

check_collisions 44 022 -> 38 334, физика Кида 67 518 -> 63 102, работа за
логический кадр 470 964 -> 466 560 (бюджет растрового кадра 430 000).
Замер итерации: пустая колонка 750 тактов, колонка-стена ~1 700.

tests-host: все 5 наборов прошли.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 15:09:51 +03:00
..