summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2009-06-18 17:44:38 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2009-06-18 17:44:38 +0000
commita22c4e28a41439d58553d8d997368fdcac3f4c53 (patch)
tree12cb15aefe8cd9902d6cb057a65f2640f106d976 /src
parent6b50d10ac1004cfed63fe481280d4f4783a1d0c6 (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.c16
-rw-r--r--src/mame/video/liberate.c90
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]);