diff --git a/src/mame/drivers/ksayakyu.c b/src/mame/drivers/ksayakyu.c index efa183c418f..bb90094228b 100644 --- a/src/mame/drivers/ksayakyu.c +++ b/src/mame/drivers/ksayakyu.c @@ -5,7 +5,6 @@ Kusayakyuu (Sandlot Baseball) driver by Tomasz Slanina TODO: -- colors - correct communication between main and the sound cpu - DAC - sprite glitches (sometimes) .. missing vertical flip flag? @@ -120,7 +119,7 @@ static ADDRESS_MAP_START( maincpu_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xa807, 0xa807) AM_READNOP /* watchdog ? */ AM_RANGE(0xa808, 0xa808) AM_WRITE(bank_select_w) AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(ksayakyu_videoram_w) AM_BASE_GENERIC(videoram) - AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(SMH_RAM) AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xb800, 0xbfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) ADDRESS_MAP_END static ADDRESS_MAP_START( soundcpu_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -235,7 +234,7 @@ static const gfx_layout spritelayout = static GFXDECODE_START( ksayakyu ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, charlayout2, 16*4, 32 ) + GFXDECODE_ENTRY( "gfx3", 0, charlayout2, 0x80, 32 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) GFXDECODE_END @@ -244,7 +243,7 @@ static MACHINE_DRIVER_START( ksayakyu ) MDRV_CPU_PROGRAM_MAP(maincpu_map) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) - MDRV_CPU_ADD("audiocpu", Z80, 80000000/2) + MDRV_CPU_ADD("audiocpu", Z80, 8000000/2) MDRV_CPU_PROGRAM_MAP(soundcpu_map) MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) @@ -322,4 +321,4 @@ static DRIVER_INIT( ksayakyu ) sound_status = 0xff; } -GAME( 1985, ksayakyu, 0, ksayakyu, ksayakyu, ksayakyu, ORIENTATION_FLIP_Y, "Taito Corporation", "Kusayakyuu",GAME_IMPERFECT_SOUND|GAME_WRONG_COLORS ) +GAME( 1985, ksayakyu, 0, ksayakyu, ksayakyu, ksayakyu, ORIENTATION_FLIP_Y, "Taito Corporation", "Kusayakyuu",GAME_IMPERFECT_SOUND ) diff --git a/src/mame/video/ksayakyu.c b/src/mame/video/ksayakyu.c index 3e5f8c69849..e842f090b99 100644 --- a/src/mame/video/ksayakyu.c +++ b/src/mame/video/ksayakyu.c @@ -25,25 +25,28 @@ WRITE8_HANDLER(ksayakyu_videoctrl_w) */ video_ctrl=data; - flipscreen = (data&4)?(TILEMAP_FLIPX|TILEMAP_FLIPY):0; - tilemap_set_flip_all( space->machine,flipscreen ); + flipscreen = data & 4; + flip_screen_set( space->machine,flipscreen ); tilemap_set_scrolly( ksayakyu_tilemap, 0, (data&0xe0)<<3 ); + if(flipscreen) + tilemap_set_flip( ksayakyu_tilemap, (data & 2) ? TILEMAP_FLIPY : TILEMAP_FLIPX | TILEMAP_FLIPY); + else + tilemap_set_flip( ksayakyu_tilemap, (data & 2) ? TILEMAP_FLIPX : 0); } PALETTE_INIT( ksayakyu ) { - int i,j,b1,b2; const UINT8 *prom = memory_region(machine, "proms"); + int r,g,b,i; - for(j=0;j<16;j++) - for(i=0;i<8;i++) - { - b1=prom[j*16+i]; - b2=prom[j*16+i+8]; + for (i=0;i<0x100;i++) + { + r = (prom[i] & 0x07) >> 0; + g = (prom[i] & 0x38) >> 3; + b = (prom[i] & 0xc0) >> 6; - b1=b2|(b1<<8); - palette_set_color_rgb(machine,j*8+i,pal5bit(b1 >> 10),pal5bit(b1 >> 0),pal5bit(b1 >> 5)); - } + palette_set_color_rgb(machine,i,pal3bit(r),pal3bit(g),pal2bit(b)); + } } static TILE_GET_INFO( get_ksayakyu_tile_info ) @@ -51,20 +54,34 @@ static TILE_GET_INFO( get_ksayakyu_tile_info ) int code = memory_region(machine, "user1")[tile_index]; int attr = memory_region(machine, "user1")[tile_index+0x2000]; code+=(attr&3)<<8; - SET_TILE_INFO(1,code,((attr>>2)&0x07)*2,(attr&0x80) ? TILE_FLIPX : 0); + SET_TILE_INFO(1,code,((attr>>2)&0x0f)*2,(attr&0x80) ? TILE_FLIPX : 0); } +/* +xy-- ---- flip bits +--cc cc-- color +---- --bb bank select +*/ static TILE_GET_INFO( get_text_tile_info ) { int code = machine->generic.videoram.u8[tile_index*2+1]; int attr = machine->generic.videoram.u8[tile_index*2]; - int flags=((attr&0x80) ? TILE_FLIPX : 0) | ((attr&0x40) ? TILE_FLIPY : 0); + int flags=((attr&0x80) ? TILE_FLIPX : 0) | ((attr&0x40) ? TILE_FLIPY : 0); + int color = (attr & 0x3c) >> 2; code|=(attr&3)<<8; - SET_TILE_INFO(0,code,((attr>>2)&7),flags); + SET_TILE_INFO(0,code,color,flags); } +/* +[0] X--- ---- flip x + -ttt tttt tile number +[1] yyyy yyyy Y offset +[2] xxxx xxxx X offset +[3] +*/ + static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { const UINT8 *source = machine->generic.spriteram.u8+machine->generic.spriteram_size-4; @@ -91,7 +108,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta drawgfx_transpen(bitmap,cliprect,gfx, tile&0x7f, - (attributes) & 7, + (attributes & 0x78) >> 3, flipx,flipy, sx,sy,0 );