Mercurial > repos > blastem
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) { |