SprPoP: README на образе — в корень, а не в каталоги-однофамильцы
На готовом HDD-образе вместо двух файлов оказывались два КАТАЛОГА с их
именами, и README лежал внутри каждого. Виноват генератор аргументов
упаковщика:
$(foreach f,$(DISK),$(word 1,$(subst /, ,$(f))):$(BUILD_DIR)/$(f))
Он безусловно брал первое слово до слэша как имя каталога. Для BG/bg.arc
это верно, но у записи БЕЗ слэша первое слово — всё имя, и README.TXT
превращался в README.TXT:build/README.TXT, то есть «каталог README.TXT,
файл внутри». Теперь префикс подставляется только при наличии слэша;
причина записана в комментарий, чтобы следующий файл в корне не наступил
на то же самое.
Заодно имена: README_E.TXT и README_R.TXT. Язык суффиксом, а не
расширением — прежний README.RUS в 8.3 укладывался, но терял .TXT, и
просмотрщик не открыл бы его как текст.
Проверено чтением готового .chd через chdman + mtools, а не по логу
сборки: баг был именно в том, что попадает на диск.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -200,10 +200,12 @@ LVL_NUMS := 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
|
||||
# три секунды. Четыре архива актёров, а не один: имена внутри наборов
|
||||
# совпадают (g0.atl есть и у стража, и у скелета, и у Джафара), а константы
|
||||
# индексов упаковщик делает из имени файла.
|
||||
# README для игрока идёт НА ДИСК рядом с программой. Русский обязан быть в
|
||||
# CP866: DSS и любой местный просмотрщик читают именно её, UTF-8 покажется
|
||||
# кракозябрами. Имена в 8.3: README.TXT и README.RUS.
|
||||
DISK := README.TXT README.RUS \
|
||||
# README для игрока идёт НА ДИСК рядом с программой, В КОРЕНЬ. Русский
|
||||
# обязан быть в CP866: DSS и любой местный просмотрщик читают именно её,
|
||||
# UTF-8 покажется кракозябрами. Имена по 8.3, язык — суффиксом, а не
|
||||
# расширением: расширение .TXT должно остаться, чтобы файл открывался
|
||||
# просмотрщиком как текст.
|
||||
DISK := README_E.TXT README_R.TXT \
|
||||
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 \
|
||||
@@ -226,8 +228,15 @@ PACKED_FILES := $(addprefix $(PACKED)/,$(DISK))
|
||||
STAGED := $(addprefix $(BUILD_DIR)/,$(DISK))
|
||||
|
||||
EXTRA_DATA := $(STAGED)
|
||||
# Запись вида КАТАЛОГ:файл кладёт файл в подкаталог образа, голый путь — в
|
||||
# корень. Проверка на слэш ОБЯЗАТЕЛЬНА: без неё `README_E.TXT` превращался
|
||||
# в `README_E.TXT:build/README_E.TXT`, то есть упаковщик заводил каталог с
|
||||
# именем файла и клал файл внутрь него (поймано пользователем на готовом
|
||||
# образе).
|
||||
HDD_PACK_ARGS := $(BUILD_DIR)/$(EXAMPLE).exe \
|
||||
$(foreach f,$(DISK),$(word 1,$(subst /, ,$(f))):$(BUILD_DIR)/$(f))
|
||||
$(foreach f,$(DISK),$(if $(findstring /,$(f)),\
|
||||
$(word 1,$(subst /, ,$(f))):$(BUILD_DIR)/$(f),\
|
||||
$(BUILD_DIR)/$(f)))
|
||||
# Образ живёт в build/, а не в mame/v306/IMG — приложение автономно. Связь с
|
||||
# MAME — одна символьная ссылка, ставится однократно: make mame-link.
|
||||
HDD_IMG := $(CURDIR)/$(BUILD_DIR)/hdd/$(EXAMPLE).chd
|
||||
@@ -417,18 +426,18 @@ $(foreach n,$(LVL_NUMS),$(eval $(call lvl_rule,$(n))))
|
||||
# русского, перекодировка в CP866. iconv БЕЗ -c намеренно: потеря символа
|
||||
# должна ломать сборку, а не молча портить текст (memory
|
||||
# iconv_cp866_workflow; //TRANSLIT на macOS падает).
|
||||
$(PACKED)/README.TXT: dist/README.txt
|
||||
$(PACKED)/README_E.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
|
||||
$(PACKED)/README_R.TXT: 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-readme: $(PACKED)/README_E.TXT $(PACKED)/README_R.TXT
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user