Приставки > Картриджи / диски

Почему не читается ром? Ничего не могу понять?

(1/1)

ajak:

--- Цитата ---#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:
ff вроде конец файла...... если мне память не изменяет... надеюсь я не ошибся....

ajak:
этов заголовкетакие даннеы

GManiac:
У тебя буфер типа int - 4 байта.
printf("%x",buffer[1]) выводит хекс-запись второго по счёту значения в буфере, а если в заголовке написано:
FFFF FF00 0000 0200
то он и выводит второе двойное слово с обратным порядком байт, т.е. 00 02 00 00 (без пробелов).

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

masyanya:
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;//Файл кончился
}

Всё что знал, казал  ;)

Навигация

[0] Главная страница сообщений

Перейти к полной версии