L9-INVERT: зеркальный слой фона + вход в комнату в банк 8
II.3: pop_upside проведён в единственную точку тайлового слоя (pop_blit_b / blit_b_clip): позиция через FLIP_TOP, блит — vflip-двойник. Этим зеркалятся полная отрисовка комнаты, точечные редрои, trob-анимации, fore-слой и кладка. В клипованном пути обрезка сверху экрана съедает нижние строки источника, поэтому кусок пересчитывается как sy' = h - sy - dh. MEM-COLD2 п.1: enter_room_side/enter_room — в банк 8 (куча 450 -> 1231 Б). Рабочие массивы комнаты остались в _DATA, в банк уехал только код. Проверено в MAME (уровень 9, чит U): комната перевёрнута целиком, пол вверху, дверь и кладка вверх ногами. tests-host 6/6, size-check OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -23,14 +23,30 @@
|
||||
|
||||
/* ---- то, что холодная половина берёт у главного цикла ---------------- */
|
||||
|
||||
extern uint8_t room_fg[30]; /* тайлы ОТРИСОВАННОЙ комнаты (fg & 0x1F) */
|
||||
/* Рабочие массивы комнаты: заполняет вход в комнату (банк), читают и он, и
|
||||
* главный цикл (шов, straddle, чит-навигация). Данные банковых модулей
|
||||
* линкуются в общий _DATA, поэтому обе половины видят их как обычные
|
||||
* глобалы — в банк уехал только КОД. */
|
||||
extern uint8_t room_fg[30], room_bg[30];
|
||||
extern uint8_t lcol_fg[6], lcol_bg[3], rcol_fg[6], rcol_bg[3], below_fg[11];
|
||||
extern uint8_t above_fg[10], above_mod[10];
|
||||
extern uint8_t kid_room; /* РЕАЛЬНАЯ комната Kid (straddle) */
|
||||
extern uint8_t seam_sig[3]; /* последняя нарисованная openness в шве */
|
||||
extern uint8_t seam_rows, seam_redraw;
|
||||
|
||||
/* Сигнатура ряда шва: openness ворот соседа либо «кнопка нажата». Живёт в
|
||||
* резиденте — её зовёт и кадровый путь главного цикла, и вход в комнату. */
|
||||
uint8_t seam_row_sig(const uint8_t *m, const uint8_t *lfg, uint8_t r);
|
||||
extern uint8_t cur_room; /* её номер (drawn_room) */
|
||||
extern uint8_t pop_checkpoint; /* checkpoint (seg000:270) — ставит уход */
|
||||
/* влево из комнаты 7 уровня 3 */
|
||||
|
||||
/* Вход в комнату БЕЗ перехода за Кидом (старт уровня, респавн, чит-обход):
|
||||
* страж такой смены не «видит» и остаётся в своей комнате. */
|
||||
void enter_room(uint8_t room);
|
||||
/* Вход в комнату. side — куда ушёл КИД (0 L, 1 R, 2 U, 3 D); 0xFF = «не
|
||||
* переход за Кидом» (старт уровня, респавн, чит-навигация): от этого
|
||||
* зависит, пойдёт ли страж следом. enter_room — обёртка с 0xFF.
|
||||
* Обе в банке 8: зовутся раз на комнату, а кода там на полтора килобайта. */
|
||||
void enter_room_side(uint8_t room, uint8_t side) __banked;
|
||||
void enter_room(uint8_t room) __banked;
|
||||
|
||||
/* ---- холодная половина ----------------------------------------------- */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user