diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 6e0a210a05e..5b553e799ed 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -448,6 +448,13 @@ inline int ygv608_device::get_col_division(int raw_col) return ((raw_col >> m_col_shift) * 2) & 0x7f; } +inline int ygv608_device::get_row_division(int raw_row) +{ + if(m_h_div_size == 0) + return 0; + + return (raw_row & (m_page_y/2 - 1)) * 2; +} TILEMAP_MAPPER_MEMBER( ygv608_device::get_tile_offset ) { @@ -1102,30 +1109,17 @@ uint32_t ygv608_device::update_screen(screen_device &screen, bitmap_ind16 &bitma #ifdef _ENABLE_SCROLLX - if (m_h_div_size == 0) { + for( row=0; rowset_scrollx(0, - ( (int)m_scroll_data_table[1][0x80] + - ( (int)m_scroll_data_table[1][0x81] << 8 ) ) ); - - m_tilemap_A->set_scrollx(0, - ( (int)m_scroll_data_table[0][0x80] + - ( (int)m_scroll_data_table[0][0x81] << 8 ) ) ); - - } - else { - - for( row=0; rowset_scrollx(row, - ( (int)m_scroll_data_table[1][0x80 + ((row & (m_page_y/2 - 1)) << 1)] + - ( (int)m_scroll_data_table[1][0x81 + ((row & (m_page_y/2 - 1)) << 1)] << 8 ) ) ); + ( (int)m_scroll_data_table[1][translated_row+0x80] + + ( (int)m_scroll_data_table[1][translated_row+0x81] << 8 ) ) ); m_tilemap_A->set_scrollx(row, - ( (int)m_scroll_data_table[0][0x80 + ((row & (m_page_y/2 - 1)) << 1)] + - ( (int)m_scroll_data_table[0][0x81 + ((row & (m_page_y/2 - 1)) << 1)] << 8 ) ) ); - } - + ( (int)m_scroll_data_table[0][translated_row+0x80] + + ( (int)m_scroll_data_table[0][translated_row+0x81] << 8 ) ) ); } #endif diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h index 575e5463028..8a1fee7278c 100644 --- a/src/mame/video/ygv608.h +++ b/src/mame/video/ygv608.h @@ -259,6 +259,7 @@ private: void pattern_name_autoinc_check(); /**< check autoinc for tile pointers */ void pattern_mode_setup(); /**< refresh pattern mode at register 7/8 change*/ int get_col_division(int raw_col); /**< calculate column scroll */ + int get_row_division(int raw_row); /**< calculate row scroll */ enum {