/* * pop_state.h — состояние, общее для банков и W1/W2. См. pop_state.c. * * Правило: если переменную читают/пишут по обе стороны банковой границы — * её место здесь, а НЕ в банковом модуле (там она уедет в страницу банка). */ #ifndef POP_STATE_H #define POP_STATE_H #include /* Кусок loose приземлился (loose_land, seg007:11E8): 0 = нет, иначе * tilepos+1 тайла, на который он лёг. Ставит отрисовка mob (банк), * разбирает логика loose-полов (pop_map, W1/W2). */ extern uint8_t pop_loose_landed; /* Чит «бессмертие» (I): Кида бьют, но HP не убавляется. Читают пути урона * (боёвка в банке, пики в pop_map), переключает главный цикл. */ extern uint8_t pop_immortal; /* Габариты ПОСЛЕДНЕЙ нарисованной двери уровня — порт глобалов * leveldoor_right / leveldoor_ybottom (seg008 draw_leveldoor). Их ставит * отрисовка (банк pop_bg), а читает clip_char (pop_map, W1/W2): кадры * подъёма по лестнице (224..228) обрезаются по правому косяку проёма и по * низу поднятой створки. Дверь рисуется ПОД персонажем, поэтому перекрыть * его не может — оригинал именно режет спрайт. * right — экранный X правой кромки; ybottom — room-space Y (без POP_YOFF). * 0 = двери в отрисованной комнате нет. */ extern int pop_leveldoor_right; extern int pop_leveldoor_ybottom; /* Отладочная «пустышка» для брейкпоинтов из банков — см. pop_state.c. * Звать из отлаживаемого места под нужным `if`, брейкпоинт ставить на * _pop_dbg_trap (резидент W1, адрес однозначен). */ extern uint8_t pop_dbg_hits; void pop_dbg_trap(void); #endif