diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h index 573021375c6..2dde4a73943 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_cart_type() { return m_type; }; bool has_cart() { return m_cart != nullptr; } diff --git a/src/devices/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h index efa1cdc2a0b..4cf1ea52ebc 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_cart_type() { return m_type; }; int identify_cart_type(UINT8 *header); diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h index 42a98d7174b..28a1702dcf9 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/apf/slot.h b/src/devices/bus/apf/slot.h index 832681de51e..823bc488904 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h index bde7e26034f..af39afa9645 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h index f069fd282b5..3a9edfa2814 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h index 6334e7e5315..38bf3e7c3fc 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h index 407dce6bf62..f38e7c669af 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h index cc79e62d3d0..8b781c88632 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 3b03562ae8a..c76a0febc56 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h index 1d4ed130be4..596eea0bf66 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h index 3199e87508d..43f74dd4181 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h index 6dd0d974c61..d32e065672f 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h index 5a50cb736b5..ddf2cb7ea2f 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h index b3f558daef2..7f76ccbe301 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/hp_optroms/hp_optrom.h index a451b5bc123..980ca93ff4c 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/intv/slot.h index bfdda6497b5..5f22dff3eea 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int load_fullpath(); diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h index 7ba30fe34ba..03ffbad0321 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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 7ae002ea901..e94c8c3dc39 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } virtual void call_unload() override; virtual iodevice_t image_type() const override { return IO_MAGTAPE; } diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h index 75129f6caba..1b4345f800a 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/m5/slot.h index 4dce2fc3e45..66b52db3eb9 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h index 9b4ec1d67ef..fccec9586d7 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/msx_slot/cartridge.h index 10f502a0f13..33acf0f9f9d 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/neogeo/slot.h index f2898583536..1e681ac4684 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/nes/aladdin.h index be1302edb78..d00f473c655 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/nes/datach.h index cea5c098dc6..44d2040d99a 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/nes/karastudio.h index 48541ac8dc2..e7bc33f38d2 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/nes/nes_slot.h index f26aea85d78..26a25d3a8ee 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } void call_load_ines(); void call_load_unif(); diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h index 6e9a0cb5422..5734c9321d5 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/odyssey2/slot.h index e7276525771..169841f4d2d 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h index abf5ce59b97..d0d0637b2e4 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h index e29e875e67f..dbbdaba6e2a 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h index 6e2d4481877..a80dc8bcfa5 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h index 9111caf43e2..0048c525f85 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_cart_type(); diff --git a/src/devices/bus/scv/slot.h b/src/devices/bus/scv/slot.h index 4f6b2ebfde1..b08707dae4a 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h index 663b8abb760..b136f68ea99 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h index 4b090564e8c..f681e54327f 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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.h b/src/devices/bus/ti99x/gromport.h index e598186effb..7afd9ab336b 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -108,7 +108,7 @@ protected: // Image handling: implementation of methods which are abstract in the parent bool call_load() override; void call_unload() override; - virtual softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual void loaded_through_softlist() override; void prepare_cartridge(); diff --git a/src/devices/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h index 647d811ac1c..c25b4e00625 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h index 80c091eb95e..d05e9c70d9e 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h index 7404b97126d..a16cb20cf5d 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_cart_type() { return m_type; }; int identify_cart_type(UINT8 *ROM, UINT32 len); diff --git a/src/devices/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h index 3a0d8fc3507..6c75e677a19 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_vec3d() { return m_vec3d; } diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h index c7a7467880a..5723f0a67fd 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h index 89559efc57a..38cbad86fad 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h index d4f3f227224..d7c126d788a 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } diff --git a/src/devices/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h index 62b1dab1ec6..cb2f903ecc6 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } int get_type() { return m_type; } int get_is_rotated() { return m_cart->get_is_rotated(); } diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h index b94622321a1..9f225c4a7a7 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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 f9e22fab981..bf0440f9b6a 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } 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 d77bb6c1aac..5b64a0f4af8 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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 2515795e4fc..16cd5bf65e6 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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 7aa616e89b3..080093e1b17 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } 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 e870afedb6d..e0992b183a0 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } 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 71aed0ba292..ae68e9ac26d 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 softlist_type get_softlist_type() const override { return softlist_type::ROM; } + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } 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 07259f28d19..72ac145eba4 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } 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 7f4ac24eebe..84dd1a3bae1 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } protected: // device-level overrides diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index c7d02c2bc53..519ac7e1a2d 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1332,23 +1332,8 @@ const software_part *device_image_interface::find_software_item(const char *path 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; - } + const software_list_loader &loader = get_software_list_loader(); + bool result = loader.load_software(*this, swlist, swname, start_entry); // this is a hook that seems to only be used by TI99 if (result) diff --git a/src/emu/diimage.h b/src/emu/diimage.h index a48c800eb55..d9533e36b41 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -21,6 +21,8 @@ #include #include +#include "softlist.h" + //************************************************************************** // TYPE DEFINITIONS @@ -137,13 +139,6 @@ 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(); @@ -253,7 +248,7 @@ public: bool user_loadable() const { return m_user_loadable; } protected: - virtual softlist_type get_softlist_type() const { return softlist_type::NONE; } + virtual const software_list_loader &get_software_list_loader() const { return false_software_list_loader::instance(); } 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); diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 62e6feeecaa..5beac1c79d5 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -91,9 +91,47 @@ private: // device type definition const device_type SOFTWARE_LIST = &device_creator; +false_software_list_loader false_software_list_loader::s_instance; +rom_software_list_loader rom_software_list_loader::s_instance; +image_software_list_loader image_software_list_loader::s_instance; +//************************************************************************** +// SOFTWARE LIST LOADER +//************************************************************************** + +//------------------------------------------------- +// false_software_list_loader::load_software +//------------------------------------------------- + +bool false_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + return false; +} + + +//------------------------------------------------- +// rom_software_list_loader::load_software +//------------------------------------------------- + +bool rom_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + swlist.machine().rom_load().load_software_part_region(device, swlist, swname, start_entry); + return true; +} + + +//------------------------------------------------- +// image_software_list_loader::load_software +//------------------------------------------------- + +bool image_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + return device.load_software(swlist, swname, start_entry); +} + + //************************************************************************** // FEATURE LIST ITEM //************************************************************************** diff --git a/src/emu/softlist.h b/src/emu/softlist.h index e6b649c7a5f..72a8381f929 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -73,6 +73,59 @@ enum software_compatibility // TYPE DEFINITIONS //************************************************************************** +struct rom_entry; +class software_info; +class device_image_interface; +class software_list_device; + +// ======================> software_list_loader + +class software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0; +}; + + +// ======================> false_software_list_loader + +class false_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static false_software_list_loader s_instance; +}; + + +// ======================> rom_software_list_loader + +class rom_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static rom_software_list_loader s_instance; +}; + + +// ======================> image_software_list_loader + +class image_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static image_software_list_loader s_instance; +}; + + // ======================> feature_list_item // an item in a list of name/value pairs diff --git a/src/mame/machine/microdrv.h b/src/mame/machine/microdrv.h index 581b6dc00ce..0b7b69fcd90 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } 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 4a29033b1f3..9347b950c11 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 softlist_type get_softlist_type() const override { return softlist_type::SOFTWARE; } + virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; }