mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
k052109.cpp : Updates
Simplify handlers, Remove unnecessary handlers, Fix notes
This commit is contained in:
parent
421651b9b7
commit
f5cf58ba16
@ -94,12 +94,12 @@ READ8_MEMBER(_88games_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(_88games_state::k052109_051960_w)
|
||||
@ -107,7 +107,7 @@ WRITE8_MEMBER(_88games_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -67,12 +67,12 @@ READ8_MEMBER(aliens_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(aliens_state::k052109_051960_w)
|
||||
@ -80,7 +80,7 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -155,12 +155,12 @@ READ8_MEMBER( blockhl_state::k052109_051960_r )
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( blockhl_state::k052109_051960_w )
|
||||
@ -168,7 +168,7 @@ WRITE8_MEMBER( blockhl_state::k052109_051960_w )
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -38,12 +38,12 @@ READ8_MEMBER(bottom9_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bottom9_state::k052109_051960_w)
|
||||
@ -51,7 +51,7 @@ WRITE8_MEMBER(bottom9_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -36,12 +36,12 @@ READ8_MEMBER(crimfght_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(crimfght_state::k052109_051960_w)
|
||||
@ -49,7 +49,7 @@ WRITE8_MEMBER(crimfght_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -38,17 +38,17 @@
|
||||
|
||||
READ16_MEMBER(gradius3_state::k052109_halfword_r)
|
||||
{
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(gradius3_state::k052109_halfword_w)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
m_k052109->write(space, offset, data & 0xff);
|
||||
m_k052109->write(offset, data & 0xff);
|
||||
|
||||
/* is this a bug in the game or something else? */
|
||||
if (!ACCESSING_BITS_0_7)
|
||||
m_k052109->write(space, offset, (data >> 8) & 0xff);
|
||||
m_k052109->write(offset, (data >> 8) & 0xff);
|
||||
// logerror("%s half %04x = %04x\n",machine().describe_context(),offset,data);
|
||||
}
|
||||
|
||||
|
@ -473,7 +473,7 @@ READ8_MEMBER(konmedal_state::shuri_video_r)
|
||||
{
|
||||
if (!(m_control & 0x10))
|
||||
{
|
||||
return m_k052109->read(space, offset+0x2000);
|
||||
return m_k052109->read(offset+0x2000);
|
||||
}
|
||||
|
||||
uint8_t *ROM = memregion("k052109")->base();
|
||||
@ -482,7 +482,7 @@ READ8_MEMBER(konmedal_state::shuri_video_r)
|
||||
|
||||
WRITE8_MEMBER(konmedal_state::shuri_video_w)
|
||||
{
|
||||
m_k052109->write(space, offset+0x2000, data);
|
||||
m_k052109->write(offset+0x2000, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(konmedal_state::shuri_irq_r)
|
||||
|
@ -147,12 +147,12 @@ READ8_MEMBER(mainevt_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mainevt_state::k052109_051960_w)
|
||||
@ -160,7 +160,7 @@ WRITE8_MEMBER(mainevt_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -356,12 +356,12 @@ READ8_MEMBER(spy_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spy_state::k052109_051960_w)
|
||||
@ -369,7 +369,7 @@ WRITE8_MEMBER(spy_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -381,12 +381,12 @@ READ8_MEMBER(thunderx_state::k052109_051960_r)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
return m_k051960->k051937_r(space, offset - 0x3800);
|
||||
else if (offset < 0x3c00)
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
else
|
||||
return m_k051960->k051960_r(space, offset - 0x3c00);
|
||||
}
|
||||
else
|
||||
return m_k052109->read(space, offset);
|
||||
return m_k052109->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(thunderx_state::k052109_051960_w)
|
||||
@ -394,7 +394,7 @@ WRITE8_MEMBER(thunderx_state::k052109_051960_w)
|
||||
if (offset >= 0x3800 && offset < 0x3808)
|
||||
m_k051960->k051937_w(space, offset - 0x3800, data);
|
||||
else if (offset < 0x3c00)
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(offset, data);
|
||||
else
|
||||
m_k051960->k051960_w(space, offset - 0x3c00, data);
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ READ16_MEMBER(tmnt_state::k052109_word_noA12_r)
|
||||
/* some games have the A12 line not connected, so the chip spans */
|
||||
/* twice the memory range, with mirroring */
|
||||
offset = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||
return m_k052109->word_r(space, offset, mem_mask);
|
||||
return m_k052109->word_r(offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tmnt_state::k052109_word_noA12_w)
|
||||
@ -84,7 +84,7 @@ WRITE16_MEMBER(tmnt_state::k052109_word_noA12_w)
|
||||
/* some games have the A12 line not connected, so the chip spans */
|
||||
/* twice the memory range, with mirroring */
|
||||
offset = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||
m_k052109->word_w(space, offset, data, mem_mask);
|
||||
m_k052109->word_w(offset, data, mem_mask);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tmnt_state::punkshot_k052109_word_w)
|
||||
@ -92,9 +92,9 @@ WRITE16_MEMBER(tmnt_state::punkshot_k052109_word_w)
|
||||
/* it seems that a word write is supposed to affect only the MSB. The */
|
||||
/* "ROUND 1" text in punkshtj goes lost otherwise. */
|
||||
if (ACCESSING_BITS_8_15)
|
||||
m_k052109->write(space, offset, (data >> 8) & 0xff);
|
||||
m_k052109->write(offset, (data >> 8) & 0xff);
|
||||
else if (ACCESSING_BITS_0_7)
|
||||
m_k052109->write(space, offset + 0x2000, data & 0xff);
|
||||
m_k052109->write(offset + 0x2000, data & 0xff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tmnt_state::punkshot_k052109_word_noA12_w)
|
||||
|
@ -134,7 +134,7 @@ WRITE8_MEMBER(vendetta_state::eeprom_w)
|
||||
|
||||
READ8_MEMBER(vendetta_state::K052109_r)
|
||||
{
|
||||
return m_k052109->read(space, offset + 0x2000);
|
||||
return m_k052109->read(offset + 0x2000);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vendetta_state::K052109_w)
|
||||
@ -144,8 +144,8 @@ WRITE8_MEMBER(vendetta_state::K052109_w)
|
||||
// * Tilemap mask ROM Test (0x1d80<->0x3d80, 0x1e00<->0x3e00, 0x1f00<->0x3f00) *
|
||||
// *************************************************************************************
|
||||
if ((offset == 0x1d80) || (offset == 0x1e00) || (offset == 0x1f00))
|
||||
m_k052109->write(space, offset, data);
|
||||
m_k052109->write(space, offset + 0x2000, data);
|
||||
m_k052109->write(offset, data);
|
||||
m_k052109->write(offset + 0x2000, data);
|
||||
}
|
||||
|
||||
|
||||
|
@ -94,7 +94,7 @@ void xmen_state::main_map(address_map &map)
|
||||
map(0x10a004, 0x10a005).portr("EEPROM");
|
||||
map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r));
|
||||
map(0x110000, 0x113fff).ram(); /* main RAM */
|
||||
map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::lsb_r), FUNC(k052109_device::lsb_w));
|
||||
map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)).umask16(0x00ff);
|
||||
map(0x18fa00, 0x18fa01).w(FUNC(xmen_state::xmen_18fa00_w));
|
||||
}
|
||||
|
||||
|
@ -98,9 +98,8 @@ WRITE16_MEMBER(gradius3_state::gradius3_gfxram_w)
|
||||
uint32_t gradius3_state::screen_update_gradius3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
/* TODO: this kludge enforces the char banks. For some reason, they don't work otherwise. */
|
||||
address_space &space = machine().dummy_space();
|
||||
m_k052109->write(space, 0x1d80, 0x10);
|
||||
m_k052109->write(space, 0x1f00, 0x32);
|
||||
m_k052109->write(0x1d80, 0x10);
|
||||
m_k052109->write(0x1f00, 0x32);
|
||||
|
||||
m_k052109->tilemap_update();
|
||||
|
||||
|
@ -71,7 +71,7 @@ address lines), and then reading it from the 051962.
|
||||
052109 memory layout:
|
||||
0000-07ff: layer FIX tilemap (attributes)
|
||||
0800-0fff: layer A tilemap (attributes)
|
||||
1000-1fff: layer B tilemap (attributes)
|
||||
1000-17ff: layer B tilemap (attributes)
|
||||
180c-1833: A y scroll
|
||||
1a00-1bff: A x scroll
|
||||
1c00 : ?
|
||||
@ -293,7 +293,7 @@ void k052109_device::vblank_callback(screen_device &screen, bool state)
|
||||
m_irq_handler(ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER( k052109_device::read )
|
||||
u8 k052109_device::read(offs_t offset)
|
||||
{
|
||||
if (m_rmrd_line == CLEAR_LINE)
|
||||
{
|
||||
@ -342,7 +342,7 @@ READ8_MEMBER( k052109_device::read )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( k052109_device::write )
|
||||
void k052109_device::write(offs_t offset, u8 data)
|
||||
{
|
||||
if ((offset & 0x1fff) < 0x1800) /* tilemap RAM */
|
||||
{
|
||||
@ -470,28 +470,17 @@ WRITE8_MEMBER( k052109_device::write )
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER( k052109_device::word_r )
|
||||
u16 k052109_device::word_r(offs_t offset)
|
||||
{
|
||||
return read(space, offset + 0x2000) | (read(space, offset) << 8);
|
||||
return read(offset + 0x2000) | (read(offset) << 8);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( k052109_device::word_w )
|
||||
void k052109_device::word_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
write(space, offset, (data >> 8) & 0xff);
|
||||
write(offset, (data >> 8) & 0xff);
|
||||
if (ACCESSING_BITS_0_7)
|
||||
write(space, offset + 0x2000, data & 0xff);
|
||||
}
|
||||
|
||||
READ16_MEMBER( k052109_device::lsb_r )
|
||||
{
|
||||
return read(space, offset);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( k052109_device::lsb_w )
|
||||
{
|
||||
if(ACCESSING_BITS_0_7)
|
||||
write(space, offset, data & 0xff);
|
||||
write(offset + 0x2000, data & 0xff);
|
||||
}
|
||||
|
||||
void k052109_device::set_rmrd_line( int state )
|
||||
|
@ -42,12 +42,10 @@ public:
|
||||
chip so it must not be set by the callback.
|
||||
*/
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
DECLARE_READ16_MEMBER( word_r );
|
||||
DECLARE_WRITE16_MEMBER( word_w );
|
||||
DECLARE_READ16_MEMBER( lsb_r );
|
||||
DECLARE_WRITE16_MEMBER( lsb_w );
|
||||
u8 read(offs_t offset);
|
||||
void write(offs_t offset, u8 data);
|
||||
u16 word_r(offs_t offset);
|
||||
void word_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
|
||||
void set_rmrd_line(int state);
|
||||
int get_rmrd_line();
|
||||
|
@ -47,12 +47,12 @@ K053246_CB_MEMBER(simpsons_state::sprite_callback)
|
||||
|
||||
READ8_MEMBER(simpsons_state::simpsons_k052109_r)
|
||||
{
|
||||
return m_k052109->read(space, offset + 0x2000);
|
||||
return m_k052109->read(offset + 0x2000);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(simpsons_state::simpsons_k052109_w)
|
||||
{
|
||||
m_k052109->write(space, offset + 0x2000, data);
|
||||
m_k052109->write(offset + 0x2000, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(simpsons_state::simpsons_k053247_r)
|
||||
|
@ -151,7 +151,6 @@ WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
|
||||
cliprect.set(0, 64 * 8 - 1, 2 * 8, 30 * 8 - 1);
|
||||
|
||||
|
||||
address_space &space = machine().dummy_space();
|
||||
if (m_screen->frame_number() & 0x01)
|
||||
{
|
||||
/* copy the desired spritelist to the chip */
|
||||
@ -163,8 +162,7 @@ WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
|
||||
*/
|
||||
for (offset = 0; offset < (0xc000 / 2); offset++)
|
||||
{
|
||||
// m_k052109->lsb_w
|
||||
m_k052109->write(space, offset, m_xmen6p_tilemapright[offset] & 0x00ff);
|
||||
m_k052109->write(offset, m_xmen6p_tilemapright[offset] & 0x00ff);
|
||||
}
|
||||
|
||||
|
||||
@ -182,8 +180,7 @@ WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
|
||||
*/
|
||||
for (offset = 0; offset < (0xc000 / 2); offset++)
|
||||
{
|
||||
// m_k052109->lsb_w
|
||||
m_k052109->write(space, offset, m_xmen6p_tilemapleft[offset] & 0x00ff);
|
||||
m_k052109->write(offset, m_xmen6p_tilemapleft[offset] & 0x00ff);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user