Мышь уровня 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:
@@ -27,8 +27,13 @@ uint8_t pop_droppedout;
|
||||
/* leveldoor_open (seg007:456): дверь уровня доехала до верха. Ставит
|
||||
* анимация двери (pop_trob, банк 6), читает спецсобытие подъёма скелета
|
||||
* (guards.c, банк 1) — снова случай «данные через границу банков».
|
||||
* Сбрасывается стартом уровня (seg003:97). */
|
||||
uint8_t pop_leveldoor_open;
|
||||
* Сбрасывается стартом уровня (seg003:97).
|
||||
*
|
||||
* ШИРИНА — word, как в оригинале (data.h:361), а не byte: на уровне 8
|
||||
* do_timers СЧИТАЕТ этой же переменной время до появления мыши
|
||||
* (`++leveldoor_open` каждый кадр, пока Кид в комнате 16), и байт
|
||||
* переполнился бы через 255 кадров, обнулив признак «дверь открыта». */
|
||||
uint16_t pop_leveldoor_open;
|
||||
|
||||
/* ---- Шина управления (seg006 globals) ------------------------------ *
|
||||
* Объявлены в pop_ctrl.h, а ЛЕЖАТ здесь: к ним обращаются ТРИ банка —
|
||||
|
||||
Reference in New Issue
Block a user