Мышь уровня 8 + холодная половина главного цикла в банк 8
Спецсобытие уровня 8 (SDLPoP seg003:0545/0ABA, seg002:07EB): когда дверь уровня открыта, а Кид остаётся в комнате 16, через 150 кадров приходит мышь, пробегает справа налево по верхнему ряду, наступает на кнопку (0,7) — решётка (0,3) открывается — и убегает. Ассетов не потребовалось: кадры 186..188 идут по таблице Кида, их спрайты (images 130..132) уже лежат в kid16.atl, отрисовка подхватывает мышь сама. - guards.c: pop_check_mouse, autocontrol_mouse, ветки мыши в autocontrol_opponent / play_guard / check_can_guard_see_kid; - pop_leveldoor_open стал word, как в оригинале (в него же считается задержка — байт переполнился бы через 255 кадров); - leave_guard больше не записывает тень и мышь в данные уровня (seg002:02F5); - полосы HP у мыши нет (seg000:1159); - tests-host/t_mouse: 17 проверок, единственный набор с guards.c. Разгрузка резидента (куча в huge упала до 879 Б): pop_start_level, find_start_level_door, чит-навигация по комнатам и лейбл номера уехали в roomtest_cold.c (--bank 8, n_banks = 8). _CODE 25653 -> 24825, куча -> 1707 Б; кадровый путь не тронут. Проверено: tests-host 6/6, make size-check OK, живьём в MAME (мышь появилась, нажала кнопку, решётка поехала вверх, мышь ушла). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,38 @@
|
||||
|
||||
---
|
||||
|
||||
## ТЕКУЩАЯ ЦЕЛЬ: уровень 5
|
||||
## ТЕКУЩАЯ ЦЕЛЬ: уровень 8
|
||||
|
||||
Уровни 1-7 играются (smoke; зелья уровней 2 и 7 приняты пользователем
|
||||
2026-08-12). Уровень 8 **новых тайлов не приносит вовсе** (инвентарь
|
||||
`res2008.bin` целиком покрыт уровнями 1-7), тайлсет — подземелье.
|
||||
Спецсобытие уровня — мышь, [L8-MOUSE](TASKS_CLOSED.md#l8-mouse) закрыта
|
||||
2026-08-12 (хост-набор `t_mouse` + живая проверка в MAME).
|
||||
|
||||
Остаётся smoke-прогон самого уровня: он длинный и с возвратом через два
|
||||
чомпера комнаты 4, а стражи там сильнее прежних (комната 5 — skill **7**,
|
||||
это максимум из встречавшихся; 12/22/24 — skill 2/3/3).
|
||||
|
||||
<a id="mem-cold2"></a>
|
||||
### MEM-COLD2. Второй шаг разгрузки резидента
|
||||
|
||||
После [MEM-COLD1](TASKS_CLOSED.md#mem-cold1) куча 1707 Б. Когда упрётся
|
||||
снова, в банк 8 переезжают следующие кандидаты (в порядке выгоды):
|
||||
|
||||
1. `enter_room_side` — самая большая функция `roomtest.c`, зовётся раз на
|
||||
комнату. Требует вынести наружу рабочие массивы комнаты
|
||||
(`room_bg`/`lcol_*`/`rcol_*`/`below_fg`/`above_*`) — сами данные останутся
|
||||
в `_DATA`, уедет только код;
|
||||
2. `guard_over_kid` + `objtile_at_char`/`char_x_left_of`/`tile_div_mod` —
|
||||
зовётся КАЖДЫЙ кадр, но ровно один раз: цена выноса — один трамплин;
|
||||
3. блок редроя левого шва в `main` (`seam_row_sig` + разбор сигнатуры).
|
||||
|
||||
Если и этого не хватит — следующим уходит сам кадровый порядок отрисовки,
|
||||
но тогда уже стоит мерить, а не выносить наугад.
|
||||
|
||||
---
|
||||
|
||||
## ПРЕДЫДУЩАЯ ЦЕЛЬ: уровень 5
|
||||
|
||||
Уровни 1-4 играются (smoke). Дальше идём по порядку уровней; уровень 5 —
|
||||
следующий.
|
||||
|
||||
Reference in New Issue
Block a user