From 1818aa6f742ae96289c75f9d5fadef5a92a5354d Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Sun, 28 Sep 2014 08:25:23 +0000 Subject: [PATCH] (MESS) floppy.c: fixed disks not being launched if loaded from softlist through File Manager. [Fabio Priuli] out of whatsnew: until we support writing changes to diff, it is also safer to treat disks in softlists as read-only :) --- src/emu/imagedev/floppy.c | 44 +++++++-------------------------------- src/emu/imagedev/floppy.h | 1 - 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/src/emu/imagedev/floppy.c b/src/emu/imagedev/floppy.c index 4c0017b7046..94d108df4db 100644 --- a/src/emu/imagedev/floppy.c +++ b/src/emu/imagedev/floppy.c @@ -871,49 +871,21 @@ void ui_menu_control_floppy_image::do_load_create() } } -astring ui_menu_control_floppy_image::try_file(astring location, astring name, bool has_crc, UINT32 crc) -{ - emu_file fd(machine().options().media_path(), OPEN_FLAG_READ); - file_error filerr; - if(has_crc) - filerr = fd.open(location.cstr(), PATH_SEPARATOR, name.cstr(), crc); - else - filerr = fd.open(location.cstr(), PATH_SEPARATOR, name.cstr()); - if(filerr != FILERR_NONE) - return ""; - return fd.fullpath(); -} - void ui_menu_control_floppy_image::hook_load(astring filename, bool softlist) { - input_filename = filename; if (softlist) { - astring swlist_name, swinfo_name, swpart_name; - device_image_interface::software_name_split(filename.cstr(), swlist_name, swinfo_name, swpart_name); - software_list_device *swlistdev = software_list_device::find_by_name(machine().config(), swlist_name); - software_info *swinfo = swlistdev->find(swinfo_name); - software_part *swpart = swinfo->find_part(swpart_name); - const char *parentname = swinfo->parentname(); - for(const rom_entry *region = swpart->romdata(); region; region = rom_next_region(region)) { - const rom_entry *romp = region + 1; - UINT32 crc = 0; - bool has_crc = hash_collection(ROM_GETHASHDATA(romp)).crc(crc); - - filename = try_file(astring(swlistdev->list_name()) + PATH_SEPARATOR + astring(swinfo_name), ROM_GETNAME(romp), has_crc, crc); - if(filename == "" && parentname) - filename = try_file(astring(swlist_name) + PATH_SEPARATOR + astring(parentname), ROM_GETNAME(romp), has_crc, crc); - if(filename == "") - filename = try_file(swinfo_name, ROM_GETNAME(romp), has_crc, crc); - if(filename == "" && parentname) - filename = try_file(parentname, ROM_GETNAME(romp), has_crc, crc); - if(filename != "") - break; - } + popmessage("When loaded from software list, the disk is Read-only.\n"); + image->load(filename); + ui_menu::stack_pop(machine()); + return; } + input_filename = filename; input_format = static_cast(image)->identify(filename); - if(!input_format) { + + if (!input_format) + { popmessage("Error: %s\n", image->error()); ui_menu::stack_pop(machine()); return; diff --git a/src/emu/imagedev/floppy.h b/src/emu/imagedev/floppy.h index 0de3f83ce0d..36f42fad2fe 100644 --- a/src/emu/imagedev/floppy.h +++ b/src/emu/imagedev/floppy.h @@ -198,7 +198,6 @@ protected: void do_load_create(); virtual void hook_load(astring filename, bool softlist); - astring try_file(astring location, astring name, bool has_crc, UINT32 crc); };