summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/generic/slot.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/generic/slot.h')
-rw-r--r--src/devices/bus/generic/slot.h152
1 files changed, 69 insertions, 83 deletions
diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h
index 9df3bf44a76..5704347e826 100644
--- a/src/devices/bus/generic/slot.h
+++ b/src/devices/bus/generic/slot.h
@@ -12,47 +12,44 @@
TYPE DEFINITIONS
***************************************************************************/
-
-// ======================> device_generic_cart_interface
-
-class device_generic_cart_interface : public device_slot_card_interface
+class device_generic_cart_interface : public device_interface
{
public:
// construction/destruction
virtual ~device_generic_cart_interface();
// reading and writing
- virtual uint8_t read_rom(offs_t offset) { return 0xff; }
- virtual uint16_t read16_rom(offs_t offset, uint16_t mem_mask) { return 0xffff; }
- virtual uint32_t read32_rom(offs_t offset, uint32_t mem_mask) { return 0xffffffff; }
+ virtual u8 read_rom(offs_t offset);
+ virtual u16 read16_rom(offs_t offset, u16 mem_mask);
+ virtual u32 read32_rom(offs_t offset, u32 mem_mask);
- virtual uint8_t read_ram(offs_t offset) { return 0xff; }
- virtual void write_ram(offs_t offset, uint8_t data) {}
+ virtual u8 read_ram(offs_t offset);
+ virtual void write_ram(offs_t offset, u8 data);
- virtual void rom_alloc(size_t size, int width, endianness_t end, const char *tag);
- virtual void ram_alloc(uint32_t size);
+ virtual void rom_alloc(u32 size, int width, endianness_t end, char const *tag);
+ virtual void ram_alloc(u32 size);
- uint8_t* get_rom_base() { return m_rom; }
- uint32_t get_rom_size() { return m_rom_size; }
+ u8 *get_rom_base() { return m_rom; }
+ u32 get_rom_size() { return m_rom_size; }
- uint8_t* get_region_base() { if (m_region.found()) return m_region->base(); return nullptr; }
- uint32_t get_region_size() { if (m_region.found()) return m_region->bytes(); return 0; }
+ u8 *get_region_base() { return m_region.found() ? m_region->base() : nullptr; }
+ u32 get_region_size() { return m_region.found() ? m_region->bytes() : 0U; }
- uint8_t* get_ram_base() { return &m_ram[0]; }
- uint32_t get_ram_size() { return m_ram.size(); }
+ u8 *get_ram_base() { return &m_ram[0]; }
+ u32 get_ram_size() { return m_ram.size(); }
void save_ram() { device().save_item(NAME(m_ram)); }
protected:
- device_generic_cart_interface(const machine_config &mconfig, device_t &device);
-
- // internal state
- uint8_t *m_rom;
- uint32_t m_rom_size;
- std::vector<uint8_t> m_ram;
+ device_generic_cart_interface(machine_config const &mconfig, device_t &device);
// this replaces m_rom for non-user configurable carts!
optional_memory_region m_region;
+
+ // internal state
+ std::vector<u8> m_ram;
+ u8 *m_rom;
+ u32 m_rom_size;
};
@@ -67,37 +64,30 @@ enum
-// ======================> generic_slot_device
-
class generic_slot_device : public device_t,
public device_image_interface,
- public device_slot_interface
+ public device_single_card_slot_interface<device_generic_cart_interface>
{
public:
- // construction/destruction
- generic_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual ~generic_slot_device();
template <typename... T> void set_device_load(T &&... args) { m_device_image_load.set(std::forward<T>(args)...); }
template <typename... T> void set_device_unload(T &&... args) { m_device_image_unload.set(std::forward<T>(args)...); }
- void set_interface(const char * interface) { m_interface = interface; }
- void set_default_card(const char * def) { m_default_card = def; }
- void set_extensions(const char * exts) { m_extensions = exts; }
+ void set_interface(char const *interface) { m_interface = interface; }
+ void set_default_card(char const *def) { m_default_card = def; }
+ void set_extensions(char const *exts) { m_extensions = exts; }
void set_must_be_loaded(bool mandatory) { m_must_be_loaded = mandatory; }
void set_width(int width) { m_width = width; }
void set_endian(endianness_t end) { m_endianness = end; }
- // device-level overrides
- virtual void device_start() override;
-
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
- virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
+ virtual software_list_loader const &get_software_list_loader() const override { return rom_software_list_loader::instance(); }
- uint32_t common_get_size(const char *region);
- void common_load_rom(uint8_t *ROM, uint32_t len, const char *region);
+ u32 common_get_size(char const *region);
+ void common_load_rom(u8 *ROM, u32 len, char const *region);
virtual iodevice_t image_type() const override { return IO_CARTSLOT; }
virtual bool is_readable() const override { return true; }
@@ -105,58 +95,59 @@ public:
virtual bool is_creatable() const override { return false; }
virtual bool must_be_loaded() const override { return m_must_be_loaded; }
virtual bool is_reset_on_load() const override { return true; }
- virtual const char *image_interface() const override { return m_interface; }
- virtual const char *file_extensions() const override { return m_extensions; }
+ virtual char const *image_interface() const override { return m_interface; }
+ virtual char const *file_extensions() const override { return m_extensions; }
// slot interface overrides
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
// reading and writing
- virtual uint8_t read_rom(offs_t offset);
- virtual uint16_t read16_rom(offs_t offset, uint16_t mem_mask = 0xffff);
- virtual uint32_t read32_rom(offs_t offset, uint32_t mem_mask = 0xffffffff);
+ virtual u8 read_rom(offs_t offset);
+ virtual u16 read16_rom(offs_t offset, u16 mem_mask = 0xffff);
+ virtual u32 read32_rom(offs_t offset, u32 mem_mask = 0xffffffff);
- virtual uint8_t read_ram(offs_t offset);
- virtual void write_ram(offs_t offset, uint8_t data);
+ virtual u8 read_ram(offs_t offset);
+ virtual void write_ram(offs_t offset, u8 data);
- virtual void rom_alloc(size_t size, int width, endianness_t end) { if (m_cart) m_cart->rom_alloc(size, width, end, tag()); }
- virtual void ram_alloc(uint32_t size) { if (m_cart) m_cart->ram_alloc(size); }
+ virtual void rom_alloc(u32 size, int width, endianness_t end) { if (m_cart) m_cart->rom_alloc(size, width, end, tag()); }
+ virtual void ram_alloc(u32 size) { if (m_cart) m_cart->ram_alloc(size); }
- uint8_t* get_rom_base()
+ u8* get_rom_base()
{
- if (m_cart)
- {
- if (!user_loadable())
- return m_cart->get_region_base();
- else
- return m_cart->get_rom_base();
- }
- return nullptr;
+ if (!m_cart)
+ return nullptr;
+ else if (!user_loadable())
+ return m_cart->get_region_base();
+ else
+ return m_cart->get_rom_base();
}
- uint32_t get_rom_size()
+ u32 get_rom_size()
{
- if (m_cart)
- {
- if (!user_loadable())
- return m_cart->get_region_size();
- else
- return m_cart->get_rom_size();
- }
- return 0;
+ if (!m_cart)
+ return 0U;
+ else if (!user_loadable())
+ return m_cart->get_region_size();
+ else
+ return m_cart->get_rom_size();
}
- uint8_t* get_ram_base() { if (m_cart) return m_cart->get_ram_base(); return nullptr; }
+ u8 *get_ram_base() { return m_cart ? m_cart->get_ram_base() : nullptr; }
void save_ram() { if (m_cart && m_cart->get_ram_size()) m_cart->save_ram(); }
protected:
- const char *m_interface;
- const char *m_default_card;
- const char *m_extensions;
- bool m_must_be_loaded;
- int m_width;
+ generic_slot_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, u32 clock);
+
+ // device-level overrides
+ virtual void device_start() override ATTR_COLD;
+
+ char const *m_interface;
+ char const *m_default_card;
+ char const *m_extensions;
+ bool m_must_be_loaded;
+ int m_width;
endianness_t m_endianness;
- device_generic_cart_interface *m_cart;
- load_delegate m_device_image_load;
+ device_generic_cart_interface *m_cart;
+ load_delegate m_device_image_load;
unload_delegate m_device_image_unload;
};
@@ -164,8 +155,8 @@ class generic_socket_device : public generic_slot_device
{
public:
template <typename T>
- generic_socket_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *intf, const char *exts = nullptr)
- : generic_socket_device(mconfig, tag, owner, (uint32_t)0)
+ generic_socket_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *intf, char const *exts = nullptr)
+ : generic_socket_device(mconfig, tag, owner, u32(0))
{
opts(*this);
set_fixed(false);
@@ -174,7 +165,7 @@ public:
set_extensions(exts);
}
- generic_socket_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ generic_socket_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock = 0);
virtual iodevice_t image_type() const override { return IO_ROM; }
};
@@ -183,8 +174,8 @@ class generic_cartslot_device : public generic_slot_device
{
public:
template <typename T>
- generic_cartslot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *intf, const char *exts = nullptr)
- : generic_cartslot_device(mconfig, tag, owner, (uint32_t)0)
+ generic_cartslot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *intf, char const *exts = nullptr)
+ : generic_cartslot_device(mconfig, tag, owner, u32(0))
{
opts(*this);
set_fixed(false);
@@ -193,7 +184,7 @@ public:
set_extensions(exts);
}
- generic_cartslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ generic_cartslot_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock = 0);
virtual iodevice_t image_type() const override { return IO_CARTSLOT; }
};
@@ -203,9 +194,4 @@ public:
DECLARE_DEVICE_TYPE(GENERIC_SOCKET, generic_socket_device)
DECLARE_DEVICE_TYPE(GENERIC_CARTSLOT, generic_cartslot_device)
-
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
- ***************************************************************************/
-
#endif // MAME_BUS_GENERIC_SLOT_H