trunk/src/mame/drivers/cave.c
| r29439 | r29440 | |
| 2067 | 2067 | Donpachi |
| 2068 | 2068 | ***************************************************************************/ |
| 2069 | 2069 | |
| 2070 | | static const nmk112_interface donpachi_nmk112_intf = |
| 2071 | | { |
| 2072 | | "oki1", "oki2", 1 << 0 // chip #0 (music) is not paged |
| 2073 | | }; |
| 2074 | | |
| 2075 | 2070 | static MACHINE_CONFIG_START( donpachi, cave_state ) |
| 2076 | 2071 | |
| 2077 | 2072 | /* basic machine hardware */ |
| r29439 | r29440 | |
| 2110 | 2105 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 2111 | 2106 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| 2112 | 2107 | |
| 2113 | | MCFG_NMK112_ADD("nmk112", donpachi_nmk112_intf) |
| 2108 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 2109 | MCFG_NMK112_ROM0("oki1") |
| 2110 | MCFG_NMK112_ROM1("oki2") |
| 2111 | MCFG_NMK112_DISABLE_PAGEMASK(1 << 0) // chip #0 (music) is not paged |
| 2114 | 2112 | MACHINE_CONFIG_END |
| 2115 | 2113 | |
| 2116 | 2114 | |
| r29439 | r29440 | |
| 2578 | 2576 | |
| 2579 | 2577 | /* X1 = 12 MHz, X2 = 28 MHz, X3 = 16 MHz. OKI: / 165 mode A ; / 132 mode B */ |
| 2580 | 2578 | |
| 2581 | | static const nmk112_interface pwrinst2_nmk112_intf = |
| 2582 | | { |
| 2583 | | "oki1", "oki2", 0 |
| 2584 | | }; |
| 2585 | | |
| 2586 | 2579 | static MACHINE_CONFIG_START( pwrinst2, cave_state ) |
| 2587 | 2580 | |
| 2588 | 2581 | /* basic machine hardware */ |
| r29439 | r29440 | |
| 2637 | 2630 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00) |
| 2638 | 2631 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00) |
| 2639 | 2632 | |
| 2640 | | MCFG_NMK112_ADD("nmk112", pwrinst2_nmk112_intf) |
| 2633 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 2634 | MCFG_NMK112_ROM0("oki1") |
| 2635 | MCFG_NMK112_ROM1("oki2") |
| 2641 | 2636 | MACHINE_CONFIG_END |
| 2642 | 2637 | |
| 2643 | 2638 | |
trunk/src/mame/drivers/quizpani.c
| r29439 | r29440 | |
| 187 | 187 | GFXDECODE_END |
| 188 | 188 | |
| 189 | 189 | |
| 190 | | static const nmk112_interface quizpani_nmk112_intf = |
| 191 | | { |
| 192 | | "oki", "oki", 0 |
| 193 | | }; |
| 194 | | |
| 195 | | |
| 196 | 190 | static MACHINE_CONFIG_START( quizpani, quizpani_state ) |
| 197 | 191 | MCFG_CPU_ADD("maincpu", M68000, 10000000) |
| 198 | 192 | MCFG_CPU_PROGRAM_MAP(quizpani_map) |
| r29439 | r29440 | |
| 217 | 211 | MCFG_OKIM6295_ADD("oki", 16000000/4, OKIM6295_PIN7_LOW) |
| 218 | 212 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 219 | 213 | |
| 220 | | MCFG_NMK112_ADD("nmk112", quizpani_nmk112_intf) |
| 214 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 215 | MCFG_NMK112_ROM0("oki") |
| 216 | MCFG_NMK112_ROM1("oki") |
| 221 | 217 | MACHINE_CONFIG_END |
| 222 | 218 | |
| 223 | 219 | ROM_START( quizpani ) |
trunk/src/mame/drivers/powerins.c
| r29439 | r29440 | |
| 328 | 328 | DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, |
| 329 | 329 | }; |
| 330 | 330 | |
| 331 | | static const nmk112_interface powerins_nmk112_intf = |
| 332 | | { |
| 333 | | "oki1", "oki2", 0 |
| 334 | | }; |
| 335 | | |
| 336 | | |
| 337 | 331 | static MACHINE_CONFIG_START( powerins, powerins_state ) |
| 338 | 332 | |
| 339 | 333 | /* basic machine hardware */ |
| r29439 | r29440 | |
| 374 | 368 | MCFG_YM2203_AY8910_INTF(&ay8910_config) |
| 375 | 369 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) |
| 376 | 370 | |
| 377 | | MCFG_NMK112_ADD("nmk112", powerins_nmk112_intf) |
| 371 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 372 | MCFG_NMK112_ROM0("oki1") |
| 373 | MCFG_NMK112_ROM1("oki2") |
| 378 | 374 | MACHINE_CONFIG_END |
| 379 | 375 | |
| 380 | 376 | static MACHINE_CONFIG_DERIVED( powerina, powerins ) |
trunk/src/mame/drivers/nmk16.c
| r29439 | r29440 | |
| 3626 | 3626 | m_maincpu->set_input_line(2, HOLD_LINE); |
| 3627 | 3627 | } |
| 3628 | 3628 | |
| 3629 | | |
| 3630 | | static const nmk112_interface nmk16_nmk112_intf = |
| 3631 | | { |
| 3632 | | "oki1", "oki2", 0 |
| 3633 | | }; |
| 3634 | | |
| 3635 | 3629 | static MACHINE_CONFIG_START( tharrier, nmk16_state ) |
| 3636 | 3630 | |
| 3637 | 3631 | /* basic machine hardware */ |
| r29439 | r29440 | |
| 4345 | 4339 | MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) |
| 4346 | 4340 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4347 | 4341 | |
| 4348 | | MCFG_NMK112_ADD("nmk112", nmk16_nmk112_intf) |
| 4342 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 4343 | MCFG_NMK112_ROM0("oki1") |
| 4344 | MCFG_NMK112_ROM1("oki2") |
| 4349 | 4345 | MACHINE_CONFIG_END |
| 4350 | 4346 | |
| 4351 | 4347 | static MACHINE_CONFIG_START( tdragon2, nmk16_state ) |
| r29439 | r29440 | |
| 4390 | 4386 | MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) |
| 4391 | 4387 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.08) |
| 4392 | 4388 | |
| 4393 | | MCFG_NMK112_ADD("nmk112", nmk16_nmk112_intf) |
| 4389 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 4390 | MCFG_NMK112_ROM0("oki1") |
| 4391 | MCFG_NMK112_ROM1("oki2") |
| 4394 | 4392 | MACHINE_CONFIG_END |
| 4395 | 4393 | |
| 4396 | 4394 | static MACHINE_CONFIG_START( raphero, nmk16_state ) |
| r29439 | r29440 | |
| 4437 | 4435 | MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) |
| 4438 | 4436 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.08) |
| 4439 | 4437 | |
| 4440 | | MCFG_NMK112_ADD("nmk112", nmk16_nmk112_intf) |
| 4438 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 4439 | MCFG_NMK112_ROM0("oki1") |
| 4440 | MCFG_NMK112_ROM1("oki2") |
| 4441 | 4441 | MACHINE_CONFIG_END |
| 4442 | 4442 | |
| 4443 | 4443 | static MACHINE_CONFIG_START( bjtwin, nmk16_state ) |
| r29439 | r29440 | |
| 4473 | 4473 | MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW) /* verified on pcb */ |
| 4474 | 4474 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
| 4475 | 4475 | |
| 4476 | | MCFG_NMK112_ADD("nmk112", nmk16_nmk112_intf) |
| 4476 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 4477 | MCFG_NMK112_ROM0("oki1") |
| 4478 | MCFG_NMK112_ROM1("oki2") |
| 4477 | 4479 | MACHINE_CONFIG_END |
| 4478 | 4480 | |
| 4479 | 4481 | |
trunk/src/mame/drivers/toaplan2.c
| r29439 | r29440 | |
| 3933 | 3933 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3934 | 3934 | MACHINE_CONFIG_END |
| 3935 | 3935 | |
| 3936 | | |
| 3937 | | static const nmk112_interface bgaregga_nmk112_intf = |
| 3938 | | { |
| 3939 | | "oki", NULL, 0 |
| 3940 | | }; |
| 3941 | | |
| 3942 | | static const nmk112_interface batrider_nmk112_intf = |
| 3943 | | { |
| 3944 | | "oki1", "oki2", 0 |
| 3945 | | }; |
| 3946 | | |
| 3947 | | |
| 3948 | 3936 | static MACHINE_CONFIG_START( bgaregga, toaplan2_state ) |
| 3949 | 3937 | |
| 3950 | 3938 | /* basic machine hardware */ |
| r29439 | r29440 | |
| 3990 | 3978 | MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH) |
| 3991 | 3979 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3992 | 3980 | |
| 3993 | | MCFG_NMK112_ADD("nmk112", bgaregga_nmk112_intf) |
| 3981 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 3982 | MCFG_NMK112_ROM0("oki") |
| 3994 | 3983 | MACHINE_CONFIG_END |
| 3995 | 3984 | |
| 3996 | 3985 | |
| r29439 | r29440 | |
| 4049 | 4038 | MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/10, OKIM6295_PIN7_LOW) |
| 4050 | 4039 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 4051 | 4040 | |
| 4052 | | MCFG_NMK112_ADD("nmk112", batrider_nmk112_intf) |
| 4041 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| 4042 | MCFG_NMK112_ROM0("oki1") |
| 4043 | MCFG_NMK112_ROM1("oki2") |
| 4053 | 4044 | MACHINE_CONFIG_END |
| 4054 | 4045 | |
| 4055 | 4046 | |
trunk/src/mame/machine/nmk112.c
| r29439 | r29440 | |
| 18 | 18 | const device_type NMK112 = &device_creator<nmk112_device>; |
| 19 | 19 | |
| 20 | 20 | nmk112_device::nmk112_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 21 | | : device_t(mconfig, NMK112, "NMK 112", tag, owner, clock, "nmk112", __FILE__) |
| 21 | : device_t(mconfig, NMK112, "NMK 112", tag, owner, clock, "nmk112", __FILE__), |
| 22 | m_page_mask(0xff), |
| 23 | m_rom0(NULL), |
| 24 | m_rom1(NULL), |
| 25 | m_size0(0), |
| 26 | m_size1(0) |
| 22 | 27 | { |
| 23 | 28 | } |
| 24 | 29 | |
| 25 | 30 | //------------------------------------------------- |
| 26 | | // device_config_complete - perform any |
| 27 | | // operations now that the configuration is |
| 28 | | // complete |
| 29 | | //------------------------------------------------- |
| 30 | | |
| 31 | | void nmk112_device::device_config_complete() |
| 32 | | { |
| 33 | | } |
| 34 | | |
| 35 | | //------------------------------------------------- |
| 36 | 31 | // device_start - device-specific startup |
| 37 | 32 | //------------------------------------------------- |
| 38 | 33 | |
| 39 | 34 | void nmk112_device::device_start() |
| 40 | 35 | { |
| 41 | | const nmk112_interface *intf = (const nmk112_interface *)static_config(); |
| 36 | save_item(NAME(m_current_bank)); |
| 37 | machine().save().register_postload(save_prepost_delegate(FUNC(nmk112_device::postload_bankswitch), this)); |
| 42 | 38 | |
| 43 | | if (intf->rgn0 == NULL) |
| 39 | if (m_tag0) |
| 44 | 40 | { |
| 45 | | m_rom0 = NULL; |
| 46 | | m_size0 = 0; |
| 41 | m_rom0 = machine().root_device().memregion(m_tag0)->base(); |
| 42 | m_size0 = machine().root_device().memregion(m_tag0)->bytes() - 0x40000; |
| 47 | 43 | } |
| 48 | | else |
| 44 | if (m_tag1) |
| 49 | 45 | { |
| 50 | | m_rom0 = machine().root_device().memregion(intf->rgn0)->base(); |
| 51 | | m_size0 = machine().root_device().memregion(intf->rgn0)->bytes() - 0x40000; |
| 46 | m_rom1 = machine().root_device().memregion(m_tag1)->base(); |
| 47 | m_size1 = machine().root_device().memregion(m_tag1)->bytes() - 0x40000; |
| 52 | 48 | } |
| 53 | | |
| 54 | | if (intf->rgn1 == NULL) |
| 55 | | { |
| 56 | | m_rom1 = NULL; |
| 57 | | m_size1 = 0; |
| 58 | | } |
| 59 | | else |
| 60 | | { |
| 61 | | m_rom1 = machine().root_device().memregion(intf->rgn1)->base(); |
| 62 | | m_size1 = machine().root_device().memregion(intf->rgn1)->bytes() - 0x40000; |
| 63 | | } |
| 64 | | |
| 65 | | m_page_mask = ~intf->disable_page_mask; |
| 66 | | |
| 67 | | save_item(NAME(m_current_bank)); |
| 68 | | machine().save().register_postload(save_prepost_delegate(FUNC(nmk112_device::postload_bankswitch), this)); |
| 69 | 49 | } |
| 70 | 50 | |
| 71 | 51 | //------------------------------------------------- |
| r29439 | r29440 | |
| 81 | 61 | } |
| 82 | 62 | } |
| 83 | 63 | |
| 84 | | |
| 85 | 64 | void nmk112_device::do_bankswitch( int offset, int data ) |
| 86 | 65 | { |
| 87 | 66 | int chip = (offset & 4) >> 2; |
trunk/src/mame/machine/nmk112.h
| r29439 | r29440 | |
| 11 | 11 | TYPE DEFINITIONS |
| 12 | 12 | ***************************************************************************/ |
| 13 | 13 | |
| 14 | | struct nmk112_interface |
| 14 | class nmk112_device : public device_t |
| 15 | 15 | { |
| 16 | | const char *rgn0, *rgn1; |
| 17 | | UINT8 disable_page_mask; |
| 18 | | }; |
| 19 | | |
| 20 | | class nmk112_device : public device_t, |
| 21 | | public nmk112_interface |
| 22 | | { |
| 23 | 16 | public: |
| 24 | 17 | nmk112_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 25 | 18 | ~nmk112_device() {} |
| 26 | 19 | |
| 20 | // static configuration |
| 21 | static void set_rom0_tag(device_t &device, const char *tag) { downcast<nmk112_device &>(device).m_tag0 = tag; } |
| 22 | static void set_rom1_tag(device_t &device, const char *tag) { downcast<nmk112_device &>(device).m_tag1 = tag; } |
| 23 | static void set_page_mask(device_t &device, UINT8 mask) { downcast<nmk112_device &>(device).m_page_mask = ~mask; } |
| 24 | |
| 27 | 25 | DECLARE_WRITE8_MEMBER( okibank_w ); |
| 28 | 26 | DECLARE_WRITE16_MEMBER( okibank_lsb_w ); |
| 29 | 27 | |
| 30 | 28 | protected: |
| 31 | 29 | // device-level overrides |
| 32 | | virtual void device_config_complete(); |
| 33 | 30 | virtual void device_start(); |
| 34 | 31 | virtual void device_reset(); |
| 35 | 32 | |
| r29439 | r29440 | |
| 44 | 41 | |
| 45 | 42 | UINT8 m_current_bank[8]; |
| 46 | 43 | |
| 44 | const char *m_tag0, *m_tag1; |
| 47 | 45 | UINT8 *m_rom0, *m_rom1; |
| 48 | 46 | int m_size0, m_size1; |
| 49 | 47 | }; |
| r29439 | r29440 | |
| 55 | 53 | DEVICE CONFIGURATION MACROS |
| 56 | 54 | ***************************************************************************/ |
| 57 | 55 | |
| 58 | | #define MCFG_NMK112_ADD(_tag, _interface) \ |
| 59 | | MCFG_DEVICE_ADD(_tag, NMK112, 0) \ |
| 60 | | MCFG_DEVICE_CONFIG(_interface) |
| 56 | #define MCFG_NMK112_ROM0(_tag) \ |
| 57 | nmk112_device::set_rom0_tag(*device, _tag); |
| 61 | 58 | |
| 59 | #define MCFG_NMK112_ROM1(_tag) \ |
| 60 | nmk112_device::set_rom1_tag(*device, _tag); |
| 61 | |
| 62 | #define MCFG_NMK112_DISABLE_PAGEMASK(_mask) \ |
| 63 | nmk112_device::set_page_mask(*device, _mask); |
| 64 | |
| 65 | |
| 62 | 66 | #endif /* __NMK112_H__ */ |