mirror of
https://github.com/holub/mame
synced 2025-06-01 18:41:47 +03:00
Kusayakyuu: fixed color prom hook-up, tilemap color offsets and tilemap flipping [Angelo Salese]
This commit is contained in:
parent
b5c3081f3e
commit
6caf4d0608
@ -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 )
|
||||
|
@ -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 );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user