Split the Williams System 11 Background Sound/Music board emulation off the 11C version into a subdevice, so the different mixing resistors used on the System 11C vs 11A/11B versions can be emulated. Switch Williams System 11A over to use the common Williams System 11 Background Sound/Music Board device. Add a device line to the Williams System 11 Background Sound/Music Board device for the incoming /RESET signal and hook it to the various drivers. [Lord Nightmare]

This commit is contained in:
Lord-Nightmare 2020-07-21 19:48:08 -04:00
parent c3a77b9d73
commit d1dafecad8
5 changed files with 193 additions and 87 deletions

View File

@ -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);

View File

@ -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<cpu_device> m_cpu;
required_device<ym2151_device> m_ym2151;
required_device<hc55516_device> m_hc55516;
@ -53,9 +59,12 @@ private:
required_memory_bank m_cpubank;
required_region_ptr<uint8_t> 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

View File

@ -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)

View File

@ -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);

View File

@ -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
/--------------------*/