docs: BUG-SEAM-DRAW-1 закрыт (не воспроизводится), заведён BUG-GATE-PASS-1
BUG-SEAM-DRAW-1: Кид упирается в решётку и встаёт на x=61, curr_col=-1, room=1 — и в комнате 1 РИСУЕТСЯ, за решёткой. При x=61 он уже внутри системы координат комнаты 1 (obj_x = 6), straddle-смещение не требуется. Остаток теоретический: при x <= 60 спрайт ушёл бы за левую кромку; полное лекарство — довести S3, но поводов нет, заводить обратно только по живому наблюдению. BUG-GATE-PASS-1: однократное наблюдение — Кид стоял НА тайле решётки (0,9) комнаты 5, дождался закрытия, пошёл вправо и прошёл в комнату 1. Повторить не удалось: в том же месте при x=196/col=9 решётка держит штатно. Плоскость блокировки для колонки 9 — x=205, а «колонка 9» по m7 это x ∈ [191,205), то есть при curr_col==9 проход невозможен по построению; значит наблюдался x >= 205, и поведение может оказаться штатным (решётка закрылась за спиной). Гипотеза НЕ подтверждена, поэтому баг оставлен открытым со списком того, что снять в следующий раз, и с двумя запасными кандидатами на корень. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -741,3 +741,30 @@ dir_56_none`. То есть стражи — такая же часть дан
|
||||
проверка занимает несколько строк — заспавнить кусок, сменить комнату, тикать
|
||||
до приземления, проверить щебень в данных уровня. Стоит первым в
|
||||
`../docs/host_tests_plan.md`.
|
||||
|
||||
<a id="bug-seam-draw-1"></a>
|
||||
## BUG-SEAM-DRAW-1. Кид, упершийся в решётку на шве, не рисуется — **ЗАКРЫТ (не воспроизводится)**
|
||||
|
||||
**Как было заведено.** Комната 5: Кид добегает до закрытой решётки (0,9),
|
||||
решётка его держит, но экран переключается на комнату 1, и в ней Кида не
|
||||
видно — он стоит на `x = 57..60`, левее кромки комнаты (col 0 начинается с 58).
|
||||
|
||||
**Проверка 2026-08-03.** Не воспроизводится: Кид упирается и встаёт на
|
||||
`x = 61`, `curr_col = -1`, `room = 1` — и в комнате 1 РИСУЕТСЯ, за решёткой,
|
||||
как и должен.
|
||||
|
||||
Почему сходится: при `x = 61` персонаж уже внутри системы координат комнаты 1
|
||||
(`obj_x = 2*61 − 116 = 6`), поэтому никакого straddle-смещения не требуется и
|
||||
обычная отрисовка справляется. Отрицательная `curr_col` тут не противоречие —
|
||||
это правило `get_tile_div_mod_m7`: `(61 − 7 − 58) / 14 = −1`.
|
||||
|
||||
**Что осталось за скобками.** Само переключение экрана штатное: `leave_room`
|
||||
(seg002:423) уводит вправо при `char_x_right >= 201`, а левая грань решётки как
|
||||
раз 201 — оригинал в этой позе тоже перелистнёт.
|
||||
|
||||
И остаётся теоретический остаток: при `x <= 60` (`obj_x <= 4`) спрайт уходил бы
|
||||
за левую кромку и обрезался. В текущей сборке Кид туда не встаёт, поэтому баг
|
||||
и не воспроизводится. Полное лекарство — довести модель straddle (S3 в
|
||||
`../docs/room_model_plan.md`): держать `Kid.room` отдельно от `drawn_room` и
|
||||
рисовать со смещением ±140, как `xpos_in_drawn_room` (seg004:0405). Пока
|
||||
поводов для этого нет — заводить обратно только по живому наблюдению.
|
||||
|
||||
Reference in New Issue
Block a user