diff options
author | Dirk Best <mail@dirk-best.de> | 2019-07-27 19:20:27 +0200 |
---|---|---|
committer | Dirk Best <mail@dirk-best.de> | 2019-07-27 19:21:38 +0200 |
commit | 053b6ef7d054a865dd63a2ef14f0160255b878da (patch) | |
tree | 0fad310c10fc8597c9fde3ad2441f0fd5700bde3 | |
parent | 990cf6ee7ca7dc0beb427813a2a628a4c20dd3c0 (diff) |
bionicc: Correct audio CPU NMI source
-rw-r--r-- | src/mame/drivers/bionicc.cpp | 28 | ||||
-rw-r--r-- | src/mame/includes/bionicc.h | 5 |
2 files changed, 22 insertions, 11 deletions
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp index 2ea562e800d..455d024b726 100644 --- a/src/mame/drivers/bionicc.cpp +++ b/src/mame/drivers/bionicc.cpp @@ -145,6 +145,17 @@ void bionicc_state::dmaon_w(u16 data) } +//************************************************************************** +// AUDIO +//************************************************************************** + +void bionicc_state::audiocpu_nmi_w(u8 data) +{ + m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); +} + + /******************************************************************** Interrupt @@ -182,7 +193,7 @@ void bionicc_state::main_map(address_map &map) map(0xe0d00, 0xe3fff).ram(); /* RAM? */ map(0xe4000, 0xe4001).mirror(0x3ffc).portr("INPUTS"); map(0xe4000, 0xe4001).mirror(0x3ffc).w(FUNC(bionicc_state::gfxctrl_w)); /* + coin counters */ - map(0xe4002, 0xe4003).mirror(0x3ffc).portr("DSW").nopw(); + map(0xe4002, 0xe4003).mirror(0x3ffc).portr("DSW").w(FUNC(bionicc_state::audiocpu_nmi_w)); map(0xe8010, 0xe8017).w(FUNC(bionicc_state::scroll_w)); map(0xe8018, 0xe8019).nopw(); // vblank irq ack? map(0xe801a, 0xe801b).w(FUNC(bionicc_state::dmaon_w)); @@ -352,21 +363,16 @@ void bionicc_state::machine_reset() void bionicc_state::bionicc(machine_config &config) { /* basic machine hardware */ - M68000(config, m_maincpu, XTAL(24'000'000) / 2); /* 12 MHz - verified in schematics */ + M68000(config, m_maincpu, 24_MHz_XTAL / 2); /* 12 MHz - verified in schematics */ m_maincpu->set_addrmap(AS_PROGRAM, &bionicc_state::main_map); TIMER(config, "scantimer").configure_scanline(FUNC(bionicc_state::scanline), "screen", 0, 1); - z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181) / 4)); /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */ + z80_device &audiocpu(Z80(config, "audiocpu", 14.318181_MHz_XTAL / 4)); /* EXO3 C,B=GND, A=5V ==> Divisor 2^2 */ audiocpu.set_addrmap(AS_PROGRAM, &bionicc_state::sound_map); - /* FIXME: interrupt timing - * schematics indicate that nmi_line is set on M680000 access with AB1=1 - * and IOCS=0 (active low), see pages A-1/10, A-4/10 in schematics - */ - audiocpu.set_periodic_int(FUNC(bionicc_state::nmi_line_pulse), attotime::from_hz(4*60)); /* Protection MCU Intel C8751H-88 runs at 24MHz / 4 = 6MHz */ - I8751(config, m_mcu, XTAL(24'000'000) / 4); + I8751(config, m_mcu, 24_MHz_XTAL / 4); m_mcu->set_addrmap(AS_IO, &bionicc_state::mcu_io); m_mcu->port_in_cb<1>().set([this](){ return m_audiocpu_to_mcu; }); m_mcu->port_out_cb<1>().set([this](u8 data){ m_mcu_p1 = data; }); @@ -375,7 +381,7 @@ void bionicc_state::bionicc(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); /* FIXME: should be 257 visible horizontal pixels, first visible pixel should be repeated, back porch/front porch should be separated */ - screen.set_raw(XTAL(24'000'000) / 4, 386, 0, 256, 260, 16, 240); + screen.set_raw(24_MHz_XTAL / 4, 386, 0, 256, 260, 16, 240); screen.set_screen_update(FUNC(bionicc_state::screen_update)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); @@ -392,7 +398,7 @@ void bionicc_state::bionicc(machine_config &config) SPEAKER(config, "mono").front_center(); - YM2151(config, "ymsnd", XTAL(14'318'181) / 4).add_route(0, "mono", 0.60).add_route(1, "mono", 0.60); + YM2151(config, "ymsnd", 14.318181_MHz_XTAL / 4).add_route(0, "mono", 0.60).add_route(1, "mono", 0.60); } diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h index 01b3de18fc0..8cf91ea9cce 100644 --- a/src/mame/includes/bionicc.h +++ b/src/mame/includes/bionicc.h @@ -23,6 +23,7 @@ public: bionicc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), m_mcu(*this, "mcu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -43,6 +44,7 @@ protected: private: required_device<cpu_device> m_maincpu; + required_device<cpu_device> m_audiocpu; required_device<i8751_device> m_mcu; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; @@ -76,6 +78,9 @@ private: tilemap_t *m_fg_tilemap; uint16_t m_scroll[4]; + // audio + void audiocpu_nmi_w(u8 data); + // protection mcu u8 m_audiocpu_to_mcu; // ls374 at 4a u8 m_mcu_to_audiocpu; // ls374 at 5a |