L9-INVERT: состояние переворота, зелье типа 4 и pop_flip_screen
Шаг II.1 плана. pop_upside/pop_upside_dirty (порт upside_down и need_redraw_because_flipped), ветка case 4 в proc_get_object (только тоггл — ни вспышки, ни урона, как в оригинале), сброс стартом уровня и смертью Кида. pop_flip_screen (банк 8) переворачивает уже нарисованное двумя копиями акселератора: VFLIP в скрытую страницу, показ, DIRECT во вторую; затем инвалидация слотов персонажей, метки фона и полосы HP. Чит-клавиша U — порт seg000:0793 (в оригинале переворот тоже на чите): без неё эффект не проверить, чит-телепорт до зелья в комнате 7 не дотягивается. Проверено в MAME на уровне 9: комната переворачивается целиком за кадр, повторное нажатие возвращает. Персонажи и факелы пока не зеркалятся — это шаги II.3/II.4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -95,6 +95,15 @@ extern uint8_t pop_flash_color;
|
||||
* play_seq (опкод JMP_IF_FEATHER — ветки stepfloat/bumpfloat в seqtbl) и
|
||||
* приложение (сброс на старте уровня, seg003:189). */
|
||||
extern uint8_t pop_feather;
|
||||
|
||||
/* upside_down (seg000:15E9): 1 — картинка перевёрнута вверх ногами (зелье
|
||||
* типа 4 на уровне 9). Читают все слои отрисовки; сбрасывается стартом
|
||||
* уровня и смертью Кида (seg000:1224).
|
||||
* pop_upside_dirty — порт need_redraw_because_flipped: флаг «состояние
|
||||
* переворота ИЗМЕНИЛОСЬ», по нему главный цикл один раз переворачивает уже
|
||||
* нарисованное (pop_flip_screen) и снимает флаг. */
|
||||
extern uint8_t pop_upside;
|
||||
extern uint8_t pop_upside_dirty;
|
||||
uint8_t pop_get_item_action(void) __banked; /* 0 нет / 1 присесть / 2 поднять меч / 3 пить */
|
||||
void pop_proc_get_object(void) __banked; /* эффект — из play_seq (опкод GET_ITEM) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user