c93a348b4a
Сценарий: ур.1 комн.8, ряд 0, x=170, лицом вправо, решётка шва закрыта — разбежаться вправо и не отпускать. Кид проходит сквозь решётку. Корень (две трассы, наша и оригинала, стартовая позиция совпала до пикселя): смена комнаты в этой точке ШТАТНАЯ и у нас, и в оригинале — leave_room вправо блокируют только doortop. Оригинал держит Кида бампом СРАЗУ ПОСЛЕ перехода, потому что check_collisions хранит флаги по паре (колонка в СВОЕЙ комнате, номер комнаты) и сравнивает prev/curr только при совпадении номеров: решётка комнаты 8 и до, и после перехода лежит в слоте 9 с room=8, история не рвётся. У нас индекс — колонка относительно отрисованной комнаты, при переходе все индексы уезжают на 10, поэтому enter_room зовёт pop_coll_invalidate, тот подавляет бамп на кадре входа, а дальше перехода флага 0->1 уже не будет. Что делать — порт индексации оригинала (10 слотов по колонке своей комнаты + массив её номера); тогда pop_coll_invalidate не нужен вовсе. Осторожно: это сердце коллизии из BUG-SEAM-PINGPONG. SDLPoP инструментирован для сверки: POP_TRACE=1 включает покадровую печать Char + обе пары краёв, плюс маркеры BUMPED и LEAVE. В bug_list записана и команда сборки на macOS (штатный Makefile требует pkg-config, которого нет).