diff --git a/applications/SprPoP/CHANGELOG.md b/applications/SprPoP/CHANGELOG.md new file mode 100644 index 0000000..be4e7b2 --- /dev/null +++ b/applications/SprPoP/CHANGELOG.md @@ -0,0 +1,49 @@ +# SprPoP — CHANGELOG + +Заметные изменения по релизам. **Версия и дата каждой записи берутся из +git** — из аннотированного тега (`git for-each-ref refs/tags`), а не +проставляются руками, поэтому расходиться с историей они не могут. +Заголовок записи = имя тега, дата = дата его создания. + +Здесь только то, что видно ИГРОКУ или меняет способ сборки/запуска. +Разбор причин живёт в сообщениях коммитов, открытые баги — в +`docs/BUGS_OPEN.md`, закрытые — в архиве roomtest. + +Файл начат с релиза v0.9.6; более ранняя история — в `git log` и в +досках задач. + +## v0.9.6-hang-sound-button — 2026-09-02 + +Три бага, найденные в живой игре и проверенные в MAME после исправления. + +- **Зацеп срывался на следующем кадре** (регресс, тянулся с 4e12aa5). + Кид цеплялся за кромку, поза зацепа рисовалась — и он тут же падал. + Ловилось на длинном прыжке уровня 3 (комната 7) и в attract-демо, где + Кид вместо подъёма на кромку (0,2) улетал на пики. Причина: страж + «падения сквозь стену» принимал кладку под кромкой за стену, в которую + персонаж влетел, и отменял только что состоявшийся захват. Теперь + удачный зацеп отменяет этого стража. `38fb3c0` + +- **Непрерывный взмах клинка у безоружного Кида.** На подъёме шёл + нескончаемый свист меча, которого у Кида нет. Причина: в порт не + доехали два условия оригинала, включая гард, который автор SDLPoP + подписал прямым текстом как «фикс зацикленного звука взмаха». `cb995bf` + +- **Кнопка под Кидом заливалась кладкой** на дворцовых уровнях. Кид + подтягивается на открывающую кнопку, и кромка, которая его прячет, + нарисована кирпичом (уровень 4, комната 18). Причина: подстановка + спрайта «кнопка без пола слева» действует только в подземелье, и это + условие было потеряно в перерисовке поверх персонажа — при том что в + статической отрисовке комнаты оно есть. `8548aa9` + +Сопутствующее, для разработки: + +- В доске исправлено толкование звука 11: это индикатор ПРОМАХА, а не + «любого укола». Прежняя запись описывала наш собственный код вместо + оригинала, и из-за неё в CLIMB-VS-GUARD зря отодвинули версию про порог + дистанции. `400f5cb` +- Новый набор host-тестов `t_hang`: мерит не «вис наступил», а «вис + ДЕРЖИТСЯ» — прежние наборы регресс зацепа не видели именно поэтому. + Входит в `38fb3c0`. +- В `CLAUDE.md` записан путь запуска на HDD-образе: игра лежит в + `D:\GAMES\SPRPOP`, а не в корне диска. `aaa480d` diff --git a/applications/SprPoP/CLAUDE.md b/applications/SprPoP/CLAUDE.md index c1fdaef..86b1b20 100644 --- a/applications/SprPoP/CLAUDE.md +++ b/applications/SprPoP/CLAUDE.md @@ -60,6 +60,16 @@ seqtbl, `seg007` mob/loose/падающие объекты, `seg008` отрис нового бага грепни архив по симптому: корень мог уже разбираться. Открытые файлы обязаны читаться целиком за раз. +**CHANGELOG. Ставишь релизный тег — добавь запись в `CHANGELOG.md`.** +Версия и дата в заголовке берутся ИЗ GIT, руками не проставляются: + + git for-each-ref --format='%(refname:short) | %(creatordate:short)' \ + refs/tags/<тег> + +В запись идёт только то, что видно ИГРОКУ или меняет сборку/запуск, — по +одному пункту «симптом -> причина одной фразой -> хеш коммита». Полный +разбор живёт в сообщении коммита, дублировать его сюда не надо. + Индекс документации с отметками актуальности — **`docs/README.md`**, начинать чтение оттуда. diff --git a/applications/SprPoP/docs/README.md b/applications/SprPoP/docs/README.md index 3c39d45..572563f 100644 --- a/applications/SprPoP/docs/README.md +++ b/applications/SprPoP/docs/README.md @@ -10,6 +10,7 @@ |----------|-------| | [`TASKS_OPEN.md`](TASKS_OPEN.md) | **Что берётся в работу сейчас** — начинать отсюда | | [`BUGS_OPEN.md`](BUGS_OPEN.md) | Открытые баги и незакрытые оптимизации | +| [`../CHANGELOG.md`](../CHANGELOG.md) | **Что менялось по релизам** глазами игрока; версия и дата берутся из git-тега | | [`impl_diff.md`](impl_diff.md) | **Осознанные расхождения с SDLPoP**: где сделано не дословно и почему. Новое расхождение — записью сюда, а не только комментарием в коде | | [`keys.txt`](keys.txt) | **Целевая раскладка управления**, к которой подгоняем SprPoP | | [`keys_plan.md`](keys_plan.md) | План перевода на неё: что совпадает, что переназначить, каких функций нет вовсе |