Files
Sprinter-SDCC/applications
snark13 af189a1d92 Композит куска: точный габарит + ИСПРАВЛЕНИЕ размеров в b2da0b8
ПОПРАВКА К b2da0b8.  Там я снял размеры частей падающего куска из каталогов
атласов с НЕВЕРНЫМ сдвигом раскладки (page = id>>5 вместо id>>4 —
POP_ENV_SHIFT равен 4).  Настоящие размеры:

    оба тайлсета   70 = 32x13   74 = 32x3
    72 = 26x16 в подземелье, 25x16 во дворце

То есть прежний комментарий в mob_render (32x13 / 32x3 / 26x16) был ВЕРЕН, а
«исправление» — нет.  Следствия:

- НИКАКОГО БАГА КОРИДОРА НЕ БЫЛО: след куска по x — mob_x .. mob_x+57, и
  старый коридор mob_x-4 .. mob_x+59 его покрывал.  Заявление про «три
  пикселя, не стиравшиеся во дворце» неверно, снимаю.
- Сам коридор оставляю как стало (mob_x .. mob_x+63): площадь та же, но
  четыре пикселя запаса переехали слева, где кусок не рисует ничего, вправо,
  где их было всего два.  Это не исправление бага, а перекладка запаса.
- КОД во всех случаях работал правильно: он читает раскладку через
  POP_ENV_SHIFT/POP_ENV_MASK, ошибка была только в моём анализе.

Само дело: композит собирается с ТОЧНЫМ габаритом вместо буфера-максимума.
Габариты частей читаются первым проходом (у тайлсетов правая часть разная),
из них считаются ширина и высота блоба, и страйд равен ширине.  Раньше блоб
объявлялся 63 px шириной при фактических 58 — пять прозрачных колонок
переносились на каждом кадре каждого куска.

  циан пик    273 108 -> 270 510
  работа пик  920 862 -> 916 458

Проверено: 8 наборов tests-host зелёные; кадр с четырьмя плитами в воздухе
совпадает пиксельно с прежним.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 14:20:29 +03:00
..