ENTER-ROOM-FAST + вынос порядка отрисовки в банк 8

Вход в комнату: одна отрисовка в скрытую страницу, показ флипом, вторая
страница — gfx_copy_page(DIRECT) вместо повторной отрисовки.  Процесс
рисования тайлов больше не виден, обе страницы синхронны (два снимка подряд
идентичны).  Видимую страницу главный цикл теперь перечитывает у железа в
начале кадра: её меняют и вход в комнату, и переворот — оба из банка.

MEM-COLD2 п.2: guard_over_kid с хелперами (objtile_at_char/char_x_left_of/
tile_div_mod) — в банк 8.  Куча 1005 -> 1574 Б, цена — один трамплин на кадр.

tests-host 6/6, size-check OK, в MAME проверены старт уровня 9, переходы
между комнатами и отрисовка стража.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 17:22:05 +03:00
parent b1ef48bd16
commit 70c1668e9f
5 changed files with 138 additions and 88 deletions
+14 -1
View File
@@ -297,7 +297,20 @@ void gfx_copy_rect(uint8_t src_page, int sx, int sy,
---
# Часть III — побочная задача ENTER-ROOM-FAST
# Часть III — ENTER-ROOM-FAST — СДЕЛАНО 2026-08-12
Комната теперь рисуется ОДИН раз — в скрытую страницу, — тут же
показывается флипом, а вторая страница получает её `gfx_copy_page(DIRECT)`.
Процесс рисования тайлов больше не виден: игрок получает готовый кадр.
Проверено в MAME: старт уровня и чит-переход между комнатами, два
последовательных снимка идентичны (обе страницы синхронны, мерцания нет).
Побочно понадобилось: видимую страницу главный цикл больше не ведёт сам, а
перечитывает у железа в начале кадра (`front = gfx_get_visible_page()`) —
её меняют и вход в комнату, и переворот, причём оба из банка, где локальные
переменные `main` недоступны.
# Часть III (исходное описание)
Идея пользователя, самостоятельная ценность (сейчас при входе в комнату видно,
как рисуются тайлы): рисовать комнату ОДИН раз в скрытую страницу, показать её