Уровень 6: переход на 7-й, портал, многокомнатное падение плиты
Всё проверено пользователем в MAME. 1. Переход 6 -> 7 падением. leave_room (seg002:0504) для «вниз» на уровне 6 из комнаты 1 даёт особый результат −2, главный цикл (seg000:0893) читает его как ++next_level; вход на 7-м (set_start_pos, seg003:0196) ставит Кида в комнату 17 и сразу переводит экран на комнату под ней. Проверка ОБЯЗАНА идти раньше связи вниз: у комнаты 1 сосед снизу есть (шахта, комната 3). 2. BUG-BALCONY-RIGHT: правая половина портала не рисовалась. id 12 стоял в FORE_ENV_IDS (в tile_table он fore_id ЗЕЛЬЯ), но зелье рисуется из chtab_1, а в chtab_6 под этим номером — правая часть арки балкона 32x62, идущая в backtable. Спрайт уезжал в fore-атлас, env-страница получала дырку (idx 12: w=0 h=0). Найдено трассой POP_TRACE_BT + чтением каталога .atl; дифф комнаты с оригиналом 1151 -> 375. 3. BUG-BELOWROW-WALL: жёлтые треугольники в шахте падения. load_rowbelow (seg008:368) при отсутствующей комнате снизу подставляет tiles_0_empty колонкам 1..9 и tiles_20_wall только левому краю; у нас стеной забивались все 11 позиций. 4. BUG-MOB-MULTIROOM: честный mob_down_a_row (seg007:1387) — кусок переходит в комнату снизу и летит дальше. Плита (1,7) комнаты 6 пролетает шахту комнаты 7 и жмёт кнопку (2,7) комнаты 11, открывая ворота комнаты 18. 5. BUG-MOB-STALE-PAGE: чистка следа куска стояла под гейтом «в отрисованной комнате» — улетевший вниз оставлял себя на одной из страниц навсегда. 6. BUG-CHAR-STALE-PAGE: тень застывала на двух страницах в РАЗНЫХ позах. Прямоугольник и valid пишутся внутри `if (w && h)`, а снимок состояния брался безусловно — при нулевом спрайте слот залипал «тихим». Остаток (почему спрайт нулевой) заведён как SPRITE-ZERO-W0 в BUGS_OPEN. NEXT_SESSION переписан: следующая задача — зацеп за край пола в свободном падении (вход на уровень 7). tests-host 5/5, size-check чист. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Точка входа для следующей сессии (обновлено 2026-08-11)
|
||||
# Точка входа для следующей сессии (обновлено 2026-08-11, вечер)
|
||||
|
||||
Файл для старта с чистого контекста: где всё стоит, что делать первым, какие
|
||||
грабли уже собраны. Читать целиком — он короткий. Дальше по ссылкам:
|
||||
@@ -6,23 +6,22 @@
|
||||
|
||||
---
|
||||
|
||||
## 1. СЛЕДУЮЩАЯ ЗАДАЧА: [L5-SHADOW](TASKS_OPEN.md#l5-shadow) — уровень 5
|
||||
## 1. СЛЕДУЮЩАЯ ЗАДАЧА: зацеп в ПАДЕНИИ (вход на уровень 7)
|
||||
|
||||
Уровни 1-4 приняты **smoke-тестами**; полные обходы всех комнат делаются по
|
||||
готовности ВСЕХ уровней ([политика приёмок](TASKS_CLOSED.md#pass-policy),
|
||||
решение пользователя 2026-08-11) — отдельных `L3-PASS`/`L4-PASS` больше нет.
|
||||
Уровень 6 пройден и принят: спецсобытие с тенью работает, переход на уровень
|
||||
7 падением работает. Но **вход на 7-й ломается на механике**: Кид влетает в
|
||||
комнату сверху и, пролетая мимо края пола, ДОЛЖЕН иметь возможность
|
||||
зацепиться за него руками. Похоже, этого у нас нет вовсе — проверить и
|
||||
реализовать.
|
||||
|
||||
Уровень 5 **не приносит ни одного нового тайла** (инвентарь `res2005.bin`
|
||||
сверен: всё уже есть с уровней 1-4). Вся работа — одно спецсобытие: тень
|
||||
появляется в комнате 24, ждёт открытия двери, идёт к зелью, **выпивает его**
|
||||
и уходит за левый край; боя нет. Писать: `do_auto_moves` + таблица
|
||||
`shad_drink_move`, `do_init_shad`, ветку `check_shadow` для уровня 5,
|
||||
`autocontrol_shadow_level5`, плюс ветку ТЕНИ в `check_guard_fallout`.
|
||||
Всё расписано по SDLPoP прямо в задаче, включая готовые константы.
|
||||
Куда смотреть: `check_grab` / ветка `action == actions_3_in_midair` в
|
||||
seg005-seg006 SDLPoP (у нас `POP_ENABLE_JUMP_GRAB` и `check_grab_run_jump`
|
||||
в `pop_map.c` — это ДРУГОЙ случай, зацеп из прыжка). Начинать, как всегда,
|
||||
с чтения оригинала, а не с догадок.
|
||||
|
||||
Опора: механизм «спецсобытие порождает персонажа в слоте соперника» уже
|
||||
отработан на скелете (`pop_check_skel`), а сама тень как `charid_1_shadow`
|
||||
заведена на уровне 4.
|
||||
Опора: вход падением уже портирован — `FALLING_ENTRY_LEVEL/ROOM` в
|
||||
`pop_guard.h` + ветка в `pop_start_level` (`roomtest.c`), Кид появляется в
|
||||
комнате 17 и экран сразу переводится на комнату под ней.
|
||||
|
||||
## 2. Состояние репозитория
|
||||
|
||||
@@ -85,9 +84,10 @@
|
||||
(seg007:776) не портирован.
|
||||
- **TORCH-ANIM-RIGHT** — под запечённым пламенем могут застыть пики/меч/зелье
|
||||
справа от факела; на уровнях 1-4 такого соседства нет.
|
||||
- **[GUARD-PHYS](TASKS_OPEN.md#guard-phys)** — остаток: ветка тени в
|
||||
`check_guard_fallout` (уходит в L5-SHADOW) и живая проверка стража,
|
||||
нажимающего напольную кнопку.
|
||||
- **GUARD-PHYS ЗАКРЫТ** 2026-08-11: нажатие напольной кнопки НЕ-Кидом
|
||||
проверено живьём на уровне 6 (тень встаёт на `closer` и роняет решётку).
|
||||
- **[GATE-FORE-KID](BUGS_OPEN.md#gate-fore-kid)** — Кид в проёме ворот виден
|
||||
поверх решётки; портирован только шовный случай.
|
||||
- Долгие: `BUG-SPIKE-1`, `BUG-CHOMP-JUMP-1` (оба низкий приоритет),
|
||||
`L3-COLOR`, `L1-SPEED` (игра на ~39 % быстрее оригинала), `TUNE-1`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user