Files
Sprinter-SDCC/applications/SprPoP/docs
snark13 4e12aa50d1 SprPoP: падение сквозь стену больше не проходит
Портировано опциональное исправление SDLPoP (fix_glide_through_wall,
seg005 в do_fall).  В ванили персонаж, падающий после разворота в беге,
может оказаться внутри кладки и лететь «в стене» — баг оригинала,
воспроизведённый пользователем в игре и затем на host-тесте.

Решением 2026-08-31 фикс взят в ТЕКУЩИЙ билд: играбельность важнее
буквальности.  Реализация вынесена отдельной функцией
glide_through_wall_guard() в pop_map.c намеренно — при разделении
VANILLA/ENHANCED это готовая точка отвязки, достаточно не звать её в
ванильном режиме.

ПРОВЕРКА.  Набор t_wall был заранее написан так, чтобы сторожить ЧИСЛО
заходов в кладку: до фикса их было ровно два из четырнадцати стартовых
позиций, после — ноль.  Остальные 15 наборов (в том числе phys с 1733
проверками и grab) остались зелёными.  Живая проверка в MAME
пользователем: корректно.

Ожидание в тесте обновлено ОСОЗНАННО, прежнее число сохранено рядом
отдельной константой с пометкой «сколько было до фикса»: оно измерено, и
понадобится, когда появится режим VANILLA — там ожидание станет зависеть
от режима.

ЦЕНА: +57 байт в банке 3 (свободно 3043), резидент и куча не изменились.
По скорости попадание только на кадры падения: пересчёт колонки — одно
деление, дистанция до кромки считается лишь если персонаж действительно
внутри кладки.

Документы: в аудите находка 21 переведена в «портировано» с сохранением
исходного разбора; в vanilla_vs_bugfixed статус фикса стал ВЗЯТ, сводка
пересчитана (5 взято, 32 кандидата в ENHANCED).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011MsUsEFAQfsjjQpJ7RtKVY
2026-08-31 20:52:44 +03:00
..

SprPoP/docs — индекс

Актуальность на 2026-08-26 (перенос из applications/PoP/roomtest). Сюда взято только то, что ещё читают. Исполненные планы остались архивом в ../../PoP/docs/, закрытые задачи и баги — в ../../PoP/roomtest/.

Входные точки

Документ О чём
TASKS_OPEN.md Что берётся в работу сейчас — начинать отсюда
BUGS_OPEN.md Открытые баги и незакрытые оптимизации
impl_diff.md Осознанные расхождения с SDLPoP: где сделано не дословно и почему. Новое расхождение — записью сюда, а не только комментарием в коде
keys.txt Целевая раскладка управления, к которой подгоняем SprPoP
keys_plan.md План перевода на неё: что совпадает, что переназначить, каких функций нет вовсе
../assets/orig/README.md Откуда берутся исходные данные: make fetch (SDLPoP + музыка), зачем нужен и почему необязателен MSDOS/, SND_SRC

Производительность

Документ О чём
perf_registry.md Реестр оптимизаций: всё отложенное одним списком
perf_backlog.md Отложенная оптимизация отрисовки + как мерить (wait-state'ы, границы кадра)
perf_green_phase.md ЗЕЛЁНАЯ фаза (слой фона): раскладка тактов, способы ускорения G1..G6, журнал правок
perf_cyan_phase.md ЦИАН фаза (персонажи + передний слой): раскладка тактов, C1..C7, журнал правок
perf_l11_room15.md Сцена и замер: факел + чомпер + страж (ур.11 к.15)
perf_l13_room23.md Сцена и метод замера кадра: каскад плит (ур.13 к.23), зонды, канал clog
resident_budget.md Бюджет резидента W1/W2: как мерить и как освобождать
layout_plan_v2.md Раскладка кода по окнам/банкам/страницам + замеры скорости отрисовки

Движок и содержание игры

Документ О чём
full_game_plan.md Полноценная игра: автомат состояний, title/intro, demo, таймер, cutscenes, ending, Hall of Fame
levels_plan.md Уровни: загрузка, переходы, тайлсеты, читы
levels_12_15_plan.md Уровни 12/13 (тень, Джафар, падающие плиты) + что такое 14/15 и 0
midtable_analysis.md Слои отрисовки: back/mid/fore и objtable в оригинале, чего стоит порт
room_model_plan.md kid_room ≠ drawn_room (straddle): сделан S1, остальное впереди
quicksave_plan.md QuickSave/QuickLoad (реализовано): формат снимка POPQ v3 — справочник
menu_settings_plan.md Pause menu и Settings, POP.CFG, VANILLA и задел под ENHANCED
palette_plan.md Карта всех 256 слотов палитры + механика fade
status_line_text.md Строка HP как статус-строка: инвентаризация ВСЕХ текстов SDLPoP
sound_plan.md Звук через CBL: разбор и архитектура
music_runtime_index_plan.md Будущее улучшение: runtime-индексы музыки и PCM-эффектов, смена аудионаборов без перелинковки EXE
shadow_render.md Вид Тени (OR+XOR) — отложено: почему XOR несовместим с прозрачностью #FF
roomnav_skip.md Комнаты для отладочного телепорта +/: какие пропускать и почему
host_tests_plan.md Модульные тесты движка под ucsim_z80: два шва, регрессии, дифф против SDLPoP

Справочники по оригиналу

Документ О чём
PORT_PLAN.md Общая карта фаз со статусами; §6 модель движения, §10 режим памяти
KID_PLAN.md Модель персонажа: char_type, actions_*, устройство play_seq
gates_spikes_plan.md Раскладка объектов по комнатам, декод LINKLOC/LINKMAP, ссылки на seg-код
PoP/POP-DAT-FormatSpecifications.pdf Каноническая спецификация форматов .DAT (грепаемая копия — .txt)
PoP/MSDOS_RESOURCE_FORMAT.md Наш разбор ресурсов MS-DOS-версии
PoP/APPLEII_RESOURCE_FORMAT.md Наш разбор ресурсов Apple II

Заделы

Документ О чём
ideas_backlog.md Осознанно отложенные гипотезы (мышь, PRNG)
prng_alternatives.md Запасные генераторы, если упрёмся в бюджет кадра

Не переносилось

Исполнено целиком, лежит в ../../PoP/docs/: frame_pacing_plan.md (фиксированный логический кадр), l9_invert_plan.md (зелье переворота), shadow_atlas_plan.md (запечка атласа Тени).