static RList* sections(RBinFile *bf){ ut8 bank; int i; RList *ret; if (!bf) { return NULL; } ret = r_list_new(); if (!ret) { return NULL; } r_buf_read_at (bf->buf, 0x148, &bank, 1); bank = gb_get_rombanks(bank); #ifdef _MSC_VER RBinSection **rombank = (RBinSection**) malloc (sizeof (RBinSection*) * bank); #else RBinSection *rombank[bank]; #endif if (!bf->buf) { free (ret); #ifdef _MSC_VER free (rombank); #endif return NULL; } ret->free = free; rombank[0] = R_NEW0 (RBinSection); rombank[0]->name = strdup ("rombank00"); rombank[0]->paddr = 0; rombank[0]->size = 0x4000; rombank[0]->vsize = 0x4000; rombank[0]->vaddr = 0; rombank[0]->perm = r_str_rwx ("rx"); rombank[0]->add = true; r_list_append (ret, rombank[0]); for (i = 1; i < bank; i++) { rombank[i] = R_NEW0 (RBinSection); rombank[i]->name = r_str_newf ("rombank%02x", i); rombank[i]->paddr = i*0x4000; rombank[i]->vaddr = i*0x10000-0xc000; //spaaaaaaaaaaaaaaaace!!! rombank[i]->size = rombank[i]->vsize = 0x4000; rombank[i]->perm = r_str_rwx ("rx"); rombank[i]->add = true; r_list_append (ret,rombank[i]); } #ifdef _MSC_VER free (rombank); #endif return ret; }
static RList* sections(RBinFile *arch){ ut8 bank; int i; RList *ret; if (!arch) return NULL; ret = r_list_new(); if (!ret ) return NULL; r_buf_read_at (arch->buf, 0x148, &bank, 1); bank = gb_get_rombanks(bank); RBinSection *rombank[bank]; if (!arch->buf) { free (ret); return NULL; } ret->free = free; rombank[0] = R_NEW0 (RBinSection); strncpy (rombank[0]->name, "rombank00", R_BIN_SIZEOF_STRINGS); rombank[0]->paddr = 0; rombank[0]->size = 0x4000; rombank[0]->vsize = 0x4000; rombank[0]->vaddr = 0; rombank[0]->srwx = r_str_rwx ("mrx"); rombank[0]->add = true; r_list_append (ret, rombank[0]); for (i = 1; i < bank; i++) { rombank[i] = R_NEW0 (RBinSection); sprintf (rombank[i]->name,"rombank%02x",i); rombank[i]->paddr = i*0x4000; rombank[i]->vaddr = i*0x10000-0xc000; //spaaaaaaaaaaaaaaaace!!! rombank[i]->size = rombank[i]->vsize = 0x4000; rombank[i]->srwx = r_str_rwx ("mrx"); rombank[i]->add = true; r_list_append (ret,rombank[i]); } return ret; }