Прогон читом ROOMNAV: телепорт в комнату 4 сразу после нажатия кнопки — зеркала нет вовсе (тайл ставится в момент, когда дверь ДОРИСОВАЛА открытие, 43 тика анимации, телепорт успевает раньше); обычный вход в комнату — зеркало на месте и непроходимо, кроме правильного прыжка, то есть коллизия его видит. Сценария «постановка при игроке в комнате» в реальном прохождении нет: дверь выхода стоит не в комнате зеркала, а при входе комната и снимок room_fg берутся из данных уровня разом. Решение пользователя: телепорт по комнатам — отладочный режим, чинить нечего. Запись целиком уехала в BUGS_CLOSED.md вместе с протоколом и с указанием, чем лечить, если симптом всё же всплывёт на моде/уровне, где кнопка и зеркало в одной комнате. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
8.3 KiB
Точка входа для следующей сессии (обновлено 2026-08-11)
Файл для старта с чистого контекста: где всё стоит, что делать первым, какие
грабли уже собраны. Читать целиком — он короткий. Дальше по ссылкам:
TASKS_OPEN.md (доска), BUGS_OPEN.md (открытые баги), CLAUDE.md.
1. СЛЕДУЮЩАЯ ЗАДАЧА: L5-SHADOW — уровень 5
Уровни 1-4 приняты smoke-тестами; полные обходы всех комнат делаются по
готовности ВСЕХ уровней (политика приёмок,
решение пользователя 2026-08-11) — отдельных L3-PASS/L4-PASS больше нет.
Уровень 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 прямо в задаче, включая готовые константы.
Опора: механизм «спецсобытие порождает персонажа в слоте соперника» уже
отработан на скелете (pop_check_skel), а сама тень как charid_1_shadow
заведена на уровне 4.
2. Состояние репозитория
Всё закоммичено, main чист. tests-host: 5 наборов проходят
([char] 65, [geom] 3144, [grab] 53, [phys] 1723, [wall] 1).
make size-check: OK (65 программ, роста нет).
Коммиты 2026-08-11:
| хеш | что |
|---|---|
a823e7e |
libbgi: блочные AND/OR/XOR акселератора (строками и колонками) |
860468f |
libbgi: NOT_PUT тоже через акселератор + docs/shadow_render.md |
c0075c7 |
NEXT_SESSION: op-блиты сделаны, вид тени отложен |
Накануне (2026-08-10) закрыт L4-MIRROR: шаги 1-5 + фикс fore-прохода над
отражением; протокол — TASKS_CLOSED.md.
3. Состояние окружения
- MAME запущена с мостом, но на её HDD сейчас лежат ТЕСТЫ libbgi
(
accop.exe,bgiimg.exe), а не roomtest. Под roomtest пересобрать образ:make hdd(илиmake PROF_FLAGS="-DFIRST_LEVEL=5" hdd— при сменеFIRST_LEVELнуженtouch roomtest.c, иначе не переедет), после чего MAME обязана пройти полный рестарт (memorymame_hdd_rebuild_restart). - Остановка MAME —
mame/v306/bridge_cmd.sh 'cmd exit', НЕkill(правило пользователя).pkill -fбывает не срабатывает, и остаются ДВА инстанса, оба отвечающих на файловый IPC — тогда скриншоты приходят от чужой машины. Проверятьpgrep -f mame.armпосле остановки. - Прогон без MCP-инструментов:
bridge_cmd.sh 'cont'→ sleep ~45 с (бут DSS) →bridge_cmd.sh 'keyseq d:{ENTER}'→keyseq <имя>{ENTER}→snap /tmp/mame_snap/x.png. Имя .exe на образе — не длиннее 8 символов (FAT 8.3) и БЕЗ подчёркивания (keyseqне умеет_). - SDLPoP собран с отладочной информацией (
-O0 -g3); pkg-config на машине нет, команда сборки — в истории этого файла (git log -p). - НЕ ПРИБРАНО: в
SDLPoP/src/seg008.cдиагностическийfprintfс меткойDBGMIRRORв началеadd_objtable(гейтится поobj_type == 1 || == 4).
4. Что сделано в libbgi и чем это полезно дальше
Блочные операции акселератора — полный набор AND/OR/XOR/NOT, строками и
колонками: gfx_blit_op / gfx_blit_part_op, gfx_blit_cols_op /
gfx_blit_cols_part_wx_op (клип-окно и флип — как у копирующих близнецов),
опкод патчится SMC. putimage лишился попиксельного пути целиком (закрыт
пункт 2d-1 docs/TODO.md). Регресс — tests/accop (10/10 PASS в MAME,
побайтно). Механика и три ловушки — memory accel_block_ops; главные:
операция читает ОЗУ-КОПИЮ экрана (не VRAM), а прозрачность #FF совместима
с AND/OR, но не с XOR.
Вид тени (OR+XOR) отложен до готовности всех уровней — разбор, замеры и
варианты в ../docs/shadow_render.md.
5. Остальное открытое
- FORE-DUP — передний слой тайла рисуется дважды при перекрытии объектов (Кид+отражение всегда, Кид+соперник — весь ближний бой). Картинку не портит, тратит такты. Сначала замерить, потом чинить — окно клипа в своё время дало 3.2×.
- DIED-ON-BUTTON —
died_on_button(seg007:776) не портирован. - TORCH-ANIM-RIGHT — под запечённым пламенем могут застыть пики/меч/зелье справа от факела; на уровнях 1-4 такого соседства нет.
- GUARD-PHYS — остаток: ветка тени в
check_guard_fallout(уходит в L5-SHADOW) и живая проверка стража, нажимающего напольную кнопку. - Долгие:
BUG-SPIKE-1,BUG-CHOMP-JUMP-1(оба низкий приоритет),L3-COLOR,L1-SPEED(игра на ~39 % быстрее оригинала),TUNE-1.
6. Грабли, собранные 2026-08-10/11
- Не оценивать железо по своей же memory-заметке. Заявил, что accel
умеет только копирование и XOR потребует ~25 % кадра на CPU — неверно,
поправил пользователь. Заметка описывала копирование, я принял её
неполноту за свойство железа. Проверять по драйверу MAME
(
mame/sources/MAME/src/mame/sinclair/sprinter.cpp) иdocs/new/06-accel.md. - lldb через FIFO — плохая идея. Повторяющиеся
-oприbreakpoint command addзаписываются НЕПОЛНЫМИ. Работает надёжно:fprintf(stderr, ...)прямо в SDLPoP, пересборка (секунды) и чтение stdout. makeбезhddне обновляет образ MAME, аFIRST_LEVELживёт вroomtest.c— при смене нуженtouch roomtest.c.- Доска отставала от кода на три задачи (
L3-CHOMP,L3-SKEL, шаги 3/5L4-MIRRORзначились несделанными). Перед планированием — сверятьTASKS_OPEN.mdс кодом грепом, а не верить записи. - Диапазон
obj_x= −416..695 (посчитан изkid_data.bin). Пригодится всякий раз, когда нужна таблица по экранной X.