Skip to content

Commit 5316e3e

Browse files
committed
Support FCND #2
1 parent a3f4a7b commit 5316e3e

File tree

3 files changed

+39
-19
lines changed

3 files changed

+39
-19
lines changed

FFDConverter/FFDFormat.cs

+25-5
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ namespace FFDConverter
3232
{
3333
class FFDFormat
3434
{
35-
private static void LoadFFD(string inputFFD, ref generalInfoFFD infoFFD, List<charDescFFD> FFDDescList, List<xadvanceDescFFD> FFDxadvanceList, List<kernelDescFFD> FFDkernelList, ref UnknownStuff unkFFD, Config config)
35+
private static void LoadFFD(string inputFFD, ref generalInfoFFD infoFFD, List<charDescFFD> FFDDescList, List<xadvanceDescFFD> FFDxadvanceList, List<kernelDescFFD> FFDkernelList, ref UnknownStuff unkFFD, ref Config config)
3636
{
3737
var input = File.OpenRead(inputFFD);
3838
input.Position = 0;
3939

4040
//Read header
41-
ReadHeaderFFD(input,ref infoFFD,ref unkFFD, config);
41+
ReadHeaderFFD(input,ref infoFFD,ref unkFFD, ref config);
4242

4343
// Read Table1
4444
ReadTable1FFD(input, ref infoFFD);
@@ -123,14 +123,34 @@ private static void LoadFFD(string inputFFD, ref generalInfoFFD infoFFD, List<ch
123123
unkFFD.unkFooter = input.ReadBytes((int)(input.Length - input.Position));
124124
}
125125

126-
private static void ReadHeaderFFD(FileStream input, ref generalInfoFFD infoFFD, ref UnknownStuff unkFFD, Config config)
126+
private static void ReadHeaderFFD(FileStream input, ref generalInfoFFD infoFFD, ref UnknownStuff unkFFD, ref Config config)
127127
{
128128
if(config.unkHeaderAC > 0)
129129
{
130130
unkFFD.unkHeaderAC = input.ReadBytes(config.unkHeaderAC);
131131
uint asizeFFD = input.ReadValueU32();
132132
}
133-
unkFFD.unkHeader1 = input.ReadBytes(config.unkHeader1);
133+
134+
// some hard code
135+
if(config.unkHeader1 == 1)
136+
{
137+
input.ReadByte();
138+
ushort scaleFont = input.ReadValueU16();
139+
input.Position -= 3;
140+
unkFFD.unkHeader1 = input.ReadBytes(3);
141+
if (scaleFont > 8000)
142+
{
143+
config.scaleXoffset = 16;
144+
config.scaleYoffset = 16;
145+
config.scaleWidth += 8;
146+
config.scaleHeight += 8;
147+
}
148+
}
149+
else
150+
{
151+
unkFFD.unkHeader1 = input.ReadBytes(config.unkHeader1);
152+
}
153+
134154
infoFFD.pagesCount = input.ReadValueU8();
135155
infoFFD.charsCount = input.ReadValueU16();
136156
unkFFD.unkHeader2 = input.ReadBytes(config.unkHeader2);
@@ -176,7 +196,7 @@ public static void CreateFFD(string inputFFD, string inputBMF, string outputFFD,
176196
List<xadvanceDescFFD> FFDxadvanceList = new();
177197
List<kernelDescFFD> FFDkernelList = new();
178198
UnknownStuff unkFFD = new();
179-
LoadFFD(inputFFD, ref infoFFD, FFDDescList, FFDxadvanceList, FFDkernelList, ref unkFFD, config);
199+
LoadFFD(inputFFD, ref infoFFD, FFDDescList, FFDxadvanceList, FFDkernelList, ref unkFFD, ref config);
180200

181201
//Load BMFont
182202
List<charDescBMF> BMFcharDescList = new();

FFDConverter/Properties/launchSettings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"FFDConverter": {
44
"commandName": "Project",
5-
"commandLineArgs": "-v AC3LRE -b AC2KERN.fnt -f \"AC3Remastered\\ACL\\1239-Abstergo_Sans_Latin.Fire_Font_Descriptor\" -o new.ffd"
5+
"commandLineArgs": "-v FCND -b AC2KERN.fnt -f \"FCND\\din_mittelschrift_lt_w1g_default.ffd\" -o new.ffd"
66
}
77
}
88
}

FFDConverter/config.xml

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<?xml version="1.0"?>
22
<config>
3-
<game name="FarCryPrimal - FCP" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
4-
<game name="FarCry3BloodDragon - FC3BD" scaleXoffset="16.0" scaleYoffset="16.0" scaleWidth="16.0" scaleHeight="16.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
5-
<game name="FarCry3 - FC3" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
6-
<game name="FarCry4 - FC4" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
7-
<game name="FarCry5 - FC5" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="1.3" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
8-
<game name="WatchDogs1 - WD1" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
9-
<game name="WatchDogs2 - WD2" scaleXoffset="16.0" scaleYoffset="16.0" scaleWidth="16.0" scaleHeight="16.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
10-
<game name="Assassin2 - AC2" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
11-
<game name="AssassinBrotherhood - ACBR" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
12-
<game name="AssassinRevelation - ACRE" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
13-
<game name="Assassin3Remastered - AC3R - AC3LR" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="13"/>
14-
<game name="Assassin4BlackFlag - AC4" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="13"/>
15-
3+
<game name="FarCryPrimal - FCP" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
4+
<game name="FarCry3BloodDragon - FC3BD" scaleXoffset="16.0" scaleYoffset="16.0" scaleWidth="16.0" scaleHeight="16.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
5+
<game name="FarCry3 - FC3" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
6+
<game name="FarCry4 - FC4" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
7+
<game name="FarCry5 - FC5" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="1.3" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
8+
<game name="FarCryNewDawn - FCND" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="1" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
9+
<game name="WatchDogs1 - WD1" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
10+
<game name="WatchDogs2 - WD2" scaleXoffset="16.0" scaleYoffset="16.0" scaleWidth="16.0" scaleHeight="16.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="0"/>
11+
<game name="Assassin2 - AC2" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
12+
<game name="AssassinBrotherhood - ACBR" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
13+
<game name="AssassinRevelation - ACRE" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="9"/>
14+
<game name="Assassin3Remastered - AC3R - AC3LR" scaleXoffset="1.0" scaleYoffset="1.0" scaleWidth="1.0" scaleHeight="1.0" scaleXadvance="1.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="13"/>
15+
<game name="Assassin4BlackFlag - AC4" scaleXoffset="8.0" scaleYoffset="8.0" scaleWidth="8.0" scaleHeight="8.0" scaleXadvance="2.0" addCustomYoffset="0" unkHeader1="3" unkHeader2="34" unkHeader3="4" unkHeaderAC="13"/>
1616
</config>

0 commit comments

Comments
 (0)