31b82661eb
Порт PoP переехал в applications/SprPoP — приложение, которое собирается само: код, оригинальные данные, конверторы ресурсов и сборка внутри одной папки. Наружу знает единственный путь — корень тулчейна (SPRINTER_ROOT, по умолчанию ../..). applications/PoP/roomtest ЗАМОРОЖЕНА и остаётся архивом закрытых задач, багов и исполненных планов. Скопировано из applications/PoP/roomtest@4b74478. Перенос проверен побайтово: собранный sprpop.exe совпал с roomtest.exe того же коммита, все 39 дисковых ресурсов и все 16 генерируемых заголовков — тоже, host- тесты зелёные (15/15). Раскладка: src/ рукописный C (roomtest.c -> sprpop.c) gen/ генерируемые заголовки, в репозитории assets/orig/ оригинальные данные игры, вне репозитория (копирайт) assets/packed/ то, что ложится на диск, в раскладке диска tools/ конверторы; все пути — в одном tools/paths.py build/ выход: exe, каталоги ресурсов, hdd/, промежуточные atl/ Сборка ресурсов: assets/packed и gen — версионируемые ВХОДЫ, а не то, что пересчитывается каждым make. Автоматика построена на ОТСУТСТВИИ файла, а не на таймстемпах: git не хранит времена, и в свежем клоне сравнение по времени превращалось бы в лотерею. Недостающий ресурс или заголовок чинится сам, рекурсивным вызовом в ветку генерации. Музыка собирается из любого из четырёх наборов записей (make music-mp3, music-mt32, ...); набор входит в имя stamp'а, поэтому смена набора сама делает музыку устаревшей. Длины реплик больше не захардкожены: упаковщик печатает их в gen/pop_music_ticks.h, и шкала сцены выражена через них — иначе mt32 (реплики на 6% длиннее) молча ломал катсцену. Тулчейн: в app.mk два обратносовместимых крючка (SRC_DIR/BUILD_DIR), HDD_IMG стал ?=; команда сборки roomtest не изменилась. Корневой make host-tests переключён на SprPoP. Подгонка тайминга катсцены с принцессой (PV_MAGIC_LEAD): сцена render-bound и идёт ~49 тиков/с вместо 60, из-за чего кода реплики приходила раньше молнии. Это обход, а не лечение; разбор с замерами — docs/BUGS_OPEN.md, записи SND-PACE-DEAD, PV-RENDER-BOUND, MUS-LEFT-TEAR. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
1.7 KiB
Plaintext
59 lines
1.7 KiB
Plaintext
* Left: turn or run left
|
|
* Right: turn or run right
|
|
* Up: jump or climb up
|
|
* Down: crouch or climb down
|
|
* Down+Left/Right: hop
|
|
* Shift: pick up things
|
|
* Shift+Left/Right: careful step
|
|
* Home or Up+Left: jump left
|
|
* Page Up or Up+Right: jump right
|
|
* Up while running: running jump
|
|
* Shift while falling: grab onto ledge
|
|
|
|
* Left/Right: walk (advance or retreat)
|
|
* Shift: strike (attack)
|
|
* Up: block (defend)
|
|
* Down: put sword away; press Shift to draw your sword again.
|
|
|
|
===
|
|
|
|
* Esc: Pause game.
|
|
* Space: Show how much time is left.
|
|
* Ctrl+A: Restart level.
|
|
|
|
* Ctrl+R: Return to intro.
|
|
* Ctrl+S: Sound on/off.
|
|
* Ctrl+M: Music on/off.
|
|
* Ctrl+V: Show version of SprPoP.
|
|
* Ctrl+Q: Quit game.
|
|
|
|
* F6: Quicksave: Save the exact state of the game.
|
|
* F9: Quickload: Load what the last quicksave saved.
|
|
* F12: Save a screenshot to the screenshots folder.
|
|
* Backspace: Display the in-game menu. (Esc will also display the menu by default, but you can turn that off.)
|
|
|
|
* Shift+L: Go to next level.
|
|
* -: Decrease remaining time by one minute.
|
|
* +: Increase remaining time by one minute.
|
|
* R: Resurrect kid.
|
|
* K: Kill guard.
|
|
* Shift+I: Flip the screen upside down.
|
|
* Shift+W: Slow falling.
|
|
* Shift+S: Restore a lost hit-point. (Like a small red potion.)
|
|
* Shift+T: Give more hit-points. (Like a big red potion.)
|
|
|
|
===
|
|
|
|
* H: Look at the room to the left.
|
|
* J: Look at the room to the right.
|
|
* U: Look at the room above.
|
|
* N: Look at the room below.
|
|
* Ctrl+B: Go back to the room where the prince is. (Undo H,J,U,N.)
|
|
|
|
===
|
|
|
|
* [: Shift kid 1 pixel to the left.
|
|
* ]: Shift kid 1 pixel to the right.
|
|
* T: Toggle display of timer (remaining minutes:seconds:ticks). Also shows the total elapsed ticks during playback.
|
|
|