From 6e39a7abfa7ad0f5cbcc984752a82be9c4e7eee6 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Mon, 4 Apr 2011 16:25:56 +0000 Subject: [PATCH] Part 1 of Taito F3 32-to-16 conversion ... --- src/mame/drivers/taito_f3.c | 7 ++++--- src/mame/includes/taito_f3.h | 8 ++++---- src/mame/video/taito_f3.c | 33 +++++++++++++++++---------------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c index a328cae646b..eafc85402b5 100644 --- a/src/mame/drivers/taito_f3.c +++ b/src/mame/drivers/taito_f3.c @@ -16,12 +16,13 @@ - Sound doesn't work in RidingF/RingRage? (for RingRage it's probably a timing / cpu sync bug, if you go into test mode for a while then exit you'll have sound, this doesn't work on RidingF) - - It does work in ringrage but you have to enter test mode first + \- It does work in ringrage but you have to enter test mode first - Sound balance is not emulated (see arabianm test mode) - When playing space invaders dx in original mode, t.t. with overlay, the alpha blending effect is wrong (see Taito B version of game) - Bubble Symphony has an alpha transition effect that doesn't appear in Mame - Various other missing blending effects (see Mametesters) + - Find how this HW drives the CRTC, and convert video timings to use screen raw params; Feel free to report any other issues to me. @@ -161,8 +162,8 @@ static ADDRESS_MAP_START( f3_map, AS_PROGRAM, 32 ) AM_RANGE(0x61e000, 0x61ffff) AM_RAM_WRITE(f3_vram_w) 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_RAM_WRITE(f3_pivot_w) AM_BASE_MEMBER(taito_f3_state, m_f3_pivot_ram) - AM_RANGE(0x660000, 0x66000f) AM_WRITE(f3_control_0_w) - AM_RANGE(0x660010, 0x66001f) AM_WRITE(f3_control_1_w) + 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") AM_RANGE(0xc80000, 0xc80003) AM_WRITE(f3_sound_reset_0_w) AM_RANGE(0xc80100, 0xc80103) AM_WRITE(f3_sound_reset_1_w) diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h index 2928821b9af..f57db5a163c 100644 --- a/src/mame/includes/taito_f3.h +++ b/src/mame/includes/taito_f3.h @@ -62,8 +62,8 @@ public: tilemap_t *m_pixel_layer; tilemap_t *m_vram_layer; UINT32 *m_spriteram32_buffered; - UINT32 m_f3_control_0[8]; - UINT32 m_f3_control_1[8]; + UINT16 m_f3_control_0[8]; + UINT16 m_f3_control_1[8]; int m_flipscreen; UINT8 m_sprite_extra_planes; UINT8 m_sprite_pen_mask; @@ -193,8 +193,8 @@ VIDEO_START( f3 ); SCREEN_UPDATE( f3 ); SCREEN_EOF( f3 ); -WRITE32_HANDLER( f3_control_0_w ); -WRITE32_HANDLER( f3_control_1_w ); +WRITE16_HANDLER( f3_control_0_w ); +WRITE16_HANDLER( f3_control_1_w ); WRITE32_HANDLER( f3_palette_24bit_w ); WRITE32_HANDLER( f3_pf_data_w ); WRITE32_HANDLER( f3_vram_w ); diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c index c997a1be58c..d3f1d4b02ba 100644 --- a/src/mame/video/taito_f3.c +++ b/src/mame/video/taito_f3.c @@ -325,6 +325,7 @@ static void init_alpha_blend_func(running_machine &machine); /******************************************************************************/ +/* TODO: fix shifting there */ static void print_debug_info(running_machine &machine, bitmap_t *bitmap) { taito_f3_state *state = machine.driver_data(); @@ -708,13 +709,13 @@ WRITE32_HANDLER( f3_pf_data_w ) } } -WRITE32_HANDLER( f3_control_0_w ) +WRITE16_HANDLER( f3_control_0_w ) { taito_f3_state *state = space->machine().driver_data(); COMBINE_DATA(&state->m_f3_control_0[offset]); } -WRITE32_HANDLER( f3_control_1_w ) +WRITE16_HANDLER( f3_control_1_w ) { taito_f3_state *state = space->machine().driver_data(); COMBINE_DATA(&state->m_f3_control_1[offset]); @@ -3165,21 +3166,21 @@ SCREEN_UPDATE( f3 ) tilemap_set_flip_all(screen->machine(),state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); /* Setup scroll */ - sy_fix[0]=((state->m_f3_control_0[2]&0xffff0000)>> 7) + (1<<16); - sy_fix[1]=((state->m_f3_control_0[2]&0x0000ffff)<< 9) + (1<<16); - sy_fix[2]=((state->m_f3_control_0[3]&0xffff0000)>> 7) + (1<<16); - sy_fix[3]=((state->m_f3_control_0[3]&0x0000ffff)<< 9) + (1<<16); - sx_fix[0]=((state->m_f3_control_0[0]&0xffc00000)>> 6) - (6<<16); - sx_fix[1]=((state->m_f3_control_0[0]&0x0000ffc0)<<10) - (10<<16); - sx_fix[2]=((state->m_f3_control_0[1]&0xffc00000)>> 6) - (14<<16); - sx_fix[3]=((state->m_f3_control_0[1]&0x0000ffc0)<<10) - (18<<16); - sx_fix[4]=-(state->m_f3_control_1[2]>>16)+41; - sy_fix[4]=-(state->m_f3_control_1[2]&0x1ff); + sy_fix[0]=((state->m_f3_control_0[4]&0xffff)<< 9) + (1<<16); + sy_fix[1]=((state->m_f3_control_0[5]&0xffff)<< 9) + (1<<16); + sy_fix[2]=((state->m_f3_control_0[6]&0xffff)<< 9) + (1<<16); + sy_fix[3]=((state->m_f3_control_0[7]&0xffff)<< 9) + (1<<16); + sx_fix[0]=((state->m_f3_control_0[0]&0xffc0)<<10) - (6<<16); + sx_fix[1]=((state->m_f3_control_0[1]&0xffc0)<<10) - (10<<16); + sx_fix[2]=((state->m_f3_control_0[2]&0xffc0)<<10) - (14<<16); + sx_fix[3]=((state->m_f3_control_0[3]&0xffc0)<<10) - (18<<16); + sx_fix[4]=-(state->m_f3_control_1[4])+41; + sy_fix[4]=-(state->m_f3_control_1[5]&0x1ff); - sx_fix[0]-=((state->m_f3_control_0[0]&0x003f0000)>> 6)+0x0400-0x10000; - sx_fix[1]-=((state->m_f3_control_0[0]&0x0000003f)<<10)+0x0400-0x10000; - sx_fix[2]-=((state->m_f3_control_0[1]&0x003f0000)>> 6)+0x0400-0x10000; - sx_fix[3]-=((state->m_f3_control_0[1]&0x0000003f)<<10)+0x0400-0x10000; + sx_fix[0]-=((state->m_f3_control_0[0]&0x003f)<<10)+0x0400-0x10000; + sx_fix[1]-=((state->m_f3_control_0[1]&0x003f)<<10)+0x0400-0x10000; + sx_fix[2]-=((state->m_f3_control_0[2]&0x003f)<<10)+0x0400-0x10000; + sx_fix[3]-=((state->m_f3_control_0[3]&0x003f)<<10)+0x0400-0x10000; if (state->m_flipscreen) {