mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
Update mpu4vid to use ef9369 device
This commit is contained in:
parent
db0f9a2e80
commit
8fc52f35f6
@ -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++;
|
||||||
|
@ -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
|
||||||
|
@ -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 */
|
||||||
|
@ -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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user