Доки: план меню (рендер, restart без подтверждения), QSAVE закрыт

menu_settings_plan.md:
- §10 переписан: выбран Вариант A — текстовые строки + собственный
  растровый рендерер в новом банке; референс SDLPoP (hc_small_font /
  hc_font — один рендерер, два шрифта); шрифт как ассет из паковщика,
  прототип MS4 — системный CP866 ZG; двуязычность eng/rus через пару
  (таблица строк CP866, файл шрифта)
- Restart Level / Restart Game выполняются сразу, без подтверждения
  (§3, §8, из §11 убраны диалоги RESTART *?)
- §13 MS4: текстовый рендерер + два шрифта; §14: host-тест рендерера

quicksave_plan.md: статус «РЕАЛИЗОВАНО и проверено в MAME»
(v0.6-pop-quicksave), документ оставлен справочником по формату 'POPQ'

TASKS_OPEN/TASKS_CLOSED: запись QSAVE переехала в закрытые с полным
протоколом; docs/README.md аннотации обновлены
This commit is contained in:
2026-08-22 12:45:01 +03:00
parent f4b4852d51
commit 7fd7f28ffc
5 changed files with 159 additions and 48 deletions
+5 -30
View File
@@ -1090,37 +1090,12 @@ SPIKE-BAKED, а до того — мерцание плиты, ради кото
раскладки в `tests-host/README.md`).
### <a id="qsave"></a>QSAVE. QuickSave / QuickLoad
### <a id="qsave"></a>QSAVE. QuickSave / QuickLoad — ЗАКРЫТА 2026-08-22
> **План целиком — [`../docs/quicksave_plan.md`](../docs/quicksave_plan.md)**
> (разбор SDLPoP, инвентаризация нашего состояния, формат снимка, порядок
> восстановления, разбиение на шаги QS1…QS6, риски). Изучено 2026-08-17,
> **код не начат.**
Оговорка, с которой начинается план: **в оригинале 1989 года этого нет
вовсе**, QuickSave — enhancement SDLPoP (`seg000.c`, `USE_QUICKSAVE`,
F6/F9). Значит повторяем не букву, а устройство.
Что взять у SDLPoP без изменений: снимок — плоский список полей, один обход
на запись и на чтение (`#define process(x)`), совместимость держится
строкой версии и ничем больше; клавиша только взводит флаг, работа идёт
**между кадрами**; состояние ОТРИСОВКИ не сохраняется вовсе — комната
перерисовывается с нуля.
Чем наш случай тяжелее: уровень лежит в EMM-странице, а не в ОЗУ;
`room_modif`/`trobs``static` в банковом `pop_trob.c` (нужны
сериализаторы); ГСЧ у нас **три** (`pop_t_seed`, `trob_seed`,
`pop_fight_seed`), и пропуск любого даст «загрузилось, но играется иначе»;
и главное — **дабл-буфер**: перерисовать после загрузки надо ОБЕ страницы,
иначе старая картинка мигнёт через кадр.
Носитель — **файл** (`QUICKSAVE.SAV`, ≈1,9 КБ), EMM-страница отвергнута:
она не переживает рестарт программы, а именно рестарт — тот случай, ради
которого QuickSave и нужен (сцену каскада на 13/23 воспроизводит только
`ESC` → запуск заново). Мгновенный EMM-слот остаётся необязательным QS6.
**Критерий приёмки:** сохранить, выйти по `ESC`, запустить roomtest заново,
загрузить — и оказаться там же.
**Закрыта** (F6/F9, POP.SAV + POP.BAK, коммит f4b4852, тэг v0.6-pop-quicksave).
Протокол и устройство — [`TASKS_CLOSED.md`](TASKS_CLOSED.md#qsave);
формат снимка и разбор SDLPoP —
[`../docs/quicksave_plan.md`](../docs/quicksave_plan.md).
### <a id="l1-speed"></a>L1-SPEED. Игра идёт быстрее оригинала (найдено 2026-08-01) — ЗАКРЫТА 2026-08-19