# Sprinter Commander: результаты экранной пробы P2.1 Дата: 6 сентября 2026 года. Статус: `PASS` в MAME; проверка на реальном Sprinter ожидается. Окружение: MAME 0.287 (`b0c4527c`), машина `sprinter`, BIOS `v3.06`. Исходники пробы находятся в `tests/p2_screen/`, сохранённые кадры — в [`artifacts/mame-p2/`](../artifacts/mame-p2/README.md). ## 1. Проверяемая граница `p2screen.exe` проверяет системный координатный backend, а не интерфейс готового Commander: - экранная модель 80x32 хранится в EMM как пары `(char, attr)`; - прямоугольники выводятся ESTEX `WINREST`; - фактические клетки читаются ESTEX `RDCHAR`; - области панелей сдвигаются ESTEX `SCROLL`; - BIOS window descriptors не открываются; - к `RGADR`, `RGMOD` и VRAM-банкам программа не обращается; - палитра в принятом варианте теста не читается и не изменяется. Сборка: `--memory big --safe`. | Область | Значение | |---|---:| | `_CODE` | 4 458 байт (`0x8100..0x926A`) | | данные | 581 байт (конец `0x94AF`) | | EXE | 5 004 байта | | heap после статики | 9 809 байт | | стек | 1 279 байт | ## 2. Runtime-результаты | Этап | Результат | Артефакт | |---|---|---| | Полный `WINREST` 80x32 и полная сверка `RDCHAR` | PASS | [full.png](../artifacts/mame-p2/screen/full.png) | | Частичный `WINREST` 20x2 из offset `0x2000` | PASS | [partial-offset.png](../artifacts/mame-p2/screen/partial-offset.png) | | Scroll внутренности левой панели вверх | PASS | [left-scroll-up.png](../artifacts/mame-p2/screen/left-scroll-up.png) | | Scroll внутренности правой панели вниз | PASS | [right-scroll-down.png](../artifacts/mame-p2/screen/right-scroll-down.png) | | 1000 scroll, синхронная EMM-модель, итоговая сверка `RDCHAR` и W3 | PASS | [stress-final.png](../artifacts/mame-p2/screen/stress-final.png) | | Финальная сцена в трёх временных точках | PASS, файлы идентичны | [phase A](../artifacts/mame-p2/screen/stable-phase-a.png), [B](../artifacts/mame-p2/screen/stable-phase-b.png), [C](../artifacts/mame-p2/screen/stable-phase-c.png) | SHA-256 каждого из трёх финальных кадров: ```text dabeb114f8a7574462aeeb0731363608c1afa940da66d518f734335b36fe8f3b ``` Полная сверка после каждого функционального этапа сравнивала все 2560 клеток экрана с EMM-моделью, включая рамки, пассивную панель и общие строки. Поэтому `PASS` scroll означает не только появление новой строки, но и отсутствие побочного сдвига соседней области. ## 3. Граница палитры и исправление диагностики P2.1 намеренно принят с одним системным атрибутом `0x30` и не вызывает палитровые функции: так координатный backend проверяется отдельно от темы. Первичная визуальная интерпретация диагностических PNG ошибочно сообщала, что в одной временной фазе часть цветных символов исчезает. Проверка самих файлов показала обратное: три `flash-before-*.png` имеют одинаковые SHA-256 и одинаковые декодированные RGB-пиксели. Два именованных цветных кадра P1 также пиксельно идентичны. Отдельная проба P2.2 затем подтвердила save/set/readback/restore всех четырёх планов и стабильную сцену с шестью атрибутами. Подробности и исправление ошибочной гипотезы приведены в [результатах P2.2](p2-palette-results.md). ## 4. Что ещё не проверено - повторная инициализация backend после child, сменившего видеорежим; - измерение времени полного present, одной строки и системного scroll; - тот же сценарий на реальном Sprinter; - интеграционный прогон многоцветного `SPRCMD.EXE` после подключения темы. Эти пункты не блокируют реализацию экранной модели и skeleton P2. Аппаратный прогон остаётся gate перед признанием backend полностью платформенно подтверждённым. Многоцветная тема уже прошла отдельный MAME-gate P2.2.