Some crude scripts to export/import fonts from The Final Season.
Example: You want to swap font in menu for
Pacifico Regular1) Use
Exporter on MenuBody.font file (you will get MenuBody.head, MenuBody.ttf and MenuBody.tail)
2) Delete (or rename) MenuBody.ttf
3) Rename Pacifico Regular.ttf to MenuBody.ttf
4) Use
Importer on MenuBody.head, you will get MenuBody.font_NEW
5) Put MenuBody.font_New into
"The Walking Dead The Final Season Episode 1\Archives" folder and rename it to MenuBody.font
6) Run the game
If everything worked, you should see your new font in the game.
EXPORTCode:
# The Walking Dead: The Final Season
# .FONT to .TTF/.OTF exporter
# by MerlinSVK Aug 2018
# version 1.0
# script for QuickBMS http://aluigi.org/papers.htm#quickbms
get SIZE asize
get NAME basename
string HEAD_NAME p "%s.%s" NAME "head"
string TAIL_NAME p "%s.%s" NAME "tail"
idstring "\x36\x56\x53\x4D" # 6VSM
get ARCHIVE_SIZE longlong # maybe its not longlong, i dont know
get NULL long
get FILES long # number of files in archive? not sure, its 0x01 in .font files
get UNKNOWN1 long # these 0x12 bytes are same for all font files...
get UNKNOWN2 long # maybe they are some time&date (time_t32) values
get UNKNOWN3 long # ...
get BLOCK1_SIZE long # 8 + filename_size
get FILENAME_SIZE long # hmm, what it could be?
getdstring FILENAME FILENAME_SIZE # still no clue?
get UNKNOWN4 byte
get UNKNOWN5 long # no idea, but it looks like float (maybe line height?)
getdstring UNKNOWN6 0x17 # no idea, skipping
get BLOCK2_SIZE long # 8 + filesize
get FILE_SIZE long
savepos OFFSET
get TYPE long
if TYPE == "\x4F\x54\x54\x4F" # OTTO = OpenType format
string TTF_NAME p "%s.%s" NAME "otf"
else # TrueType format
string TTF_NAME p "%s.%s" NAME "ttf"
endif
goto OFFSET
log HEAD_NAME 0 OFFSET # save header
log TTF_NAME OFFSET FILE_SIZE # save as TTF/OTF file
xmath OFFSET "OFFSET + FILE_SIZE"
xmath TAIL_SIZE "SIZE - OFFSET"
log TAIL_NAME OFFSET TAIL_SIZE # save the tail data
IMPORTCode:
# The Walking Dead: The Final Season
# .TTF/.OTF to .FONT importer
# by MerlinSVK Aug 2018
# version 1.0
# script for QuickBMS http://aluigi.org/papers.htm#quickbms
open FDDE TTF 0 EXIST
open FDDE HEAD 1
open FDDE TAIL 2
if EXIST == 0
open FDDE OTF 0
endif
get NAME basename
string FONT_NAME p "%s.%s" NAME "font_NEW"
get FONT_SIZE asize 0
get HEAD_SIZE asize 1
get TAIL_SIZE asize 2
log MEMORY_FILE 0 HEAD_SIZE 1 # copy header into memory_file
get MEM_SIZE asize MEMORY_FILE
append
log MEMORY_FILE 0 FONT_SIZE 0 # append font file
log MEMORY_FILE 0 TAIL_SIZE 2 # append tail
append
get MEM_SIZE asize MEMORY_FILE
xmath ARCHIVE_SIZE "MEM_SIZE - 0x20"
goto 0x20 MEMORY_FILE
get SKIP long MEMORY_FILE
math SKIP + 0x18
goto SKIP MEMORY_FILE SEEK_CUR
savepos OFFSET MEMORY_FILE
xmath OFFSET2 "OFFSET + 0x04"
xmath FONT_SIZE2 "FONT_SIZE + 8"
putVarChr MEMORY_FILE 0x04 ARCHIVE_SIZE longlong
putVarChr MEMORY_FILE OFFSET FONT_SIZE2 long
putVarChr MEMORY_FILE OFFSET2 FONT_SIZE long
get MEM_SIZE asize MEMORY_FILE
log FONT_NAME 0 MEM_SIZE MEMORY_FILE