И если дело действительно в таймингах мне было бы интересно узнать что именно на них влияет,
и как происходит рассинхрон приводящий к зависанию. На эмуляторах с этим всё понятно, а вот на железе что к этому приводит? Кварц? брак процессора?
Где-то на nesdev находил описание как это происходит в BT: игра отключает рендеринг для нескольких видимых линий на экране, чтобы получить больше времени для копирования данных в chr-ram, затем включает его и если при этом произошла задержка, то бэкграунд сдвигается и триггер на нулевой спрайт не срабатывает, что приводит к зависанию.