k053244_k053245.cpp : Updates

Simplify handlers, Reduce unnecessary handlers
This commit is contained in:
cam900 2019-04-27 19:50:18 +09:00
parent 6f6a87dd45
commit 6d2e7eae6d
5 changed files with 27 additions and 55 deletions

View File

@ -175,9 +175,9 @@ void asterix_state::main_map(address_map &map)
map(0x100000, 0x107fff).ram();
map(0x180000, 0x1807ff).rw(m_k053244, FUNC(k05324x_device::k053245_word_r), FUNC(k05324x_device::k053245_word_w));
map(0x180800, 0x180fff).ram(); // extra RAM, or mirror for the above?
map(0x200000, 0x20000f).rw(m_k053244, FUNC(k05324x_device::k053244_word_r), FUNC(k05324x_device::k053244_word_w));
map(0x200000, 0x20000f).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w));
map(0x280000, 0x280fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x300000, 0x30001f).rw(m_k053244, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w));
map(0x300000, 0x30001f).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)).umask16(0x00ff);
map(0x380000, 0x380001).portr("IN0");
map(0x380002, 0x380003).portr("IN1");
map(0x380100, 0x380101).w(FUNC(asterix_state::control2_w));

View File

@ -65,10 +65,10 @@ private:
WRITE_LINE_MEMBER(nmi_ack_w) { m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); }
// A0 is inverted to match the Z80's endianness. Typical Konami.
READ8_MEMBER(k244_r) { return m_k053245->k053244_r(space, offset^1); }
WRITE8_MEMBER(k244_w) { m_k053245->k053244_w(space, offset^1, data); }
READ8_MEMBER(k245_r) { return m_k053245->k053245_r(space, offset^1); }
WRITE8_MEMBER(k245_w) { m_k053245->k053245_w(space, offset^1, data); }
READ8_MEMBER(k244_r) { return m_k053245->k053244_r(offset^1); }
WRITE8_MEMBER(k244_w) { m_k053245->k053244_w(offset^1, data); }
READ8_MEMBER(k245_r) { return m_k053245->k053245_r(offset^1); }
WRITE8_MEMBER(k245_w) { m_k053245->k053245_w(offset^1, data); }
WRITE8_MEMBER(control_w)
{

View File

@ -116,7 +116,7 @@ READ16_MEMBER(tmnt_state::k053245_scattered_word_r)
else
{
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
return m_k053245->k053245_word_r(space, offset, mem_mask);
return m_k053245->k053245_word_r(offset);
}
}
@ -127,7 +127,7 @@ WRITE16_MEMBER(tmnt_state::k053245_scattered_word_w)
if (!(offset & 0x0031))
{
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
m_k053245->k053245_word_w(space, offset, data, mem_mask);
m_k053245->k053245_word_w(offset, data, mem_mask);
}
}
@ -135,7 +135,7 @@ READ16_MEMBER(tmnt_state::k053244_word_noA1_r)
{
offset &= ~1; /* handle mirror address */
return m_k053245->k053244_r(space, offset + 1) | (m_k053245->k053244_r(space, offset) << 8);
return m_k053245->k053244_r(offset + 1) | (m_k053245->k053244_r(offset) << 8);
}
WRITE16_MEMBER(tmnt_state::k053244_word_noA1_w)
@ -143,9 +143,9 @@ WRITE16_MEMBER(tmnt_state::k053244_word_noA1_w)
offset &= ~1; /* handle mirror address */
if (ACCESSING_BITS_8_15)
m_k053245->k053244_w(space, offset, (data >> 8) & 0xff);
m_k053245->k053244_w(offset, (data >> 8) & 0xff);
if (ACCESSING_BITS_0_7)
m_k053245->k053244_w(space, offset + 1, data & 0xff);
m_k053245->k053244_w(offset + 1, data & 0xff);
}
/* cuebrick, mia, tmnt */
@ -350,7 +350,7 @@ WRITE16_MEMBER(tmnt_state::ssriders_protection_w)
{
if ((space.read_word(0x180006 + 128 * i) >> 8) == logical_pri)
{
m_k053245->k053245_word_w(space, 8 * i, hardware_pri, 0x00ff);
m_k053245->k053245_word_w(8 * i, hardware_pri, 0x00ff);
hardware_pri++;
}
}
@ -631,7 +631,7 @@ void tmnt_state::glfgreat_main_map(address_map &map)
map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); /* 053936? */
map(0x110000, 0x11001f).w(FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */
map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */
map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)).umask16(0x00ff); /* duplicate! */
map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w));
map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w));
map(0x120000, 0x120001).portr("P1/P2");
@ -654,7 +654,7 @@ void tmnt_state::prmrsocr_main_map(address_map &map)
map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w));
map(0x110000, 0x11001f).w(FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */
map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */
map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)).umask16(0x00ff); /* duplicate! */
map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w));
map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w));
map(0x120000, 0x120001).portr("P1/COINS");
@ -690,7 +690,7 @@ void tmnt_state::tmnt2_put_word( address_space &space, uint32_t addr, uint16_t d
if (!(offs & 0x0031))
{
offs = ((offs & 0x000e) >> 1) | ((offs & 0x1fc0) >> 3);
m_k053245->k053245_word_w(space, offs, data, 0xffff);
m_k053245->k053245_word_w(offs, data, 0xffff);
}
}
else if (addr >= 0x104000 / 2 && addr <= 0x107fff / 2)

View File

@ -160,17 +160,17 @@ void k05324x_device::device_reset()
DEVICE HANDLERS
*****************************************************************************/
READ16_MEMBER( k05324x_device::k053245_word_r )
u16 k05324x_device::k053245_word_r(offs_t offset)
{
return m_ram[offset];
}
WRITE16_MEMBER( k05324x_device::k053245_word_w )
void k05324x_device::k053245_word_w(offs_t offset, u16 data, u16 mem_mask)
{
COMBINE_DATA(m_ram.get() + offset);
}
READ8_MEMBER( k05324x_device::k053245_r )
u8 k05324x_device::k053245_r(offs_t offset)
{
if(offset & 1)
return m_ram[offset >> 1] & 0xff;
@ -179,7 +179,7 @@ READ8_MEMBER( k05324x_device::k053245_r )
}
WRITE8_MEMBER( k05324x_device::k053245_w )
void k05324x_device::k053245_w(offs_t offset, u8 data)
{
if(offset & 1)
m_ram[offset >> 1] = (m_ram[offset >> 1] & 0xff00) | data;
@ -200,7 +200,7 @@ void k05324x_device::update_buffer()
memcpy(m_buffer.get(), m_ram.get(), m_ramsize);
}
READ8_MEMBER( k05324x_device::k053244_r )
u8 k05324x_device::k053244_r(offs_t offset)
{
if ((m_regs[5] & 0x10) && offset >= 0x0c && offset < 0x10)
{
@ -227,7 +227,7 @@ READ8_MEMBER( k05324x_device::k053244_r )
}
}
WRITE8_MEMBER( k05324x_device::k053244_w )
void k05324x_device::k053244_w(offs_t offset, u8 data)
{
m_regs[offset] = data;
@ -248,30 +248,6 @@ WRITE8_MEMBER( k05324x_device::k053244_w )
}
READ16_MEMBER( k05324x_device::k053244_lsb_r )
{
return k053244_r(space, offset);
}
WRITE16_MEMBER( k05324x_device::k053244_lsb_w )
{
if (ACCESSING_BITS_0_7)
k053244_w(space, offset, data & 0xff);
}
READ16_MEMBER( k05324x_device::k053244_word_r )
{
return (k053244_r(space, offset * 2) << 8) | k053244_r(space, offset * 2 + 1);
}
WRITE16_MEMBER( k05324x_device::k053244_word_w )
{
if (ACCESSING_BITS_8_15)
k053244_w(space, offset * 2, (data >> 8) & 0xff);
if (ACCESSING_BITS_0_7)
k053244_w(space, offset * 2 + 1, data & 0xff);
}
void k05324x_device::bankselect( int bank )
{
m_rombank = bank;

View File

@ -29,16 +29,12 @@ public:
m_dy = y_offset;
}
DECLARE_READ16_MEMBER( k053245_word_r );
DECLARE_WRITE16_MEMBER( k053245_word_w );
DECLARE_READ8_MEMBER( k053245_r );
DECLARE_WRITE8_MEMBER( k053245_w );
DECLARE_READ8_MEMBER( k053244_r );
DECLARE_WRITE8_MEMBER( k053244_w );
DECLARE_READ16_MEMBER( k053244_lsb_r );
DECLARE_WRITE16_MEMBER( k053244_lsb_w );
DECLARE_READ16_MEMBER( k053244_word_r );
DECLARE_WRITE16_MEMBER( k053244_word_w );
u16 k053245_word_r(offs_t offset);
void k053245_word_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u8 k053245_r(offs_t offset);
void k053245_w(offs_t offset, u8 data);
u8 k053244_r(offs_t offset);
void k053244_w(offs_t offset, u8 data);
void bankselect(int bank); /* used by TMNT2, Asterix and Premier Soccer for ROM testing */
void sprites_draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap);
void clear_buffer();