diff options
| author | 2009-06-18 17:44:38 +0000 | |
|---|---|---|
| committer | 2009-06-18 17:44:38 +0000 | |
| commit | a22c4e28a41439d58553d8d997368fdcac3f4c53 (patch) | |
| tree | 12cb15aefe8cd9902d6cb057a65f2640f106d976 /src | |
| parent | 6b50d10ac1004cfed63fe481280d4f4783a1d0c6 (diff) | |
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Pro Sports [Angelo Salese]
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/drivers/liberate.c | 16 | ||||
| -rw-r--r-- | src/mame/video/liberate.c | 90 |
2 files changed, 42 insertions, 64 deletions
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c index 9e927f8420a..524c5ddbfa9 100644 --- a/src/mame/drivers/liberate.c +++ b/src/mame/drivers/liberate.c @@ -37,6 +37,7 @@ WRITE8_HANDLER( deco16_io_w ); WRITE8_HANDLER( prosoccr_io_w ); WRITE8_HANDLER( prosport_io_w ); WRITE8_HANDLER( prosport_paletteram_w ); +WRITE8_HANDLER( prosport_bg_vram_w ); WRITE8_HANDLER( liberate_videoram_w ); WRITE8_HANDLER( liberate_colorram_w ); @@ -241,16 +242,11 @@ static WRITE8_HANDLER( prosport_charram_w ) static ADDRESS_MAP_START( prosport_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0200, 0x021f) AM_RAM_WRITE(prosport_paletteram_w) AM_BASE(&paletteram) - AM_RANGE(0x0400, 0x07ff) AM_RAM AM_BASE(&prosport_bg_vram) AM_RANGE(0x0000, 0x03ff) AM_SHARE(2) AM_RAM -// AM_RANGE(0x0e00, 0x0fff) AM_RAM -// AM_RANGE(0x1600, 0x17ff) AM_RAM -// AM_RANGE(0x1e00, 0x1fff) AM_RAM + AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(prosport_bg_vram_w) AM_BASE(&prosport_bg_vram) AM_RANGE(0x0800, 0x1fff) AM_READWRITE(prosport_charram_r,prosport_charram_w) //0x1e00-0x1ff isn't charram! -// AM_RANGE(0x2000, 0x2fff) AM_RAM //likely i/o AM_RANGE(0x2000, 0x23ff) AM_SHARE(2) AM_RAM - AM_RANGE(0x2800, 0x2bff) AM_RAM -// AM_RANGE(0x2800, 0x2fff) AM_SHARE(2) AM_RAM + AM_RANGE(0x2400, 0x2fff) AM_RAM AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(liberate_colorram_w) AM_BASE(&colorram) AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(liberate_videoram_w) AM_BASE(&videoram) AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE(&spriteram) @@ -864,7 +860,7 @@ static MACHINE_DRIVER_START( prosport ) MDRV_GFXDECODE(prosport) MDRV_PALETTE_LENGTH(256) - MDRV_VIDEO_START(boomrang) + MDRV_VIDEO_START(prosport) MDRV_VIDEO_UPDATE(prosport) /* sound hardware */ @@ -1346,8 +1342,8 @@ static DRIVER_INIT( liberate ) *************************************/ GAME( 1983, prosoccr, 0, prosoccr, prosoccr, prosport, ROT270, "Data East Corporation", "Pro Soccer", 0 ) -GAME( 1983, prosport, 0, prosport, liberate, prosport, ROT270, "Data East Corporation", "Pro. Sports", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1983, prosporta, prosport, prosport, liberate, prosport, ROT270, "Data East Corporation", "Pro. Sports (alternate)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1983, prosport, 0, prosport, liberate, prosport, ROT270, "Data East Corporation", "Pro. Sports", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1983, prosporta, prosport, prosport, liberate, prosport, ROT270, "Data East Corporation", "Pro. Sports (alternate)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1983, boomrang, 0, boomrang, boomrang, prosport, ROT270, "Data East Corporation", "Boomer Rang'r / Genesis (set 1)", 0 ) GAME( 1983, boomranga, boomrang, boomrang, boomrang, prosport, ROT270, "Data East Corporation", "Boomer Rang'r / Genesis (set 2)", 0 ) GAME( 1984, kamikcab, 0, boomrang, kamikcab, prosport, ROT270, "Data East Corporation", "Kamikaze Cabbie", 0 ) diff --git a/src/mame/video/liberate.c b/src/mame/video/liberate.c index fad3e414d51..cb92ab3df20 100644 --- a/src/mame/video/liberate.c +++ b/src/mame/video/liberate.c @@ -75,14 +75,22 @@ static TILE_GET_INFO( get_fix_tile_info ) tile = videoram[tile_index] + ((colorram[tile_index] & 0x7) << 8); color = (colorram[tile_index] & 0x70) >> 4; -//if (tile & 0x300) tile -= 0x000; -//else if(tile & 0x200) tile -= 0x100; -//else if (tile & 0x100) tile -= 0x100; -//else tile += 0x200; - SET_TILE_INFO(0, tile, color, 0); } +static TILE_GET_INFO( prosport_get_back_tile_info ) +{ + int tile; + + /* TODO: bits 0-3 are used and there's an unimplemented per-tile flip y / +0x10 tile banking, understand where. */ + + tile = (prosport_bg_vram[tile_index] & 0xf0)>>4; +// if(!(tile & 0x08)) { tile+=0x10; } + tile+= deco16_io_ram[0]&0x20; //Pro Bowling bg tiles banking bit + + SET_TILE_INFO(8, tile, 0, 0); +} + /***************************************************************************/ WRITE8_HANDLER( deco16_io_w ) @@ -152,6 +160,8 @@ WRITE8_HANDLER( prosport_io_w ) { case 0: //background_disable = ~data & 0x80; + flip_screen_set(space->machine, data & 0x80); + tilemap_mark_all_tiles_dirty(background_tilemap); break; case 2: /* Sound */ soundlatch_w(space, 0, data); @@ -175,6 +185,12 @@ WRITE8_HANDLER( liberate_colorram_w ) tilemap_mark_tile_dirty(fix_tilemap, offset); } +WRITE8_HANDLER( prosport_bg_vram_w ) +{ + prosport_bg_vram[offset] = data; + tilemap_mark_tile_dirty(background_tilemap, offset); +} + /***************************************************************************/ VIDEO_START( prosoccr ) @@ -185,7 +201,6 @@ VIDEO_START( prosoccr ) tilemap_set_transparent_pen(fix_tilemap,0); prosoccr_charram = auto_alloc_array(machine, UINT8, 0x1800*2); - } VIDEO_START( boomrang ) @@ -205,6 +220,14 @@ VIDEO_START( liberate ) tilemap_set_transparent_pen(fix_tilemap,0); } +VIDEO_START( prosport ) +{ + background_tilemap = tilemap_create(machine, prosport_get_back_tile_info,back_scan,16,16,32,32); + fix_tilemap = tilemap_create(machine, get_fix_tile_info,fix_scan,8,8,32,32); + + tilemap_set_transparent_pen(fix_tilemap,0); +} + /***************************************************************************/ WRITE8_HANDLER( prosport_paletteram_w ) @@ -480,60 +503,19 @@ VIDEO_UPDATE( prosoccr ) VIDEO_UPDATE( prosport ) { int mx,my,tile,offs,gfx_region; - int scrollx; + int scrollx,scrolly; bitmap_fill(bitmap,cliprect,0); -// popmessage("%d",scrollx); - offs = 0; -// scrollx = ((deco16_io_ram[0] & 0xf)<<8)+deco16_io_ram[1]; - scrollx = 0;//((deco16_io_ram[0] & 0x3)<<8)+deco16_io_ram[1]; - - /* TODO: enough for showing something for Pro Bowling, not enough yet for Pro Golf...*/ - for(mx = 0;mx < 32;mx++) - { - for(my = 0;my < 16;my++) - { - tile = (prosport_bg_vram[offs] & 0xf0)>>4; - - if(deco16_io_ram[0]&0x20) - tile+=0x20; - - drawgfx(bitmap,screen->machine->gfx[8], - tile,0,0,0,256-16*(mx+0)+scrollx,16*(my+0), - cliprect,TRANSPARENCY_NONE,0); - drawgfx(bitmap,screen->machine->gfx[8], - tile,0,0,0,256-16*(mx+0)+scrollx+512,16*(my+0), - cliprect,TRANSPARENCY_NONE,0); - - offs++; - } - } - -// #if 0 - for(mx = 0;mx < 32;mx++) - { - for(my = 16;my < 32;my++) - { - tile = (prosport_bg_vram[offs] & 0xf0)>>4; + /* TODO: what's bits 0 and 2 for? Internal scrolling state? */ + scrolly = ((deco16_io_ram[0] & 0x8)<<5); + scrollx = ((deco16_io_ram[0] & 0x2)<<7) | (deco16_io_ram[1]); - if(deco16_io_ram[4] & 0x80) - tile+=0x20; - - drawgfx(bitmap,screen->machine->gfx[8], - tile,0,0,0,256-16*(mx+0)+scrollx,16*(my+0), - cliprect,TRANSPARENCY_NONE,0); - drawgfx(bitmap,screen->machine->gfx[8], - tile,0,0,0,256-16*(mx+0)+scrollx+512,16*(my+0), - cliprect,TRANSPARENCY_NONE,0); - - offs++; - } - } -// #endif + tilemap_set_scrolly(background_tilemap,0,scrolly); + tilemap_set_scrollx(background_tilemap,0,-scrollx); - //return 0; + tilemap_draw(bitmap,cliprect,background_tilemap,0,0); // popmessage("%d %02x %02x %02x %02x %02x %02x %02x %02x",scrollx,deco16_io_ram[0],deco16_io_ram[1],deco16_io_ram[2],deco16_io_ram[3] // ,deco16_io_ram[4],deco16_io_ram[5],deco16_io_ram[6],deco16_io_ram[7]); |
