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 есть и у стража, и у скелета, и у Джафара), а константы
|
# совпадают (g0.atl есть и у стража, и у скелета, и у Джафара), а константы
|
||||||
# индексов упаковщик делает из имени файла.
|
# индексов упаковщик делает из имени файла.
|
||||||
# README для игрока идёт НА ДИСК рядом с программой. Русский обязан быть в
|
# README для игрока идёт НА ДИСК рядом с программой, В КОРЕНЬ. Русский
|
||||||
# CP866: DSS и любой местный просмотрщик читают именно её, UTF-8 покажется
|
# обязан быть в CP866: DSS и любой местный просмотрщик читают именно её,
|
||||||
# кракозябрами. Имена в 8.3: README.TXT и README.RUS.
|
# UTF-8 покажется кракозябрами. Имена по 8.3, язык — суффиксом, а не
|
||||||
DISK := README.TXT README.RUS \
|
# расширением: расширение .TXT должно остаться, чтобы файл открывался
|
||||||
|
# просмотрщиком как текст.
|
||||||
|
DISK := README_E.TXT README_R.TXT \
|
||||||
BG/bg.arc BG/pop_tile.pal BG/pal_tile.pal \
|
BG/bg.arc BG/pop_tile.pal BG/pal_tile.pal \
|
||||||
KID/kid.arc KID/kid.pal KID/kid.ani \
|
KID/kid.arc KID/kid.pal KID/kid.ani \
|
||||||
GUARD/guard.arc SKEL/skel.arc VIZIER/vizier.arc SHADOW/shadow.arc \
|
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))
|
STAGED := $(addprefix $(BUILD_DIR)/,$(DISK))
|
||||||
|
|
||||||
EXTRA_DATA := $(STAGED)
|
EXTRA_DATA := $(STAGED)
|
||||||
|
# Запись вида КАТАЛОГ:файл кладёт файл в подкаталог образа, голый путь — в
|
||||||
|
# корень. Проверка на слэш ОБЯЗАТЕЛЬНА: без неё `README_E.TXT` превращался
|
||||||
|
# в `README_E.TXT:build/README_E.TXT`, то есть упаковщик заводил каталог с
|
||||||
|
# именем файла и клал файл внутрь него (поймано пользователем на готовом
|
||||||
|
# образе).
|
||||||
HDD_PACK_ARGS := $(BUILD_DIR)/$(EXAMPLE).exe \
|
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 — приложение автономно. Связь с
|
# Образ живёт в build/, а не в mame/v306/IMG — приложение автономно. Связь с
|
||||||
# MAME — одна символьная ссылка, ставится однократно: make mame-link.
|
# MAME — одна символьная ссылка, ставится однократно: make mame-link.
|
||||||
HDD_IMG := $(CURDIR)/$(BUILD_DIR)/hdd/$(EXAMPLE).chd
|
HDD_IMG := $(CURDIR)/$(BUILD_DIR)/hdd/$(EXAMPLE).chd
|
||||||
@@ -417,18 +426,18 @@ $(foreach n,$(LVL_NUMS),$(eval $(call lvl_rule,$(n))))
|
|||||||
# русского, перекодировка в CP866. iconv БЕЗ -c намеренно: потеря символа
|
# русского, перекодировка в CP866. iconv БЕЗ -c намеренно: потеря символа
|
||||||
# должна ломать сборку, а не молча портить текст (memory
|
# должна ломать сборку, а не молча портить текст (memory
|
||||||
# iconv_cp866_workflow; //TRANSLIT на macOS падает).
|
# iconv_cp866_workflow; //TRANSLIT на macOS падает).
|
||||||
$(PACKED)/README.TXT: dist/README.txt
|
$(PACKED)/README_E.TXT: dist/README.txt
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@sed 's/$$/\r/' $< > $@
|
@sed 's/$$/\r/' $< > $@
|
||||||
|
|
||||||
# ПОРЯДОК ВАЖЕН: CRLF ставится ДО перекодировки. BSD sed в UTF-8 локали
|
# ПОРЯДОК ВАЖЕН: CRLF ставится ДО перекодировки. BSD sed в UTF-8 локали
|
||||||
# отказывается работать с байтами CP866 («RE error: illegal byte sequence»),
|
# отказывается работать с байтами CP866 («RE error: illegal byte sequence»),
|
||||||
# а с валидным UTF-8 — работает.
|
# а с валидным UTF-8 — работает.
|
||||||
$(PACKED)/README.RUS: dist/README.ru.txt
|
$(PACKED)/README_R.TXT: dist/README.ru.txt
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@sed 's/$$/\r/' $< | iconv -f UTF-8 -t CP866 > $@
|
@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-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-kid: $(PACKED)/KID/kid.arc $(PACKED)/KID/kid.pal $(PACKED)/KID/kid.ani
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+3
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+5
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+2
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+14
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+3
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user