#include #include #define ROM_NAME "som.smc" #define DMP_FILE "dmp.txt" #define OFFSET 0x90216 typedef unsigned char byte; byte read,read_temp; // byte a ser lido e copiado int size; // tamanho da stream FILE *rom, // arquivo de entrada *dmp; // arquivo com os dados comprimidos int main() { int ac_pos, dmp_pos, counter, pnt_pos, rom_pos, i, x; char tabela[255], str_pnt[2], str_wrt[1], string[15]; /* rom=fopen(ROM_NAME, "rb"); // abre arquivo de entrada if(!rom) { printf("Erro ao abrir \"%s\".", ROM_NAME); exit(1); } */ dmp=fopen(DMP_FILE, "r"); if(!dmp) { printf("Erro ao abrir \"%s\".", DMP_FILE); exit(1); } dmp_pos = 0; counter = 0; /******** REQUER TESTE DE CÁLCULO DE POSIÇÃO DO DMP_POS!!!!!******* ********** FUNÇÃO QUE CALCULA O ENDEREÇO QUE DEVE ESCREVER ******** fread(&read, 1, 1, dmp); if (read = '[') { dmp_pos +=2; fseek(dmp, dmp_pos, SEEK_SET); fread (&str_pnt, 1, 3, dmp); pnt_pos = atoi (str_pnt); pnt_pos = (pnt_pos * 2) + 0x90216; dmp_pos += 5; fseek(rom, pnt_pos, SEEK_SET); fread(&read, 1, 1, rom); x = read; fread(&read, 1, 1, rom); i = read; dmp_pos = 0x90000 + (x * 0x100) + i + 0x200; printf("%x",dmp_pos); fseek(dmp, dmp_pos, SEEK_SET); } *******************************************************************************/ /* FUNÇÃO QUE POE O TRANSFORMA O <$XX> EM XX NA ROM BUGGED */ do { fseek(dmp, dmp_pos, SEEK_SET); fread(&read, 1, 1, dmp); if(read = 60) { printf("%i ",read); dmp_pos +=3; fseek(dmp, dmp_pos, SEEK_SET); fread (&str_wrt, 1, 2, dmp); read_temp = atoi (str_wrt); i = read_temp / 10; read_temp = (read_temp + i*6); printf("%x %s \n",read_temp, str_wrt); dmp_pos+= 3; read = 0; } dmp_pos++; }while(dmp_pos < 50); getch(); exit(0); }