Автор Тема: Почему не читается ром? Ничего не могу понять?  (Прочитано 4808 раз)

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

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Цитата
#include <stdio.h>  //
#include <stdlib.h> //
#include <conio.h>  //clrscr()
//=============================
#include <iostream.h>         //c++
//============================
void load_rom(char *patch)
{
    int *buffer=NULL;
    long size_rom=0;
    FILE *rom=fopen(patch,"rb");
    fseek(rom,0,SEEK_END);
    size_rom=ftell(rom);
    buffer=(int*)malloc(size_rom);
    fseek(rom,0,SEEK_SET);
    if(fread(buffer,1,size_rom,rom))
              printf("%x",buffer[1]);
}
int main()
{
   clrscr();
   load_rom("c:\\1.txt");
   return 1;
}

Все файлы читает, а когда читаю ром сеги, где сначала ffffff идёт, ничего не работает. Кто знаток Си, подскажите.

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Почему не читается ром? Ничего не могу понять?
« Ответ #1 : 20 Сентябрь 2008, 17:17:58 »
ff вроде конец файла...... если мне память не изменяет... надеюсь я не ошибся....

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Почему не читается ром? Ничего не могу понять?
« Ответ #2 : 20 Сентябрь 2008, 23:25:06 »
этов заголовкетакие даннеы

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: Почему не читается ром? Ничего не могу понять?
« Ответ #3 : 21 Сентябрь 2008, 01:19:37 »
У тебя буфер типа int - 4 байта.
printf("%x",buffer[1]) выводит хекс-запись второго по счёту значения в буфере, а если в заголовке написано:
FFFF FF00 0000 0200
то он и выводит второе двойное слово с обратным порядком байт, т.е. 00 02 00 00 (без пробелов).

Добавлено позже:
Вообще, что значит "не работает"? У меня в 2003 всё работает, и размер определяется. Но строки "#include <iostream.h>         //c++" и "clrscr" пришлось убрать.

Оффлайн masyanya

  • Пользователь
  • Сообщений: 545
  • Пол: Мужской
  • ...there's no knowledge that is not power...
    • Youtube
    • Просмотр профиля
Re: Почему не читается ром? Ничего не могу понn
« Ответ #4 : 27 Октябрь 2008, 14:53:28 »
int *buffer=NULL;
поменяй на
 LPBYTE buffer=NULL;

Вот так строго говоря никто не делает, оч плохой стиль (да и для дебагера не показательно):
    if(fread(buffer,1,size_rom,rom))

LPBYTE pointer=buffer;
while(!feof(fp))//Файл кончился
{
    if(fread(pointer+=0x800,0x04,0x200,rom)!=0x04)//блоками по 512.
      break;//Файл кончился
}

Всё что знал, казал  ;)
« Последнее редактирование: 10 Ноябрь 2008, 06:24:50 от masyanya »