diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index bee52035b50..4f2d41e2db1 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -106,6 +106,7 @@ #include "speaker.h" #include "model1io2.lh" +#include "segabill.lh" /* Timers - these count down at 25 MHz and pull IRQ2 when they hit 0 */ READ32_MEMBER(model2_state::timers_r) @@ -2694,12 +2695,17 @@ void model2a_state::model2a(machine_config &config) io.in_pb_callback().set(FUNC(model2a_state::in0_r)); io.in_pc_callback().set_ioport("IN1"); io.in_pd_callback().set_ioport("IN2"); + io.out_pe_callback().set([this] (uint8_t data) { m_billboard->write(data); }); model2_timers(config); model2_screen(config); model2_scsp(config); M2COMM(config, "m2comm", 0); + + SEGA_BILLBOARD(config, m_billboard, 0); + + config.set_default_layout(layout_segabill); } void model2a_state::manxtt(machine_config &config) @@ -2816,12 +2822,17 @@ void model2b_state::model2b(machine_config &config) io.in_pb_callback().set(FUNC(model2b_state::in0_r)); io.in_pc_callback().set_ioport("IN1"); io.in_pd_callback().set_ioport("IN2"); + io.out_pe_callback().set([this] (uint8_t data) { m_billboard->write(data); }); model2_timers(config); model2_screen(config); model2_scsp(config); M2COMM(config, "m2comm", 0); + + SEGA_BILLBOARD(config, m_billboard, 0); + + config.set_default_layout(layout_segabill); } void model2b_state::model2b_5881(machine_config &config) diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index c22f3a8924f..dbcecfd7abc 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -18,6 +18,7 @@ #include "machine/gen_fifo.h" #include "machine/i8251.h" #include "machine/m2comm.h" +#include "machine/segabill.h" #include "machine/timer.h" #include "sound/scsp.h" #include "video/segaic24.h" @@ -457,7 +458,8 @@ class model2a_state : public model2_tgp_state { public: model2a_state(const machine_config &mconfig, device_type type, const char *tag) - : model2_tgp_state(mconfig, type, tag) + : model2_tgp_state(mconfig, type, tag), + m_billboard(*this, "billboard") {} void manxtt(machine_config &config); @@ -476,6 +478,9 @@ protected: void model2a_crx_mem(address_map &map); void model2a_5881_mem(address_map &map); void model2a_0229_mem(address_map &map); + +private: + required_device m_billboard; }; /***************************** @@ -489,7 +494,8 @@ class model2b_state : public model2_state public: model2b_state(const machine_config &mconfig, device_type type, const char *tag) : model2_state(mconfig, type, tag), - m_copro_adsp(*this, "copro_adsp") + m_copro_adsp(*this, "copro_adsp"), + m_billboard(*this, "billboard") {} void model2b(machine_config &config); @@ -526,6 +532,9 @@ protected: virtual void copro_halt() override; virtual void copro_boot() override; + +private: + required_device m_billboard; }; /*****************************