Приставки > Картриджи / диски
Почему не читается ром? Ничего не могу понять?
(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;//Файл кончился
}
Всё что знал, казал ;)
Навигация
Перейти к полной версии