From 52b43b3d810c27253d89a663b6b5da6872f05334 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Wed, 12 Aug 2026 16:14:41 +0300 Subject: [PATCH] =?UTF-8?q?L9-INVERT:=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BA=D1=8D?= =?UTF-8?q?=D1=88=D1=83=20=D0=B7=D0=B5=D1=80=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BA=D0=B0=D0=B4=D1=80=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BA=D1=83=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кэш — ленивый постраничный, живёт до конца уровня; ENTER-ROOM-FAST делается шагом 4 на готовом gfx_copy_rect. Открытых вопросов в плане не осталось. Co-Authored-By: Claude Opus 5 --- applications/PoP/docs/l9_invert_plan.md | 26 +++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/applications/PoP/docs/l9_invert_plan.md b/applications/PoP/docs/l9_invert_plan.md index 4045541..70d8b89 100644 --- a/applications/PoP/docs/l9_invert_plan.md +++ b/applications/PoP/docs/l9_invert_plan.md @@ -209,7 +209,15 @@ void gfx_copy_rect(uint8_t src_page, int sx, int sy, - **кэш ключуется по СТРАНИЦЕ атласа**, а не по кадру: страница = 8 кадров, 3-10 КБ, ~0.2-0.4 растрового кадра на переворот. -Стратегия наполнения кэша — см. открытый вопрос №1 внизу. +**Стратегия наполнения — ЛЕНИВЫЙ ПОСТРАНИЧНЫЙ** (решение пользователя +2026-08-12): страница переворачивается при первом обращении к ней в +перевёрнутом режиме. Реально в ходу 5-10 страниц из 34, и если игрок зелье не +трогал, не тратится ни такта, ни страницы. + +**Время жизни кэша — ДО КОНЦА УРОВНЯ**: освобождаем страницы при смене +уровня, а не при снятии эффекта. На уровне 9 переворот случается минимум +дважды (второе зелье возвращает всё назад), плюс его снимает смерть Кида — +готовить пачку заново каждый раз было бы обидно. После [UI-SPRITES](../roomtest/TASKS_OPEN.md#ui-sprites) страницы `kid27` и `g0` станут чисто «полевыми» (деления HP уедут в константы резидента), и @@ -293,11 +301,13 @@ void gfx_copy_rect(uint8_t src_page, int sx, int sy, - **fore-слой поверх персонажа**: он рисуется по футпринту спрайта, а футпринт после переворота другой — проверить именно на сцене с колоннами. -# Открытые вопросы (ответы пользователя нужны до II.4) +# Решения пользователя (2026-08-12) -1. Стратегия наполнения кэша зеркальных кадров: ленивый постраничный (по - первому обращению), разом при входе на уровень с зельем типа 4, или офлайн - в упаковщиках. -2. Время жизни кэша: освобождать страницы при снятии эффекта / при выходе с - уровня / держать до конца программы. -3. ENTER-ROOM-FAST — делать сразу (шаг 4) или отложить до закрытия L9-INVERT. +1. **Кэш зеркальных кадров — ленивый постраничный**, наполняется по первому + обращению (см. II.4). +2. **Живёт до конца уровня**, освобождается при смене уровня. +3. **ENTER-ROOM-FAST делается сразу**, шагом 4 — на готовом `gfx_copy_rect`, + до того как на копию завяжется переворот. + +Открытых вопросов не осталось: план исполняется как есть, новые развилки — +только если разведка I.0 даст отрицательный результат по Р1.