L9-INVERT II.4: персонажи рисуются перевёрнутыми (зеркальные страницы атласов)
Спрайты персонажей хранятся column-major (ради бесплатного H-флипа), а вертикальное зеркало у такой раскладки — разворот байтов ВНУТРИ колонки, чего accel не умеет. Поэтому pop_vflip.c готовит зеркальные КОПИИ страниц атласов: копия побайтово повторяет раскладку .atl (заголовок, каталог, смещения лент), развёрнуты только пиксели — значит вызывающему достаточно подменить номер страницы, которую он мапит в W0. * Кэш ленивый (страница зеркалится при первом обращении в перевёрнутом виде) и живёт до смены уровня — зелье переключает состояние туда-обратно, перезеркаливать по 16 КБ на каждый переворот незачем. EMM хватает: 34 страницы из ~215 свободных. * pop_cdraw/pop_kdraw: страница + позиция (top = 191 - obj_y для персонажа, 192 - top - h для клинка). «Пропустить skip строк сверху» у зеркальной ленты = «срезать снизу» у оригинала, поэтому клипы считаются как обычно. * Модуль резидентный: он маппит W3 (приёмник копии) — банку так нельзя. * pop_vflip_reset на смене уровня: копии сделаны из старых страниц. Проверено в MAME: чит U переворачивает всё разом, Кид и факелы вверх ногами, полоса HP на месте, бег без следов на фоне (heal бьёт в те же координаты). ОСТАЁТСЯ (L9-CLIPCHAR): clip_char в перевороте должен резать снизу, а не сверху — пока при pop_upside не режем вовсе. Тени/брызг это не касается.
This commit is contained in:
@@ -240,3 +240,21 @@ end
|
||||
- **Второй видеорежим/варианты BIOS** — при необходимости менять
|
||||
`COMMON_ARGS`.
|
||||
```
|
||||
|
||||
## 10. Тайминги MCP-моста (run_bridge.sh) — НЕ ждать дольше
|
||||
|
||||
Запуск через `mame/v306/run_bridge.sh` + `bridge_cmd.sh` / MCP `mame-z80`.
|
||||
Паузы ниже — измеренные на этой машине; ждать дольше бессмысленно, а
|
||||
привычка ставить `sleep 30..60` съедает минуты на каждый прогон:
|
||||
|
||||
| шаг | пауза ПОСЛЕ шага |
|
||||
|-----|------------------|
|
||||
| запустили `run_bridge.sh` | **6 с** → машина поднялась, можно слать `go` |
|
||||
| `go` (снять с дебаггерного стопа) | **8 с** → DSS догрузился, принимает ввод |
|
||||
| `keyseq d:{ENTER}` + `keyseq roomtest{ENTER}` | **5 с** → программа уже стартовала |
|
||||
|
||||
То есть весь цикл «перезапуск + старт теста» укладывается в ~20 секунд.
|
||||
|
||||
Пересобрал HDD-образ (`make hdd`) → MAME **обязан** полный рестарт
|
||||
(`chdman -f` даёт новый inode; см. memory `mame_hdd_rebuild_restart`):
|
||||
остановка через `exit` в дебаггере, затем `run_bridge.sh` заново.
|
||||
|
||||
Reference in New Issue
Block a user