diff --git a/applications/PoP/roomtest/README.md b/applications/PoP/roomtest/README.md index b4b197c..a0a66c2 100644 --- a/applications/PoP/roomtest/README.md +++ b/applications/PoP/roomtest/README.md @@ -27,6 +27,20 @@ ESC выход. проблемный кадр на `1`, спокойно рассмотреть/снять пиксели — в т.ч. удалённо из MAME MCP-моста, пока анимация стоит. +**Читы** (`pop_cheat.h`; в релизной сборке выключаются через `pop_cheats`): +- **I** — бессмертие Кида (toggle). **Работает ТОЛЬКО в бою, то есть с + мечом в руке.** Удар по безоружному Киду остаётся смертельным — ровно как + в оригинале (seg002 `hurt_by_sword`: *«Being hurt when not in fighting pose + means death»*, `take_hp(100)`). Ограничение не косметическое: анимация + «получил удар» (`seq_74`) состоит из кадров 150..179, которые ВСЕ с мечом, + и подмена смерти на неё оставляла Кида в боевой стойке при `sword == 0` — + состоянии, для которого у диспетчера `control()` нет ни одной ветки, то + есть с намертво зависшим управлением + ([BUG-CHEAT-IMM-1](BUGS_CLOSED.md#bug-cheat-imm-1)). На физику (падения, + пики, чомперы) бессмертие действует всегда, независимо от меча. +- **K** — убить стража, **S** — выдать меч, **Shift+L** — следующий уровень, + **+/−** — обход комнат. + Эталон вида комнаты — `../toolchain/1.1-2.png`. ## Модули diff --git a/applications/PoP/roomtest/TASKS_OPEN.md b/applications/PoP/roomtest/TASKS_OPEN.md index 8721dc4..6d65369 100644 --- a/applications/PoP/roomtest/TASKS_OPEN.md +++ b/applications/PoP/roomtest/TASKS_OPEN.md @@ -29,6 +29,21 @@ - **libbgi:** блочные AND/OR/XOR/NOT акселератора (2026-08-11, `tests/accop`) — задел под вид тени и под любые эффекты «поверх того, что уже нарисовано». +**Обход уровней после оптимизации фаз — идёт сейчас (начат 2026-08-17).** +Оптимизация зелёной/циан фаз тронула порядок пометок и перерисовок, поэтому +уровни проходятся заново подряд: + +| уровень | статус | что нашлось и закрыто по дороге | +|---|---|---| +| 1 | **принят** (2026-08-17) | мерцание торцов плит/полов/кнопок (запечка шире копируемого прямоугольника); потолочный fore поверх падающей плиты (не было ряда −1 в проходе foretable); соседний пол под плитой (потерянная половина `draw_mob` — `set_redraw2`); залипший блеск меча (`trob_drawn` не совпадал с тем, что нарисует полная отрисовка) | +| 2 | **принят** (2026-08-17) | чёрные бары поверх стража — `bar` с `x + w > 320` заворачивался в соседнюю страницу видеопамяти (`dd40c24`); [BUG-CHEAT-IMM-1](BUGS_CLOSED.md#bug-cheat-imm-1) — боевая стойка без меча под читом бессмертия | +| 3+ | не начат | | + +Критичных багов на уровнях 1 и 2 не осталось. Следом — регресс тактов на +23/13 (документы фаз: [`../docs/perf_green_phase.md`](../docs/perf_green_phase.md), +[`../docs/perf_cyan_phase.md`](../docs/perf_cyan_phase.md), сцена и метод — +[`../docs/perf_l13_room23.md`](../docs/perf_l13_room23.md)). + Правило проекта в силе: механику сверять с `../SDLPoP/src/` ДО кодинга; диагноз платформы подтверждать артефактом (брейкпоинт/дамп/.asm), а не гипотезой (memory `defer_unexplained_quirks`).