SprPoP: README для игрока и экран Controls в две колонки

README, который едет НА ДИСК рядом с программой, в двух версиях: README.TXT
(английский) и README.RUS (русский).  Краткое описание, запуск, полная
раскладка управления, читы, файлы игры, чего не хватает против оригинала,
благодарности.

Русский обязан быть в CP866 — DSS и местные просмотрщики читают именно её,
UTF-8 показался бы кракозябрами.  Исходники лежат в dist/ как UTF-8 (чтобы
читались в репозитории), перекодировка и CRLF делаются правилом Makefile.
ПОРЯДОК В КОНВЕЙЕРЕ ВАЖЕН: sed ставит CRLF ДО iconv — BSD sed в UTF-8
локали отказывается работать с байтами CP866 («RE error: illegal byte
sequence»), а с валидным UTF-8 работает.  iconv БЕЗ -c намеренно: потеря
символа должна ломать сборку, а не молча портить текст.

ЭКРАН CONTROLS переписан в две колонки.  В одну раскладка больше не
помещалась: после фаз A-C клавиш стало вдвое больше, а по высоте есть
только 200 точек вместе с заголовком.  Слева игра (бег, лазание, бой),
справа служебное и читы; высота блока считается по ДЛИННОЙ колонке.
Строка «IN A FIGHT» — заголовок, а не клавиша: ниже неё те же стрелки и
Shift означают другое, и без разделителя список читался бы противоречиво.

Заодно экран перестал врать: там до сих пор висели P, I, U и F7/F8 —
клавиши, переназначенные ещё в фазе A.

Проверено в MAME: Backspace открывает меню, Settings -> Show key bindings
показывает обе колонки целиком.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 15:50:59 +03:00
parent 659071838d
commit 6cc8611d03
6 changed files with 620 additions and 32 deletions
+25 -4
View File
@@ -200,7 +200,11 @@ LVL_NUMS := 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
# три секунды. Четыре архива актёров, а не один: имена внутри наборов
# совпадают (g0.atl есть и у стража, и у скелета, и у Джафара), а константы
# индексов упаковщик делает из имени файла.
DISK := BG/bg.arc BG/pop_tile.pal BG/pal_tile.pal \
# README для игрока идёт НА ДИСК рядом с программой. Русский обязан быть в
# CP866: DSS и любой местный просмотрщик читают именно её, UTF-8 покажется
# кракозябрами. Имена в 8.3: README.TXT и README.RUS.
DISK := README.TXT README.RUS \
BG/bg.arc BG/pop_tile.pal BG/pal_tile.pal \
KID/kid.arc KID/kid.pal KID/kid.ani \
GUARD/guard.arc SKEL/skel.arc VIZIER/vizier.arc SHADOW/shadow.arc \
SND/snd.arc \
@@ -409,6 +413,23 @@ $(PACKED)/LEVELS/res20$(1).bin: $(LVL_ORIG)/res20$(1).bin | check-orig
endef
$(foreach n,$(LVL_NUMS),$(eval $(call lvl_rule,$(n))))
# README: перевод строки CRLF (текст читают в DOS-подобной среде) и, для
# русского, перекодировка в CP866. iconv БЕЗ -c намеренно: потеря символа
# должна ломать сборку, а не молча портить текст (memory
# iconv_cp866_workflow; //TRANSLIT на macOS падает).
$(PACKED)/README.TXT: dist/README.txt
@mkdir -p $(dir $@)
@sed 's/$$/\r/' $< > $@
# ПОРЯДОК ВАЖЕН: CRLF ставится ДО перекодировки. BSD sed в UTF-8 локали
# отказывается работать с байтами CP866 («RE error: illegal byte sequence»),
# а с валидным UTF-8 — работает.
$(PACKED)/README.RUS: dist/README.ru.txt
@mkdir -p $(dir $@)
@sed 's/$$/\r/' $< | iconv -f UTF-8 -t CP866 > $@
resources-readme: $(PACKED)/README.TXT $(PACKED)/README.RUS
resources-bg: $(PACKED)/BG/bg.arc $(PACKED)/BG/pop_tile.pal $(PACKED)/BG/pal_tile.pal
resources-kid: $(PACKED)/KID/kid.arc $(PACKED)/KID/kid.pal $(PACKED)/KID/kid.ani
resources-actors: $(PACKED)/GUARD/guard.arc $(PACKED)/SKEL/skel.arc \
@@ -439,9 +460,9 @@ $(PACKED_FILES) $(GEN_H):
@echo "SprPoP: нет $@ — генерирую ресурсы"
@$(MAKE) GENERATE=1 $@
RES_TARGETS := resources resources-bg resources-kid resources-actors \
resources-sound resources-music resources-font resources-title \
resources-pv resources-levels
RES_TARGETS := resources resources-readme resources-bg resources-kid \
resources-actors resources-sound resources-music resources-font \
resources-title resources-pv resources-levels
$(RES_TARGETS):
@$(MAKE) GENERATE=1 $@
# Перегенерация ВСЕГО, не глядя на таймстемпы.