docs: TASKS — цель «уровни 1-3 (подземелье)», разбор что нужно уровню 3
Palace (уровни 4+) отложен решением 2026-08-04. На доску вынесены три задачи уровня 3, снятые с данных и SDLPoP, а не с общих соображений: - L3-CHOMP: 5 чомперов (комнаты 5, 16×3, 22); шаблон как у пик/ворот, риск — банк 2 занят на 86.5%. - L3-SKEL: в данных уровня 3 стражей НЕТ ВООБЩЕ; единственный враг — скелет, и он спецсобытие check_skel (seg002:1044), а не страж из данных. Нужен новый атлас (data/SKEL, 29 файлов) — pop_pack_guard.py прибит к GUARD/. - L3-CHKP: чекпойнт (seg002:519 + seg003:141); hitp_beg_lev уже есть. Плюс инвентарь тайлов по уровням: ур. 3 вводит только chomper(18), palace-набор (lattice*) начинается с уровня 4 — отсюда и граница скоупа. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# roomtest — доска текущих задач (обновлено 2026-08-01)
|
# roomtest — доска текущих задач (обновлено 2026-08-04)
|
||||||
|
|
||||||
Не список багов (открытые — [`bug_list.md`](bug_list.md), закрытые с разбором
|
Не список багов (открытые — [`bug_list.md`](bug_list.md), закрытые с разбором
|
||||||
корней — [`bug_closed.md`](bug_closed.md)) и не план фаз
|
корней — [`bug_closed.md`](bug_closed.md)) и не план фаз
|
||||||
@@ -16,10 +16,85 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## ТЕКУЩАЯ ЦЕЛЬ: уровни 1–3 (подземелье) отлажены целиком
|
||||||
|
|
||||||
|
Решение 2026-08-04: **palace (уровни 4+) откладываем**, доводим до
|
||||||
|
играбельности три dungeon-уровня. Основание — они не требуют ни одного
|
||||||
|
нового ассета фона: инвентарь тайлов, снятый с `res200N.bin`, показывает,
|
||||||
|
что новое появляется только так —
|
||||||
|
|
||||||
|
```
|
||||||
|
ур. 1 empty, floor, spike, pillar, gate, closer, potion, loose, debris,
|
||||||
|
opener, level_door L/R, torch, wall, skeleton, sword ← всё есть
|
||||||
|
ур. 2 bigpillar_bottom(8), bigpillar_top(9), doortop(12) ← есть (2026-08-04)
|
||||||
|
ур. 3 chomper(18) ← НЕТ механики
|
||||||
|
ур. 4 lattice_pillar(25)…lattice_right(29) + тайлсет palace ← отложено
|
||||||
|
```
|
||||||
|
|
||||||
|
Порядок работ — ниже: **L3-CHOMP → L3-SKEL → L3-CHKP** (уровень 3 в
|
||||||
|
принципе не проходится без них), параллельно **L1-SPEED** (общий для всех
|
||||||
|
уровней) и приёмочные прогоны **L1-PASS / L2-PASS**.
|
||||||
|
|
||||||
|
| Задача | Что | Блокирует |
|
||||||
|
|--------|-----|-----------|
|
||||||
|
| [L3-CHOMP](#l3-chomp) | чомперы (5 шт) | прохождение ур. 3 |
|
||||||
|
| [L3-SKEL](#l3-skel) | скелет (единственный противник ур. 3) | прохождение ур. 3 |
|
||||||
|
| [L3-CHKP](#l3-chkp) | чекпойнт ур. 3 | корректный респавн ур. 3 |
|
||||||
|
| [L1-SPEED](#l1-speed) | игра на ~39 % быстрее оригинала | ощущение от ВСЕХ уровней |
|
||||||
|
| [L1-PASS](#l1-pass) / L2-PASS | сквозные прогоны + таблица 24 комнат | приёмка |
|
||||||
|
| [DBG-CHEATS](#dbg-cheats) | `[`/`]` — подгонка Кида по X | отладка (BUG-GATE-PASS-1) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## P0 — делаем сейчас
|
## P0 — делаем сейчас
|
||||||
|
|
||||||
*(KBD-1 закрыт до финальной полировки, CLIP-1 сделан — оба ниже. P0 пуст;
|
### <a id="l3-chomp"></a>L3-CHOMP. Чомперы — механика уровня 3
|
||||||
следующая в работе — P1, начиная с L1-START/L1-EXIT.)*
|
|
||||||
|
**Где:** 5 штук, комнаты 5(тайл 4), 16(23,24,25), 22(26). Дальше они почти
|
||||||
|
на каждом уровне, так что это вложение не только в ур. 3.
|
||||||
|
|
||||||
|
**Что портировать:** `animate_chomper` (seg007) — состояние в `room_modif`,
|
||||||
|
как у пик/ворот, значит шаблон уже отработан (`gates_spikes_plan.md`);
|
||||||
|
коллизия и смерть Кида в сомкнутых челюстях (`seg004`/`seg006`); отрисовка
|
||||||
|
кадра по модификатору (`draw_tile_anim`, ветка `tiles_18_chomper`).
|
||||||
|
|
||||||
|
**Риск:** банк 2 (`pop_bg`) занят на **86.5 %, свободно 2213 Б** — считать
|
||||||
|
место ДО кодинга (`levels_plan.md` §5.1), иначе повторится «банк 2 упёрся
|
||||||
|
в потолок» (коммит 2f3e854). Свободные номера банков есть (5+).
|
||||||
|
|
||||||
|
### <a id="l3-skel"></a>L3-SKEL. Скелет — единственный противник уровня 3
|
||||||
|
|
||||||
|
**Важно:** в данных уровня 3 **стражей нет вообще** (`guards_tile` пуст во
|
||||||
|
всех 24 комнатах). Единственный враг — скелет, и он не «страж из данных»,
|
||||||
|
а **спецсобытие** `check_skel` (seg002:1044):
|
||||||
|
|
||||||
|
> в комнате 1, когда `Kid.curr_col` == 2 или 3 и дверь уровня открыта,
|
||||||
|
> тайл `tiles_21_skeleton` (комната 1, тайлпос 15) стирается в пол, а на
|
||||||
|
> его месте поднимается персонаж: `charid_4_skeleton`, меч сразу вынут,
|
||||||
|
> `seq_88_skel_wake_up`, skill 2, HP 3.
|
||||||
|
|
||||||
|
Ещё два тайла скелета (комнаты 17 и 19) — декорация, они не оживают.
|
||||||
|
|
||||||
|
**Что нужно:**
|
||||||
|
- `charid_4_skeleton` в `enter_guard`/`pop_guard_enter` (seg002:196): при
|
||||||
|
`tbl_guard_type[level] == 2` персонаж поднимается **с вынутым мечом** и
|
||||||
|
последовательностью `seq_63_guard_active_after_fall`, а не
|
||||||
|
`seq_77_guard_stand_inactive`;
|
||||||
|
- скелет **бессмертен** — чит `K` его уже не берёт (`pop_guard_kill`
|
||||||
|
проверяет `CHARID_4_SKELETON`), но и боёвка должна возвращать его к
|
||||||
|
жизни (seg002:252);
|
||||||
|
- **новый атлас**: `../SDLPoP/data/SKEL/` (29 файлов) — `pop_pack_guard.py`
|
||||||
|
сейчас прибит к `GUARD/`, нужен параметр набора (`tbl_guard_dat` =
|
||||||
|
GUARD/FAT/SKEL/VIZIER/SHADOW).
|
||||||
|
|
||||||
|
### <a id="l3-chkp"></a>L3-CHKP. Чекпойнт уровня 3
|
||||||
|
|
||||||
|
`level3_set_chkp` (seg002:519): вход в комнату 7 ставит `checkpoint = 1` и
|
||||||
|
`hitp_beg_lev = hitp_max`. `do_startpos` (seg003:141) при `checkpoint`
|
||||||
|
подменяет старт: комната 2, тайлпос 6, направление влево, и убирает
|
||||||
|
loose-плиту (комната 7, колонка 4, ряд 0). Механика `hitp_beg_lev` уже
|
||||||
|
есть (сделана в L2), остаётся сам флаг и подмена старта.
|
||||||
|
|
||||||
|
|
||||||
### KBD-1. Shift + стрелки: нажатия теряются — **ПРИЧИНА НАЙДЕНА, ФИКС ПРОВЕРЕН**
|
### KBD-1. Shift + стрелки: нажатия теряются — **ПРИЧИНА НАЙДЕНА, ФИКС ПРОВЕРЕН**
|
||||||
|
|
||||||
@@ -424,7 +499,7 @@ BUG-1 (провал на row 1 при переходе через открыты
|
|||||||
5 строк из 24, инструмент (`ROOMNAV`) готов. Делать вместе с L1-PASS: это
|
5 строк из 24, инструмент (`ROOMNAV`) готов. Делать вместе с L1-PASS: это
|
||||||
единственный оставшийся источник новых багов уровня 1.
|
единственный оставшийся источник новых багов уровня 1.
|
||||||
|
|
||||||
### L1-SPEED. Игра идёт быстрее оригинала (найдено 2026-08-01)
|
### <a id="l1-speed"></a>L1-SPEED. Игра идёт быстрее оригинала (найдено 2026-08-01)
|
||||||
Сверка таймингов: оригинал — `BASE_FPS = 60` при `base_speed = 5` тиков на
|
Сверка таймингов: оригинал — `BASE_FPS = 60` при `base_speed = 5` тиков на
|
||||||
логический кадр (`SDLPoP/src/types.h:1373`, `data.h:869`) = **83.3 мс**, в бою
|
логический кадр (`SDLPoP/src/types.h:1373`, `data.h:869`) = **83.3 мс**, в бою
|
||||||
`fight_speed = 6` = **100 мс**. У нас `roomtest.c` ждёт **три** `gfx_wait_vsync()`
|
`fight_speed = 6` = **100 мс**. У нас `roomtest.c` ждёт **три** `gfx_wait_vsync()`
|
||||||
@@ -433,7 +508,7 @@ BUG-1 (провал на row 1 при переходе через открыты
|
|||||||
Условие «делать ПОСЛЕ CLIP-1» **снято** — CLIP-1 закрыт (см. P0). Проверка —
|
Условие «делать ПОСЛЕ CLIP-1» **снято** — CLIP-1 закрыт (см. P0). Проверка —
|
||||||
секундомером по одинаковому отрезку рядом с живым SDLPoP, не «на глаз».
|
секундомером по одинаковому отрезку рядом с живым SDLPoP, не «на глаз».
|
||||||
|
|
||||||
### L1-PASS. Сквозное прохождение уровня 1
|
### <a id="l1-pass"></a>L1-PASS. Сквозное прохождение уровня 1
|
||||||
От старта до двери уровня одним заходом: подбор меча, страж, кнопки/ворота,
|
От старта до двери уровня одним заходом: подбор меча, страж, кнопки/ворота,
|
||||||
пики, loose-полы, зелье, падения. Это приёмка этапа 1 и одновременно
|
пики, loose-полы, зелье, падения. Это приёмка этапа 1 и одновременно
|
||||||
регресс-база для уровня 2.
|
регресс-база для уровня 2.
|
||||||
@@ -491,7 +566,7 @@ Shift+L → уровень 3 (комната 9). То есть цепочка
|
|||||||
- цвет стража из данных (`guards_color`, на уровне 2 их три разных) — у нас
|
- цвет стража из данных (`guards_color`, на уровне 2 их три разных) — у нас
|
||||||
один атлас; отдельная задача, к переходам отношения не имеет.
|
один атлас; отдельная задача, к переходам отношения не имеет.
|
||||||
|
|
||||||
### DBG-CHEATS. Отладочные читы SDLPoP — разведка сделана, код не написан
|
### <a id="dbg-cheats"></a>DBG-CHEATS. Отладочные читы SDLPoP — разведка сделана, код не написан
|
||||||
|
|
||||||
Записано 2026-08-03 (по ходу охоты за BUG-GATE-PASS-1, отложено на потом).
|
Записано 2026-08-03 (по ходу охоты за BUG-GATE-PASS-1, отложено на потом).
|
||||||
Мотив прямой: мост MAME **теряет нажатия при быстрой отправке**, поэтому
|
Мотив прямой: мост MAME **теряет нажатия при быстрой отправке**, поэтому
|
||||||
|
|||||||
Reference in New Issue
Block a user