Merge pull request #4628 from cam900/sega8_mcfg

device/bus/sega8/sega8_slot.cpp : Remove MCFG macros
This commit is contained in:
ajrhacker 2019-02-14 18:53:46 -05:00 committed by GitHub
commit f8e9b259ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 300 additions and 127 deletions

View File

@ -53,6 +53,7 @@ static void sg1000_card(device_slot_interface &device)
device.option_add_internal("rom", SEGA8_ROM_STD);
}
MACHINE_CONFIG_START(sega8_cardcatch_device::device_add_mconfig)
MCFG_SG1000_CARD_ADD("cardslot", sg1000_card, nullptr)
MACHINE_CONFIG_END
void sega8_cardcatch_device::device_add_mconfig(machine_config &config)
{
SG1000_CARD_SLOT(config, "cardslot", sg1000_card, nullptr);
}

View File

@ -38,7 +38,8 @@ void sega8_mgear_device::device_reset()
}
MACHINE_CONFIG_START(sega8_mgear_device::device_add_mconfig)
MCFG_SMS_CARTRIDGE_ADD("subslot", sms_cart, nullptr)
void sega8_mgear_device::device_add_mconfig(machine_config &config)
{
SMS_CART_SLOT(config, "subslot", sms_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("sms");
MACHINE_CONFIG_END
}

View File

@ -40,6 +40,16 @@
DEFINE_DEVICE_TYPE(SEGA8_CART_SLOT, sega8_cart_slot_device, "sega8_cart_slot", "Sega Master System / Game Gear / SG-1000 Cartridge Slot")
DEFINE_DEVICE_TYPE(SEGA8_CARD_SLOT, sega8_card_slot_device, "sega8_card_slot", "Sega Master System / Game Gear / SG-1000 Card Slot")
DEFINE_DEVICE_TYPE(SG1000_CART_SLOT, sg1000_cart_slot_device, "sg1000_cart_slot", "Sega SG-1000 Cartridge Slot")
DEFINE_DEVICE_TYPE(OMV_CART_SLOT, omv_cart_slot_device, "omv_cart_slot", "Tsukuda Original Othello Multivision FG-1000 / FG-2000 Cartridge Slot")
DEFINE_DEVICE_TYPE(SC3000_CART_SLOT, sc3000_cart_slot_device, "sc3000_cart_slot", "Sega SC-3000 Cartridge Slot")
DEFINE_DEVICE_TYPE(SG1000MK3_CART_SLOT, sg1000mk3_cart_slot_device, "sg1000mk3_cart_slot", "Sega SG-1000 Mark III Cartridge Slot")
DEFINE_DEVICE_TYPE(SMS_CART_SLOT, sms_cart_slot_device, "sms_cart_slot", "Sega Master System Cartridge Slot")
DEFINE_DEVICE_TYPE(GAMEGEAR_CART_SLOT, gamegear_cart_slot_device, "gamegear_cart_slot", "Sega Game Gear Cartridge Slot")
DEFINE_DEVICE_TYPE(SMS_CARD_SLOT, sms_card_slot_device, "sms_card_slot", "Sega Master System Card Slot")
DEFINE_DEVICE_TYPE(SG1000_CARD_SLOT, sg1000_card_slot_device, "sg1000_card_slot", "Sega SG-1000 Card Slot")
//**************************************************************************
// SMS cartridges Interface
@ -112,10 +122,7 @@ sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, de
, device_image_interface(mconfig, *this)
, device_slot_interface(mconfig, *this)
, m_type(SEGA8_BASE_ROM)
, m_must_be_loaded(false)
, m_is_card(is_card)
, m_interface("sms_cart")
, m_extensions("bin")
, m_cart(nullptr)
{
}
@ -125,11 +132,57 @@ sega8_cart_slot_device::sega8_cart_slot_device(const machine_config &mconfig, co
{
}
sega8_card_slot_device::sega8_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, SEGA8_CARD_SLOT, tag, owner, clock, true)
sega8_card_slot_device::sega8_card_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, type, tag, owner, clock, true)
{
}
sega8_card_slot_device::sega8_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_card_slot_device(mconfig, SEGA8_CARD_SLOT, tag, owner, clock)
{
}
sg1000_cart_slot_device::sg1000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, SG1000_CART_SLOT, tag, owner, clock)
{
}
omv_cart_slot_device::omv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, OMV_CART_SLOT, tag, owner, clock)
{
}
sc3000_cart_slot_device::sc3000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, SC3000_CART_SLOT, tag, owner, clock)
{
}
sg1000mk3_cart_slot_device::sg1000mk3_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, SG1000MK3_CART_SLOT, tag, owner, clock)
{
}
sms_cart_slot_device::sms_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, SMS_CART_SLOT, tag, owner, clock)
{
}
gamegear_cart_slot_device::gamegear_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_cart_slot_device(mconfig, GAMEGEAR_CART_SLOT, tag, owner, clock)
{
}
sms_card_slot_device::sms_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_card_slot_device(mconfig, SMS_CARD_SLOT, tag, owner, clock)
{
}
sg1000_card_slot_device::sg1000_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: sega8_card_slot_device(mconfig, SG1000_CARD_SLOT, tag, owner, clock)
{
}
//-------------------------------------------------
// sega8_cart_slot_device - destructor

View File

@ -131,18 +131,14 @@ public:
void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
void set_mandatory(bool val) { m_must_be_loaded = val; }
void set_intf(const char * interface) { m_interface = interface; }
void set_ext(const char * extensions) { m_extensions = extensions; }
virtual iodevice_t image_type() const override { return IO_CARTSLOT; }
virtual bool is_readable() const override { return 1; }
virtual bool is_writeable() const override { return 0; }
virtual bool is_creatable() const override { return 0; }
virtual bool must_be_loaded() const override { return m_must_be_loaded; }
virtual bool is_reset_on_load() const override { return 1; }
virtual const char *image_interface() const override { return m_interface; }
virtual const char *file_extensions() const override { return m_extensions; }
virtual bool must_be_loaded() const override { return false; }
virtual const char *image_interface() const override { return "sms_cart"; }
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
@ -160,15 +156,13 @@ public:
int get_sms_mode() { return m_cart->get_sms_mode(); }
protected:
sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_card);
sega8_cart_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_card = false);
// device-level overrides
virtual void device_start() override;
int m_type;
bool m_must_be_loaded, m_is_card;
const char *m_interface;
const char *m_extensions;
bool m_is_card;
device_sega8_cart_interface* m_cart;
};
@ -182,8 +176,188 @@ public:
virtual const char *custom_instance_name() const override { return "card"; }
virtual const char *custom_brief_instance_name() const override { return "card"; }
protected:
// construction/destruction
sega8_card_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
};
// ======================> sg1000_cart_slot_device
class sg1000_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
sg1000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sg1000_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sg1000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return true; }
virtual const char *image_interface() const override { return "sg1000_cart"; }
virtual const char *file_extensions() const override { return "bin,sg"; }
};
// ======================> omv_cart_slot_device
class omv_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
omv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: omv_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
omv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return false; }
virtual const char *image_interface() const override { return "sg1000_cart"; }
virtual const char *file_extensions() const override { return "bin,sg"; }
};
// ======================> sc3000_cart_slot_device
class sc3000_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
sc3000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sc3000_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sc3000_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return true; }
virtual const char *image_interface() const override { return "sg1000_cart"; }
virtual const char *file_extensions() const override { return "bin,sg,sc"; }
};
// ======================> sg1000mk3_cart_slot_device
class sg1000mk3_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
sg1000mk3_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sg1000mk3_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sg1000mk3_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return false; }
virtual const char *image_interface() const override { return "sms_cart,sg1000_cart"; }
virtual const char *file_extensions() const override { return "bin,sms,sg"; }
};
// ======================> sms_cart_slot_device
class sms_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
sms_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sms_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sms_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return false; }
virtual const char *image_interface() const override { return "sms_cart"; }
virtual const char *file_extensions() const override { return "bin,sms"; }
};
// ======================> gamegear_cart_slot_device
class gamegear_cart_slot_device : public sega8_cart_slot_device
{
public:
// construction/destruction
template <typename T>
gamegear_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: gamegear_cart_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
gamegear_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return true; }
virtual const char *image_interface() const override { return "gamegear_cart"; }
virtual const char *file_extensions() const override { return "bin,gg"; }
};
// ======================> sms_card_slot_device
class sms_card_slot_device : public sega8_card_slot_device
{
public:
// construction/destruction
template <typename T>
sms_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sms_card_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sms_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool must_be_loaded() const override { return false; }
virtual const char *image_interface() const override { return "sms_card"; }
virtual const char *file_extensions() const override { return "bin"; }
};
// ======================> sg1000_card_slot_device
class sg1000_card_slot_device : public sega8_card_slot_device
{
public:
// construction/destruction
template <typename T>
sg1000_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt)
: sg1000_card_slot_device(mconfig, tag, owner, u32(0))
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
}
sg1000_card_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual const char *image_interface() const override { return "sg1000_cart"; }
virtual const char *file_extensions() const override { return "bin,sg"; }
};
DECLARE_DEVICE_TYPE(SG1000_CART_SLOT, sg1000_cart_slot_device)
DECLARE_DEVICE_TYPE(OMV_CART_SLOT, omv_cart_slot_device)
DECLARE_DEVICE_TYPE(SC3000_CART_SLOT, sc3000_cart_slot_device)
DECLARE_DEVICE_TYPE(SG1000MK3_CART_SLOT, sg1000mk3_cart_slot_device)
DECLARE_DEVICE_TYPE(SMS_CART_SLOT, sms_cart_slot_device)
DECLARE_DEVICE_TYPE(GAMEGEAR_CART_SLOT, gamegear_cart_slot_device)
DECLARE_DEVICE_TYPE(SMS_CARD_SLOT, sms_card_slot_device)
DECLARE_DEVICE_TYPE(SG1000_CARD_SLOT, sg1000_card_slot_device)
/***************************************************************************
DEVICE CONFIGURATION MACROS
@ -192,63 +366,6 @@ public:
#define S8SLOT_ROM_REGION_TAG ":cart:rom"
#define MCFG_SG1000_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(true); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("sg1000_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,sg");
#define MCFG_OMV_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(false); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("sg1000_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,sg");
#define MCFG_SC3000_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(true); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("sg1000_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,sg,sc");
#define MCFG_SG1000MK3_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(false); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("sms_cart,sg1000_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,sms,sg");
#define MCFG_SMS_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(false); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("sms_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,sms");
#define MCFG_GG_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CART_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_cart_slot_device *>(device)->set_mandatory(true); \
static_cast<sega8_cart_slot_device *>(device)->set_intf("gamegear_cart"); \
static_cast<sega8_cart_slot_device *>(device)->set_ext("bin,gg");
#define MCFG_SMS_CARD_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CARD_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_card_slot_device *>(device)->set_mandatory(false); \
static_cast<sega8_card_slot_device *>(device)->set_intf("sms_card"); \
static_cast<sega8_card_slot_device *>(device)->set_ext("bin");
#define MCFG_SG1000_CARD_ADD(_tag,_slot_intf,_def_slot) \
MCFG_DEVICE_ADD(_tag, SEGA8_CARD_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<sega8_card_slot_device *>(device)->set_intf("sg1000_cart"); \
static_cast<sega8_card_slot_device *>(device)->set_ext("bin,sg");
// slot interfaces
void sg1000_cart(device_slot_interface &device);
void sg1000mk3_cart(device_slot_interface &device);

View File

@ -95,6 +95,7 @@ WRITE8_MEMBER(sms_gender_adapter_device::write_ram)
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_START(sms_gender_adapter_device::device_add_mconfig)
MCFG_SMS_CARTRIDGE_ADD("subslot", sms_cart, nullptr)
MACHINE_CONFIG_END
void sms_gender_adapter_device::device_add_mconfig(machine_config &config)
{
SMS_CART_SLOT(config, "subslot", sms_cart, nullptr);
}

View File

@ -551,7 +551,7 @@ MACHINE_CONFIG_START(sg1000_state::sg1000)
SG1000_EXPANSION_SLOT(config, m_sgexpslot, sg1000_expansion_devices, nullptr, false);
/* cartridge */
MCFG_SG1000_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
SG1000_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
/* software lists */
SOFTWARE_LIST(config, "cart_list").set_original("sg1000");
@ -571,7 +571,7 @@ MACHINE_CONFIG_START(sg1000_state::omv)
MCFG_DEVICE_IO_MAP(omv_io_map)
config.device_remove(CARTSLOT_TAG);
MCFG_OMV_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
OMV_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
m_ram->set_default_size("2K");
MACHINE_CONFIG_END
@ -603,7 +603,7 @@ MACHINE_CONFIG_START(sc3000_state::sc3000)
SG1000_EXPANSION_SLOT(config, m_sgexpslot, sg1000_expansion_devices, "sk1100", true);
/* cartridge */
MCFG_SC3000_CARTRIDGE_ADD(CARTSLOT_TAG, sg1000_cart, nullptr)
SC3000_CART_SLOT(config, CARTSLOT_TAG, sg1000_cart, nullptr);
/* software lists */
SOFTWARE_LIST(config, "cart_list").set_original("sg1000");

View File

@ -497,7 +497,7 @@ MACHINE_CONFIG_START(sms_state::sms_base)
/* basic machine hardware */
SPEAKER(config, "mono").front_center();
MCFG_SMS_CARTRIDGE_ADD("slot", sms_cart, nullptr)
SMS_CART_SLOT(config, "slot", sms_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("sms");
@ -621,7 +621,7 @@ MACHINE_CONFIG_START(sms_state::sms1_ntsc)
m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
// card and expansion slots, not present in Master System II
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
m_has_bios_full = true;
@ -641,38 +641,38 @@ MACHINE_CONFIG_START(smssdisp_state::sms_sdisp)
config.device_remove("mycard");
config.device_remove("smsexp");
MCFG_SMS_CARTRIDGE_ADD("slot2", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot3", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot4", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot5", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot6", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot7", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot8", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot9", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot10", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot11", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot12", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot13", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot14", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot15", sms_cart, nullptr)
MCFG_SMS_CARTRIDGE_ADD("slot16", sms_cart, nullptr)
SMS_CART_SLOT(config, "slot2", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot3", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot4", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot5", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot6", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot7", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot8", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot9", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot10", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot11", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot12", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot13", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot14", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot15", sms_cart, nullptr);
SMS_CART_SLOT(config, "slot16", sms_cart, nullptr);
MCFG_SMS_CARD_ADD("slot17", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot18", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot19", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot20", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot21", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot22", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot23", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot24", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot25", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot26", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot27", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot28", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot29", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot30", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot31", sms_cart, nullptr)
MCFG_SMS_CARD_ADD("slot32", sms_cart, nullptr)
SMS_CARD_SLOT(config, "slot17", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot18", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot19", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot20", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot21", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot22", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot23", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot24", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot25", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot26", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot27", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot28", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot29", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot30", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot31", sms_cart, nullptr);
SMS_CARD_SLOT(config, "slot32", sms_cart, nullptr);
m_has_bios_full = false;
m_is_sdisp = true;
@ -743,7 +743,7 @@ MACHINE_CONFIG_START(sms_state::sms1_pal)
m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
// card and expansion slots, not present in Master System II
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
m_has_bios_full = true;
@ -815,7 +815,7 @@ MACHINE_CONFIG_START(sms_state::sms1_paln)
m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
// card and expansion slots, not present in Tec Toy Master System III
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
m_has_bios_full = true;
@ -889,7 +889,7 @@ MACHINE_CONFIG_START(sms_state::sms1_br)
m_vdp->pause().set(FUNC(sms_state::sms_pause_callback));
// card and expansion slots, not present in Tec Toy Master System III
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
m_has_bios_full = true;
@ -903,7 +903,7 @@ MACHINE_CONFIG_START(sms_state::sms2_kr)
MCFG_DEVICE_IO_MAP(smskr_io)
config.device_remove("slot");
MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
// Despite having a Japanese cartridge slot, this version is detected as Export region.
@ -920,8 +920,8 @@ MACHINE_CONFIG_START(sms_state::sms1_kr)
config.device_remove("slot");
config.device_remove("mycard");
config.device_remove("smsexp");
MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SMS_EXPANSION_SLOT(config, "smsexp", sms_expansion_devices, nullptr);
SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
@ -957,8 +957,8 @@ MACHINE_CONFIG_START(sms_state::sg1000m3)
config.device_remove("slot");
config.device_remove("mycard");
config.device_remove("smsexp");
MCFG_SG1000MK3_CARTRIDGE_ADD("slot", sg1000mk3_cart, nullptr)
MCFG_SMS_CARD_ADD("mycard", sms_cart, nullptr)
SG1000MK3_CART_SLOT(config, "slot", sg1000mk3_cart, nullptr);
SMS_CARD_SLOT(config, "mycard", sms_cart, nullptr);
SG1000_EXPANSION_SLOT(config, "sgexp", sg1000_expansion_devices, nullptr, false);
SOFTWARE_LIST(config, "cart_list2").set_original("sg1000");
@ -1005,7 +1005,7 @@ MACHINE_CONFIG_START(sms_state::gamegear)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
/* cartridge */
MCFG_GG_CARTRIDGE_ADD("slot", gg_cart, nullptr)
GAMEGEAR_CART_SLOT(config, "slot", gg_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("gamegear");