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