Ворота PoP: правильный гейт слышимости, звук «решётка встала», playsound кнопки
Проверка на сцене 9/9 (кнопка 1,8; челюсти 1,2; ворота — в комнате 4, тайл 1,9) вскрыла три расхождения. 1. Гейт слышимости стоял как «ворота в текущей комнате», а у оригинала (play_door_sound_if_visible, seg007:1239) слышны ещё и ворота в комнате СЛЕВА, если они в колонке 9; и НЕ слышны в колонке 9 своей комнаты; плюс особый случай «уровень 3, комната 2». Сцена 9/9 — ровно первый пункт, поэтому спуск решётки молчал. Подъём совпадал, потому что звук открытия идёт без гейта — эта асимметрия и была подсказкой. 2. Потерян звук 7 «решётка встала»: gate_stop (seg007:05E3) зовётся из трёх мест animate_door и каждый раз играет его через гейт. У нас во всех трёх стояло только type = -1. 3. У trigger_button оригинала есть параметр playsound, нулевой в трёх местах (вход на уровень, выход Джаффара, зелье «открыть»). Добавлен. Щелчок кнопки слышен через раз — это НЕ баг: prio 0x66 против 0x10 у челюстей, а укус занимает 465 мс из цикла 1229 мс (замерено). Разбор с цифрами — sound_plan.md §12. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -163,7 +163,8 @@ void pop_start_level(void) __banked
|
||||
* col2, row0 её же типом и модификатором (в оригинале и то и другое
|
||||
* берётся из curr_* после get_tile). */
|
||||
uint8_t tp = 2; /* row0*10 + col2 */
|
||||
pop_trigger_button(5, tp, pop_level_tile(5, tp), pop_trob_modif(5)[tp]);
|
||||
pop_trigger_button(5, tp, pop_level_tile(5, tp), pop_trob_modif(5)[tp],
|
||||
0 /* seg003:170 — playsound=0 */);
|
||||
seq = SEQ_FALL;
|
||||
} else if (entry_pose == ENTRY_POSE_RUN) {
|
||||
seq = SEQ_RUN;
|
||||
|
||||
Reference in New Issue
Block a user