@@ -32,13 +32,13 @@ namespace FFDConverter
32
32
{
33
33
class FFDFormat
34
34
{
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 )
36
36
{
37
37
var input = File . OpenRead ( inputFFD ) ;
38
38
input . Position = 0 ;
39
39
40
40
//Read header
41
- ReadHeaderFFD ( input , ref infoFFD , ref unkFFD , config ) ;
41
+ ReadHeaderFFD ( input , ref infoFFD , ref unkFFD , ref config ) ;
42
42
43
43
// Read Table1
44
44
ReadTable1FFD ( input , ref infoFFD ) ;
@@ -123,14 +123,34 @@ private static void LoadFFD(string inputFFD, ref generalInfoFFD infoFFD, List<ch
123
123
unkFFD . unkFooter = input . ReadBytes ( ( int ) ( input . Length - input . Position ) ) ;
124
124
}
125
125
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 )
127
127
{
128
128
if ( config . unkHeaderAC > 0 )
129
129
{
130
130
unkFFD . unkHeaderAC = input . ReadBytes ( config . unkHeaderAC ) ;
131
131
uint asizeFFD = input . ReadValueU32 ( ) ;
132
132
}
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
+
134
154
infoFFD . pagesCount = input . ReadValueU8 ( ) ;
135
155
infoFFD . charsCount = input . ReadValueU16 ( ) ;
136
156
unkFFD . unkHeader2 = input . ReadBytes ( config . unkHeader2 ) ;
@@ -176,7 +196,7 @@ public static void CreateFFD(string inputFFD, string inputBMF, string outputFFD,
176
196
List < xadvanceDescFFD > FFDxadvanceList = new ( ) ;
177
197
List < kernelDescFFD > FFDkernelList = new ( ) ;
178
198
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 ) ;
180
200
181
201
//Load BMFont
182
202
List < charDescBMF > BMFcharDescList = new ( ) ;
0 commit comments