L9-INVERT: зафиксированы решения по кэшу зеркальных кадров и порядку работ

Кэш — ленивый постраничный, живёт до конца уровня; ENTER-ROOM-FAST делается
шагом 4 на готовом gfx_copy_rect.  Открытых вопросов в плане не осталось.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 16:14:41 +03:00
parent e11877f475
commit 52b43b3d81
+18 -8
View File
@@ -209,7 +209,15 @@ void gfx_copy_rect(uint8_t src_page, int sx, int sy,
- **кэш ключуется по СТРАНИЦЕ атласа**, а не по кадру: страница = 8 кадров, - **кэш ключуется по СТРАНИЦЕ атласа**, а не по кадру: страница = 8 кадров,
3-10 КБ, ~0.2-0.4 растрового кадра на переворот. 3-10 КБ, ~0.2-0.4 растрового кадра на переворот.
Стратегия наполнения кэша — см. открытый вопрос №1 внизу. **Стратегия наполнения — ЛЕНИВЫЙ ПОСТРАНИЧНЫЙ** (решение пользователя
2026-08-12): страница переворачивается при первом обращении к ней в
перевёрнутом режиме. Реально в ходу 5-10 страниц из 34, и если игрок зелье не
трогал, не тратится ни такта, ни страницы.
**Время жизни кэша — ДО КОНЦА УРОВНЯ**: освобождаем страницы при смене
уровня, а не при снятии эффекта. На уровне 9 переворот случается минимум
дважды (второе зелье возвращает всё назад), плюс его снимает смерть Кида —
готовить пачку заново каждый раз было бы обидно.
После [UI-SPRITES](../roomtest/TASKS_OPEN.md#ui-sprites) страницы `kid27` и После [UI-SPRITES](../roomtest/TASKS_OPEN.md#ui-sprites) страницы `kid27` и
`g0` станут чисто «полевыми» (деления HP уедут в константы резидента), и `g0` станут чисто «полевыми» (деления HP уедут в константы резидента), и
@@ -293,11 +301,13 @@ void gfx_copy_rect(uint8_t src_page, int sx, int sy,
- **fore-слой поверх персонажа**: он рисуется по футпринту спрайта, а - **fore-слой поверх персонажа**: он рисуется по футпринту спрайта, а
футпринт после переворота другой — проверить именно на сцене с колоннами. футпринт после переворота другой — проверить именно на сцене с колоннами.
# Открытые вопросы (ответы пользователя нужны до II.4) # Решения пользователя (2026-08-12)
1. Стратегия наполнения кэша зеркальных кадров: ленивый постраничный (по 1. **Кэш зеркальных кадров ленивый постраничный**, наполняется по первому
первому обращению), разом при входе на уровень с зельем типа 4, или офлайн обращению (см. II.4).
в упаковщиках. 2. **Живёт до конца уровня**, освобождается при смене уровня.
2. Время жизни кэша: освобождать страницы при снятии эффекта / при выходе с 3. **ENTER-ROOM-FAST делается сразу**, шагом 4 — на готовом `gfx_copy_rect`,
уровня / держать до конца программы. до того как на копию завяжется переворот.
3. ENTER-ROOM-FAST — делать сразу (шаг 4) или отложить до закрытия L9-INVERT.
Открытых вопросов не осталось: план исполняется как есть, новые развилки —
только если разведка I.0 даст отрицательный результат по Р1.