Mercurial > repos > blastem
comparison romdb.c @ 2041:638eb2d25696 mame_interp
Merge from default
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 05 Aug 2021 09:29:33 -0700 |
parents | 8b2ef428d1aa |
children | b119e0de9a70 3748a2a8a4b7 |
comparison
equal
deleted
inserted
replaced
1984:0d5f88e53dca | 2041:638eb2d25696 |
---|---|
30 { | 30 { |
31 if (save_type == SAVE_I2C) { | 31 if (save_type == SAVE_I2C) { |
32 return "EEPROM"; | 32 return "EEPROM"; |
33 } else if(save_type == SAVE_NOR) { | 33 } else if(save_type == SAVE_NOR) { |
34 return "NOR Flash"; | 34 return "NOR Flash"; |
35 } else if(save_type == SAVE_HBPT) { | |
36 return "Heartbeat Personal Trainer"; | |
35 } | 37 } |
36 return "SRAM"; | 38 return "SRAM"; |
37 } | 39 } |
38 | 40 |
39 tern_node *load_rom_db() | 41 tern_node *load_rom_db() |
362 | 364 |
363 if (info->save_type == RAM_FLAG_ODD) { | 365 if (info->save_type == RAM_FLAG_ODD) { |
364 info->map[1].flags |= MMAP_ONLY_ODD; | 366 info->map[1].flags |= MMAP_ONLY_ODD; |
365 } else if (info->save_type == RAM_FLAG_EVEN) { | 367 } else if (info->save_type == RAM_FLAG_EVEN) { |
366 info->map[1].flags |= MMAP_ONLY_EVEN; | 368 info->map[1].flags |= MMAP_ONLY_EVEN; |
369 } else { | |
370 info->map[1].flags |= MMAP_CODE; | |
367 } | 371 } |
368 info->map[1].buffer = info->save_buffer; | 372 info->map[1].buffer = info->save_buffer; |
369 } else { | 373 } else { |
370 //Assume the standard Sega mapper | 374 //Assume the standard Sega mapper |
371 info->mapper_type = MAPPER_SEGA_SRAM; | 375 info->mapper_type = MAPPER_SEGA_SRAM; |
715 map->flags = MMAP_READ | MMAP_WRITE; | 719 map->flags = MMAP_READ | MMAP_WRITE; |
716 if (state->info->save_type == RAM_FLAG_ODD) { | 720 if (state->info->save_type == RAM_FLAG_ODD) { |
717 map->flags |= MMAP_ONLY_ODD; | 721 map->flags |= MMAP_ONLY_ODD; |
718 } else if(state->info->save_type == RAM_FLAG_EVEN) { | 722 } else if(state->info->save_type == RAM_FLAG_EVEN) { |
719 map->flags |= MMAP_ONLY_EVEN; | 723 map->flags |= MMAP_ONLY_EVEN; |
724 } else { | |
725 map->flags |= MMAP_CODE; | |
720 } | 726 } |
721 map->mask = calc_mask(state->info->save_size, start, end); | 727 map->mask = calc_mask(state->info->save_size, start, end); |
722 } else if (!strcmp(dtype, "RAM")) { | 728 } else if (!strcmp(dtype, "RAM")) { |
723 uint32_t size = strtol(tern_find_ptr_default(node, "size", "0"), NULL, 16); | 729 uint32_t size = strtol(tern_find_ptr_default(node, "size", "0"), NULL, 16); |
724 if (!size || size > map->end - map->start) { | 730 if (!size || size > map->end - map->start) { |
984 tern_node *device_overrides = tern_find_node(entry, "device_overrides"); | 990 tern_node *device_overrides = tern_find_node(entry, "device_overrides"); |
985 if (device_overrides) { | 991 if (device_overrides) { |
986 info.port1_override = tern_find_ptr(device_overrides, "1"); | 992 info.port1_override = tern_find_ptr(device_overrides, "1"); |
987 info.port2_override = tern_find_ptr(device_overrides, "2"); | 993 info.port2_override = tern_find_ptr(device_overrides, "2"); |
988 info.ext_override = tern_find_ptr(device_overrides, "ext"); | 994 info.ext_override = tern_find_ptr(device_overrides, "ext"); |
995 if ( | |
996 info.save_type == SAVE_NONE | |
997 && ( | |
998 (info.port1_override && startswith(info.port1_override, "heartbeat_trainer.")) | |
999 || (info.port2_override && startswith(info.port2_override, "heartbeat_trainer.")) | |
1000 || (info.ext_override && startswith(info.ext_override, "heartbeat_trainer.")) | |
1001 ) | |
1002 ) { | |
1003 info.save_type = SAVE_HBPT; | |
1004 info.save_size = atoi(tern_find_path_default(entry, "HeartbeatTrainer\0size\0", (tern_val){.ptrval="512"}, TVAL_PTR).ptrval); | |
1005 info.save_buffer = calloc(info.save_size + 5 + 8, 1); | |
1006 memset(info.save_buffer, 0xFF, info.save_size); | |
1007 } | |
989 } else { | 1008 } else { |
990 info.port1_override = info.port2_override = info.ext_override = NULL; | 1009 info.port1_override = info.port2_override = info.ext_override = NULL; |
991 } | 1010 } |
992 info.mouse_mode = tern_find_ptr(entry, "mouse_mode"); | 1011 info.mouse_mode = tern_find_ptr(entry, "mouse_mode"); |
993 | 1012 |