Статус-строка: LEVEL N и лейбл QS/QL до дисковой операции
* pop_status_level() — порт show_level (seg008:25A8): «LEVEL N» на старте уровня. Демо-уровень 0 и номера от 14 молчат, тринадцатый показывается двенадцатым, бесшовный переход 12->13 пропускается и гасит флаг за собой. Первое сообщение с ПАРАМЕТРОМ: строка собирается вручную (dec2, без printf и без деления), номер хранится снимком st_arg — иначе вторая страница дабл-буфера нарисовала бы другое число. * pop_status_show_now() — печать немедленно, в ВИДИМУЮ страницу. QuickSave/QuickLoad заявляют лейбл ПЕРВЫМ действием, до mem_alloc/ESTEX: запись снимка занимает доли секунды, и раньше игрок видел сначала необъяснённый фриз, а надпись — уже после него. Отказ переписывает строку на NO QUICKSAVE/NO QUICKLOAD обычной заявкой. Расхождение с оригиналом (он печатает по результату) — impl_diff.md. Проверено в MAME: watchpoint ловит заявку внутри pop_status_show_now, step_out возвращает в pop_qsave_process — и QUICKSAVE уже на экране, диск ещё не тронут. Бюджет прежний: _CODE 23981, куча 266 Б. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -139,18 +139,23 @@ display_text_bottom: draw_rect(чёрным) + show_text(halign_center, valign_b
|
||||
|
||||
## 4. Что из этого касается нашего порта
|
||||
|
||||
Реализовано:
|
||||
Реализовано (`pop_status.c`, таймер 24 тика как у оригинала):
|
||||
|
||||
* `GAME PAUSED` — в строке HP, без таймера (`pop_menu.c`).
|
||||
* `GAME PAUSED` — без таймера, рисует само меню (`pop_menu.c`);
|
||||
* `QUICKSAVE` / `NO QUICKSAVE`, `QUICKLOAD` / `NO QUICKLOAD` — заявка стоит
|
||||
в `pop_qsave_process`, то есть в единственном месте, где известно, что
|
||||
именно делали. Лейбл печатается ДО дисковой операции — осознанное
|
||||
расхождение, см. `impl_diff.md`;
|
||||
* `SOUND ON` / `SOUND OFF` — Ctrl+S;
|
||||
* `LEVEL %d` — порт `show_level()` целиком: демо-уровень 0 и номера от 14
|
||||
молчат, тринадцатый показывается двенадцатым, бесшовный переход 12→13
|
||||
пропускается и гасит флаг за собой.
|
||||
|
||||
Есть у нас, но сообщение пока НЕ печатается (показывается иначе или не
|
||||
показывается вовсе):
|
||||
Пока НЕ печатается:
|
||||
|
||||
* `LEVEL %d` и вся группа времени — таймер уже есть (`pop_timer.c`), текста нет;
|
||||
* `QUICKSAVE`/`QUICKLOAD` — у нас вместо строки экран-уведомление (`ui_notice`);
|
||||
* `SOUND ON/OFF` — у нас индикатор в отладочной полосе, а не текст;
|
||||
* вся группа времени — таймер есть (`pop_timer.c`), текста нет;
|
||||
* `Press Button to Continue` — у нас авто-респавн по таймеру/стрелке вверх;
|
||||
* номера комнат (`C`/Shift+`C`) — у нас палочки в отладочной полосе.
|
||||
* номера комнат (`C`/Shift+`C`) — у нас отдельная отладочная строка.
|
||||
|
||||
Нам не нужно: copy protection (уровень 15 исключён из порта — см.
|
||||
`full_game_plan.md`), joystick-режимы, replay, скриншоты.
|
||||
|
||||
Reference in New Issue
Block a user