Part 1 of Taito F3 32-to-16 conversion ...

This commit is contained in:
Angelo Salese 2011-04-04 16:25:56 +00:00
parent a4f8d12933
commit 6e39a7abfa
3 changed files with 25 additions and 23 deletions

View File

@ -16,12 +16,13 @@
- Sound doesn't work in RidingF/RingRage? - Sound doesn't work in RidingF/RingRage?
(for RingRage it's probably a timing / cpu sync bug, if you go into test mode (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) 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) - Sound balance is not emulated (see arabianm test mode)
- When playing space invaders dx in original mode, t.t. with overlay, the - When playing space invaders dx in original mode, t.t. with overlay, the
alpha blending effect is wrong (see Taito B version of game) alpha blending effect is wrong (see Taito B version of game)
- Bubble Symphony has an alpha transition effect that doesn't appear in Mame - Bubble Symphony has an alpha transition effect that doesn't appear in Mame
- Various other missing blending effects (see Mametesters) - 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. 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(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(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(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(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff)
AM_RANGE(0x660010, 0x66001f) AM_WRITE(f3_control_1_w) AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff)
AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("f3_shared") AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("f3_shared")
AM_RANGE(0xc80000, 0xc80003) AM_WRITE(f3_sound_reset_0_w) AM_RANGE(0xc80000, 0xc80003) AM_WRITE(f3_sound_reset_0_w)
AM_RANGE(0xc80100, 0xc80103) AM_WRITE(f3_sound_reset_1_w) AM_RANGE(0xc80100, 0xc80103) AM_WRITE(f3_sound_reset_1_w)

View File

@ -62,8 +62,8 @@ public:
tilemap_t *m_pixel_layer; tilemap_t *m_pixel_layer;
tilemap_t *m_vram_layer; tilemap_t *m_vram_layer;
UINT32 *m_spriteram32_buffered; UINT32 *m_spriteram32_buffered;
UINT32 m_f3_control_0[8]; UINT16 m_f3_control_0[8];
UINT32 m_f3_control_1[8]; UINT16 m_f3_control_1[8];
int m_flipscreen; int m_flipscreen;
UINT8 m_sprite_extra_planes; UINT8 m_sprite_extra_planes;
UINT8 m_sprite_pen_mask; UINT8 m_sprite_pen_mask;
@ -193,8 +193,8 @@ VIDEO_START( f3 );
SCREEN_UPDATE( f3 ); SCREEN_UPDATE( f3 );
SCREEN_EOF( f3 ); SCREEN_EOF( f3 );
WRITE32_HANDLER( f3_control_0_w ); WRITE16_HANDLER( f3_control_0_w );
WRITE32_HANDLER( f3_control_1_w ); WRITE16_HANDLER( f3_control_1_w );
WRITE32_HANDLER( f3_palette_24bit_w ); WRITE32_HANDLER( f3_palette_24bit_w );
WRITE32_HANDLER( f3_pf_data_w ); WRITE32_HANDLER( f3_pf_data_w );
WRITE32_HANDLER( f3_vram_w ); WRITE32_HANDLER( f3_vram_w );

View File

@ -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) static void print_debug_info(running_machine &machine, bitmap_t *bitmap)
{ {
taito_f3_state *state = machine.driver_data<taito_f3_state>(); taito_f3_state *state = machine.driver_data<taito_f3_state>();
@ -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<taito_f3_state>(); taito_f3_state *state = space->machine().driver_data<taito_f3_state>();
COMBINE_DATA(&state->m_f3_control_0[offset]); 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<taito_f3_state>(); taito_f3_state *state = space->machine().driver_data<taito_f3_state>();
COMBINE_DATA(&state->m_f3_control_1[offset]); 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); tilemap_set_flip_all(screen->machine(),state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
/* Setup scroll */ /* Setup scroll */
sy_fix[0]=((state->m_f3_control_0[2]&0xffff0000)>> 7) + (1<<16); sy_fix[0]=((state->m_f3_control_0[4]&0xffff)<< 9) + (1<<16);
sy_fix[1]=((state->m_f3_control_0[2]&0x0000ffff)<< 9) + (1<<16); sy_fix[1]=((state->m_f3_control_0[5]&0xffff)<< 9) + (1<<16);
sy_fix[2]=((state->m_f3_control_0[3]&0xffff0000)>> 7) + (1<<16); sy_fix[2]=((state->m_f3_control_0[6]&0xffff)<< 9) + (1<<16);
sy_fix[3]=((state->m_f3_control_0[3]&0x0000ffff)<< 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]&0xffc00000)>> 6) - (6<<16); sx_fix[0]=((state->m_f3_control_0[0]&0xffc0)<<10) - (6<<16);
sx_fix[1]=((state->m_f3_control_0[0]&0x0000ffc0)<<10) - (10<<16); sx_fix[1]=((state->m_f3_control_0[1]&0xffc0)<<10) - (10<<16);
sx_fix[2]=((state->m_f3_control_0[1]&0xffc00000)>> 6) - (14<<16); sx_fix[2]=((state->m_f3_control_0[2]&0xffc0)<<10) - (14<<16);
sx_fix[3]=((state->m_f3_control_0[1]&0x0000ffc0)<<10) - (18<<16); sx_fix[3]=((state->m_f3_control_0[3]&0xffc0)<<10) - (18<<16);
sx_fix[4]=-(state->m_f3_control_1[2]>>16)+41; sx_fix[4]=-(state->m_f3_control_1[4])+41;
sy_fix[4]=-(state->m_f3_control_1[2]&0x1ff); 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[0]-=((state->m_f3_control_0[0]&0x003f)<<10)+0x0400-0x10000;
sx_fix[1]-=((state->m_f3_control_0[0]&0x0000003f)<<10)+0x0400-0x10000; sx_fix[1]-=((state->m_f3_control_0[1]&0x003f)<<10)+0x0400-0x10000;
sx_fix[2]-=((state->m_f3_control_0[1]&0x003f0000)>> 6)+0x0400-0x10000; sx_fix[2]-=((state->m_f3_control_0[2]&0x003f)<<10)+0x0400-0x10000;
sx_fix[3]-=((state->m_f3_control_0[1]&0x0000003f)<<10)+0x0400-0x10000; sx_fix[3]-=((state->m_f3_control_0[3]&0x003f)<<10)+0x0400-0x10000;
if (state->m_flipscreen) if (state->m_flipscreen)
{ {