impl_diff: тень спрайтами Кида — осознанное расхождение, не баг
XOR-приём оригинала требует чтения видео-ОЗУ (нельзя) и несовместим с 0xFF-прозрачностью; план — отдельный атлас тени. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -282,6 +282,41 @@ foretable ОДНА на весь проход тайлов, персонажи
|
||||
|
||||
---
|
||||
|
||||
## Тень рисуется спрайтами КИДА, а не XOR-силуэтом
|
||||
|
||||
**Файлы:** `roomtest/pop_cdraw.c` (выбор набора атласов по `charid`/`frame`).
|
||||
**Дата:** 2026-08-18 (решение принималось раньше, записано здесь).
|
||||
|
||||
**Оригинал** рисует тень тем же кадром Кида, но ДВАЖДЫ — вторым проходом со
|
||||
сдвигом на один пиксель и через XOR. Получается тёмный силуэт с контуром,
|
||||
а не «второй Кид».
|
||||
|
||||
**Мы** рисуем тень обычными спрайтами Кида, обычным блиттером — она выглядит
|
||||
как Кид.
|
||||
|
||||
**Почему.** Приём оригинала — read-modify-write по уже нарисованному, а
|
||||
читать данные из ВИДЕО-ОЗУ (там, где спрайты) на Sprinter нельзя: читается
|
||||
только ОЗУ-копия. Блочный XOR у акселератора есть и работает как раз по
|
||||
ОЗУ-копии, но с нашей прозрачностью он несовместим: прозрачность сделана
|
||||
подавлением записи 0xFF, а XOR прозрачные пиксели тоже смешает — под него
|
||||
нужен набор с прозрачным 0x00 (замер: memory `accel_block_ops`,
|
||||
`sprinter_vram_transparency`). То есть «сделать как в оригинале» всё равно
|
||||
упирается в отдельный набор спрайтов.
|
||||
|
||||
**Чем платим.** Тень визуально неотличима от Кида (уровни 4/5/6/12). На
|
||||
механику не влияет: слот, окна `Char`, ИИ и коллизия у тени свои и от
|
||||
картинки не зависят.
|
||||
|
||||
**План.** Отдельный АТЛАС ТЕНИ (готовый силуэт), а не воспроизведение
|
||||
XOR-прохода: один набор спрайтов вместо второго пути блита. До тех пор
|
||||
расхождение сознательное — багом не заводить.
|
||||
|
||||
**Что проверять при регрессе.** Уровень 6 комната 1: тень стоит слева
|
||||
через провал, поза совпадает с позой Кида-в-стойке. Родственная запись —
|
||||
«Слияние с тенью» ниже.
|
||||
|
||||
---
|
||||
|
||||
## Слияние с тенью: мигания Кида спрайтами тени нет
|
||||
|
||||
**Файлы:** `roomtest/guards.c` (`autocontrol_shadow_level12`),
|
||||
|
||||
Reference in New Issue
Block a user