Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с палитрой
Старые Консольные Игры - Форум > Ромхакинг > Ромхакинг & перевод
nikita600
Вот решил поросить помощи над моим маленьким проектом по переводу Tony Hawk's Pro Skater для PSX. Замучался писать конвертер шрифта в bmp. С палитрой не могу разобраться, да и с подсчётом ширины какая - то проблема. Вот архив (http://ifolder.ru/11409216) с сырцом, шрифтом и bmp'шником, который я получил при первой версии программы. Помогите, кто, чем может.
============================================
Небольшое описание .fnt файла:
0х01 - к-во букв в шрифте.
0х02 -- 0х1С3 - Заголовок с шириной, высотой, оси X и Y.(Порядок такой: 4байта - ось Х, 4байта - высота, 4байта - ширина, 4байта - ось Y)
0х1С4 -- 0х1Е4 - Палитра.
остальные байты само изображение.
Исходное изображение должно хранится в формате 4bpp.
HoRRoR
Прежде чем выкладывать свои исходники на обозрение, ознакомься, пожалуйста, хотя бы поверхностно с вот этим документиком.

Теперь проведём работу над ошибками:
Код
  int nFonts, width, height, filesize, palletesize;
  int crap, shit, a[nFonts], i, x, n;

Мне интересно, как ты собрался объявлять статический массив, задавая размер динамической переменной? Если программа компилируется (что странно), то это не значит, что она тебя поняла.
Используй динамическое выделение памяти.


Код
if (argc != 3){
  system("PAUSE");
  return 0;
}

Это проверка на количество аргументов, а не на наличие файлов.

Код
fnt = fopen(argv[1], "rb");
if (fnt == NULL){
  printf("Can't open %s!", argv[1]);
}
printf("Opened %s!\n", argv[1]);

А вот это уже проверка на наличие файла. К слову, программа у тебя будет выполняться даже если файла нет, так что позаботься о наличии return'а сразу же после сообщения об ошибке.

Код
for (i = 0; i < nFonts; i++){
  fread(&crap, 4, 1, fnt);
  fread(&height, 4, 1, fnt);
  fread(&shit, 4, 1, fnt);
  fread(&a[nFonts], 4, 1, fnt);
}

Вообще не понимаю смысла этих манипуляций. Данные считываются в переменные, и тут же в переменные считываются другие данные. Смысл? Опиши структуру, создай массив этих структур и читай туда.

А файл, между прочим, надо ещё и закрывать.

И вообще, я не вижу процедуры сохранения в bmp, в чём помогать то? Или помочь - это сделать всё за тебя?

Цитата
0х01 - к-во букв в шрифте.
0х02 -- 0х1С3 - Заголовок с шириной, высотой, оси X и Y.(Порядок такой: 4байта - ось Х, 4байта - высота, 4байта - ширина, 4байта - ось Y)
0х1С4 -- 0х1Е4 - Палитра.

Не лепи всякую чушь, ознакомься с тем, что такое смещение (адрес/позиция/...).
nikita600
Согласен, исходник написан не очень, т.к. я первый раз работаю с конвертацией графики, а также некоторые комментарии обрезал. Да плюс еще за основу взял конвертер gh3.img.ps2 to bmp. Спасибо, что показал, что да, как да где. Учту ошибки, постараюсь исправить.

P.S.: Я просил с палитрой помочь.
nikita600
http://ifolder.ru/11497528 - Вот новый сырец, с двумя файлами шрифтов. Прошу помогите с палитрой... Кто-нибудь...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
IPB NULL RU