comparison romdb.c @ 1794:4cd226288958

Added support for detecting Mega WiFi titles based on a header string
author Michael Pavone <pavone@retrodev.com>
date Fri, 22 Mar 2019 09:25:28 -0700
parents 52a47611a273
children 73a9d06413bc
comparison
equal deleted inserted replaced
1793:c9695252eff4 1794:4cd226288958
290 info->map[8].start = 0xA13000; 290 info->map[8].start = 0xA13000;
291 info->map[8].end = 0xA13100; 291 info->map[8].end = 0xA13100;
292 info->map[8].mask = 0xFF; 292 info->map[8].mask = 0xFF;
293 info->map[8].write_16 = (write_16_fun)write_bank_reg_w; 293 info->map[8].write_16 = (write_16_fun)write_bank_reg_w;
294 info->map[8].write_8 = (write_8_fun)write_bank_reg_b; 294 info->map[8].write_8 = (write_8_fun)write_bank_reg_b;
295 return;
296 } else if(!memcmp("SEGA MEGAWIFI", rom + 0x100, strlen("SEGA MEGAWIFI"))) {
297 info->mapper_type = MAPPER_NONE;
298 info->map_chunks = base_chunks + 2;
299 info->map = malloc(sizeof(memmap_chunk) * info->map_chunks);
300 memset(info->map, 0, sizeof(memmap_chunk)*2);
301 memcpy(info->map+2, base_map, sizeof(memmap_chunk) * base_chunks);
302 info->save_size = 0x400000;
303 info->save_bus = RAM_FLAG_BOTH;
304 info->save_type = SAVE_NOR;
305 info->map[0].start = 0;
306 info->map[0].end = 0x400000;
307 info->map[0].mask = 0xFFFFFF;
308 info->map[0].write_16 = nor_flash_write_w;
309 info->map[0].write_8 = nor_flash_write_b;
310 info->map[0].read_16 = nor_flash_read_w;
311 info->map[0].read_8 = nor_flash_read_b;
312 info->map[0].flags = MMAP_READ_CODE | MMAP_CODE;
313 info->map[0].buffer = info->save_buffer = malloc(info->save_size);
314 uint32_t init_size = size < info->save_size ? size : info->save_size;
315 memcpy(info->save_buffer, rom, init_size);
316 byteswap_rom(info->save_size, (uint16_t *)info->save_buffer);
317 info->nor = calloc(1, sizeof(nor_state));
318 nor_flash_init(info->nor, info->save_buffer, info->save_size, 128, 0xDA45, RAM_FLAG_BOTH);
319 info->nor->cmd_address1 = 0xAAB;
320 info->nor->cmd_address2 = 0x555;
321 info->map[1].start = 0xA130C0;
322 info->map[1].end = 0xA130D0;
323 info->map[1].mask = 0xFFFFFF;
324 if (!strcmp(
325 "on",
326 tern_find_path_default(config, "system\0megawifi\0", (tern_val){.ptrval="off"}, TVAL_PTR).ptrval)
327 ) {
328 info->map[1].write_16 = megawifi_write_w;
329 info->map[1].write_8 = megawifi_write_b;
330 info->map[1].read_16 = megawifi_read_w;
331 info->map[1].read_8 = megawifi_read_b;
332 } else {
333 warning("ROM uses MegaWiFi, but it is disabled\n");
334 }
295 return; 335 return;
296 } else if (has_ram_header(rom, size)) { 336 } else if (has_ram_header(rom, size)) {
297 uint32_t ram_start = read_ram_header(info, rom); 337 uint32_t ram_start = read_ram_header(info, rom);
298 338
299 if (info->save_buffer) { 339 if (info->save_buffer) {