Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Старые Консольные Игры - Форум _ Ромхакинг & перевод _ Помогите с палитрой

Автор: nikita600 3.4.2009, 15:49

Вот решил поросить помощи над моим маленьким проектом по переводу 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 3.4.2009, 16:15

Прежде чем выкладывать свои исходники на обозрение, ознакомься, пожалуйста, хотя бы поверхностно с http://geosoft.no/development/cppstyle.html.

Теперь проведём работу над ошибками:

Код
  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 4.4.2009, 11:26

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

P.S.: Я просил с палитрой помочь.

Автор: nikita600 8.4.2009, 19:03

http://ifolder.ru/11497528 - Вот новый сырец, с двумя файлами шрифтов. Прошу помогите с палитрой... Кто-нибудь...

Русская версия Invision Power Board (http://www.invisiоnboаrd.cоm)
© Invision Power Services (http://www.invisiоnpowеr.com)