Помогите с палитрой |
Здравствуйте, гость ( Вход | Регистрация )
Помогите с палитрой |
3.4.2009, 15:49
Сообщение
#1
|
|
Активный участник Группа: Тестеры Сообщений: 52 Регистрация: 17.12.2008 Пользователь №: 369 |
Вот решил поросить помощи над моим маленьким проектом по переводу 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. |
|
|
3.4.2009, 16:15
Сообщение
#2
|
|
Администратор Группа: Администраторы Сообщений: 948 Регистрация: 28.12.2007 Из: Ростов-на-Дону Пользователь №: 1 |
Прежде чем выкладывать свои исходники на обозрение, ознакомься, пожалуйста, хотя бы поверхностно с вот этим документиком.
Теперь проведём работу над ошибками: Код 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 - Палитра. Не лепи всякую чушь, ознакомься с тем, что такое смещение (адрес/позиция/...). -------------------- |
|
|
4.4.2009, 11:26
Сообщение
#3
|
|
Активный участник Группа: Тестеры Сообщений: 52 Регистрация: 17.12.2008 Пользователь №: 369 |
Согласен, исходник написан не очень, т.к. я первый раз работаю с конвертацией графики, а также некоторые комментарии обрезал. Да плюс еще за основу взял конвертер gh3.img.ps2 to bmp. Спасибо, что показал, что да, как да где. Учту ошибки, постараюсь исправить.
P.S.: Я просил с палитрой помочь. |
|
|
8.4.2009, 19:03
Сообщение
#4
|
|
Активный участник Группа: Тестеры Сообщений: 52 Регистрация: 17.12.2008 Пользователь №: 369 |
http://ifolder.ru/11497528 - Вот новый сырец, с двумя файлами шрифтов. Прошу помогите с палитрой... Кто-нибудь...
|
|
|
Текстовая версия | Сейчас: 21.6.2024, 16:50 |