safe_step по оригиналу + BUG-CHOMP-JUMP-1 в низкоприоритетные, T-2 закрыт

safe_step при distance == 0: возвращена ветка оригинала (seg005:0604) —
seq_39 (шаг 11) вместо нашего «шага-1».  Для СТЕНЫ результат прежний: первый
же dx(1) даёт бамп, ровно как в трассе живого SDLPoP из BUG-SEAM-PINGPONG.
Для ЧОМПЕРА бампа нет (в разомкнутой фазе он не препятствие), и оригинал
уносит Кида на все 11 px — а мы шагали на один.  Это и был «микрошаг вместо
нормального короткого шага» перед челюстями.
ВНИМАНИЕ на приёмке ур.1: это тот самый safe_step из BUG-SEAM-PINGPONG —
проверить комнату 6, осторожный шаг вплотную к воротам шва.

BUG-CHOMP-JUMP-1 (низкий, маловоспроизводим, на пререлиз): прыжок с места
вплотную к чомперу иногда даёт кадр с отступом назад.  В запись сложено всё,
что выяснено: seq_3_standing_jump состоит ТОЛЬКО из положительных dx (значит
отступ даёт bumped, а не анимация); is_obstacle для чомпера у нас совпадает
с оригиналом; прямая трасса (UP+RIGHT одновременно) отката не показала —
главная гипотеза в порядке нажатий (↑ раньше → уводит в up_pressed с
выравниванием x).  Там же метод ловли.

T-2 (idle-skip) закрыт — сделан шире, чем формулировался, как DRAW-COST
шаг 1 (a25ce58).
This commit is contained in:
2026-08-08 19:46:34 +03:00
parent db4106a55e
commit 073a6e0264
2 changed files with 69 additions and 23 deletions
+9 -7
View File
@@ -229,16 +229,18 @@ static void safe_step(void)
if (distance) {
Char.repeat = 1;
seqtbl_offset_char((uint8_t)(distance + SEQ_STEP_BASE));
} else if (pop_edge_type() == EDGE_WALL) {
/* вплотную к стене: маленький шаг-1 — check_bumped отскочит назад
* (шаг назад со звуком, как оригинал), НЕ seq_39 (шаг за край=падение). */
Char.repeat = 1;
seqtbl_offset_char((uint8_t)(1 + SEQ_STEP_BASE));
} else if (Char.repeat != 0) {
} else if (pop_edge_type() != EDGE_WALL && Char.repeat != 0) {
Char.repeat = 0;
seqtbl_offset_char(SEQ_44_STEP_ON_EDGE);
} else {
seqtbl_offset_char(SEQ_39_UNSAFE_STEP); /* реальный обрыв (edge=CLOSER) */
/* Вплотную к СТЕНЕ оригинал тоже уходит сюда — seq_39 (шаг 11).
* Раньше здесь стоял «маленький шаг-1»: у стены результат тот же
* (трасса живого SDLPoP в BUG-SEAM-PINGPONG: `safe_step(d=0) -> step,
* на первом dx(1) x=62 -> bump`), но у ЧОМПЕРА бампа нет — в
* разомкнутой фазе он не препятствие, — и оригинал уносит Кида на все
* 11 px, а мы шагали на один. Отсюда «микрошаг вместо нормального
* короткого шага» перед челюстями (приёмка 2026-08-08). */
seqtbl_offset_char(SEQ_39_UNSAFE_STEP);
}
}