Автор Тема: Пишем ромхакерский/хоумбрюерский софт.  (Прочитано 90 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 830
  • Пол: Мужской
    • Просмотр профиля
Собираюсь я тута написать небольшую совсем-совсем простенькую утилитку для конвертации BMPшек глубиной цвета в 4 бита в набор 4-битных linear тайлов размером 16 на 16 - формат, использовавшийся в некоторых игровых автоматах (например, Strikes of 1945 и парочке корейских железячек с сильными подозрениями на его клонизм). Однако почему-то даже проверка по сигнатуре не работает как надо - вместо стоящих первыми 2-мя байтами букв B и M утилитка в любой скормленной BMPшечке видит нули. Как так получается?

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>


FILE         *fpin, *fpout;
long            len;
long            i,n;

int main(int argc, char *argv[])
{

if (argc != 2 ) {
printf("Bitmap converter to 4bpp 16x16 tile data.\n");
fprintf(stdout,"Usage: %s [srcfile].bmp\n",argv[0]);
exit(1);
}


if ( (fpin=fopen(argv[1],"rb") ) == NULL ) {

printf("Can't open input file\n");
exit(1);
}


/*
 * Now we try to determine the size of the file
 * to be converted
 */
if (fseek(fpin,0,SEEK_END)) {
printf("Couldn't determine size of file\n");
fclose(fpin);
exit(1);
}

len=ftell(fpin);

unsigned short   bytStr[len];

fread(bytStr, 1, len, fpin);
   
  printf("The first byte is %x.\n",bytStr[0]);
fclose(fpin);
exit(1);
}

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3242
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Не сильно в код углубился, но ты походу пытаешь читать конец файла, а там уже ничего нет.
Попроси ChatGPT помочь. Он быстрее вкурит, что у тебя тут не так.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 830
  • Пол: Мужской
    • Просмотр профиля
Не сильно в код углубился, но ты походу пытаешь читать конец файла, а там уже ничего нет.

Спасибо! Именно так оно и оказалось.