From bc54aab8bcda52f365adb944bae0021623773ba0 Mon Sep 17 00:00:00 2001 From: arbee Date: Mon, 13 Aug 2018 19:53:04 -0400 Subject: [PATCH] mpc3000: main screen turn on (nw) --- src/mame/drivers/mpc3000.cpp | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/mame/drivers/mpc3000.cpp b/src/mame/drivers/mpc3000.cpp index 529c7991d66..f682f53fd21 100644 --- a/src/mame/drivers/mpc3000.cpp +++ b/src/mame/drivers/mpc3000.cpp @@ -56,9 +56,11 @@ #include "emu.h" #include "cpu/nec/v53.h" #include "sound/l7a1045_l6028_dsp_a.h" +#include "video/hd61830.h" #include "bus/midi/midi.h" #include "speaker.h" #include "screen.h" +#include "emupal.h" class mpc3000_state : public driver_device { @@ -66,6 +68,7 @@ public: mpc3000_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_lcdc(*this, "lcdc") , m_dsp(*this, "dsp") , m_mdout(*this, "mdout") { } @@ -76,6 +79,7 @@ public: private: required_device m_maincpu; + required_device m_lcdc; required_device m_dsp; required_device m_mdout; @@ -88,10 +92,7 @@ private: DECLARE_READ16_MEMBER(dsp_0008_hack_r); DECLARE_WRITE16_MEMBER(dsp_0008_hack_w); DECLARE_READ8_MEMBER(dma_memr_cb); - DECLARE_WRITE8_MEMBER(lcd_w) - { - printf("%c", data); - } + DECLARE_PALETTE_INIT(mpc3000); }; void mpc3000_state::machine_start() @@ -128,7 +129,8 @@ void mpc3000_state::mpc3000_io_map(address_map &map) { map(0x0060, 0x0067).rw(m_dsp, FUNC(l7a1045_sound_device::l7a1045_sound_r), FUNC(l7a1045_sound_device::l7a1045_sound_w)); map(0x0068, 0x0069).rw(FUNC(mpc3000_state::dsp_0008_hack_r), FUNC(mpc3000_state::dsp_0008_hack_w)); - map(0x00e0, 0x00e0).w(FUNC(mpc3000_state::lcd_w)); + map(0x00e0, 0x00e0).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w)).umask16(0x00ff); + map(0x00e2, 0x00e2).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w)).umask16(0x00ff); } READ8_MEMBER(mpc3000_state::dma_memr_cb) @@ -137,6 +139,12 @@ READ8_MEMBER(mpc3000_state::dma_memr_cb) return m_maincpu->space(AS_PROGRAM).read_byte(offset); } +PALETTE_INIT_MEMBER(mpc3000_state, mpc3000) +{ + palette.set_pen_color(0, rgb_t(138, 146, 148)); + palette.set_pen_color(1, rgb_t(92, 83, 88)); +} + void mpc3000_state::mpc3000(machine_config &config) { // V53A isn't devcb3 compliant yet. @@ -152,6 +160,18 @@ void mpc3000_state::mpc3000(machine_config &config) MCFG_V53_DMAU_IN_IOR_3_CB(WRITE8("dsp", l7a1045_sound_device, dma_r_cb)) MCFG_V53_DMAU_OUT_IOW_3_CB(WRITE8("dsp", l7a1045_sound_device, dma_w_cb)) + MCFG_SCREEN_ADD("screen", LCD) + MCFG_SCREEN_REFRESH_RATE(80) + MCFG_SCREEN_UPDATE_DEVICE("lcdc", hd61830_device, screen_update) + MCFG_SCREEN_SIZE(240, 64) //6x20, 8x8 + MCFG_SCREEN_VISIBLE_AREA(0, 240-1, 0, 64-1) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 2) + MCFG_PALETTE_INIT_OWNER(mpc3000_state, mpc3000) + + HD61830(config, m_lcdc, 4.9152_MHz_XTAL / 2 / 2); + auto &mdin(MIDI_PORT(config, "mdin")); midiin_slot(mdin); //mdin.rxd_handler().set(m_maincpu, FUNC()); @@ -184,4 +204,4 @@ void mpc3000_state::init_mpc3000() { } -CONS( 1994, mpc3000, 0, 0, mpc3000, mpc3000, mpc3000_state, init_mpc3000, "Akai / Roger Linn", "MPC-3000", MACHINE_IMPERFECT_SOUND ) +CONS( 1994, mpc3000, 0, 0, mpc3000, mpc3000, mpc3000_state, init_mpc3000, "Akai / Roger Linn", "MPC-3000", MACHINE_NOT_WORKING )