Что у нас есть?

Это тоже интересно




Статьи и описания форматов игровых файлов

Описание формата FNT

Эта статья относится к играм:

Автор материала: Siberian GRemlin


Описание формата FNT из игр C&C, C&C 95, C&C: Red Alert, Dune 2, Kyrandia 3


Этот формат использовался Westwood с 92 по 97 год, чтобы храннить шрифты для своих игр. И способ хранения шрифтов по моему мнению весьма оригинальный и нестандартный. В файле такого формата хранится размер этого самого файла, кол-во символов их максимальная высота и ширана, причем что у каждого символа своя ширина и высота, которые для каждого символа хранятся в свою очередь в двух отдельных массивах. Само же графическое изображение хранится тоже в виде одномерного массива. Графическое изображение не так как я думал, что черно-белое, а на самом деле 4битное(16 цветов). Вот Формат заголовка этих шрифтов:

FNTHeader: record 
  FileSize: Word; //Размер всего файла. 

  Unknown1: Word; //Мусор. всегда одно значение(0500). 

  Unknown2: Word; //Мусор. всегда одно значение(000e). 

  Unknown3: Word; //Мусор. всегда одно значение(0014). 

  W_pos: Word; //Начало(Offset) массива ширины каждого символа. 

  Grph_pos: Word; //Начало(Offset) 'массива' графики. 

  H_pos: Word; //Начало(Offset) массива высоты каждого символа. 

  Unknown4: Word; //Мусор. всегда одно значение(1012). 

  Zero: byte; //Нулевой байт. Всегда. 

  Counts: Byte; //Counts+1=Кол-во символов. 

  H_max: Byte; //Максимальная высота символов. 

  W_max: Byte; //Максимальная ширина символов. 

end;


После заголовка идут массивы ширины, графики и высоты. Как я уже сказал пиксель шрифта 4битный, отсюда вытекает, что 2 пикселя хранятся в одном байте. С этим я неразобрался как декомпресить байт и получить два пикселя. Это дело описал Gordan Ugarkovic когда описывал формат FNT(за что ему отдельное спасибо). Я сделал проще - проанализировал значения байтов графики и вот что получилось:

Байты Значение
$11,13,21,22,23,32,33,65 Залиты оба пикселя(левый и правый)
$30,20,10 Левый пустой, Правый залит
$02,03,01 Левый залит, Правый пустой
$00 Оба пустые

Формат шрифта Tiberian Sun был немного модернизирован.

FNTHeader: record 
  FileSize: Word; //Размер всего файла. 

  Unknown1: Word; //Мусор. всегда одно значение(0002). 

  Unknown2: Word; //Мусор. всегда одно значение(000e). 

  Unknown3: Word; //Мусор. всегда одно значение(0014). 

  Unknown4: Word; //Мусор. всегда одно значение(0214). 

  Unknown5: Word; //Мусор. всегда одно значение(0514). 

  Unknown6: Word; //Мусор. всегда одно значение(0314). 

  Unknown7: Word; //Мусор. всегда одно значение(0000). 

  Unknown8: Word; //Мусор. всегда одно значение(0000). 

  Unknown9: Word; //Мусор. всегда одно значение(1010). 

end;


Больше я стал пока разбираться со шрифтами TS.


 
©2000—2010 Михаил Бесчетнов aka Terminus
«EXTRACTOR.ru» — игровые ресурсы: распаковка музыки и графики, конверторы форматов и многое другое…
Ссылка на «EXTRACTOR.ru» при перепечатывании оригинальных материалов крайне желательна

Rambler's Top100