SprPoP: падение сквозь стену больше не проходит

Портировано опциональное исправление SDLPoP (fix_glide_through_wall,
seg005 в do_fall).  В ванили персонаж, падающий после разворота в беге,
может оказаться внутри кладки и лететь «в стене» — баг оригинала,
воспроизведённый пользователем в игре и затем на host-тесте.

Решением 2026-08-31 фикс взят в ТЕКУЩИЙ билд: играбельность важнее
буквальности.  Реализация вынесена отдельной функцией
glide_through_wall_guard() в pop_map.c намеренно — при разделении
VANILLA/ENHANCED это готовая точка отвязки, достаточно не звать её в
ванильном режиме.

ПРОВЕРКА.  Набор t_wall был заранее написан так, чтобы сторожить ЧИСЛО
заходов в кладку: до фикса их было ровно два из четырнадцати стартовых
позиций, после — ноль.  Остальные 15 наборов (в том числе phys с 1733
проверками и grab) остались зелёными.  Живая проверка в MAME
пользователем: корректно.

Ожидание в тесте обновлено ОСОЗНАННО, прежнее число сохранено рядом
отдельной константой с пометкой «сколько было до фикса»: оно измерено, и
понадобится, когда появится режим VANILLA — там ожидание станет зависеть
от режима.

ЦЕНА: +57 байт в банке 3 (свободно 3043), резидент и куча не изменились.
По скорости попадание только на кадры падения: пересчёт колонки — одно
деление, дистанция до кромки считается лишь если персонаж действительно
внутри кладки.

Документы: в аудите находка 21 переведена в «портировано» с сохранением
исходного разбора; в vanilla_vs_bugfixed статус фикса стал ВЗЯТ, сводка
пересчитана (5 взято, 32 кандидата в ENHANCED).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011MsUsEFAQfsjjQpJ7RtKVY
This commit is contained in:
2026-08-31 20:52:44 +03:00
parent c218e8b983
commit 4e12aa50d1
4 changed files with 68 additions and 19 deletions
+13 -1
View File
@@ -402,7 +402,19 @@
рано, Кид не долетел, врезался в стену и начал падать — но по X он
оказался ВНУТРИ стены и падал частично в ней.
### 21. Фикс «скольжения сквозь стену» не портирован — ранг **Г** (соответствие ванили)
### 21. Фикс «скольжения сквозь стену» — ПОРТИРОВАН 2026-08-31
> Решением пользователя исправление взято в ТЕКУЩИЙ билд: играбельность
> важнее буквальности. Реализация — `glide_through_wall_guard()` в
> `pop_map.c`, вызывается из `do_fall` в ветке «ещё летим». Цена: +57
> байт в банке 3, резидент и куча не изменились.
>
> Подтверждено host-тестом: в наборе `t_wall` число заходов в кладку
> упало с двух до нуля, остальные 15 наборов остались зелёными.
>
> Ниже — исходный разбор, по которому принималось решение.
### 21a. Исходный разбор: было соответствие ванили — ранг **Г**
*Оригинал:* в `do_fall` (seg005:37) есть блок `FIX_GLIDE_THROUGH_WALL` с
собственным комментарием SDLPoP: «Кид падает сквозь стены после разворота
@@ -177,7 +177,7 @@ ENHANCED.
| опция | что чинит | статус |
|---|---|---|
| `fix_glide_through_wall` | проход сквозь стену при падении после разворота в беге | **В РАБОТЕ** |
| `fix_glide_through_wall` | проход сквозь стену при падении после разворота в беге | **ВЗЯТ** 2026-08-31 — `glide_through_wall_guard()` в `pop_map.c`, точка отвязки для VANILLA |
| `fix_jump_through_wall_above_gate` | прыжок в тайл над воротами | НЕТ |
| `fix_drop_through_tapestry` | проваливание сквозь гобелен | НЕТ |
| `fix_running_jump_through_tapestry` | прыжок с разбега сквозь гобелен | НЕТ |
@@ -257,11 +257,10 @@ ENHANCED.
| статус | сколько |
|---|---:|
| ВЗЯТ | 4 |
| ВЗЯТ | 5 |
| ВАНИЛЬ (сознательно) | 4 |
| В РАБОТЕ | 1 |
| требует патча `seqtbl` (выполнимо) | 1 |
| НЕТ (кандидаты в ENHANCED) | 33 |
| НЕТ (кандидаты в ENHANCED) | 32 |
## Список кандидатов на BUGFIXED