-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
147 lines (120 loc) · 5.72 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
instpath = $(subst $(word 1, $(subst romfs/, ,$1)),./,$1)
ROM_DIR ?= ./cia
LOC_TXT = localization/japanese.txt
PKGTOOL = python pkg.py
TXTTOOL = python btxt.py
FNTTOOL = python fnt.py
TEXCOPY = python texcopy.py
PKGS = $(shell find $(ROM_DIR) -type f -name "*.pkg")
PKGS_INST := $(call instpath,$(shell cat packages.txt))
BTXTS = $(shell find $(ROM_DIR) -type f -name "*.txt")
ifeq ($(BTXTS),)
BTXTS = $(shell cat texts.txt)
endif
BTXTS_INST = $(call instpath,$(BTXTS))
ifeq ($(BTXTS_INST),)
BTXTS_INST = $(call instpath,$(shell cat texts.txt))
endif
BTXTS_DIR = $(dir $(word 1, $(BTXTS)))
PTXTS = $(addprefix localization/,$(notdir $(BTXTS)))
JAP_FNT_ENTRY = 0x00000080_0xb9e77682 0x00002880_0xa3db960c 0x0000668c_0xb00cd6f8 0x00006f44_0xbd12a6bf
JAP_MFNT_FILES = $(addsuffix .mfnt,$(JAP_FNT_ENTRY))
JAP_FLTS = $(addprefix font/,$(addsuffix .flt,$(JAP_FNT_ENTRY)))
JAP_FNT_DCB_FILES = 0x00004fe4_0xce14b482.muct $(JAP_MFNT_FILES)
JAP_FNT_TEX = 0x00000080_0x27b15282
JAP_FNT_FILES = fonts_jp/$(JAP_FNT_TEX).mtxt $(addprefix fonts_jp_discardables/,$(JAP_FNT_DCB_FILES))
JAPFONT = font/NotoSansHans-Regular.otf
DEF_FNT_ENTRY = 0x00000080_0xc992c4d5 0x000009d4_0x3ddde0c6 0x00001290_0x5e0dd5fc 0x00001b4c_0x0e32aea1
DEF_MFNT_FILES = $(addsuffix .mfnt,$(DEF_FNT_ENTRY))
DEF_FLTS = $(addprefix font/,$(addsuffix .flt,$(DEF_FNT_ENTRY)))
DEF_FNT_DCB_FILES = 0x00002408_0x03c07881.muct $(DEF_MFNT_FILES)
DEF_FNT_TEX = 0x00000080_0x4bd1f997
DEF_FNT_FILES = fonts/$(DEF_FNT_TEX).mtxt $(addprefix fonts_discardables/,$(DEF_FNT_DCB_FILES))
DEFFONT = font/NotoSansHans-Regular.otf
GUIDIR = romfs/gui/textures
GAMELOGO = $(GUIDIR)/gamelogo.bctex
all: japfnt deffnt packages texts gamelogo
LUMADIR = luma/titles/00040000001BFC00
luma.zip: all
if [ ! -d $(LUMADIR) ]; then mkdir -p $(LUMADIR); fi
cp -r romfs $(LUMADIR)
zip -9 -r luma.zip luma
packages: $(PKGS_INST)
texts: $(BTXTS_INST)
fntpkg: japfnt deffnt
make romfs/packs/system/fonts_jp.pkg
make romfs/packs/system/fonts_jp_discardables.pkg
make romfs/packs/system/fonts.pkg
make romfs/packs/system/fonts_discardables.pkg
japfnt: $(JAP_FNT_FILES)
deffnt: $(DEF_FNT_FILES)
$(JAP_FNT_FILES): $(JAP_FLTS)
if [ ! -d "fonts_jp_discardables" ]; then mkdir fonts_jp_discardables; fi
$(FNTTOOL) --height 512 --width 1024 \
-c $(LOC_TXT) \
-t fonts_jp_discardables/0x00004fe4_0xce14b482.muct \
-x font/$(JAP_FNT_TEX).png \
-g "path=fonts_jp_discardables/0x00000080_0xb9e77682.mfnt:font=$(JAPFONT):size=14:filter=./font/0x00000080_0xb9e77682.flt" \
"path=fonts_jp_discardables/0x00002880_0xa3db960c.mfnt:font=$(JAPFONT):size=20:filter=./font/0x00002880_0xa3db960c.flt" \
"path=fonts_jp_discardables/0x0000668c_0xb00cd6f8.mfnt:font=$(JAPFONT):size=11:filter=./font/0x0000668c_0xb00cd6f8.flt" \
"path=fonts_jp_discardables/0x00006f44_0xbd12a6bf.mfnt:font=$(JAPFONT):size=17:filter=./font/0x00006f44_0xbd12a6bf.flt" \
--inner-tex-path "system/fonts/textures/japfnt.bctex" --inner-tbl-path "system/fonts/symbols/glyphtablejap.buct"
tex3ds -f la8 --raw -z none -o font/$(JAP_FNT_TEX).tex font/$(JAP_FNT_TEX).png
if [ ! -d "fonts_jp" ]; then mkdir fonts_jp; fi
cp font/$(JAP_FNT_TEX).mtxt.hdr fonts_jp/$(JAP_FNT_TEX).mtxt
$(TEXCOPY) font/$(JAP_FNT_TEX).tex fonts_jp/$(JAP_FNT_TEX).mtxt 0x100
$(DEF_FNT_FILES): $(DEF_FLTS)
if [ ! -d "fonts_discardables" ]; then mkdir fonts_discardables; fi
$(FNTTOOL) --height 512 --width 1024 \
-c $(LOC_TXT) \
-t fonts_discardables/0x00002408_0x03c07881.muct \
-x font/$(DEF_FNT_TEX).png \
-g "path=fonts_discardables/0x00000080_0xc992c4d5.mfnt:font=$(DEFFONT):size=14:filter=./font/0x00000080_0xc992c4d5.flt" \
"path=fonts_discardables/0x000009d4_0x3ddde0c6.mfnt:font=$(DEFFONT):size=10:filter=./font/0x000009d4_0x3ddde0c6.flt" \
"path=fonts_discardables/0x00001290_0x5e0dd5fc.mfnt:font=$(DEFFONT):size=16:filter=./font/0x00001290_0x5e0dd5fc.flt" \
"path=fonts_discardables/0x00001b4c_0x0e32aea1.mfnt:font=$(DEFFONT):size=17:filter=./font/0x00001b4c_0x0e32aea1.flt" \
--inner-tex-path "system/fonts/textures/defaultfnt.bctex" --inner-tbl-path "system/fonts/symbols/glyphtable.buct"
tex3ds -f la8 --raw -z none -o font/$(DEF_FNT_TEX).tex font/$(DEF_FNT_TEX).png
if [ ! -d "fonts" ]; then mkdir fonts; fi
cp font/$(DEF_FNT_TEX).mtxt.hdr fonts/$(DEF_FNT_TEX).mtxt
$(TEXCOPY) font/$(DEF_FNT_TEX).tex fonts/$(DEF_FNT_TEX).mtxt 0x100
%.flt: $(LOC_TXT) %.lbl
python filter.py $@ $^
gamelogo: $(GAMELOGO)
$(GAMELOGO): textures/gamelogo/gamelogo_00.png
tex3ds -f rgba8 --raw -z none -o $(<:%.png=%.tex) $<
if [ ! -d $(GUIDIR) ]; then mkdir -p $(GUIDIR); fi
cp textures/gamelogo/gamelogo.bctex.hdr $@
$(TEXCOPY) $(<:%.png=%.tex) $@ 0x100
extract_pkg:
for pkg in $(PKGS); do \
upkdir=./unpacks$$(echo $${pkg##*romfs} | cut -f 1 -d '.'); \
echo $(PKGTOOL) -xf $$pkg -d $$upkdir; \
$(PKGTOOL) -xf $$pkg -d $$upkdir; \
done
echo $(PKGS) > packages.txt
plain_txt: $(PTXTS)
echo $(BTXTS) > texts.txt
localization/%.txt: $(BTXTS_DIR)%.txt
$(TXTTOOL) --mkdir -xb $< -p $@
romfs/system/localization/%.txt: localization/%.txt
$(TXTTOOL) --mkdir -cb $@ -p $<
# Make packages depending on their entries is extremely slow, damn.
romfs/%.pkg: # unpacks/%/*.*
$(PKGTOOL) --mkdir -cf $@ -d unpacks/$*
romfs/packs/system/font%.pkg:
$(PKGTOOL) --mkdir -cf $@ -d font$*
MTXTS = $(shell find $(ROM_DIR) -type f -name "*.bctex")
TEXDUMP = python texdump.py
export_tex:
for mtxt in $(MTXTS); do \
outdir=textures/$$(basename $$mtxt); \
outdir=$$(echo $$outdir | cut -d '.' -f 1); \
echo $(TEXDUMP) mtxtdmp $$mtxt $$outdir; \
if [ ! -d $$outdir ]; then mkdir -p $$outdir; fi; \
$(TEXDUMP) mtxtdmp $$mtxt $$outdir; \
done
clean:
rm -rf ./romfs/ ./fonts_jp ./fonts_jp_discardables ./fonts ./fonts_discardables \
./luma ./luma.zip font/$(JAP_FNT_TEX).png font/$(JAP_FNT_TEX).tex \
font/$(DEF_FNT_TEX).png font/$(DEF_FNT_TEX).tex ./font/*.flt