From ae5dab64d7ad7c0a6facfb5e749ff028647bc2e3 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Thu, 21 Jul 2016 21:10:18 -0400 Subject: [PATCH] device_image_interface::call_softlist_load() was a virtual function where every implementation was one of two copy-and-paste jobs. This change consolidates all of these implementations, replacing that virtual function with a mere hook that chooses which technique to perform --- src/devices/bus/a7800/a78_slot.cpp | 10 -------- src/devices/bus/a7800/a78_slot.h | 2 +- src/devices/bus/a800/a800_slot.cpp | 10 -------- src/devices/bus/a800/a800_slot.h | 2 +- src/devices/bus/adam/exp.cpp | 12 --------- src/devices/bus/adam/exp.h | 2 +- src/devices/bus/apf/slot.cpp | 11 -------- src/devices/bus/apf/slot.h | 2 +- src/devices/bus/arcadia/slot.cpp | 12 --------- src/devices/bus/arcadia/slot.h | 2 +- src/devices/bus/astrocde/slot.cpp | 11 -------- src/devices/bus/astrocde/slot.h | 2 +- src/devices/bus/c64/exp.cpp | 12 --------- src/devices/bus/c64/exp.h | 2 +- src/devices/bus/cbm2/exp.cpp | 12 --------- src/devices/bus/cbm2/exp.h | 2 +- src/devices/bus/chanf/slot.cpp | 12 --------- src/devices/bus/chanf/slot.h | 2 +- src/devices/bus/coco/cococart.cpp | 12 --------- src/devices/bus/coco/cococart.h | 2 +- src/devices/bus/coleco/exp.cpp | 12 --------- src/devices/bus/coleco/exp.h | 2 +- src/devices/bus/crvision/slot.cpp | 11 -------- src/devices/bus/crvision/slot.h | 2 +- src/devices/bus/gameboy/gb_slot.cpp | 10 -------- src/devices/bus/gameboy/gb_slot.h | 2 +- src/devices/bus/gba/gba_slot.cpp | 12 --------- src/devices/bus/gba/gba_slot.h | 2 +- src/devices/bus/generic/slot.cpp | 12 --------- src/devices/bus/generic/slot.h | 2 +- src/devices/bus/hp_optroms/hp_optrom.cpp | 7 ------ src/devices/bus/hp_optroms/hp_optrom.h | 2 +- src/devices/bus/intv/slot.cpp | 11 -------- src/devices/bus/intv/slot.h | 2 +- src/devices/bus/iq151/iq151.cpp | 10 -------- src/devices/bus/iq151/iq151.h | 2 +- src/devices/bus/isa/sc499.h | 2 +- src/devices/bus/kc/kc.cpp | 10 -------- src/devices/bus/kc/kc.h | 2 +- src/devices/bus/m5/slot.cpp | 11 -------- src/devices/bus/m5/slot.h | 2 +- src/devices/bus/megadrive/md_slot.cpp | 10 -------- src/devices/bus/megadrive/md_slot.h | 2 +- src/devices/bus/msx_slot/cartridge.cpp | 7 ------ src/devices/bus/msx_slot/cartridge.h | 2 +- src/devices/bus/neogeo/slot.cpp | 11 -------- src/devices/bus/neogeo/slot.h | 2 +- src/devices/bus/nes/aladdin.cpp | 6 ----- src/devices/bus/nes/aladdin.h | 2 +- src/devices/bus/nes/datach.cpp | 6 ----- src/devices/bus/nes/datach.h | 2 +- src/devices/bus/nes/karastudio.cpp | 6 ----- src/devices/bus/nes/karastudio.h | 2 +- src/devices/bus/nes/nes_slot.cpp | 10 -------- src/devices/bus/nes/nes_slot.h | 2 +- src/devices/bus/nes/sunsoft_dcs.cpp | 6 ----- src/devices/bus/nes/sunsoft_dcs.h | 2 +- src/devices/bus/odyssey2/slot.cpp | 11 -------- src/devices/bus/odyssey2/slot.h | 2 +- src/devices/bus/pce/pce_slot.cpp | 12 --------- src/devices/bus/pce/pce_slot.h | 2 +- src/devices/bus/plus4/exp.cpp | 12 --------- src/devices/bus/plus4/exp.h | 2 +- src/devices/bus/ql/rom.cpp | 12 --------- src/devices/bus/ql/rom.h | 2 +- src/devices/bus/saturn/sat_slot.cpp | 11 -------- src/devices/bus/saturn/sat_slot.h | 2 +- src/devices/bus/scv/slot.cpp | 12 --------- src/devices/bus/scv/slot.h | 2 +- src/devices/bus/sega8/sega8_slot.cpp | 11 -------- src/devices/bus/sega8/sega8_slot.h | 2 +- src/devices/bus/snes/snes_slot.cpp | 10 -------- src/devices/bus/snes/snes_slot.h | 2 +- src/devices/bus/ti99x/gromport.cpp | 6 ++--- src/devices/bus/ti99x/gromport.h | 3 ++- src/devices/bus/vboy/slot.cpp | 12 --------- src/devices/bus/vboy/slot.h | 2 +- src/devices/bus/vc4000/slot.cpp | 11 -------- src/devices/bus/vc4000/slot.h | 2 +- src/devices/bus/vcs/vcs_slot.cpp | 11 -------- src/devices/bus/vcs/vcs_slot.h | 2 +- src/devices/bus/vectrex/slot.cpp | 11 -------- src/devices/bus/vectrex/slot.h | 2 +- src/devices/bus/vic10/exp.cpp | 12 --------- src/devices/bus/vic10/exp.h | 2 +- src/devices/bus/vic20/exp.cpp | 12 --------- src/devices/bus/vic20/exp.h | 2 +- src/devices/bus/vidbrain/exp.cpp | 12 --------- src/devices/bus/vidbrain/exp.h | 2 +- src/devices/bus/wswan/slot.cpp | 11 -------- src/devices/bus/wswan/slot.h | 2 +- src/devices/bus/z88/z88.cpp | 10 -------- src/devices/bus/z88/z88.h | 2 +- src/devices/imagedev/cassette.h | 2 +- src/devices/imagedev/chd_cd.h | 2 +- src/devices/imagedev/diablo.h | 2 +- src/devices/imagedev/flopdrv.h | 2 +- src/devices/imagedev/floppy.h | 2 +- src/devices/imagedev/harddriv.h | 2 +- src/devices/imagedev/snapquik.h | 2 +- src/devices/machine/smartmed.h | 2 +- src/emu/diimage.cpp | 32 ++++++++++++++++++++++++ src/emu/diimage.h | 14 ++++++++++- src/mame/machine/microdrv.h | 2 +- src/mame/machine/psion_pack.h | 2 +- 105 files changed, 105 insertions(+), 537 deletions(-) diff --git a/src/devices/bus/a7800/a78_slot.cpp b/src/devices/bus/a7800/a78_slot.cpp index 825c0a6f5fd..0d71161fc70 100644 --- a/src/devices/bus/a7800/a78_slot.cpp +++ b/src/devices/bus/a7800/a78_slot.cpp @@ -494,16 +494,6 @@ void a78_cart_slot_device::call_unload() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool a78_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - /*------------------------------------------------- verify_header - check the image (from fullpath) has an admissible header diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h index b230c0913ba..573021375c6 100644 --- a/src/devices/bus/a7800/a78_slot.h +++ b/src/devices/bus/a7800/a78_slot.h @@ -96,7 +96,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_cart_type() { return m_type; }; bool has_cart() { return m_cart != nullptr; } diff --git a/src/devices/bus/a800/a800_slot.cpp b/src/devices/bus/a800/a800_slot.cpp index a3e464df1f1..0e01bac62c8 100644 --- a/src/devices/bus/a800/a800_slot.cpp +++ b/src/devices/bus/a800/a800_slot.cpp @@ -303,16 +303,6 @@ void a800_cart_slot_device::call_unload() { } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool a800_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - /*------------------------------------------------- identify_cart_type - code to detect cart type from fullpath diff --git a/src/devices/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h index c55ff587311..efa1cdc2a0b 100644 --- a/src/devices/bus/a800/a800_slot.h +++ b/src/devices/bus/a800/a800_slot.h @@ -96,7 +96,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_cart_type() { return m_type; }; int identify_cart_type(UINT8 *header); diff --git a/src/devices/bus/adam/exp.cpp b/src/devices/bus/adam/exp.cpp index 3c43a400ff0..2035df0ef9b 100644 --- a/src/devices/bus/adam/exp.cpp +++ b/src/devices/bus/adam/exp.cpp @@ -108,18 +108,6 @@ bool adam_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool adam_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h index 270b96bfd44..42a98d7174b 100644 --- a/src/devices/bus/adam/exp.h +++ b/src/devices/bus/adam/exp.h @@ -73,7 +73,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/apf/slot.cpp b/src/devices/bus/apf/slot.cpp index af872826ce3..4051ea5ce81 100644 --- a/src/devices/bus/apf/slot.cpp +++ b/src/devices/bus/apf/slot.cpp @@ -206,17 +206,6 @@ bool apf_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool apf_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/apf/slot.h b/src/devices/bus/apf/slot.h index cbfe11fb28c..832681de51e 100644 --- a/src/devices/bus/apf/slot.h +++ b/src/devices/bus/apf/slot.h @@ -67,7 +67,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/arcadia/slot.cpp b/src/devices/bus/arcadia/slot.cpp index 3a6aee846ab..51dd9b1f870 100644 --- a/src/devices/bus/arcadia/slot.cpp +++ b/src/devices/bus/arcadia/slot.cpp @@ -214,18 +214,6 @@ bool arcadia_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h index 2fa5f0419be..bde7e26034f 100644 --- a/src/devices/bus/arcadia/slot.h +++ b/src/devices/bus/arcadia/slot.h @@ -58,7 +58,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/astrocde/slot.cpp b/src/devices/bus/astrocde/slot.cpp index 2cab9c3c285..cf4069603a4 100644 --- a/src/devices/bus/astrocde/slot.cpp +++ b/src/devices/bus/astrocde/slot.cpp @@ -183,17 +183,6 @@ bool astrocade_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool astrocade_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h index 7590c2acab6..f069fd282b5 100644 --- a/src/devices/bus/astrocde/slot.h +++ b/src/devices/bus/astrocde/slot.h @@ -58,7 +58,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp index 31263c5f927..ca0ed342343 100644 --- a/src/devices/bus/c64/exp.cpp +++ b/src/devices/bus/c64/exp.cpp @@ -201,18 +201,6 @@ bool c64_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool c64_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h index 0d8a6037d82..6334e7e5315 100644 --- a/src/devices/bus/c64/exp.h +++ b/src/devices/bus/c64/exp.h @@ -135,7 +135,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/cbm2/exp.cpp b/src/devices/bus/cbm2/exp.cpp index fd4993760c3..dfba98a37db 100644 --- a/src/devices/bus/cbm2/exp.cpp +++ b/src/devices/bus/cbm2/exp.cpp @@ -139,18 +139,6 @@ bool cbm2_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool cbm2_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h index c1fd7b589ee..407dce6bf62 100644 --- a/src/devices/bus/cbm2/exp.h +++ b/src/devices/bus/cbm2/exp.h @@ -82,7 +82,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/chanf/slot.cpp b/src/devices/bus/chanf/slot.cpp index ea5b00b5348..cfe08b17896 100644 --- a/src/devices/bus/chanf/slot.cpp +++ b/src/devices/bus/chanf/slot.cpp @@ -201,18 +201,6 @@ bool channelf_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool channelf_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h index e5ad8ab06bc..cc79e62d3d0 100644 --- a/src/devices/bus/chanf/slot.h +++ b/src/devices/bus/chanf/slot.h @@ -70,7 +70,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp index 3e6b2ee2c6f..904233550a5 100644 --- a/src/devices/bus/coco/cococart.cpp +++ b/src/devices/bus/coco/cococart.cpp @@ -347,18 +347,6 @@ bool cococart_slot_device::call_load() -//------------------------------------------------- -// call_softlist_load -//------------------------------------------------- - -bool cococart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - - - //------------------------------------------------- // get_default_card_software //------------------------------------------------- diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 1c0d3137caa..3b03562ae8a 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -88,7 +88,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/coleco/exp.cpp b/src/devices/bus/coleco/exp.cpp index 2b2093f2b1d..80bd84f6e10 100644 --- a/src/devices/bus/coleco/exp.cpp +++ b/src/devices/bus/coleco/exp.cpp @@ -96,18 +96,6 @@ bool colecovision_cartridge_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool colecovision_cartridge_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h index 3d8091c215b..1d4ed130be4 100644 --- a/src/devices/bus/coleco/exp.h +++ b/src/devices/bus/coleco/exp.h @@ -79,7 +79,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/crvision/slot.cpp b/src/devices/bus/crvision/slot.cpp index 22af6ced64c..e4fd9630e46 100644 --- a/src/devices/bus/crvision/slot.cpp +++ b/src/devices/bus/crvision/slot.cpp @@ -214,17 +214,6 @@ bool crvision_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool crvision_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h index 83819e6535b..3199e87508d 100644 --- a/src/devices/bus/crvision/slot.h +++ b/src/devices/bus/crvision/slot.h @@ -63,7 +63,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/gameboy/gb_slot.cpp b/src/devices/bus/gameboy/gb_slot.cpp index 0cc3832aa14..f65677b022e 100644 --- a/src/devices/bus/gameboy/gb_slot.cpp +++ b/src/devices/bus/gameboy/gb_slot.cpp @@ -451,16 +451,6 @@ void base_gb_cart_slot_device::setup_ram(UINT8 banks) -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool base_gb_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return true; -} - // This fails to catch Mani 4-in-1 carts... even when they match this, then they have MBC1/3 in the internal header instead of MMM01... bool base_gb_cart_slot_device::get_mmm01_candidate(UINT8 *ROM, UINT32 len) { diff --git a/src/devices/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h index 49fefc591ea..6dd0d974c61 100644 --- a/src/devices/bus/gameboy/gb_slot.h +++ b/src/devices/bus/gameboy/gb_slot.h @@ -118,7 +118,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/gba/gba_slot.cpp b/src/devices/bus/gba/gba_slot.cpp index 01c0194f67e..d5d15c1f86b 100644 --- a/src/devices/bus/gba/gba_slot.cpp +++ b/src/devices/bus/gba/gba_slot.cpp @@ -254,18 +254,6 @@ void gba_cart_slot_device::call_unload() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool gba_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get_cart_type - code to detect NVRAM type from fullpath diff --git a/src/devices/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h index d9972f1813d..5a50cb736b5 100644 --- a/src/devices/bus/gba/gba_slot.h +++ b/src/devices/bus/gba/gba_slot.h @@ -87,7 +87,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/generic/slot.cpp b/src/devices/bus/generic/slot.cpp index 0002520ce04..3a0ee3b1476 100644 --- a/src/devices/bus/generic/slot.cpp +++ b/src/devices/bus/generic/slot.cpp @@ -164,18 +164,6 @@ void generic_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool generic_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h index 3d6d2042b59..b3f558daef2 100644 --- a/src/devices/bus/generic/slot.h +++ b/src/devices/bus/generic/slot.h @@ -114,7 +114,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } UINT32 common_get_size(const char *region); void common_load_rom(UINT8 *ROM, UINT32 len, const char *region); diff --git a/src/devices/bus/hp_optroms/hp_optrom.cpp b/src/devices/bus/hp_optroms/hp_optrom.cpp index ec2425c058c..2ff68288910 100644 --- a/src/devices/bus/hp_optroms/hp_optrom.cpp +++ b/src/devices/bus/hp_optroms/hp_optrom.cpp @@ -126,13 +126,6 @@ void hp_optrom_slot_device::call_unload() } } -bool hp_optrom_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - logerror("hp_optrom: call_softlist_load\n"); - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - std::string hp_optrom_slot_device::get_default_card_software() { return software_get_default_slot("rom"); diff --git a/src/devices/bus/hp_optroms/hp_optrom.h b/src/devices/bus/hp_optroms/hp_optrom.h index 3669b68ab06..a451b5bc123 100644 --- a/src/devices/bus/hp_optroms/hp_optrom.h +++ b/src/devices/bus/hp_optroms/hp_optrom.h @@ -43,7 +43,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return true; } diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp index 3716333cbf8..8344f60c0b7 100644 --- a/src/devices/bus/intv/slot.cpp +++ b/src/devices/bus/intv/slot.cpp @@ -444,17 +444,6 @@ bool intv_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool intv_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h index 0c1670f071c..bfdda6497b5 100644 --- a/src/devices/bus/intv/slot.h +++ b/src/devices/bus/intv/slot.h @@ -102,7 +102,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int load_fullpath(); diff --git a/src/devices/bus/iq151/iq151.cpp b/src/devices/bus/iq151/iq151.cpp index 16839150b5a..838e4d46e92 100644 --- a/src/devices/bus/iq151/iq151.cpp +++ b/src/devices/bus/iq151/iq151.cpp @@ -189,16 +189,6 @@ bool iq151cart_slot_device::call_load() return IMAGE_INIT_PASS; } -/*------------------------------------------------- - call softlist load --------------------------------------------------*/ - -bool iq151cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h index c0d72529870..7ba30fe34ba 100644 --- a/src/devices/bus/iq151/iq151.h +++ b/src/devices/bus/iq151/iq151.h @@ -93,7 +93,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h index d868612f2a6..7ae002ea901 100644 --- a/src/devices/bus/isa/sc499.h +++ b/src/devices/bus/isa/sc499.h @@ -30,7 +30,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual void call_unload() override; virtual iodevice_t image_type() const override { return IO_MAGTAPE; } diff --git a/src/devices/bus/kc/kc.cpp b/src/devices/bus/kc/kc.cpp index 05afba8ed7a..6be7e9432df 100644 --- a/src/devices/bus/kc/kc.cpp +++ b/src/devices/bus/kc/kc.cpp @@ -355,16 +355,6 @@ bool kccart_slot_device::call_load() return IMAGE_INIT_PASS; } -/*------------------------------------------------- - call softlist load --------------------------------------------------*/ - -bool kccart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h index bc8160ebce6..75129f6caba 100644 --- a/src/devices/bus/kc/kc.h +++ b/src/devices/bus/kc/kc.h @@ -91,7 +91,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/m5/slot.cpp b/src/devices/bus/m5/slot.cpp index fdeba61463e..b554a0e448e 100644 --- a/src/devices/bus/m5/slot.cpp +++ b/src/devices/bus/m5/slot.cpp @@ -203,17 +203,6 @@ bool m5_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool m5_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/m5/slot.h b/src/devices/bus/m5/slot.h index c35384a0267..4dce2fc3e45 100644 --- a/src/devices/bus/m5/slot.h +++ b/src/devices/bus/m5/slot.h @@ -70,7 +70,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/megadrive/md_slot.cpp b/src/devices/bus/megadrive/md_slot.cpp index 55d80f8b64d..2bcd3da9d9d 100644 --- a/src/devices/bus/megadrive/md_slot.cpp +++ b/src/devices/bus/megadrive/md_slot.cpp @@ -683,16 +683,6 @@ void base_md_cart_slot_device::setup_nvram() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool base_md_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - int base_md_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) { int type = SEGA_STD; diff --git a/src/devices/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h index 09ae5a84111..9b4ec1d67ef 100644 --- a/src/devices/bus/megadrive/md_slot.h +++ b/src/devices/bus/megadrive/md_slot.h @@ -153,7 +153,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/msx_slot/cartridge.cpp b/src/devices/bus/msx_slot/cartridge.cpp index ae806337359..17301489f3c 100644 --- a/src/devices/bus/msx_slot/cartridge.cpp +++ b/src/devices/bus/msx_slot/cartridge.cpp @@ -198,13 +198,6 @@ void msx_slot_cartridge_device::call_unload() } -bool msx_slot_cartridge_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return true; -} - - WRITE_LINE_MEMBER(msx_slot_cartridge_device::irq_out) { m_irq_handler(state); diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h index e9519a90d48..10f502a0f13 100644 --- a/src/devices/bus/msx_slot/cartridge.h +++ b/src/devices/bus/msx_slot/cartridge.h @@ -43,7 +43,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return true; } virtual bool is_writeable() const override { return false; } diff --git a/src/devices/bus/neogeo/slot.cpp b/src/devices/bus/neogeo/slot.cpp index af2f151ee8d..84a34bc3b30 100644 --- a/src/devices/bus/neogeo/slot.cpp +++ b/src/devices/bus/neogeo/slot.cpp @@ -330,17 +330,6 @@ void neogeo_cart_slot_device::call_unload() { } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool neogeo_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/neogeo/slot.h b/src/devices/bus/neogeo/slot.h index 2a47752c79d..f2898583536 100644 --- a/src/devices/bus/neogeo/slot.h +++ b/src/devices/bus/neogeo/slot.h @@ -195,7 +195,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/nes/aladdin.cpp b/src/devices/bus/nes/aladdin.cpp index bded198c5a7..0e30eaeb8ec 100644 --- a/src/devices/bus/nes/aladdin.cpp +++ b/src/devices/bus/nes/aladdin.cpp @@ -136,12 +136,6 @@ bool nes_aladdin_slot_device::call_load() } -bool nes_aladdin_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - std::string nes_aladdin_slot_device::get_default_card_software() { if (open_image_file(mconfig().options())) diff --git a/src/devices/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h index 1f7800242ea..be1302edb78 100644 --- a/src/devices/bus/nes/aladdin.h +++ b/src/devices/bus/nes/aladdin.h @@ -52,7 +52,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp index cdb41e16830..0ea144782d3 100644 --- a/src/devices/bus/nes/datach.cpp +++ b/src/devices/bus/nes/datach.cpp @@ -137,12 +137,6 @@ bool nes_datach_slot_device::call_load() } -bool nes_datach_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - std::string nes_datach_slot_device::get_default_card_software() { // any way to detect the game with X24C01? diff --git a/src/devices/bus/nes/datach.h b/src/devices/bus/nes/datach.h index e5d137357c2..cea5c098dc6 100644 --- a/src/devices/bus/nes/datach.h +++ b/src/devices/bus/nes/datach.h @@ -54,7 +54,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/nes/karastudio.cpp b/src/devices/bus/nes/karastudio.cpp index d9d0e26a2cf..e321033d700 100644 --- a/src/devices/bus/nes/karastudio.cpp +++ b/src/devices/bus/nes/karastudio.cpp @@ -126,12 +126,6 @@ bool nes_kstudio_slot_device::call_load() } -bool nes_kstudio_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - std::string nes_kstudio_slot_device::get_default_card_software() { return software_get_default_slot("ks_exp"); diff --git a/src/devices/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h index 3aeb96c118a..48541ac8dc2 100644 --- a/src/devices/bus/nes/karastudio.h +++ b/src/devices/bus/nes/karastudio.h @@ -51,7 +51,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp index 1bcf8d6de6e..b163c9d43a2 100644 --- a/src/devices/bus/nes/nes_slot.cpp +++ b/src/devices/bus/nes/nes_slot.cpp @@ -898,16 +898,6 @@ void nes_cart_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool nes_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 3d843381d85..f26aea85d78 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -346,7 +346,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } void call_load_ines(); void call_load_unif(); diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp index 25d1a1db623..356483a2c8b 100644 --- a/src/devices/bus/nes/sunsoft_dcs.cpp +++ b/src/devices/bus/nes/sunsoft_dcs.cpp @@ -105,12 +105,6 @@ bool nes_ntb_slot_device::call_load() } -bool nes_ntb_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - std::string nes_ntb_slot_device::get_default_card_software() { return software_get_default_slot("ntbrom"); diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h index 94d89736cac..6e9a0cb5422 100644 --- a/src/devices/bus/nes/sunsoft_dcs.h +++ b/src/devices/bus/nes/sunsoft_dcs.h @@ -48,7 +48,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/bus/odyssey2/slot.cpp b/src/devices/bus/odyssey2/slot.cpp index 3d0f8714288..a8d61aa815a 100644 --- a/src/devices/bus/odyssey2/slot.cpp +++ b/src/devices/bus/odyssey2/slot.cpp @@ -194,17 +194,6 @@ bool o2_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool o2_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h index 9fb3594ce2a..e7276525771 100644 --- a/src/devices/bus/odyssey2/slot.h +++ b/src/devices/bus/odyssey2/slot.h @@ -69,7 +69,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/pce/pce_slot.cpp b/src/devices/bus/pce/pce_slot.cpp index 6a1e5859f1f..202d5275360 100644 --- a/src/devices/bus/pce/pce_slot.cpp +++ b/src/devices/bus/pce/pce_slot.cpp @@ -294,18 +294,6 @@ void pce_cart_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool pce_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get_cart_type - code to detect NVRAM type from fullpath diff --git a/src/devices/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h index 4838230d769..abf5ce59b97 100644 --- a/src/devices/bus/pce/pce_slot.h +++ b/src/devices/bus/pce/pce_slot.h @@ -68,7 +68,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/plus4/exp.cpp b/src/devices/bus/plus4/exp.cpp index 47f404cacf4..8a37a0fe448 100644 --- a/src/devices/bus/plus4/exp.cpp +++ b/src/devices/bus/plus4/exp.cpp @@ -141,18 +141,6 @@ bool plus4_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool plus4_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h index 84be90e4764..e29e875e67f 100644 --- a/src/devices/bus/plus4/exp.h +++ b/src/devices/bus/plus4/exp.h @@ -121,7 +121,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/ql/rom.cpp b/src/devices/bus/ql/rom.cpp index bd17b2cb1b8..88e65e8b861 100644 --- a/src/devices/bus/ql/rom.cpp +++ b/src/devices/bus/ql/rom.cpp @@ -98,18 +98,6 @@ bool ql_rom_cartridge_slot_t::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool ql_rom_cartridge_slot_t::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h index 244f3b02f1a..6e2d4481877 100644 --- a/src/devices/bus/ql/rom.h +++ b/src/devices/bus/ql/rom.h @@ -96,7 +96,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/saturn/sat_slot.cpp b/src/devices/bus/saturn/sat_slot.cpp index dba415c8a47..6f28cf5cb10 100644 --- a/src/devices/bus/saturn/sat_slot.cpp +++ b/src/devices/bus/saturn/sat_slot.cpp @@ -204,17 +204,6 @@ void sat_cart_slot_device::call_unload() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool sat_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h index c373a0eb857..9111caf43e2 100644 --- a/src/devices/bus/saturn/sat_slot.h +++ b/src/devices/bus/saturn/sat_slot.h @@ -74,7 +74,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_cart_type(); diff --git a/src/devices/bus/scv/slot.cpp b/src/devices/bus/scv/slot.cpp index daf31a27885..3cd28b259b7 100644 --- a/src/devices/bus/scv/slot.cpp +++ b/src/devices/bus/scv/slot.cpp @@ -210,18 +210,6 @@ bool scv_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool scv_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get_cart_type - code to detect NVRAM type from fullpath diff --git a/src/devices/bus/scv/slot.h b/src/devices/bus/scv/slot.h index 250048c49c4..4f6b2ebfde1 100644 --- a/src/devices/bus/scv/slot.h +++ b/src/devices/bus/scv/slot.h @@ -70,7 +70,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/sega8/sega8_slot.cpp b/src/devices/bus/sega8/sega8_slot.cpp index a3ebf09c463..2d5905e240c 100644 --- a/src/devices/bus/sega8/sega8_slot.cpp +++ b/src/devices/bus/sega8/sega8_slot.cpp @@ -415,17 +415,6 @@ void sega8_cart_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool sega8_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - #ifdef UNUSED_FUNCTION // For the moment we switch to a different detection routine which allows to detect // in a single run Codemasters mapper, Korean mapper (including Jang Pung 3 which diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h index 270fb421f58..663b8abb760 100644 --- a/src/devices/bus/sega8/sega8_slot.h +++ b/src/devices/bus/sega8/sega8_slot.h @@ -110,7 +110,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/snes/snes_slot.cpp b/src/devices/bus/snes/snes_slot.cpp index 38260a06e84..9c62a87ec57 100644 --- a/src/devices/bus/snes/snes_slot.cpp +++ b/src/devices/bus/snes/snes_slot.cpp @@ -880,16 +880,6 @@ void base_sns_cart_slot_device::setup_nvram() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool base_sns_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - void base_sns_cart_slot_device::get_cart_type_addon(UINT8 *ROM, UINT32 len, int &type, int &addon) { // First, look if the cart is HiROM or LoROM (and set snes_cart accordingly) diff --git a/src/devices/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h index 663ff71d6c6..4b090564e8c 100644 --- a/src/devices/bus/snes/snes_slot.h +++ b/src/devices/bus/snes/snes_slot.h @@ -159,7 +159,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } void get_cart_type_addon(UINT8 *ROM, UINT32 len, int &type, int &addon); UINT32 snes_skip_header(UINT8 *ROM, UINT32 snes_rom_size); diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp index 4e9df13cdea..159572234ea 100644 --- a/src/devices/bus/ti99x/gromport.cpp +++ b/src/devices/bus/ti99x/gromport.cpp @@ -1417,13 +1417,11 @@ void ti99_cartridge_device::set_slot(int i) m_slot = i; } -bool ti99_cartridge_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) +void ti99_cartridge_device::loaded_through_softlist() { - if (TRACE_CONFIG) logerror("swlist = %s, swname = %s\n", swlist.list_name(), swname); - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); + // TI99 cartridge seems to be the only reason we need loaded_through_softlist()... why? m_softlist = true; m_rpk = nullptr; - return true; } READ8Z_MEMBER(ti99_cartridge_device::readz) diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h index 1473c7662d0..e598186effb 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -108,7 +108,8 @@ protected: // Image handling: implementation of methods which are abstract in the parent bool call_load() override; void call_unload() override; - bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual void loaded_through_softlist() override; void prepare_cartridge(); diff --git a/src/devices/bus/vboy/slot.cpp b/src/devices/bus/vboy/slot.cpp index 4b8fc1bf4d2..133ef058980 100644 --- a/src/devices/bus/vboy/slot.cpp +++ b/src/devices/bus/vboy/slot.cpp @@ -217,18 +217,6 @@ void vboy_cart_slot_device::call_unload() battery_save(m_cart->get_eeprom_base(), m_cart->get_eeprom_size() * 4); } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool vboy_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h index a0d90c68ab7..647d811ac1c 100644 --- a/src/devices/bus/vboy/slot.h +++ b/src/devices/bus/vboy/slot.h @@ -66,7 +66,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/vc4000/slot.cpp b/src/devices/bus/vc4000/slot.cpp index ba75cd67267..d626aa51fbf 100644 --- a/src/devices/bus/vc4000/slot.cpp +++ b/src/devices/bus/vc4000/slot.cpp @@ -220,17 +220,6 @@ bool vc4000_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h index 01e587c62bf..80c091eb95e 100644 --- a/src/devices/bus/vc4000/slot.h +++ b/src/devices/bus/vc4000/slot.h @@ -68,7 +68,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } diff --git a/src/devices/bus/vcs/vcs_slot.cpp b/src/devices/bus/vcs/vcs_slot.cpp index b8b25b864d4..410b4d16597 100644 --- a/src/devices/bus/vcs/vcs_slot.cpp +++ b/src/devices/bus/vcs/vcs_slot.cpp @@ -327,17 +327,6 @@ void vcs_cart_slot_device::call_unload() -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool vcs_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - - /*------------------------------------------------- detection helper routines -------------------------------------------------*/ diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h index 3f25a1ad737..7404b97126d 100755 --- a/src/devices/bus/vcs/vcs_slot.h +++ b/src/devices/bus/vcs/vcs_slot.h @@ -96,7 +96,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_cart_type() { return m_type; }; int identify_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/vectrex/slot.cpp b/src/devices/bus/vectrex/slot.cpp index 14e531b8cd2..98f611cc89b 100644 --- a/src/devices/bus/vectrex/slot.cpp +++ b/src/devices/bus/vectrex/slot.cpp @@ -202,17 +202,6 @@ bool vectrex_cart_slot_device::call_load() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool vectrex_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h index cfd74b2b173..3a0d8fc3507 100644 --- a/src/devices/bus/vectrex/slot.h +++ b/src/devices/bus/vectrex/slot.h @@ -68,7 +68,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override {} - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_vec3d() { return m_vec3d; } diff --git a/src/devices/bus/vic10/exp.cpp b/src/devices/bus/vic10/exp.cpp index 76c55ff7d79..d157c547c63 100644 --- a/src/devices/bus/vic10/exp.cpp +++ b/src/devices/bus/vic10/exp.cpp @@ -166,18 +166,6 @@ bool vic10_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool vic10_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h index 58fbaed0637..c7a7467880a 100644 --- a/src/devices/bus/vic10/exp.h +++ b/src/devices/bus/vic10/exp.h @@ -120,7 +120,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/vic20/exp.cpp b/src/devices/bus/vic20/exp.cpp index 37761ab7d14..f96cff982aa 100644 --- a/src/devices/bus/vic20/exp.cpp +++ b/src/devices/bus/vic20/exp.cpp @@ -151,18 +151,6 @@ bool vic20_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool vic20_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h index 023cc861d9e..89559efc57a 100644 --- a/src/devices/bus/vic20/exp.h +++ b/src/devices/bus/vic20/exp.h @@ -111,7 +111,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/vidbrain/exp.cpp b/src/devices/bus/vidbrain/exp.cpp index 2b4ac800ff3..ef7355fc103 100644 --- a/src/devices/bus/vidbrain/exp.cpp +++ b/src/devices/bus/vidbrain/exp.cpp @@ -138,18 +138,6 @@ bool videobrain_expansion_slot_device::call_load() } -//------------------------------------------------- -// call_softlist_load - -//------------------------------------------------- - -bool videobrain_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - - return true; -} - - //------------------------------------------------- // get_default_card_software - //------------------------------------------------- diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h index 9f1fd18ccf1..d4f3f227224 100644 --- a/src/devices/bus/vidbrain/exp.h +++ b/src/devices/bus/vidbrain/exp.h @@ -136,7 +136,7 @@ protected: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/wswan/slot.cpp b/src/devices/bus/wswan/slot.cpp index 256487bc8e1..e9dd3f899a3 100644 --- a/src/devices/bus/wswan/slot.cpp +++ b/src/devices/bus/wswan/slot.cpp @@ -237,17 +237,6 @@ void ws_cart_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load - -------------------------------------------------*/ - -bool ws_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); - return TRUE; -} - - /*------------------------------------------------- get cart type from cart file -------------------------------------------------*/ diff --git a/src/devices/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h index 9cae282da10..62b1dab1ec6 100644 --- a/src/devices/bus/wswan/slot.h +++ b/src/devices/bus/wswan/slot.h @@ -76,7 +76,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } int get_type() { return m_type; } int get_is_rotated() { return m_cart->get_is_rotated(); } diff --git a/src/devices/bus/z88/z88.cpp b/src/devices/bus/z88/z88.cpp index 062fdeade29..5dfccbf6832 100644 --- a/src/devices/bus/z88/z88.cpp +++ b/src/devices/bus/z88/z88.cpp @@ -171,16 +171,6 @@ void z88cart_slot_device::call_unload() } -/*------------------------------------------------- - call softlist load --------------------------------------------------*/ - -bool z88cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) -{ - machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); - return TRUE; -} - /*------------------------------------------------- get default card software -------------------------------------------------*/ diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h index cca92231fae..b94622321a1 100644 --- a/src/devices/bus/z88/z88.h +++ b/src/devices/bus/z88/z88.h @@ -96,7 +96,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/imagedev/cassette.h b/src/devices/imagedev/cassette.h index ab7441bfe17..f9e22fab981 100644 --- a/src/devices/imagedev/cassette.h +++ b/src/devices/imagedev/cassette.h @@ -59,7 +59,7 @@ public: virtual bool call_create(int format_type, util::option_resolution *format_options) override; virtual void call_unload() override; virtual std::string call_display() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual iodevice_t image_type() const override { return IO_CASSETTE; } diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h index 5d229a471b4..d77bb6c1aac 100644 --- a/src/devices/imagedev/chd_cd.h +++ b/src/devices/imagedev/chd_cd.h @@ -33,7 +33,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; } + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_CDROM; } diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h index 99f5fb35cb3..2515795e4fc 100644 --- a/src/devices/imagedev/diablo.h +++ b/src/devices/imagedev/diablo.h @@ -33,7 +33,7 @@ public: virtual bool call_load() override; virtual bool call_create(int create_format, util::option_resolution *create_args) override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { device().machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; } + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_HARDDISK; } diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h index 0f337a76933..7aa616e89b3 100644 --- a/src/devices/imagedev/flopdrv.h +++ b/src/devices/imagedev/flopdrv.h @@ -100,7 +100,7 @@ public: template static devcb_base &set_out_idx_func(device_t &device, _Object object) { return downcast(device).m_out_idx_func.set_callback(object); } virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual bool call_create(int format_type, util::option_resolution *format_options) override; virtual void call_unload() override; diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h index 7beb4fbcee6..e870afedb6d 100644 --- a/src/devices/imagedev/floppy.h +++ b/src/devices/imagedev/floppy.h @@ -83,7 +83,7 @@ public: virtual bool call_load() override; virtual void call_unload() override; virtual bool call_create(int format_type, util::option_resolution *format_options) override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual const char *image_interface() const override = 0; virtual iodevice_t image_type() const override { return IO_FLOPPY; } diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h index 134f465e17b..71aed0ba292 100644 --- a/src/devices/imagedev/harddriv.h +++ b/src/devices/imagedev/harddriv.h @@ -35,7 +35,7 @@ public: virtual bool call_load() override; virtual bool call_create(int create_format, util::option_resolution *create_args) override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; } + virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } virtual iodevice_t image_type() const override { return IO_HARDDISK; } diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h index dbc3ac7dd8c..07259f28d19 100644 --- a/src/devices/imagedev/snapquik.h +++ b/src/devices/imagedev/snapquik.h @@ -27,7 +27,7 @@ public: // image-level overrides virtual bool call_load() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual iodevice_t image_type() const override { return IO_SNAPSHOT; } virtual bool is_readable() const override { return 1; } diff --git a/src/devices/machine/smartmed.h b/src/devices/machine/smartmed.h index b34ced7ff1d..7f4ac24eebe 100644 --- a/src/devices/machine/smartmed.h +++ b/src/devices/machine/smartmed.h @@ -216,7 +216,7 @@ public: virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } protected: // device-level overrides diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 5d603d29fda..c7d02c2bc53 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1326,6 +1326,38 @@ const software_part *device_image_interface::find_software_item(const char *path } +//------------------------------------------------- +// call_softlist_load +//------------------------------------------------- + +bool device_image_interface::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) +{ + bool result = false; + switch (get_softlist_type()) + { + case softlist_type::ROM: + device().machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry); + result = true; + break; + + case softlist_type::SOFTWARE: + result = load_software(swlist, swname, start_entry); + break; + + case softlist_type::NONE: + default: + result = false; + break; + } + + // this is a hook that seems to only be used by TI99 + if (result) + loaded_through_softlist(); + + return result; +} + + //------------------------------------------------- // load_software_part // diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 692910e6060..a48c800eb55 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -137,6 +137,13 @@ class device_image_interface : public device_interface public: typedef std::vector> formatlist_type; + enum class softlist_type + { + NONE, + ROM, + SOFTWARE + }; + // construction/destruction device_image_interface(const machine_config &mconfig, device_t &device); virtual ~device_image_interface(); @@ -148,7 +155,6 @@ public: virtual void device_compute_hash(hash_collection &hashes, const void *data, size_t length, const char *types) const; virtual bool call_load() { return FALSE; } - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) { return FALSE; } virtual bool call_create(int format_type, util::option_resolution *format_options) { return FALSE; } virtual void call_unload() { } virtual std::string call_display() { return std::string(); } @@ -247,6 +253,9 @@ public: bool user_loadable() const { return m_user_loadable; } protected: + virtual softlist_type get_softlist_type() const { return softlist_type::NONE; } + virtual void loaded_through_softlist() { } + bool load_internal(const char *path, bool is_create, int create_format, util::option_resolution *create_args, bool just_load); void determine_open_plan(int is_create, UINT32 *open_plan); image_error_t load_image_by_path(UINT32 open_flags, const char *path); @@ -326,6 +335,9 @@ protected: bool m_user_loadable; bool m_is_loading; + +private: + bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry); }; // iterator diff --git a/src/mame/machine/microdrv.h b/src/mame/machine/microdrv.h index 7c4c79ba3da..581b6dc00ce 100644 --- a/src/mame/machine/microdrv.h +++ b/src/mame/machine/microdrv.h @@ -50,7 +50,7 @@ public: // image-level overrides virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual iodevice_t image_type() const override { return IO_CASSETTE; } diff --git a/src/mame/machine/psion_pack.h b/src/mame/machine/psion_pack.h index 708ec9a5dbd..4a29033b1f3 100644 --- a/src/mame/machine/psion_pack.h +++ b/src/mame/machine/psion_pack.h @@ -28,7 +28,7 @@ public: virtual bool call_load() override; virtual void call_unload() override; virtual bool call_create(int format_type, util::option_resolution *create_args) override; - virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { return load_software(swlist, swname, start_entry); } + virtual softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; }