Update mpu4vid to use ef9369 device

This commit is contained in:
Dirk Best 2016-11-30 21:49:17 +01:00
parent db0f9a2e80
commit 8fc52f35f6
4 changed files with 41 additions and 121 deletions

View File

@ -27,8 +27,6 @@ const device_type EF9369 = &device_creator<ef9369_device>;
ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, EF9369, "EF9369 Single Chip Color Palette", tag, owner, clock, "ef9369", __FILE__), : device_t(mconfig, EF9369, "EF9369 Single Chip Color Palette", tag, owner, clock, "ef9369", __FILE__),
m_palette_tag(nullptr),
m_palette(nullptr),
m_address(0) m_address(0)
{ {
std::fill(m_ca, m_ca + NUMCOLORS, 0); std::fill(m_ca, m_ca + NUMCOLORS, 0);
@ -37,22 +35,15 @@ ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, dev
std::fill(m_m, m_m + NUMCOLORS, 0); std::fill(m_m, m_m + NUMCOLORS, 0);
} }
//-------------------------------------------------
// set_palette_tag - set the palette we should handle
//-------------------------------------------------
void ef9369_device::set_palette_tag(device_t &device, device_t *owner, const char *tag)
{
ef9369_device &dev = dynamic_cast<ef9369_device &>(device);
dev.m_palette_tag = tag;
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
void ef9369_device::device_start() void ef9369_device::device_start()
{ {
// bind delegate
m_color_update_cb.bind_relative_to(*owner());
// register for save states // register for save states
save_pointer(NAME(m_ca), NUMCOLORS); save_pointer(NAME(m_ca), NUMCOLORS);
save_pointer(NAME(m_cb), NUMCOLORS); save_pointer(NAME(m_cb), NUMCOLORS);
@ -67,8 +58,6 @@ void ef9369_device::device_start()
void ef9369_device::device_reset() void ef9369_device::device_reset()
{ {
m_palette = m_owner->subdevice<palette_device>(m_palette_tag);
m_address = 0; m_address = 0;
} }
@ -91,7 +80,7 @@ WRITE8_MEMBER( ef9369_device::data_w )
if (m_address & 1) if (m_address & 1)
{ {
m_m[entry] = (data >> 4) & 0xf; m_m[entry] = (data >> 4) & 0x1;
m_cc[entry] = (data >> 0) & 0xf; m_cc[entry] = (data >> 0) & 0xf;
} }
else else
@ -101,7 +90,8 @@ WRITE8_MEMBER( ef9369_device::data_w )
} }
// update color // update color
m_palette->set_pen_color(entry, pal4bit(m_ca[entry]), pal4bit(m_cb[entry]), pal4bit(m_cc[entry])); if (!m_color_update_cb.isnull())
m_color_update_cb(entry, m_m[entry], m_ca[entry], m_cb[entry], m_cc[entry]);
// auto-increment // auto-increment
m_address++; m_address++;

View File

@ -36,15 +36,20 @@
// INTERFACE CONFIGURATION MACROS // INTERFACE CONFIGURATION MACROS
//************************************************************************** //**************************************************************************
#define MCFG_EF9369_ADD(_tag, _palette_tag) \ #define MCFG_EF9369_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, EF9369, 0) \ MCFG_DEVICE_ADD(_tag, EF9369, 0) \
ef9369_device::set_palette_tag(*device, owner, _palette_tag);
#define MCFG_EF9369_COLOR_UPDATE_CB(_class, _method) \
ef9369_device::set_color_update_callback(*device, ef9369_color_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
typedef device_delegate<void (int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc)> ef9369_color_update_delegate;
#define EF9369_COLOR_UPDATE(name) void name(int entry, bool m, uint8_t ca, uint8_t cb, uint8_t cc)
// ======================> ef9369_device // ======================> ef9369_device
class ef9369_device : public device_t class ef9369_device : public device_t
@ -53,8 +58,8 @@ public:
// construction/destruction // construction/destruction
ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration // configuration
static void set_palette_tag(device_t &device, device_t *owner, const char *tag); static void set_color_update_callback(device_t &device, ef9369_color_update_delegate callback) { downcast<ef9369_device &>(device).m_color_update_cb = callback; }
DECLARE_READ8_MEMBER(data_r); DECLARE_READ8_MEMBER(data_r);
DECLARE_WRITE8_MEMBER(data_w); DECLARE_WRITE8_MEMBER(data_w);
@ -68,9 +73,7 @@ protected:
virtual void device_reset() override; virtual void device_reset() override;
private: private:
// configuration ef9369_color_update_delegate m_color_update_cb;
const char *m_palette_tag;
palette_device *m_palette;
// state // state
uint8_t m_ca[NUMCOLORS], m_cb[NUMCOLORS], m_cc[NUMCOLORS]; // actually 4-bit uint8_t m_ca[NUMCOLORS], m_cb[NUMCOLORS], m_cc[NUMCOLORS]; // actually 4-bit

View File

@ -67,6 +67,8 @@ public:
m_floppy(*this, "fdc:0"), m_floppy(*this, "fdc:0"),
m_palette(*this, "palette") { } m_palette(*this, "palette") { }
EF9369_COLOR_UPDATE(ef9369_color_update);
DECLARE_WRITE_LINE_MEMBER(generate_tms34061_interrupt); DECLARE_WRITE_LINE_MEMBER(generate_tms34061_interrupt);
DECLARE_WRITE16_MEMBER(guab_tms34061_w); DECLARE_WRITE16_MEMBER(guab_tms34061_w);
DECLARE_READ16_MEMBER(guab_tms34061_r); DECLARE_READ16_MEMBER(guab_tms34061_r);
@ -108,6 +110,11 @@ WRITE_LINE_MEMBER(guab_state::ptm_irq)
* *
*************************************/ *************************************/
EF9369_COLOR_UPDATE( guab_state::ef9369_color_update )
{
m_palette->set_pen_color(entry, pal4bit(ca), pal4bit(cb), pal4bit(cc));
}
/***************** /*****************
* TMS34061 CRTC * TMS34061 CRTC
*****************/ *****************/
@ -436,7 +443,8 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_PALETTE_ADD("palette", ef9369_device::NUMCOLORS) MCFG_PALETTE_ADD("palette", ef9369_device::NUMCOLORS)
MCFG_EF9369_ADD("ef9369", "palette") MCFG_EF9369_ADD("ef9369")
MCFG_EF9369_COLOR_UPDATE_CB(guab_state, ef9369_color_update)
MCFG_DEVICE_ADD("tms34061", TMS34061, 0) MCFG_DEVICE_ADD("tms34061", TMS34061, 0)
MCFG_TMS34061_ROWSHIFT(8) /* VRAM address is (row << rowshift) | col */ MCFG_TMS34061_ROWSHIFT(8) /* VRAM address is (row << rowshift) | col */

View File

@ -189,23 +189,15 @@ TODO:
#include "machine/roc10937.h" #include "machine/roc10937.h"
#include "machine/meters.h" #include "machine/meters.h"
#include "video/scn2674.h" #include "video/scn2674.h"
#include "video/ef9369.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/6850acia.h" #include "machine/6850acia.h"
#include "sound/saa1099.h" #include "sound/saa1099.h"
#include "machine/nvram.h"
#include "crmaze2p.lh" #include "crmaze2p.lh"
#include "crmaze4p.lh" #include "crmaze4p.lh"
#include "includes/mpu4.h" #include "includes/mpu4.h"
#include "cpu/m68000/m68000.h"
struct ef9369_t
{
uint32_t addr;
uint16_t clut[16]; /* 13-bits - a marking bit and a 444 color */
};
struct bt471_t struct bt471_t
{ {
uint8_t address; uint8_t address;
@ -245,7 +237,6 @@ public:
optional_ioport m_tracky_port; optional_ioport m_tracky_port;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
struct ef9369_t m_pal;
struct bt471_t m_bt471; struct bt471_t m_bt471;
//Video //Video
@ -291,8 +282,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(update_mpu68_interrupts); DECLARE_WRITE_LINE_MEMBER(update_mpu68_interrupts);
DECLARE_READ16_MEMBER( mpu4_vid_vidram_r ); DECLARE_READ16_MEMBER( mpu4_vid_vidram_r );
DECLARE_WRITE16_MEMBER( mpu4_vid_vidram_w ); DECLARE_WRITE16_MEMBER( mpu4_vid_vidram_w );
DECLARE_WRITE8_MEMBER( ef9369_w ); EF9369_COLOR_UPDATE(ef9369_color_update);
DECLARE_READ8_MEMBER( ef9369_r );
DECLARE_WRITE8_MEMBER( bt471_w ); DECLARE_WRITE8_MEMBER( bt471_w );
DECLARE_READ8_MEMBER( bt471_r ); DECLARE_READ8_MEMBER( bt471_r );
DECLARE_WRITE8_MEMBER( vidcharacteriser_w ); DECLARE_WRITE8_MEMBER( vidcharacteriser_w );
@ -444,76 +434,9 @@ VIDEO_START_MEMBER(mpu4vid_state,mpu4_vid)
m_gfxdecode->set_gfx(m_gfx_index+0, std::make_unique<gfx_element>(*m_palette, mpu4_vid_char_8x8_layout, reinterpret_cast<uint8_t *>(m_vid_vidram.target()), NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0)); m_gfxdecode->set_gfx(m_gfx_index+0, std::make_unique<gfx_element>(*m_palette, mpu4_vid_char_8x8_layout, reinterpret_cast<uint8_t *>(m_vid_vidram.target()), NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0));
} }
EF9369_COLOR_UPDATE( mpu4vid_state::ef9369_color_update )
/****************************
* EF9369 color palette IC
* (16 colors from 4096)
****************************/
/* Non-multiplexed mode */
WRITE8_MEMBER(mpu4vid_state::ef9369_w )
{ {
struct ef9369_t &pal = m_pal; m_palette->set_pen_color(entry, pal4bit(cc), pal4bit(cb), pal4bit(ca));
/* Address register */
if (offset & 1)
{
pal.addr = data & 0x1f;
}
/* Data register */
else
{
uint32_t entry = pal.addr >> 1;
if ((pal.addr & 1) == 0)
{
pal.clut[entry] &= ~0x00ff;
pal.clut[entry] |= data;
}
else
{
uint16_t col;
pal.clut[entry] &= ~0x1f00;
pal.clut[entry] |= (data & 0x1f) << 8;
/* Remove the marking bit */
col = pal.clut[entry] & 0xfff;
/* Update the MAME palette */
m_palette->set_pen_color(entry, pal4bit(col >> 8), pal4bit(col >> 4), pal4bit(col >> 0));
}
/* Address register auto-increment */
if (++pal.addr == 32)
pal.addr = 0;
}
}
READ8_MEMBER(mpu4vid_state::ef9369_r )
{
struct ef9369_t &pal = m_pal;
if ((offset & 1) == 0)
{
uint16_t col = pal.clut[pal.addr >> 1];
/* if ((pal.addr & 1) == 0)
return col & 0xff;
else
return col >> 8;
*/
return col;
}
else
{
/* Address register is write only */
return 0xff;
}
} }
/****************************************** /******************************************
@ -1246,12 +1169,10 @@ static ADDRESS_MAP_START( mpu4_68k_map, AS_PROGRAM, 16, mpu4vid_state )
// AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ // AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff)
AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_r, data_w, 0x00ff) AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_r, data_w, 0x00ff)
@ -1266,10 +1187,9 @@ static ADDRESS_MAP_START( mpu4oki_68k_map, AS_PROGRAM, 16, mpu4vid_state )
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff)
AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_r, data_w, 0x00ff) AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_r, data_w, 0x00ff)
@ -1281,17 +1201,16 @@ static ADDRESS_MAP_START( mpu4oki_68k_map, AS_PROGRAM, 16, mpu4vid_state )
// AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */ // AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( bwbvid_68k_map, AS_PROGRAM, 16, mpu4vid_state ) static ADDRESS_MAP_START( bwbvid_68k_map, AS_PROGRAM, 16, mpu4vid_state )
AM_RANGE(0x000000, 0x7fffff) AM_ROM AM_RANGE(0x000000, 0x7fffff) AM_ROM
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
// AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this // AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff)
@ -1306,10 +1225,10 @@ static ADDRESS_MAP_START( bwbvid5_68k_map, AS_PROGRAM, 16, mpu4vid_state )
AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff)
AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff)
//AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff)
AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram")
AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_r, control_w, 0x00ff)
@ -1321,8 +1240,6 @@ static ADDRESS_MAP_START( bwbvid5_68k_map, AS_PROGRAM, 16, mpu4vid_state )
AM_RANGE(0xe04000, 0xe0400f) AM_READWRITE8(bwb_characteriser_r, bwb_characteriser_w, 0x00ff)//AM_READWRITE(adpcm_r, adpcm_w) CHR ? AM_RANGE(0xe04000, 0xe0400f) AM_READWRITE8(bwb_characteriser_r, bwb_characteriser_w, 0x00ff)//AM_READWRITE(adpcm_r, adpcm_w) CHR ?
ADDRESS_MAP_END ADDRESS_MAP_END
/* TODO: Fix up MPU4 map*/ /* TODO: Fix up MPU4 map*/
static ADDRESS_MAP_START( mpu4_6809_map, AS_PROGRAM, 8, mpu4_state ) static ADDRESS_MAP_START( mpu4_6809_map, AS_PROGRAM, 8, mpu4_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
@ -1343,7 +1260,6 @@ ADDRESS_MAP_END
static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state ) static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_CPU_ADD("maincpu", M6809, MPU4_MASTER_CLOCK/4 ) MCFG_CPU_ADD("maincpu", M6809, MPU4_MASTER_CLOCK/4 )
MCFG_CPU_PROGRAM_MAP(mpu4_6809_map) MCFG_CPU_PROGRAM_MAP(mpu4_6809_map)
@ -1378,7 +1294,10 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4vid_state )
MCFG_MACHINE_RESET_OVERRIDE(mpu4vid_state,mpu4_vid) MCFG_MACHINE_RESET_OVERRIDE(mpu4vid_state,mpu4_vid)
MCFG_VIDEO_START_OVERRIDE (mpu4vid_state,mpu4_vid) MCFG_VIDEO_START_OVERRIDE (mpu4vid_state,mpu4_vid)
MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_ADD("palette", ef9369_device::NUMCOLORS)
MCFG_EF9369_ADD("ef9369")
MCFG_EF9369_COLOR_UPDATE_CB(mpu4vid_state, ef9369_color_update)
MCFG_DEVICE_ADD("6840ptm_68k", PTM6840, 0) MCFG_DEVICE_ADD("6840ptm_68k", PTM6840, 0)
MCFG_PTM6840_INTERNAL_CLOCK(VIDEO_MASTER_CLOCK / 10) /* 68k E clock */ MCFG_PTM6840_INTERNAL_CLOCK(VIDEO_MASTER_CLOCK / 10) /* 68k E clock */