ea07a8d7b0
ui_begin() звал pop_sfx_pause() перед полностраничной accel-копией, и это слышно: pause закрывает CBL целиком (cbl_close), курсор трека стоит, и короткая мелодия начала уровня замирала ровно на время перерисовки меню — а на перемещении по пунктам это повторялось на каждом кадре меню. Обоснование заплатки устарело. Лист, который зовёт gfx_copy_page (_bgi_scroll_rows_raw), режет DI бандами по 16 строк — ~1,6 мс против дедлайна насоса 11,7 мс (85,4 порции в секунду), между бандами есть окно прерываний. Тот же полностраничный копир каждый кадр делают игровой цикл и катсцены, и звук там не рвётся. Скрежет, под который заплатка ставилась, шёл от чтения насосом мусора и вылечен отдельно. Парный pop_sfx_start() в ui_end оставлен: он идемпотентен и чинит вход в меню при закрытом выводе (например сразу после загрузки уровня). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>