diff options
Diffstat (limited to 'src/mame/video/ygv608.cpp')
-rw-r--r-- | src/mame/video/ygv608.cpp | 88 |
1 files changed, 41 insertions, 47 deletions
diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 2b622eaf786..6eee7ddac1f 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -586,7 +586,7 @@ TILE_GET_INFO_MEMBER( ygv608_device::get_tile_info_A_16 ) uint8_t attr = 0; int pattern_name_base = 0; int set = ((m_regs.s.r7 & r7_md) == MD_1PLANE_256COLOUR - ? GFX_16X16_8BIT : GFX_16X16_4BIT ); + ? GFX_16X16_8BIT : GFX_16X16_4BIT ); int base = row >> m_base_y_shift; if( col >= m_page_x ) { @@ -1208,13 +1208,10 @@ uint32_t ygv608_device::update_screen(screen_device &screen, bitmap_ind16 &bitma return 0; } -READ16_MEMBER( ygv608_device::read ) +READ8_MEMBER( ygv608_device::read ) { - static int p0_state = 0; - static int p3_state = 0; - static int pattern_name_base = 0; /* pattern name table base address */ int pn=0; - uint16_t data = 0; + uint8_t data = 0; switch (offset) { @@ -1223,20 +1220,20 @@ READ16_MEMBER( ygv608_device::read ) uint8_t xTile = m_regs.s.r1 & r1_pnx; uint8_t yTile = m_regs.s.r0 & r0_pny; - switch (p0_state) + switch (p0_state_r) { case 0: /* Are we reading from plane B? */ if (!((m_regs.s.r7 & r7_md) & MD_1PLANE) && (m_regs.s.r0 & r0_b_a)) - pattern_name_base = ((m_page_y << m_pny_shift) << m_bits16); + pattern_name_base_r = ((m_page_y << m_pny_shift) << m_bits16); /* read character from ram */ - pn = pattern_name_base + (((yTile << m_pny_shift) + xTile) << m_bits16); + pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16); break; case 1: /* read character from ram */ - pn = pattern_name_base + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; + pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; break; } @@ -1244,23 +1241,23 @@ READ16_MEMBER( ygv608_device::read ) { logerror( "attempt (%d) to read pattern name %d\n" "mode = %d, pgs = %d (%dx%d)\n" - "pattern_name_base = %d\n" + "pattern_name_base_r = %d\n" "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", - p0_state, + p0_state_r, pn, m_regs.s.r7 & r7_md, m_regs.s.r8 & r8_pgs, m_page_x, m_page_y, - pattern_name_base, + pattern_name_base_r, xTile, yTile, m_pny_shift, m_bits16 ); pn = 0; } data = m_pattern_name_table[pn]; - p0_state++; + p0_state_r++; if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) - p0_state++; + p0_state_r++; - if (p0_state == 2) + if (p0_state_r == 2) { if (m_regs.s.r0 & r0_pnya) { @@ -1296,17 +1293,17 @@ READ16_MEMBER( ygv608_device::read ) m_regs.s.r1 &= ~r1_pnx; m_regs.s.r1 |= xTile; } - p0_state = 0; - pattern_name_base = 0; + p0_state_r = 0; + pattern_name_base_r = 0; } - return (data << 8); + return (data); } case 0x01: /* P#1 - sprite data port */ data = m_sprite_attribute_table.b[m_regs.s.saa]; if (m_regs.s.r2 & r2_saar) m_regs.s.saa++; - return (data << 8); + return (data); case 0x02: /* P#2 - scroll data port */ data = m_scroll_data_table[(m_regs.s.r2 & r2_b_a) >> 4][m_regs.s.sca]; @@ -1317,17 +1314,17 @@ READ16_MEMBER( ygv608_device::read ) if (m_regs.s.sca == 0) m_regs.s.r2 ^= r2_b_a; } - return( data << 8 ); + return( data ); case 0x03: /* P#3 - color palette data port */ - data = m_colour_palette[m_regs.s.cc][p3_state]; - if( ++p3_state == 3 ) + data = m_colour_palette[m_regs.s.cc][p3_state_r]; + if( ++p3_state_r == 3 ) { - p3_state = 0; + p3_state_r = 0; if( m_regs.s.r2 & r2_cpar) m_regs.s.cc++; } - return( data << 8 ); + return( data ); case 0x04: /* P#4 - register data port */ { @@ -1344,7 +1341,7 @@ READ16_MEMBER( ygv608_device::read ) m_ports.s.p5 &= ~p5_rn; m_ports.s.p5 |= regNum; } - return (data << 8); + return (data ); } case 0x05: @@ -1352,7 +1349,7 @@ READ16_MEMBER( ygv608_device::read ) case 0x06: case 0x07: - return( (uint16_t)(m_ports.b[offset]) << 8 ); + return( (uint8_t)(m_ports.b[offset]) ); default : logerror( "unknown ygv608 register (%d)\n", offset ); @@ -1362,14 +1359,11 @@ READ16_MEMBER( ygv608_device::read ) return( 0 ); } -WRITE16_MEMBER( ygv608_device::write ) +WRITE8_MEMBER( ygv608_device::write ) { - static int p0_state = 0; - static int p3_state = 0; - static int pattern_name_base = 0; /* pattern name table base address */ int pn=0; - data = ( data >> 8 ) & 0xff; + //data = ( data >> 8 ) & 0xff; switch (offset) { @@ -1378,20 +1372,20 @@ WRITE16_MEMBER( ygv608_device::write ) uint8_t xTile = m_regs.s.r1 & r1_pnx; uint8_t yTile = m_regs.s.r0 & r0_pny; - switch (p0_state) + switch (p0_state_w) { case 0: /* Are we reading from plane B? */ if (!((m_regs.s.r7 & r7_md) & MD_1PLANE) && (m_regs.s.r0 & r0_b_a)) - pattern_name_base = ((m_page_y << m_pny_shift) << m_bits16); + pattern_name_base_w = ((m_page_y << m_pny_shift) << m_bits16); /* read character from ram */ - pn = pattern_name_base + (((yTile << m_pny_shift) + xTile) << m_bits16); + pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16); break; case 1: /* read character from ram */ - pn = pattern_name_base + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; + pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; break; } @@ -1399,23 +1393,23 @@ WRITE16_MEMBER( ygv608_device::write ) { logerror( "attempt (%d) to read pattern name %d\n" "mode = %d, pgs = %d (%dx%d)\n" - "pattern_name_base = %d\n" + "pattern_name_base_w = %d\n" "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", - p0_state, + p0_state_w, pn, m_regs.s.r7 & r7_md, m_regs.s.r8 & r8_pgs, m_page_x, m_page_y, - pattern_name_base, + pattern_name_base_w, xTile, yTile, m_pny_shift, m_bits16 ); pn = 0; } m_pattern_name_table[pn] = data; - p0_state++; + p0_state_w++; if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) - p0_state++; + p0_state_w++; - if (p0_state == 2) + if (p0_state_w == 2) { if (m_regs.s.r0 & r0_pnya) { @@ -1449,8 +1443,8 @@ WRITE16_MEMBER( ygv608_device::write ) m_regs.s.r1 &= ~r1_pnx; m_regs.s.r1 |= xTile; } - p0_state = 0; - pattern_name_base = 0; + p0_state_w = 0; + pattern_name_base_w = 0; } } break; @@ -1473,10 +1467,10 @@ WRITE16_MEMBER( ygv608_device::write ) break; case 0x03: /* P#3 - colour palette data port */ - m_colour_palette[m_regs.s.cc][p3_state] = data; - if (++p3_state == 3) + m_colour_palette[m_regs.s.cc][p3_state_w] = data; + if (++p3_state_w == 3) { - p3_state = 0; + p3_state_w = 0; palette().set_pen_color(m_regs.s.cc, pal6bit(m_colour_palette[m_regs.s.cc][0]), pal6bit(m_colour_palette[m_regs.s.cc][1]), |