diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp index 2469caa2c67..7d3ed7e76fa 100644 --- a/src/mame/audio/s11c_bg.cpp +++ b/src/mame/audio/s11c_bg.cpp @@ -10,7 +10,7 @@ * The interface connector for this board is a 20 pin header J4 with the following pinout: * * +--------+ - * GND | 1 2 | NC + * GND | 1 2 | NC * PB0 | 3 4 | PB1 * PB2 | 5 6 | PB3 * PB4 | 7 8 | PB5 @@ -28,7 +28,7 @@ * * The actual full pinout of the connector, from the System 11 end is: * +--------+ - * GND | 1 2 | BLANKING + * GND | 1 2 | BLANKING * MD0 | 3 4 | MD1 * MD2 | 5 6 | MD3 * MD4 | 7 8 | MD5 @@ -85,7 +85,7 @@ * sockets for 27c010 chips, instead of 28 pin sockets. Despite this, the board is fully backwards compatible * with the D-11581-20xx, including the mixing resistors. * The highest ROM address bit for all 3 roms (as shown in the High Impact Football schematics, - * but omitted from the prototype FunHouse Schematics) is driven by the rom banking register 0x7800 bit 4, which + * but omitted from the prototype FunHouse Schematics) is driven by the rom banking register 0x7800 bit 3, which * is unused/unconnected on all other board revisions. * The 32 pin EPROM socket pins 1(VPP), 31(/PGM), 32(VCC) and 30(NC) are all tied to VCC. * Jumpers W2, W3, W10 and W11 act the same as they do on D-11581-20xx, just offset down in the socket by 2 pins. @@ -196,10 +196,11 @@ #include "sound/volt_reg.h" -DEFINE_DEVICE_TYPE(S11C_BG, s11c_bg_device, "s11c_bg", "Williams System 11C Background Music") +DEFINE_DEVICE_TYPE(S11C_BG, s11c_bg_device, "s11c_bg", "Williams System 11C Background Music Board") +DEFINE_DEVICE_TYPE(S11_BG, s11_bg_device, "s11_bg", "Williams System 11 Background Music Board") s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, S11C_BG,tag,owner,clock) + : device_t(mconfig,S11C_BG,tag,owner,clock) , device_mixer_interface(mconfig, *this) , m_cpu(*this, "bgcpu") , m_ym2151(*this, "ym2151") @@ -209,6 +210,29 @@ s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, d , m_rom(*this, finder_base::DUMMY_TAG) , m_cb2_cb(*this) , m_pb_cb(*this) + , m_old_resetq_state(ASSERT_LINE) +{ +} + +// constructor with overridable type for subclass +s11c_bg_device::s11c_bg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig,type,tag,owner,clock) + , device_mixer_interface(mconfig, *this) + , m_cpu(*this, "bgcpu") + , m_ym2151(*this, "ym2151") + , m_hc55516(*this, "hc55516_bg") + , m_pia40(*this, "pia40") + , m_cpubank(*this, "bgbank") + , m_rom(*this, finder_base::DUMMY_TAG) + , m_cb2_cb(*this) + , m_pb_cb(*this) + , m_old_resetq_state(ASSERT_LINE) +{ +} + +// subclass definition +s11_bg_device::s11_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : s11c_bg_device(mconfig,S11_BG,tag,owner,clock) { } @@ -266,7 +290,17 @@ void s11c_bg_device::data_w(uint8_t data) m_pia40->portb_w(data); } -void s11c_bg_device::device_add_mconfig(machine_config &config) +WRITE_LINE_MEMBER( s11c_bg_device::resetq_w ) +{ + if ((m_old_resetq_state != CLEAR_LINE) && (state == CLEAR_LINE)) + { + logerror("S11 bg device received reset request\n"); + common_reset(); + } + m_old_resetq_state = state; +} + +void s11c_bg_device::s11_bg_core(machine_config &config) { MC6809E(config, m_cpu, XTAL(8'000'000) / 4); // MC68B09E m_cpu->set_addrmap(AS_PROGRAM, &s11c_bg_device::s11c_bg_map); @@ -281,8 +315,6 @@ void s11c_bg_device::device_add_mconfig(machine_config &config) vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); - HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, *this, 0.6); - PIA6821(config, m_pia40, 0); m_pia40->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); m_pia40->writepb_handler().set(FUNC(s11c_bg_device::pia40_pb_w)); @@ -292,6 +324,18 @@ void s11c_bg_device::device_add_mconfig(machine_config &config) m_pia40->irqb_handler().set_inputline(m_cpu, INPUT_LINE_NMI); } +void s11c_bg_device::device_add_mconfig(machine_config &config) +{ + s11_bg_core(config); + HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, *this, 0.6); // cvsd is twice as loud on the sys11c version +} + +void s11_bg_device::device_add_mconfig(machine_config &config) +{ + s11_bg_core(config); + HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, *this, 0.3); +} + void s11c_bg_device::device_start() { /* resolve lines */ @@ -299,7 +343,7 @@ void s11c_bg_device::device_start() m_pb_cb.resolve(); } -void s11c_bg_device::device_reset() +void s11c_bg_device::common_reset() { m_cpubank->configure_entries(0, 16, &m_rom[0x0], 0x8000); m_cpubank->set_entry(0); @@ -307,6 +351,11 @@ void s11c_bg_device::device_reset() m_cpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero); } +void s11c_bg_device::device_reset() +{ + common_reset(); +} + void s11c_bg_device::bg_cvsd_clock_set_w(uint8_t data) { m_hc55516->clock_w(1); diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h index 34f7734e9af..cc22a1b325c 100644 --- a/src/mame/audio/s11c_bg.h +++ b/src/mame/audio/s11c_bg.h @@ -23,12 +23,16 @@ public: // construction/destruction s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); + // common config + void s11_bg_core(machine_config &config); + // note to keep synchronization working, the host machine should have synchronization timer expired delegates // before writing to the following 3 things: DECLARE_WRITE_LINE_MEMBER(extra_w); // external write to board CB2 (J4 pin 12), does anything actually do this? DECLARE_WRITE_LINE_MEMBER(ctrl_w); // external write to board CB1 (J4 pin 13) void data_w(uint8_t data); // external write to board data bus (J4 pins 3 thru 10 for D0-D7) - virtual void device_reset() override; // external write to board /RESET (J4 pin 18) + virtual void device_reset() override; // power up reset + DECLARE_WRITE_LINE_MEMBER(resetq_w); // external write to board /RESET (J4 pin 18) // callbacks auto cb2_cb() { return m_cb2_cb.bind(); } @@ -38,6 +42,9 @@ public: void s11c_bg_map(address_map &map); protected: + // constructor with overridable type for subclass + s11c_bg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 0); + // overrides virtual void device_start() override; virtual void device_add_mconfig(machine_config &config) override; @@ -45,7 +52,6 @@ protected: TIMER_CALLBACK_MEMBER(deferred_cb2_w); TIMER_CALLBACK_MEMBER(deferred_pb_w); -private: required_device m_cpu; required_device m_ym2151; required_device m_hc55516; @@ -53,9 +59,12 @@ private: required_memory_bank m_cpubank; required_region_ptr m_rom; +private: devcb_write_line m_cb2_cb; devcb_write8 m_pb_cb; + void common_reset(); // common reset function used by both internal and external reset + uint8_t m_old_resetq_state; DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w); void pia40_pb_w(uint8_t data); @@ -64,6 +73,15 @@ private: void bgbank_w(uint8_t data); }; +class s11_bg_device : public s11c_bg_device +{ +public: + s11_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); +protected: + virtual void device_add_mconfig(machine_config &config) override; +}; + DECLARE_DEVICE_TYPE(S11C_BG, s11c_bg_device) +DECLARE_DEVICE_TYPE(S11_BG, s11_bg_device) #endif // MAME_AUDIO_S11C_BG_H diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index 59cc6b66e1e..07238d9a2bb 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -52,15 +52,6 @@ void s11a_state::s11a_audio_map(address_map &map) map(0xc000, 0xffff).bankr("bank1"); } -void s11a_state::s11a_bg_map(address_map &map) -{ - map(0x0000, 0x07ff).mirror(0x1800).ram(); - map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); - map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11a_state::bgbank_w)); - map(0x8000, 0xffff).bankr("bgbank"); -} - static INPUT_PORTS_START( s11a ) PORT_START("SW.0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) // always plumb-bob tilt @@ -156,7 +147,6 @@ INPUT_PORTS_END MACHINE_RESET_MEMBER( s11a_state, s11a ) { MACHINE_RESET_CALL_MEMBER(s11); - membank("bgbank")->set_entry(0); } void s11a_state::dig0_w(uint8_t data) @@ -171,19 +161,8 @@ void s11a_state::dig0_w(uint8_t data) set_segment2(0); } -void s11a_state::bgbank_w(uint8_t data) -{ - membank("bgbank")->set_entry(data & 0x03); -} - void s11a_state::init_s11a() { - if (m_bgcpu) - { - uint8_t *BGROM = memregion("bgcpu")->base(); - membank("bgbank")->configure_entries(0, 4, &BGROM[0x10000], 0x8000); - membank("bgbank")->set_entry(0); - } s11_state::init_s11(); } @@ -247,6 +226,7 @@ void s11a_state::s11a(machine_config &config) PIA6821(config, m_pia34, 0); m_pia34->writepa_handler().set(FUNC(s11_state::pia34_pa_w)); m_pia34->writepb_handler().set(FUNC(s11_state::pia34_pb_w)); + m_pia34->ca2_handler().set(m_bg, FUNC(s11c_bg_device::resetq_w)); m_pia34->cb2_handler().set(FUNC(s11_state::pia34_cb2_w)); m_pia34->irqa_handler().set(m_piairq, FUNC(input_merger_device::in_w<11>)); m_pia34->irqb_handler().set(m_piairq, FUNC(input_merger_device::in_w<12>)); @@ -263,7 +243,6 @@ void s11a_state::s11a(machine_config &config) MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); - vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); SPEAKER(config, "speech").front_center(); HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 0.50); @@ -273,28 +252,18 @@ void s11a_state::s11a(machine_config &config) m_pias->set_port_a_input_overrides_output_mask(0xff); m_pias->writepa_handler().set(FUNC(s11_state::sound_w)); m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w)); - m_pias->cb2_handler().set(FUNC(s11_state::pia40_cb2_w)); + m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w)); + m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w)); m_pias->irqa_handler().set(m_audioirq, FUNC(input_merger_device::in_w<0>)); m_pias->irqb_handler().set(m_audioirq, FUNC(input_merger_device::in_w<1>)); /* Add the background music card */ - MC6809E(config, m_bgcpu, XTAL(8'000'000) / 4); // MC68B09E - m_bgcpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_bg_map); - SPEAKER(config, "bg").front_center(); - YM2151(config, m_ym2151, XTAL(3'579'545)); - m_ym2151->irq_handler().set(FUNC(s11a_state::ym2151_irq_w)); - m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50); - - MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25); - - PIA6821(config, m_pia40, 0); - m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w)); - m_pia40->writepb_handler().set(FUNC(s11_state::pia40_pb_w)); - m_pia40->ca2_handler().set(FUNC(s11_state::pias_ca2_w)); - m_pia40->cb2_handler().set(FUNC(s11_state::pias_cb2_w)); - m_pia40->irqa_handler().set_inputline(m_bgcpu, M6809_FIRQ_LINE); - m_pia40->irqb_handler().set_inputline(m_bgcpu, INPUT_LINE_NMI); + S11_BG(config, m_bg); + m_bg->pb_cb().set(m_pia34, FUNC(pia6821_device::portb_w)); + m_bg->cb2_cb().set(m_pia34, FUNC(pia6821_device::cb1_w)); + m_bg->set_romregion(m_bgcpu); + m_bg->add_route(ALL_OUTPUTS, "bg", 1.0); } /*------------------------ @@ -310,9 +279,15 @@ ROM_START(f14_p3) ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b)) ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("f14_u4.l1", 0x10000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) - ROM_LOAD("f14_u19.l1", 0x18000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("f14_u19.l1", 0x20000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(f14_p4) @@ -324,9 +299,15 @@ ROM_START(f14_p4) ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b)) ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("f14_u4.l1", 0x10000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) - ROM_LOAD("f14_u19.l1", 0x18000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("f14_u19.l1", 0x20000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(f14_p5) @@ -338,9 +319,15 @@ ROM_START(f14_p5) ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b)) ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("f14_u4.l1", 0x10000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) - ROM_LOAD("f14_u19.l1", 0x18000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("f14_u19.l1", 0x20000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(f14_l1) @@ -352,9 +339,15 @@ ROM_START(f14_l1) ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b)) ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("f14_u4.l1", 0x10000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) - ROM_LOAD("f14_u19.l1", 0x18000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("f14_u19.l1", 0x20000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END /*-------------------- @@ -369,8 +362,11 @@ ROM_START(fire_l3) ROM_LOAD("fire_u21.l2", 0x18000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64)) ROM_LOAD("fire_u22.l2", 0x10000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("fire_u4.l1", 0x10000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("fire_u4.l1", 0x00000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) ROM_END ROM_START(fire_l2) @@ -382,8 +378,11 @@ ROM_START(fire_l2) ROM_LOAD("fire_u21.l2", 0x18000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64)) ROM_LOAD("fire_u22.l2", 0x10000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("fire_u4.l1", 0x10000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("fire_u4.l1", 0x00000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) ROM_END /*-------------------------------------- @@ -402,9 +401,15 @@ ROM_START(milln_l3) ROM_LOAD("mill_u21.l1", 0x18000, 0x8000, CRC(4cd1ee90) SHA1(4e24b96138ced16eff9036303ca6347e3423dbfc)) ROM_LOAD("mill_u22.l1", 0x10000, 0x8000, CRC(73735cfc) SHA1(f74c873a20990263e0d6b35609fc51c08c9f8e31)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("mill_u4.l1", 0x10000, 0x8000, CRC(cf766506) SHA1(a6e4df19a513102abbce2653d4f72245f54407b1)) - ROM_LOAD("mill_u19.l1", 0x18000, 0x8000, CRC(e073245a) SHA1(cbaddde6bb19292ace574a8329e18c97c2ee9763)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("mill_u4.l1", 0x00000, 0x8000, CRC(cf766506) SHA1(a6e4df19a513102abbce2653d4f72245f54407b1)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("mill_u19.l1", 0x20000, 0x8000, CRC(e073245a) SHA1(cbaddde6bb19292ace574a8329e18c97c2ee9763)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END /*-------------------- @@ -419,9 +424,15 @@ ROM_START(pb_l5) ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f)) ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("pbot_u4.l1", 0x10000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) - ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("pbot_u19.l1", 0x20000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(pb_l1) @@ -433,9 +444,15 @@ ROM_START(pb_l1) ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f)) ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("pbot_u4.l1", 0x10000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) - ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("pbot_u19.l1", 0x20000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(pb_l2) @@ -447,9 +464,15 @@ ROM_START(pb_l2) ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f)) ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("pbot_u4.l1", 0x10000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) - ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("pbot_u19.l1", 0x20000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(pb_l3) @@ -461,9 +484,15 @@ ROM_START(pb_l3) ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f)) ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("pbot_u4.l1", 0x10000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) - ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("pbot_u19.l1", 0x20000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END ROM_START(pb_p4) @@ -475,9 +504,15 @@ ROM_START(pb_p4) ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f)) ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4)) - ROM_REGION(0x30000, "bgcpu", ROMREGION_ERASEFF) - ROM_LOAD("pbot_u4.l1", 0x10000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) - ROM_LOAD("pbot_u19.l1", 0x18000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_REGION(0x80000, "bgcpu", ROMREGION_ERASEFF) + ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228)) + ROM_RELOAD(0x08000,0x8000) + ROM_RELOAD(0x10000,0x8000) + ROM_RELOAD(0x18000,0x8000) + ROM_LOAD("pbot_u19.l1", 0x20000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998)) + ROM_RELOAD(0x28000,0x8000) + ROM_RELOAD(0x30000,0x8000) + ROM_RELOAD(0x38000,0x8000) ROM_END GAME(1987, f14_l1, 0, s11a, s11a, s11a_state, init_s11a, ROT0, "Williams", "F-14 Tomcat (L-1)", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp index 74b5a65e753..634343b3f4a 100644 --- a/src/mame/drivers/s11b.cpp +++ b/src/mame/drivers/s11b.cpp @@ -305,6 +305,7 @@ void s11b_state::s11b(machine_config &config) PIA6821(config, m_pia34, 0); m_pia34->writepa_handler().set(FUNC(s11b_state::pia34_pa_w)); m_pia34->writepb_handler().set(FUNC(s11_state::pia34_pb_w)); + m_pia34->ca2_handler().set(m_bg, FUNC(s11c_bg_device::resetq_w)); m_pia34->cb2_handler().set(FUNC(s11_state::pia34_cb2_w)); m_pia34->irqa_handler().set(m_piairq, FUNC(input_merger_device::in_w<11>)); m_pia34->irqb_handler().set(m_piairq, FUNC(input_merger_device::in_w<12>)); @@ -337,7 +338,7 @@ void s11b_state::s11b(machine_config &config) /* Add the background music card */ SPEAKER(config, "bg").front_center(); - S11C_BG(config, m_bg); + S11_BG(config, m_bg); m_bg->pb_cb().set(m_pia34, FUNC(pia6821_device::portb_w)); m_bg->cb2_cb().set(m_pia34, FUNC(pia6821_device::cb1_w)); m_bg->set_romregion(m_bgcpu); diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp index fdd4258cf37..0199579c048 100644 --- a/src/mame/drivers/s11c.cpp +++ b/src/mame/drivers/s11c.cpp @@ -190,6 +190,7 @@ void s11c_state::s11c(machine_config &config) PIA6821(config, m_pia34, 0); m_pia34->writepa_handler().set(FUNC(s11b_state::pia34_pa_w)); m_pia34->writepb_handler().set(FUNC(s11b_state::pia34_pb_w)); + m_pia34->ca2_handler().set(m_bg, FUNC(s11c_bg_device::resetq_w)); m_pia34->cb2_handler().set(FUNC(s11b_state::pia34_cb2_w)); m_pia34->irqa_handler().set(m_piairq, FUNC(input_merger_device::in_w<11>)); m_pia34->irqb_handler().set(m_piairq, FUNC(input_merger_device::in_w<12>)); @@ -207,8 +208,10 @@ void s11c_state::s11c(machine_config &config) m_bg->add_route(ALL_OUTPUTS, "speaker", 1.0); } -// Unless otherwise noted, assume jumpers W2/W3 are set so W2 is shorted, W3 open (U4 and U19 are 27512) -// and (assuming the board has W10/W11) W10/W11 are set so W10 is shorted, W11 open (U20 is 27512) +// Unless otherwise noted, assume S11 Background Sound Board jumpers W2/W3 are +// set so W2 is shorted, W3 open (U4 and U19 are 27512) and (assuming the board +// installed has jumpers W10/W11) W10/W11 are set so W10 is shorted, W11 open +// (U20 is 27512) /*-------------------- / Bugs Bunny Birthday Ball 11/90 /--------------------*/