diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c index 1dc6aa11256..830d40dcd06 100644 --- a/src/mame/drivers/taito_f3.c +++ b/src/mame/drivers/taito_f3.c @@ -202,11 +202,11 @@ static ADDRESS_MAP_START( f3_map, AS_PROGRAM, 32 ) AM_RANGE(0x4a0000, 0x4a001f) AM_READWRITE(f3_control_r, f3_control_w) AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE16(f3_unk_w,0xffffffff) AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_MEMBER(taito_f3_state, m_spriteram, m_spriteram_size) - AM_RANGE(0x610000, 0x61bfff) AM_RAM_WRITE(f3_pf_data_w) AM_BASE_MEMBER(taito_f3_state, m_f3_pf_data) - AM_RANGE(0x61c000, 0x61dfff) AM_RAM_WRITE(f3_videoram_w) AM_BASE_MEMBER(taito_f3_state, m_videoram) - AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) AM_BASE_MEMBER(taito_f3_state, m_f3_vram) - AM_RANGE(0x620000, 0x62ffff) AM_RAM_WRITE(f3_lineram_w) AM_BASE_MEMBER(taito_f3_state, m_f3_line_ram) - AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) AM_BASE_MEMBER(taito_f3_state, m_f3_pivot_ram) + AM_RANGE(0x610000, 0x61bfff) AM_RAM_WRITE(f3_pf_data_w) AM_BASE_MEMBER(taito_f3_state, m_f3_pf_data) + AM_RANGE(0x61c000, 0x61dfff) AM_READWRITE16(f3_videoram_r,f3_videoram_w,0xffffffff) AM_BASE_MEMBER(taito_f3_state, m_videoram) + AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) AM_BASE_MEMBER(taito_f3_state, m_f3_vram) + AM_RANGE(0x620000, 0x62ffff) AM_RAM_WRITE(f3_lineram_w) AM_BASE_MEMBER(taito_f3_state, m_f3_line_ram) + AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) AM_BASE_MEMBER(taito_f3_state, m_f3_pivot_ram) AM_RANGE(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff) AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff) AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("f3_shared") diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h index 141be13e0c5..e3be40db554 100644 --- a/src/mame/includes/taito_f3.h +++ b/src/mame/includes/taito_f3.h @@ -200,10 +200,10 @@ WRITE32_HANDLER( f3_pf_data_w ); WRITE16_HANDLER( f3_vram_w ); WRITE16_HANDLER( f3_pivot_w ); WRITE32_HANDLER( f3_lineram_w ); -WRITE32_HANDLER( f3_videoram_w ); +WRITE16_HANDLER( f3_videoram_w ); //READ16_HANDLER( f3_pf_data_r ); READ16_HANDLER( f3_vram_r ); READ16_HANDLER( f3_pivot_r ); //READ16_HANDLER( f3_lineram_r ); -//READ16_HANDLER( f3_videoram_r ); +READ16_HANDLER( f3_videoram_r ); diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c index 1a3eaae3207..a053ea30451 100644 --- a/src/mame/video/taito_f3.c +++ b/src/mame/video/taito_f3.c @@ -447,14 +447,10 @@ static TILE_GET_INFO( get_tile_info4 ) static TILE_GET_INFO( get_tile_info_vram ) { taito_f3_state *state = machine.driver_data(); - UINT32 *videoram = state->m_videoram; int vram_tile; int flags=0; - if (tile_index&1) - vram_tile = (videoram[tile_index>>1]&0xffff); - else - vram_tile = (videoram[tile_index>>1]>>16); + vram_tile = (state->m_videoram[tile_index]&0xffff); if (vram_tile&0x0100) flags|=TILE_FLIPX; if (vram_tile&0x8000) flags|=TILE_FLIPY; @@ -469,7 +465,6 @@ static TILE_GET_INFO( get_tile_info_vram ) static TILE_GET_INFO( get_tile_info_pixel ) { taito_f3_state *state = machine.driver_data(); - UINT32 *videoram = state->m_videoram; int vram_tile,col_off; int flags=0; int y_offs=(state->m_f3_control_1[5]&0x1ff); @@ -481,10 +476,7 @@ static TILE_GET_INFO( get_tile_info_pixel ) else col_off=((tile_index%32)*0x40)+((tile_index&0xfe0)>>5); - if (col_off&1) - vram_tile = (videoram[col_off>>1]&0xffff); - else - vram_tile = (videoram[col_off>>1]>>16); + vram_tile = (state->m_videoram[col_off]&0xffff); if (vram_tile&0x0100) flags|=TILE_FLIPX; if (vram_tile&0x8000) flags|=TILE_FLIPY; @@ -721,19 +713,24 @@ WRITE16_HANDLER( f3_control_1_w ) COMBINE_DATA(&state->m_f3_control_1[offset]); } -WRITE32_HANDLER( f3_videoram_w ) +READ16_HANDLER( f3_videoram_r ) +{ + taito_f3_state *state = space->machine().driver_data(); + return state->m_videoram[offset]; +} + +WRITE16_HANDLER( f3_videoram_w ) { taito_f3_state *state = space->machine().driver_data(); - UINT32 *videoram = state->m_videoram; int tile,col_off; - COMBINE_DATA(&videoram[offset]); + COMBINE_DATA(&state->m_videoram[offset]); - tilemap_mark_tile_dirty(state->m_vram_layer,offset<<1); - tilemap_mark_tile_dirty(state->m_vram_layer,(offset<<1)+1); + tilemap_mark_tile_dirty(state->m_vram_layer,offset); + tilemap_mark_tile_dirty(state->m_vram_layer,offset+1); - if (offset>0x3ff) offset-=0x400; + if (offset>0x7ff) offset-=0x800; - tile=offset<<1; + tile=offset; col_off=((tile&0x3f)*32)+((tile&0xfc0)>>6); tilemap_mark_tile_dirty(state->m_pixel_layer,col_off);