Previous 199869 Revisions Next

r26149 Wednesday 13th November, 2013 at 20:43:40 UTC by Curt Coder
Added a new macro MCFG_DEVICE_CARD_DEFAULT_BIOS, which can be used in the machine config to set the default BIOS for a slot card device. [Curt Coder]
[src/emu]device.c device.h dislot.c dislot.h mconfig.c romload.c

trunk/src/emu/dislot.c
r26148r26149
4646   return options;
4747}
4848
49void device_slot_interface::static_set_card_default_bios(device_t &device, const char *card, const char *default_bios)
50{
51   static_alloc_card_options(device, card)->m_default_bios = default_bios;
52}
53
4954void device_slot_interface::static_set_card_machine_config(device_t &device, const char *card, const machine_config_constructor machine_config)
5055{
5156   static_alloc_card_options(device, card)->m_machine_config = machine_config;
r26148r26149
6671   static_alloc_card_options(device, card)->m_clock = clock;
6772}
6873
74const char *device_slot_interface::card_default_bios(const char *card) const
75{
76   device_card_options *options = m_card_options.find(card);
77   if (options != NULL)
78      return options->m_default_bios;
79   return NULL;
80}
81
6982const machine_config_constructor device_slot_interface::card_machine_config(const char *card) const
7083{
7184   device_card_options *options = m_card_options.find(card);
trunk/src/emu/device.c
r26148r26149
9292      m_machine_config(mconfig),
9393      m_static_config(NULL),
9494      m_input_defaults(NULL),
95      m_default_bios_tag(""),
9596
9697      m_machine(NULL),
9798      m_save(NULL),
trunk/src/emu/dislot.h
r26148r26149
2525#define MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_card, _fixed) \
2626   device_slot_interface::static_set_slot_info(*device, SLOT_INTERFACE_NAME(_slot_intf), _def_card, _fixed);
2727
28#define MCFG_DEVICE_CARD_DEFAULT_BIOS(card, _default_bios) \
29   device_slot_interface::static_set_card_default_bios(*device, card, _default_bios);
30
2831#define MCFG_DEVICE_CARD_MACHINE_CONFIG(card, _machine_config_name) \
2932   device_slot_interface::static_set_card_machine_config(*device, card, MACHINE_CONFIG_NAME(_machine_config_name));
3033
r26148r26149
5861   friend class simple_list<device_card_options>;
5962
6063private:
64   const char *m_default_bios;
6165   machine_config_constructor m_machine_config;
6266   const input_device_default *m_input_device_defaults;
6367   const void *m_config;
r26148r26149
7680
7781   static void static_set_slot_info(device_t &device, const slot_interface *slots_info, const char *default_card,bool fixed);
7882   static device_card_options *static_alloc_card_options(device_t &device, const char *card);
83   static void static_set_card_default_bios(device_t &device, const char *card, const char *default_bios);
7984   static void static_set_card_machine_config(device_t &device, const char *card, const machine_config_constructor machine_config);
8085   static void static_set_card_device_input_defaults(device_t &device, const char *card, const input_device_default *default_input);
8186   static void static_set_card_config(device_t &device, const char *card, const void *config);
r26148r26149
8388   const slot_interface* get_slot_interfaces() const { return m_slot_interfaces; };
8489   const char * get_default_card() const { return m_default_card; };
8590   virtual const char * get_default_card_software(const machine_config &config, emu_options &options) { return NULL; };
91   const char *card_default_bios(const char *card) const;
8692   const machine_config_constructor card_machine_config(const char *card) const;
8793   const input_device_default *card_input_device_defaults(const char *card) const;
8894   const void *card_config(const char *card) const;
trunk/src/emu/device.h
r26148r26149
141141   ioport_constructor input_ports() const { return device_input_ports(); }
142142   UINT8 default_bios() const { return m_default_bios; }
143143   UINT8 system_bios() const { return m_system_bios; }
144   astring default_bios_tag() const { return m_default_bios_tag; }
144145
145146   // interface helpers
146147   template<class _DeviceClass> bool interface(_DeviceClass *&intf) { intf = dynamic_cast<_DeviceClass *>(this); return (intf != NULL); }
r26148r26149
175176   static void static_set_clock(device_t &device, UINT32 clock);
176177   static void static_set_static_config(device_t &device, const void *config) { device.m_static_config = config; }
177178   static void static_set_input_default(device_t &device, const input_device_default *config) { device.m_input_defaults = config; }
179   static void static_set_default_bios_tag(device_t &device, const char *tag) { astring default_bios_tag(tag); device.m_default_bios_tag = default_bios_tag; }
178180
179181   // state helpers
180182   void config_complete();
r26148r26149
278280
279281   UINT8                   m_system_bios;          // the system BIOS we wish to load
280282   UINT8                   m_default_bios;         // the default system BIOS
283   astring                 m_default_bios_tag;     // tag of the default system BIOS
284
281285private:
282286   // private helpers
283287   device_t *add_subdevice(device_type type, const char *tag, UINT32 clock);
trunk/src/emu/mconfig.c
r26148r26149
6565                     device_t *new_dev = device_add(&owner, intf[i].name, intf[i].devtype, slot->card_clock(selval));
6666                     found = true;
6767
68                     const char *default_bios = slot->card_default_bios(selval);
69                     if (default_bios != NULL)
70                     {
71                        device_t::static_set_default_bios_tag(*new_dev, default_bios);
72                     }
73
6874                     machine_config_constructor additions = slot->card_machine_config(selval);
6975                     if (additions != NULL)
7076                        (*additions)(const_cast<machine_config &>(*this), new_dev);
trunk/src/emu/romload.c
r26148r26149
282282    from SystemBios structure and OPTION_BIOS
283283-------------------------------------------------*/
284284
285static void determine_bios_rom(romload_private *romdata, device_t *device,const char *specbios)
285static void determine_bios_rom(romload_private *romdata, device_t *device, const char *specbios)
286286{
287287   const char *defaultname = NULL;
288288   const rom_entry *rom;
289289   int default_no = 1;
290290   int bios_count = 0;
291291
292   device->set_system_bios(0);
292293
293   device->set_system_bios(0);
294294   /* first determine the default BIOS name */
295295   for (rom = device->rom_region(); !ROMENTRY_ISEND(rom); rom++)
296296      if (ROMENTRY_ISDEFAULT_BIOS(rom))
r26148r26149
14981498            specbios = romdata->machine().options().bios();
14991499         } else {
15001500            specbios = romdata->machine().options().sub_value(temp,device->owner()->tag()+1,"bios");
1501            if (strlen(specbios) == 0) {
1502               specbios = device->default_bios_tag().cstr();
1503            }
15011504         }
15021505         determine_bios_rom(romdata, device, specbios);
15031506      }

Previous 199869 Revisions Next


© 1997-2024 The MAME Team