diff options
author | angelosa <salese_corp_ltd@email.it> | 2017-06-28 19:23:13 +0200 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2017-06-28 19:24:08 +0200 |
commit | 12824956e936e9716a7d29c9dd18f12aeec9632d (patch) | |
tree | d07e2208ff668f022250d5dab22992cd25434826 | |
parent | 73c689e5e50bfbac99b1039f1079a45eb2a9e13f (diff) |
ygv608.cpp: converted ports to AM_DEVICE (nw)
-rw-r--r-- | src/mame/drivers/namcond1.cpp | 4 | ||||
-rw-r--r-- | src/mame/video/ygv608.cpp | 588 | ||||
-rw-r--r-- | src/mame/video/ygv608.h | 26 |
3 files changed, 346 insertions, 272 deletions
diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp index 9e8a68f9fee..bb260b22a7c 100644 --- a/src/mame/drivers/namcond1.cpp +++ b/src/mame/drivers/namcond1.cpp @@ -200,7 +200,7 @@ Some logic, resistors/caps/transistors, some connectors etc. static ADDRESS_MAP_START( namcond1_map, AS_PROGRAM, 16, namcond1_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("ygv608", ygv608_device, read, write, 0xff00) + AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00) AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) #ifdef MAME_DEBUG AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD("ygv608", ygv608_device, debug_trigger_r) @@ -214,7 +214,7 @@ static ADDRESS_MAP_START( abcheck_map, AS_PROGRAM, 16, namcond1_state ) AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("zpr1") AM_RANGE(0x608000, 0x60ffff) AM_RAM AM_SHARE("zpr2") AM_RANGE(0x780000, 0x780001) AM_READ(printer_r) - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("ygv608", ygv608_device, read, write, 0xff00) + AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00) AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) #ifdef MAME_DEBUG AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD("ygv608", ygv608_device, debug_trigger_r) diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 6eee7ddac1f..c3a55351c2c 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -29,6 +29,19 @@ * Scaling * Split-screen scrolling by row (by column supported) (see test mode) * Everything else! :) + * + * TODO (2017 edition): + * - move ports into device_address_map (done); + * - add registers into own space, improve naming and variable usage; + * - remove code repetition in tilemap drawing functions; + * - add crtc section; + * - fix garbage tiles in Mappy Arrange/Abnormal Check; + * - fix attract mode garbage for Namco Collection Vol. 2 (either transparent or page banking select registers); + * - fix tilemap dirty flags, move tilemap data in own space prolly helps; + * - DMA from/to ROM; + * - clean-ups & documentation; + * + * */ #include "emu.h" @@ -231,6 +244,24 @@ enum { #define GFX_16X16_8BIT 5 +/*************************************** + * + * Port Interface map + * + ***************************************/ + +DEVICE_ADDRESS_MAP_START( port_map, 8, ygv608_device ) + AM_RANGE(0x00, 0x00) AM_READWRITE(pattern_name_table_r,pattern_name_table_w) + AM_RANGE(0x01, 0x01) AM_READWRITE(sprite_data_r,sprite_data_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(scroll_data_r,scroll_data_w) + AM_RANGE(0x03, 0x03) AM_READWRITE(palette_data_r,palette_data_w) + AM_RANGE(0x04, 0x04) AM_READWRITE(register_data_r,register_data_w) + AM_RANGE(0x05, 0x05) AM_WRITE(register_select_w) + AM_RANGE(0x06, 0x06) AM_READWRITE(status_port_r,status_port_w) + AM_RANGE(0x07, 0x07) AM_READWRITE(system_control_r,system_control_w) +ADDRESS_MAP_END + + /* text-layer characters */ static const uint32_t pts_4bits_layout_xoffset[64] = @@ -1208,324 +1239,349 @@ uint32_t ygv608_device::update_screen(screen_device &screen, bitmap_ind16 &bitma return 0; } -READ8_MEMBER( ygv608_device::read ) +/*************************************** + * + * Port Interface routines + * + ****************************************/ + + // P#0R - pattern name table data port +READ8_MEMBER( ygv608_device::pattern_name_table_r ) { - int pn=0; - uint8_t data = 0; + int pn = 0; + uint8_t xTile = m_regs.s.r1 & r1_pnx; + uint8_t yTile = m_regs.s.r0 & r0_pny; - switch (offset) + switch (p0_state_r) { - case 0x00: /* P#0 - pattern name table data port */ - { - uint8_t xTile = m_regs.s.r1 & r1_pnx; - uint8_t yTile = m_regs.s.r0 & r0_pny; + 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_r = ((m_page_y << m_pny_shift) << m_bits16); - 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_r = ((m_page_y << m_pny_shift) << m_bits16); - - /* read character from ram */ - pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16); - break; - - case 1: - /* read character from ram */ - pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; - break; - } + /* read character from ram */ + pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16); + break; - if (pn > 4095) - { - logerror( "attempt (%d) to read pattern name %d\n" - "mode = %d, pgs = %d (%dx%d)\n" - "pattern_name_base_r = %d\n" - "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", - 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_r, - xTile, yTile, m_pny_shift, - m_bits16 ); - pn = 0; - } - data = m_pattern_name_table[pn]; + case 1: + /* read character from ram */ + pn = pattern_name_base_r + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; + break; + } + + if (pn > 4095) + { + logerror( "attempt (%d) to read pattern name %d\n" + "mode = %d, pgs = %d (%dx%d)\n" + "pattern_name_base_r = %d\n" + "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", + 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_r, + xTile, yTile, m_pny_shift, + m_bits16 ); + pn = 0; + } - p0_state_r++; - if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) - p0_state_r++; + p0_state_r++; + if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) + p0_state_r++; - if (p0_state_r == 2) + if (p0_state_r == 2) + { + if (m_regs.s.r0 & r0_pnya) + { + if (yTile++ == (m_page_y - 1)) { - if (m_regs.s.r0 & r0_pnya) - { - if (yTile++ == (m_page_y - 1)) - { - yTile = 0; - if (xTile++ == (m_page_x - 1)) - { - xTile = 0; - // we're now off this tile plane, toggle planes - m_regs.s.r0 ^= r0_b_a; - } - } - m_regs.s.r0 &= ~r0_pny; - m_regs.s.r0 |= yTile; - m_regs.s.r1 &= ~r1_pnx; - m_regs.s.r1 |= xTile; - } - else if (m_regs.s.r1 & r1_pnxa) + yTile = 0; + if (xTile++ == (m_page_x - 1)) { - if (xTile++ == (m_page_x - 1)) - { - xTile = 0; - if (yTile++ == (m_page_y - 1)) - { - yTile = 0; - // we're now off this tile plane, toggle planes - m_regs.s.r0 ^= r0_b_a; - } - } - m_regs.s.r0 &= ~r0_pny; - m_regs.s.r0 |= yTile; - m_regs.s.r1 &= ~r1_pnx; - m_regs.s.r1 |= xTile; + xTile = 0; + // we're now off this tile plane, toggle planes + m_regs.s.r0 ^= r0_b_a; } - p0_state_r = 0; - pattern_name_base_r = 0; } - return (data); + m_regs.s.r0 &= ~r0_pny; + m_regs.s.r0 |= yTile; + m_regs.s.r1 &= ~r1_pnx; + m_regs.s.r1 |= xTile; } - - 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); - - case 0x02: /* P#2 - scroll data port */ - data = m_scroll_data_table[(m_regs.s.r2 & r2_b_a) >> 4][m_regs.s.sca]; - if (m_regs.s.r2 & r2_scar) - { - m_regs.s.sca++; - /* handle wrap to next plane */ - if (m_regs.s.sca == 0) - m_regs.s.r2 ^= r2_b_a; - } - return( data ); - - case 0x03: /* P#3 - color palette data port */ - data = m_colour_palette[m_regs.s.cc][p3_state_r]; - if( ++p3_state_r == 3 ) - { - p3_state_r = 0; - if( m_regs.s.r2 & r2_cpar) - m_regs.s.cc++; - } - return( data ); - - case 0x04: /* P#4 - register data port */ + else if (m_regs.s.r1 & r1_pnxa) { - uint8_t regNum = (m_ports.s.p5) & p5_rn; - data = m_regs.b[regNum]; - if (m_ports.s.p5 & p5_rrai) + if (xTile++ == (m_page_x - 1)) { - regNum ++; - if (regNum == 50) + xTile = 0; + if (yTile++ == (m_page_y - 1)) { - regNum = 0; - logerror( "warning: rn=50 after read increment\n" ); + yTile = 0; + // we're now off this tile plane, toggle planes + m_regs.s.r0 ^= r0_b_a; } - m_ports.s.p5 &= ~p5_rn; - m_ports.s.p5 |= regNum; } - return (data ); + m_regs.s.r0 &= ~r0_pny; + m_regs.s.r0 |= yTile; + m_regs.s.r1 &= ~r1_pnx; + m_regs.s.r1 |= xTile; } + p0_state_r = 0; + pattern_name_base_r = 0; + } + + return m_pattern_name_table[pn]; +} - case 0x05: - break; +// P#1R - sprite data port +READ8_MEMBER( ygv608_device::sprite_data_r ) +{ + uint8_t res = m_sprite_attribute_table.b[m_regs.s.saa]; + + if (m_regs.s.r2 & r2_saar) + m_regs.s.saa++; + + return res; +} - case 0x06: - case 0x07: - return( (uint8_t)(m_ports.b[offset]) ); +// P#2R - scroll data port +READ8_MEMBER( ygv608_device::scroll_data_r ) +{ + uint8_t res = m_scroll_data_table[(m_regs.s.r2 & r2_b_a) >> 4][m_regs.s.sca]; - default : - logerror( "unknown ygv608 register (%d)\n", offset ); - break; + if (m_regs.s.r2 & r2_scar) + { + m_regs.s.sca++; + /* handle wrap to next plane */ + if (m_regs.s.sca == 0) + m_regs.s.r2 ^= r2_b_a; } - return( 0 ); + return res; } -WRITE8_MEMBER( ygv608_device::write ) +// P#3 - color palette data port +READ8_MEMBER( ygv608_device::palette_data_r ) { - int pn=0; + uint8_t res = m_colour_palette[m_regs.s.cc][p3_state_r]; + + if( ++p3_state_r == 3 ) + { + p3_state_r = 0; + if( m_regs.s.r2 & r2_cpar) + m_regs.s.cc++; + } + + return res; +} - //data = ( data >> 8 ) & 0xff; +// P#4R - register data port +READ8_MEMBER(ygv608_device::register_data_r) +{ + uint8_t regNum = (m_ports.s.p5) & p5_rn; + uint8_t res = m_regs.b[regNum]; - switch (offset) + if (m_ports.s.p5 & p5_rrai) { - case 0x00: /* P#0 - pattern name table data port */ + regNum ++; + if (regNum == 50) { - uint8_t xTile = m_regs.s.r1 & r1_pnx; - uint8_t yTile = m_regs.s.r0 & r0_pny; + regNum = 0; + logerror( "warning: rn=50 after read increment\n" ); + } + + m_ports.s.p5 &= ~p5_rn; + m_ports.s.p5 |= regNum; + } + + return res; +} - 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_w = ((m_page_y << m_pny_shift) << m_bits16); - - /* read character from ram */ - pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16); - break; - - case 1: - /* read character from ram */ - pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; - break; - } +// P#6R - status port +READ8_MEMBER( ygv608_device::status_port_r ) +{ + return (uint8_t)(m_ports.b[6]); +} - if (pn > 4095) - { - logerror( "attempt (%d) to read pattern name %d\n" - "mode = %d, pgs = %d (%dx%d)\n" - "pattern_name_base_w = %d\n" - "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", - 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_w, - xTile, yTile, m_pny_shift, - m_bits16 ); - pn = 0; - } - m_pattern_name_table[pn] = data; +// P#7R - system control port +READ8_MEMBER( ygv608_device::system_control_r ) +{ + return (uint8_t)(m_ports.b[7]); +} - p0_state_w++; - if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) - p0_state_w++; +// P#0W - pattern name table data write +WRITE8_MEMBER(ygv608_device::pattern_name_table_w) +{ + int pn = 0; + uint8_t xTile = m_regs.s.r1 & r1_pnx; + uint8_t yTile = m_regs.s.r0 & r0_pny; - if (p0_state_w == 2) - { - if (m_regs.s.r0 & r0_pnya) - { - if (yTile++ == (m_page_y - 1)) - { - yTile = 0; - if (xTile++ == (m_page_x - 1)) - { - xTile = 0; - m_regs.s.r0 ^= r0_b_a; - } - } - m_regs.s.r0 &= ~r0_pny; - m_regs.s.r0 |= yTile; - m_regs.s.r1 &= ~r1_pnx; - m_regs.s.r1 |= xTile; - } - else if (m_regs.s.r1 & r1_pnxa) - { - if (xTile++ == (m_page_x - 1)) - { - xTile = 0; - if (yTile++ == (m_page_y - 1)) - { - yTile = 0; - m_regs.s.r0 ^= r0_b_a; - } - } - m_regs.s.r0 &= ~r0_pny; - m_regs.s.r0 |= yTile; - m_regs.s.r1 &= ~r1_pnx; - m_regs.s.r1 |= xTile; - } - p0_state_w = 0; - pattern_name_base_w = 0; - } - } - break; + 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_w = ((m_page_y << m_pny_shift) << m_bits16); - case 0x01: /* P#1 - sprite data port */ - m_sprite_attribute_table.b[m_regs.s.saa] = data; - if( m_regs.s.r2 & r2_saaw) - m_regs.s.saa++; + /* read character from ram */ + pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16); break; - case 0x02: /* P#2 - scroll data port */ - m_scroll_data_table[(m_regs.s.r2 & r2_b_a) >> 4][m_regs.s.sca] = data; - if (m_regs.s.r2 & r2_scaw) - { - m_regs.s.sca++; - /* handle wrap to next plane */ - if (m_regs.s.sca == 0) - m_regs.s.r2 ^= r2_b_a; - } + case 1: + /* read character from ram */ + pn = pattern_name_base_w + (((yTile << m_pny_shift) + xTile) << m_bits16) + 1; break; + } + + if (pn > 4095) + { + logerror( "attempt (%d) to read pattern name %d\n" + "mode = %d, pgs = %d (%dx%d)\n" + "pattern_name_base_w = %d\n" + "pnx = %d, pny = %d, pny_shift = %d, bits16 = %d\n", + 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_w, + xTile, yTile, m_pny_shift, + m_bits16 ); + pn = 0; + } + + m_pattern_name_table[pn] = data; - case 0x03: /* P#3 - colour palette data port */ - m_colour_palette[m_regs.s.cc][p3_state_w] = data; - if (++p3_state_w == 3) + p0_state_w++; + if ((m_regs.s.r7 & r7_md) == MD_2PLANE_8BIT ) + p0_state_w++; + + if (p0_state_w == 2) + { + if (m_regs.s.r0 & r0_pnya) + { + if (yTile++ == (m_page_y - 1)) { - 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]), - pal6bit(m_colour_palette[m_regs.s.cc][2]) ); - if (m_regs.s.r2 & r2_cpaw) - m_regs.s.cc++; + yTile = 0; + if (xTile++ == (m_page_x - 1)) + { + xTile = 0; + m_regs.s.r0 ^= r0_b_a; + } } - break; - - case 0x04: /* P#4 - register data port */ + m_regs.s.r0 &= ~r0_pny; + m_regs.s.r0 |= yTile; + m_regs.s.r1 &= ~r1_pnx; + m_regs.s.r1 |= xTile; + } + else if (m_regs.s.r1 & r1_pnxa) { - uint8_t regNum = (m_ports.s.p5) & p5_rn; -#if 0 - logerror( "R#%d = $%02X\n", regNum, data ); -#endif - SetPreShortcuts (regNum, data); - m_regs.b[regNum] = data; - SetPostShortcuts (regNum); - if (m_ports.s.p5 & p5_rwai) + if (xTile++ == (m_page_x - 1)) { - regNum ++; - if (regNum == 50) + xTile = 0; + if (yTile++ == (m_page_y - 1)) { - regNum = 0; - logerror( "warning: rn=50 after write increment\n" ); + yTile = 0; + m_regs.s.r0 ^= r0_b_a; } - m_ports.s.p5 &= ~p5_rn; - m_ports.s.p5 |= regNum; } + m_regs.s.r0 &= ~r0_pny; + m_regs.s.r0 |= yTile; + m_regs.s.r1 &= ~r1_pnx; + m_regs.s.r1 |= xTile; } - break; + p0_state_w = 0; + pattern_name_base_w = 0; + } - case 0x05: /* P#5 - register select port */ - m_ports.b[5] = data; - break; +} - case 0x06: /* P#6 - status port */ - /* writing a '1' resets that bit */ - m_ports.b[6] &= ~data; - break; +// P#1W - sprite data port +WRITE8_MEMBER( ygv608_device::sprite_data_w ) +{ + m_sprite_attribute_table.b[m_regs.s.saa] = data; - case 0x07: /* P#7 - system control port */ - m_ports.b[7] = data; - if (m_ports.b[7] & 0x3e) - HandleRomTransfers(); - if (m_ports.b[7] & 0x01) - HandleYGV608Reset(); - break; + if( m_regs.s.r2 & r2_saaw) + m_regs.s.saa++; +} - default: - logerror( "unknown ygv608 register (%d)\n", offset ); - break; +// P#2W - scroll data port +WRITE8_MEMBER( ygv608_device::scroll_data_w ) +{ + m_scroll_data_table[(m_regs.s.r2 & r2_b_a) >> 4][m_regs.s.sca] = data; + + if (m_regs.s.r2 & r2_scaw) + { + m_regs.s.sca++; + /* handle wrap to next plane */ + if (m_regs.s.sca == 0) + m_regs.s.r2 ^= r2_b_a; + } +} + +// P#3W - colour palette data port +WRITE8_MEMBER( ygv608_device::palette_data_w ) +{ + m_colour_palette[m_regs.s.cc][p3_state_w] = data; + if (++p3_state_w == 3) + { + 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] ), + pal6bit( m_colour_palette[m_regs.s.cc][2] )); + + if (m_regs.s.r2 & r2_cpaw) + m_regs.s.cc++; + } +} + +// P#4W - register data port +WRITE8_MEMBER( ygv608_device::register_data_w ) +{ + uint8_t regNum = (m_ports.s.p5) & p5_rn; + //logerror( "R#%d = $%02X\n", regNum, data ); + + SetPreShortcuts (regNum, data); + m_regs.b[regNum] = data; + SetPostShortcuts (regNum); + + if (m_ports.s.p5 & p5_rwai) + { + regNum ++; + + if (regNum == 50) + { + regNum = 0; + logerror( "warning: rn=50 after write increment\n" ); + } + + m_ports.s.p5 &= ~p5_rn; + m_ports.s.p5 |= regNum; } } +// P#5W - register select port +WRITE8_MEMBER( ygv608_device::register_select_w ) +{ + m_ports.b[5] = data; +} + +// P#6W - status port +WRITE8_MEMBER( ygv608_device::status_port_w ) +{ + /* writing a '1' resets that bit */ + m_ports.b[6] &= ~data; +} + +// P#7W - system control port +WRITE8_MEMBER( ygv608_device::system_control_w ) +{ + m_ports.b[7] = data; + if (m_ports.b[7] & 0x3e) + HandleRomTransfers(data & 0x3e); + if (m_ports.b[7] & 0x01) + HandleYGV608Reset(); +} + + + void ygv608_device::HandleYGV608Reset() { int i; @@ -1558,8 +1614,10 @@ void ygv608_device::HandleYGV608Reset() - So leave it in! */ -void ygv608_device::HandleRomTransfers() +void ygv608_device::HandleRomTransfers(uint8_t type) { + popmessage("ROM DMA used %02x",type); + #if 0 static uint8_t *sdt = (uint8_t *)m_scroll_data_table; static uint8_t *sat = (uint8_t *)m_sprite_attribute_table.b; diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h index 5e71feb4800..a7717014dc0 100644 --- a/src/mame/video/ygv608.h +++ b/src/mame/video/ygv608.h @@ -17,10 +17,26 @@ public: // construction/destruction ygv608_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE8_MEMBER( write ); - DECLARE_READ8_MEMBER( read ); - - + DECLARE_ADDRESS_MAP(port_map, 8); + + DECLARE_READ8_MEMBER(pattern_name_table_r); + DECLARE_READ8_MEMBER(sprite_data_r); + DECLARE_READ8_MEMBER(scroll_data_r); + DECLARE_READ8_MEMBER(palette_data_r); + DECLARE_READ8_MEMBER(register_data_r); +// DECLARE_READ8_MEMBER(register_select_r); + DECLARE_READ8_MEMBER(status_port_r); + DECLARE_READ8_MEMBER(system_control_r); + DECLARE_WRITE8_MEMBER(pattern_name_table_w); + DECLARE_WRITE8_MEMBER(sprite_data_w); + DECLARE_WRITE8_MEMBER(scroll_data_w); + DECLARE_WRITE8_MEMBER(palette_data_w); + DECLARE_WRITE8_MEMBER(register_data_w); + DECLARE_WRITE8_MEMBER(register_select_w); + DECLARE_WRITE8_MEMBER(status_port_w); + DECLARE_WRITE8_MEMBER(system_control_w); + + // TODO: is this even a real connection? void set_gfxbank(uint8_t gfxbank); uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -147,7 +163,7 @@ private: bitmap_ind16 m_work_bitmap; void HandleYGV608Reset(); - void HandleRomTransfers(); + void HandleRomTransfers(uint8_t type); void SetPreShortcuts(int reg, int data ); void SetPostShortcuts(int reg); void ShowYGV608Registers(); |