Доки: план меню (рендер, 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
+27
View File
@@ -11,6 +11,33 @@
---
## QuickSave
<a id="qsave"></a>
### QSAVE. QuickSave / QuickLoad — **РЕАЛИЗОВАНО И ПРОВЕРЕНО 2026-08-22** (коммит f4b4852, тэг v0.6-pop-quicksave)
F6/F9 в roomtest. Формат снимка `'POPQ'` v3: заголовок
{P,O,P,Q,ver=3,level,reserved}, payload всех игровых переменных (Kid/Guard
через qs_char, HP, fight seed, читы speed/immortal/sound с range-валидацией
на загрузке), хвост = размер payload + XOR-контрольная сумма (старший байт =
инвертированный XOR). Носитель — файл на HDD: транзакционная запись
`unlink POP.NEW → bank_save_file → rename SAV→BAK → rename NEW→SAV`
с откатом; загрузка пробует POP.SAV, потом POP.BAK; при другом уровне —
`pop_next_level+pop_level_switch`. Сериализация через резидентные W0-примитивы
`pop_qs_*` (паттерн request-flag + `pop_qsave_process()` на границе кадра вне
Char-окон); сериализаторы добавлены в pop_map/pop_loose_mob/pop_trob/
pop_guard_ai с восстановлением инвариантов (mobs_live, trob_drawn, redraw).
Дабл-буфер закрыт `pop_qsave_restore_room()`: полная перезагрузка комнаты +
перерисовка ОБЕИХ страниц + инвалидация кэшей спрайтов и HP. Три ГСЧ
(`pop_t_seed`, `trob_seed`, `pop_fight_seed`) — все в payload.
Файловое I/O — новые `bank_load_file`/`bank_save_file` libc (без правила W3).
Критерий приёмки выполнен: сохранить, выйти по ESC, запустить заново,
загрузить — оказались там же; проверено в MAME. Полный разбор и формат —
[`../docs/quicksave_plan.md`](../docs/quicksave_plan.md) (теперь справочник).
---
## Уровни: спецсобытия
<a id="l8-mouse"></a>