From c0075c7754b7ae310488c098473e5348615ba780 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Tue, 11 Aug 2026 15:41:42 +0300 Subject: [PATCH] =?UTF-8?q?NEXT=5FSESSION.md:=20op-=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=82=D1=8B=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B,=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=20=D1=82=D0=B5=D0=BD=D0=B8=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Чтобы следующая сессия не начала задачу заново: библиотечная часть закрыта (полный набор блочных AND/OR/XOR/NOT в libbgi, tests/accop 10/10), а вид тени отложен по решению пользователя — со ссылкой на docs/shadow_render.md. Исходная постановка оставлена ниже как справка. Co-Authored-By: Claude Opus 5 --- applications/PoP/roomtest/NEXT_SESSION.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/applications/PoP/roomtest/NEXT_SESSION.md b/applications/PoP/roomtest/NEXT_SESSION.md index 795a757..924e6ba 100644 --- a/applications/PoP/roomtest/NEXT_SESSION.md +++ b/applications/PoP/roomtest/NEXT_SESSION.md @@ -51,9 +51,28 @@ с меткой `DBGMIRROR` в начале `add_objtable`. Убрать перед следующей сборкой SDLPoP (или оставить — он гейтится по `obj_type == 1 || == 4`). -## 3. ЗАДАЧА НА ЗАВТРА: XOR/OR-блит через акселератор +## 3. XOR/OR-блит через акселератор — СДЕЛАНО 2026-08-11, тень ОТЛОЖЕНА -Единственный открытый пункт `L4-MIRROR` — вид тени. +**Библиотечная часть закрыта.** В libbgi поднят полный набор блочных +операций акселератора — AND/OR/XOR/NOT, строками и колонками: +`gfx_blit_op` / `gfx_blit_part_op`, `gfx_blit_cols_op` / +`gfx_blit_cols_part_wx_op` (клип-окно и флип — как у копирующих близнецов); +опкод операции патчится SMC, одна функция на все операции. `putimage` +лишился попиксельного пути целиком (закрыт пункт 2d-1 `docs/TODO.md`). +Регресс — `tests/accop`, 10/10 PASS в MAME, побайтно; `tests/bgi_img` +получил две байтовые самопроверки. Механика и три ловушки — memory +`accel_block_ops`. + +**Вид тени (два блиттера OR+XOR) отложен решением пользователя** до того, +как будут сделаны все уровни: пока тень рисуется обычной копией из атласов +Кида. Причина не в примитивах — XOR несовместим с нашей прозрачностью +`#FF`, а операция читает ОЗУ-копию экрана, из-за чего два прохода +оригинала вырождаются в один XOR. Всё выясненное, замеры и четыре +варианта — [`../docs/shadow_render.md`](../docs/shadow_render.md). Ключ к +выбору варианта — список кадров, которыми тень реально пользуется +(ожидание: бег, длинный прыжок из зеркала, питьё зелья, боёвка). + +Ниже — исходная постановка задачи, оставлена как справка. **Что установлено (замером, не гипотезой).** Тень уровня 4 в оригинале рисуется ДВУМЯ блитами одного и того же спрайта Кида (seg008:1602):