- Removed colortable

- Renamed some sets in cclimber:
    Crazy Kong -> Crazy Kong Part II
    rpatrolo -> rpatrol
This commit is contained in:
Zsolt Vasvari 2008-02-02 14:09:27 +00:00
parent aa16ee779d
commit 3f37fbeef2
10 changed files with 191 additions and 219 deletions

View File

@ -212,12 +212,12 @@ static WRITE8_HANDLER( custom_cocktail_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w) AM_BASE(&videoram) AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w)
AM_RANGE(0xc000, 0xc000) AM_READ(input_port_0_r) AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x01ff) AM_READ(input_port_0_r)
AM_RANGE(0xc200, 0xc200) AM_READ(input_port_1_r) AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x01ff) AM_READ(input_port_1_r)
AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE(&custom_cpu_ram) AM_RANGE(0xd000, 0xd7ef) AM_RAM AM_BASE(&custom_cpu_ram)
AM_RANGE(0xd7f0, 0xd7ff) AM_READWRITE(custom_cpu_r, MWA8_RAM) AM_RANGE(0xd7f0, 0xd7ff) AM_READWRITE(custom_cpu_r, MWA8_RAM)
AM_RANGE(0xe000, 0xe07f) AM_WRITE(arabian_blitter_w) AM_BASE(&spriteram) AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_BASE(&arabian_blitter)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -229,8 +229,8 @@ ADDRESS_MAP_END
*************************************/ *************************************/
static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0xc800, 0xc800) AM_WRITE(AY8910_control_port_0_w) AM_RANGE(0xc800, 0xc800) AM_MIRROR(0x01ff) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0xca00, 0xca00) AM_WRITE(AY8910_write_port_0_w) AM_RANGE(0xca00, 0xca00) AM_MIRROR(0x01ff) AM_WRITE(AY8910_write_port_0_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -363,8 +363,7 @@ static MACHINE_DRIVER_START( arabian )
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(256, 256) MDRV_SCREEN_SIZE(256, 256)
MDRV_SCREEN_VISIBLE_AREA(0, 255, 11, 244) MDRV_SCREEN_VISIBLE_AREA(0, 255, 11, 244)
MDRV_PALETTE_LENGTH(64) MDRV_PALETTE_LENGTH(256*32)
MDRV_COLORTABLE_LENGTH(256*32)
MDRV_PALETTE_INIT(arabian) MDRV_PALETTE_INIT(arabian)
MDRV_VIDEO_START(arabian) MDRV_VIDEO_START(arabian)

View File

@ -2996,7 +2996,6 @@ static MACHINE_DRIVER_START( scorpion2_vid )
MDRV_VIDEO_UPDATE(addersc2) MDRV_VIDEO_UPDATE(addersc2)
MDRV_PALETTE_LENGTH(16) MDRV_PALETTE_LENGTH(16)
MDRV_COLORTABLE_LENGTH(16)
MDRV_PALETTE_INIT(adder2) MDRV_PALETTE_INIT(adder2)
MDRV_GFXDECODE(adder2) MDRV_GFXDECODE(adder2)

View File

@ -204,7 +204,6 @@ static MACHINE_DRIVER_START( carjmbre )
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(carjmbre) MDRV_GFXDECODE(carjmbre)
MDRV_PALETTE_LENGTH(64) MDRV_PALETTE_LENGTH(64)
MDRV_COLORTABLE_LENGTH(64)
MDRV_PALETTE_INIT(carjmbre) MDRV_PALETTE_INIT(carjmbre)
MDRV_VIDEO_START(carjmbre) MDRV_VIDEO_START(carjmbre)

View File

@ -184,7 +184,7 @@ static ADDRESS_MAP_START( cclimber_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */ AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_RANGE(0x8000, 0x83ff) AM_RAM
AM_RANGE(0x8800, 0x88ff) AM_READWRITE(MRA8_RAM, cclimber_bigsprite_videoram_w) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size) AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */ AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */ /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
@ -211,7 +211,7 @@ static ADDRESS_MAP_START( cannonb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only, Cannon Ball also */ AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only, Cannon Ball also */
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_RANGE(0x8000, 0x83ff) AM_RAM
AM_RANGE(0x8800, 0x8800) AM_READNOP /* must not return what's written (game will reset after coin insert if it returns 0xff)*/ AM_RANGE(0x8800, 0x8800) AM_READNOP /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
AM_RANGE(0x8800, 0x88ff) AM_READWRITE(MRA8_RAM, cclimber_bigsprite_videoram_w) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size) AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
//AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */ //AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */
AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */ /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
@ -233,7 +233,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( swimmer_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( swimmer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_WRITE(cclimber_bigsprite_videoram_w) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size) AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
AM_RANGE(0x9800, 0x981f) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_column_scroll) AM_RANGE(0x9800, 0x981f) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_column_scroll)
AM_RANGE(0x9880, 0x989f) AM_WRITE(MWA8_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_RANGE(0x9880, 0x989f) AM_WRITE(MWA8_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
@ -242,11 +242,11 @@ static ADDRESS_MAP_START( swimmer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w) AM_RANGE(0xa000, 0xa000) AM_READWRITE(input_port_0_r, interrupt_enable_w)
AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w) AM_RANGE(0xa001, 0xa001) AM_WRITE(flip_screen_x_w)
AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w) AM_RANGE(0xa002, 0xa002) AM_WRITE(flip_screen_y_w)
AM_RANGE(0xa003, 0xa003) AM_WRITE(swimmer_sidepanel_enable_w) AM_RANGE(0xa003, 0xa003) AM_WRITE(MWA8_RAM) AM_BASE(&swimmer_sidepanel_enabled)
AM_RANGE(0xa004, 0xa004) AM_WRITE(swimmer_palettebank_w) AM_RANGE(0xa004, 0xa004) AM_WRITE(MWA8_RAM) AM_BASE(&swimmer_palettebank)
AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, swimmer_sh_soundlatch_w) AM_RANGE(0xa800, 0xa800) AM_READWRITE(input_port_1_r, swimmer_sh_soundlatch_w)
AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r) AM_RANGE(0xb000, 0xb000) AM_READ(input_port_2_r)
AM_RANGE(0xb800, 0xb800) AM_READWRITE(input_port_3_r, swimmer_bgcolor_w) /* river color in Swimmer */ AM_RANGE(0xb800, 0xb800) AM_READWRITE(input_port_3_r, MWA8_RAM) AM_BASE(&swimmer_bgcolor)
AM_RANGE(0xb880, 0xb880) AM_READ(input_port_4_r) AM_RANGE(0xb880, 0xb880) AM_READ(input_port_4_r)
AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */ AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */
AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */ AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */
@ -504,7 +504,7 @@ static INPUT_PORTS_START( ckongb )
CKONGIN2 CKONGIN2
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( rpatrolb ) static INPUT_PORTS_START( rpatrol )
PORT_START_TAG("IN0") PORT_START_TAG("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x3e, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x3e, IP_ACTIVE_HIGH, IPT_UNKNOWN )
@ -798,8 +798,7 @@ static MACHINE_DRIVER_START( cclimber )
MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(cclimber) MDRV_GFXDECODE(cclimber)
MDRV_PALETTE_LENGTH(96) MDRV_PALETTE_LENGTH(16*4+8*4)
MDRV_COLORTABLE_LENGTH(16*4+8*4)
MDRV_PALETTE_INIT(cclimber) MDRV_PALETTE_INIT(cclimber)
MDRV_VIDEO_START(generic) MDRV_VIDEO_START(generic)
@ -852,8 +851,7 @@ static MACHINE_DRIVER_START( swimmer )
MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(swimmer) MDRV_GFXDECODE(swimmer)
MDRV_PALETTE_LENGTH(256+32+2) MDRV_PALETTE_LENGTH(64*8+4*8)
MDRV_COLORTABLE_LENGTH(64*8+4*8)
MDRV_PALETTE_INIT(swimmer) MDRV_PALETTE_INIT(swimmer)
MDRV_VIDEO_START(generic) MDRV_VIDEO_START(generic)
@ -1310,7 +1308,7 @@ ROM_END
I think the board was a half-converted board as 'Water Gage' and 'Bon Voyage' don't really fit the theme I think the board was a half-converted board as 'Water Gage' and 'Bon Voyage' don't really fit the theme
of Silver Land so I'm loading the River Patrol GFX instead as they fit better of Silver Land so I'm loading the River Patrol GFX instead as they fit better
*/ */
ROM_START( rpatrolo ) ROM_START( rpatrol )
ROM_REGION( 0x10000, REGION_CPU1, 0 ) ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "sci1.bin", 0x0000, 0x1000, CRC(33b01c90) SHA1(9c8da6dd963bfb0544ef99b8fdedcf86c32cdb6b) ) ROM_LOAD( "sci1.bin", 0x0000, 0x1000, CRC(33b01c90) SHA1(9c8da6dd963bfb0544ef99b8fdedcf86c32cdb6b) )
ROM_LOAD( "sci2.bin", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) ) ROM_LOAD( "sci2.bin", 0x1000, 0x1000, CRC(03f53340) SHA1(35336945f4b634fc4c7791ac9c9e6643c8cd8006) )
@ -1550,18 +1548,18 @@ GAME( 1980, cclimber, 0, cclimber, cclimber, cclimber, ROT0, "Nichibuts
GAME( 1980, cclimbrj, cclimber, cclimber, cclimbrj, cclimbrj, ROT0, "Nichibutsu", "Crazy Climber (Japan)", 0 ) GAME( 1980, cclimbrj, cclimber, cclimber, cclimbrj, cclimbrj, ROT0, "Nichibutsu", "Crazy Climber (Japan)", 0 )
GAME( 1980, ccboot, cclimber, cclimber, cclimber, cclimbrj, ROT0, "bootleg", "Crazy Climber (bootleg set 1)", 0 ) GAME( 1980, ccboot, cclimber, cclimber, cclimber, cclimbrj, ROT0, "bootleg", "Crazy Climber (bootleg set 1)", 0 )
GAME( 1980, ccboot2, cclimber, cclimber, cclimber, cclimbrj, ROT0, "bootleg", "Crazy Climber (bootleg set 2)", 0 ) GAME( 1980, ccboot2, cclimber, cclimber, cclimber, cclimbrj, ROT0, "bootleg", "Crazy Climber (bootleg set 2)", 0 )
GAME( 1981, ckong, 0, cclimber, ckong, 0, ROT270, "Falcon", "Crazy Kong (set 1)", 0 ) GAME( 1981, ckong, 0, cclimber, ckong, 0, ROT270, "Falcon", "Crazy Kong Part II (set 1)", 0 )
GAME( 1981, ckonga, ckong, cclimber, ckong, 0, ROT270, "Falcon", "Crazy Kong (set 2)", 0 ) GAME( 1981, ckonga, ckong, cclimber, ckong, 0, ROT270, "Falcon", "Crazy Kong Part II (set 2)", 0 )
GAME( 1981, ckongjeu, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong (Jeutel bootleg)", 0 ) GAME( 1981, ckongjeu, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong Part II (Jeutel bootleg)", 0 )
GAME( 1981, ckongo, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong (Orca bootleg)", 0 ) GAME( 1981, ckongo, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong (Orca bootleg)", 0 )
GAME( 1981, ckongalc, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong (Alca bootleg)", 0 ) GAME( 1981, ckongalc, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Crazy Kong (Alca bootleg)", 0 )
GAME( 198?, bigkong, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Big Kong", 0 ) GAME( 198?, bigkong, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Big Kong", 0 )
GAME( 1981, monkeyd, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Monkey Donkey", 0 ) GAME( 1981, monkeyd, ckong, cclimber, ckong, 0, ROT270, "bootleg", "Monkey Donkey", 0 )
GAME( 198?, ckongb, ckong, cclimber, ckongb, ckongb, ROT270, "bootleg", "Crazy Kong (Alternative levels)", 0 ) GAME( 198?, ckongb, ckong, cclimber, ckongb, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", 0 )
GAME( 1981, rpatrolb, 0, cclimber, rpatrolb, 0, ROT0, "bootleg", "River Patrol (bootleg)", 0 ) GAME( 1981, rpatrol, 0, cclimber, rpatrol, 0, ROT0, "Orca", "River Patrol (Orca)", 0 )
GAME( 1981, rpatrolo, rpatrolb, cclimber, rpatrolb, 0, ROT0, "Orca", "River Patrol (Orca)", 0 ) GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, 0, ROT0, "bootleg", "River Patrol (bootleg)", 0 )
GAME( 1981, silvland, rpatrolb, cclimber, rpatrolb, 0, ROT0, "Falcon", "Silver Land", 0 ) GAME( 1981, silvland, rpatrol, cclimber, rpatrol, 0, ROT0, "Falcon", "Silver Land", 0 )
GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cannonb, ROT90, "Soft", "Cannon Ball (bootleg on Crazy Climber hardware, set 1)" , GAME_IMPERFECT_GRAPHICS ) GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cannonb, ROT90, "Soft", "Cannon Ball (bootleg on Crazy Climber hardware, set 1)" , GAME_IMPERFECT_GRAPHICS )
GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cannonb2, ROT90, "TV Game Gruenberg", "Cannon Ball (bootleg on Crazy Climber hardware, set 2)", 0 ) GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cannonb2, ROT90, "TV Game Gruenberg", "Cannon Ball (bootleg on Crazy Climber hardware, set 2)", 0 )

View File

@ -75,7 +75,8 @@ static PALETTE_INIT( yamato )
/* chars - 12 bits RGB */ /* chars - 12 bits RGB */
for (i = 0; i < 0x40; i++) for (i = 0; i < 0x40; i++)
{ {
int bit0, bit1, bit2, bit3, r, g, b; int bit0, bit1, bit2, bit3;
int r, g, b;
/* red component */ /* red component */
bit0 = (color_prom[i + 0x00] >> 0) & 0x01; bit0 = (color_prom[i + 0x00] >> 0) & 0x01;
@ -104,7 +105,8 @@ static PALETTE_INIT( yamato )
/* big sprite - 8 bits RGB */ /* big sprite - 8 bits RGB */
for (i = 0; i < 0x20; i++) for (i = 0; i < 0x20; i++)
{ {
int bit0, bit1, bit2, r, g, b; int bit0, bit1, bit2;
int r, g, b;
/* red component */ /* red component */
bit0 = (color_prom[i + 0x80] >> 0) & 0x01; bit0 = (color_prom[i + 0x80] >> 0) & 0x01;
@ -136,35 +138,30 @@ static PALETTE_INIT( toprollr )
{ {
int i; int i;
for (i = 0;i < 32*5;i++) for (i = 0; i < 32*5; i++)
{ {
int bit0,bit1,bit2,r,g,b; int bit0,bit1,bit2;
int r,g,b;
/* red component */ /* red component */
bit0 = (color_prom[0] >> 0) & 0x01; bit0 = (color_prom[0] >> 0) & 0x01;
bit1 = (color_prom[0] >> 1) & 0x01; bit1 = (color_prom[0] >> 1) & 0x01;
bit2 = (color_prom[0] >> 2) & 0x01; bit2 = (color_prom[0] >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */ /* green component */
bit0 = (color_prom[0] >> 3) & 0x01; bit0 = (color_prom[0] >> 3) & 0x01;
bit1 = (color_prom[0] >> 4) & 0x01; bit1 = (color_prom[0] >> 4) & 0x01;
bit2 = (color_prom[0] >> 5) & 0x01; bit2 = (color_prom[0] >> 5) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */ /* blue component */
bit0 = 0; bit0 = 0;
bit1 = (color_prom[0] >> 6) & 0x01; bit1 = (color_prom[0] >> 6) & 0x01;
bit2 = (color_prom[0] >> 7) & 0x01; bit2 = (color_prom[0] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette_set_color(machine, i, MAKE_RGB(r, g, b));
palette_set_color(machine,i,MAKE_RGB(r,g,b));
color_prom++; color_prom++;
} }
@ -220,7 +217,7 @@ static ADDRESS_MAP_START( yamato_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x0000, 0x5fff) AM_WRITE(MWA8_ROM)
AM_RANGE(0x6000, 0x6fff) AM_WRITE(MWA8_RAM) AM_RANGE(0x6000, 0x6fff) AM_WRITE(MWA8_RAM)
AM_RANGE(0x7000, 0x7fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x7000, 0x7fff) AM_WRITE(MWA8_ROM)
AM_RANGE(0x8800, 0x88ff) AM_WRITE(cclimber_bigsprite_videoram_w) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size) AM_RANGE(0x8800, 0x88ff) AM_WRITE(MWA8_RAM) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */ AM_RANGE(0x8900, 0x8bff) AM_WRITE(MWA8_RAM) /* not used, but initialized */
AM_RANGE(0x9000, 0x93ff) AM_WRITE(MWA8_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x9000, 0x93ff) AM_WRITE(MWA8_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
//AM_RANGE(0x9400, 0x97ff) AM_WRITE(MWA8_RAM) /* mirror address, used by Crazy Climber to draw windows */ //AM_RANGE(0x9400, 0x97ff) AM_WRITE(MWA8_RAM) /* mirror address, used by Crazy Climber to draw windows */
@ -283,10 +280,10 @@ static WRITE8_HANDLER(rombank_w)
} }
} }
static ADDRESS_MAP_START( trmem_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( toprollr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_READ(MRA8_BANK1) AM_RANGE(0x0000, 0x5fff) AM_READ(MRA8_BANK1)
AM_RANGE(0x6000, 0x6bff) AM_RAM AM_RANGE(0x6000, 0x6bff) AM_RAM
AM_RANGE(0x8800, 0x88ff) AM_WRITE(cclimber_bigsprite_videoram_w) AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size) AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bsvideoram) AM_SIZE(&cclimber_bsvideoram_size)
AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_BASE(&toprollr_videoram3) AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_BASE(&toprollr_videoram3)
AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&videoram) AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&videoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM AM_BASE(&toprollr_videoram4) AM_RANGE(0x9400, 0x97ff) AM_RAM AM_BASE(&toprollr_videoram4)
@ -306,7 +303,7 @@ static ADDRESS_MAP_START( trmem_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( trport_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( toprollr_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
AM_RANGE(0x08, 0x08) AM_WRITE(AY8910_control_port_0_w) AM_RANGE(0x08, 0x08) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x09, 0x09) AM_WRITE(AY8910_write_port_0_w) AM_RANGE(0x09, 0x09) AM_WRITE(AY8910_write_port_0_w)
@ -466,7 +463,7 @@ static const gfx_layout spritelayout =
}; };
static const gfx_layout trcharlayout = static const gfx_layout toprollr_charlayout =
{ {
8,8, 8,8,
RGN_FRAC(1,2), RGN_FRAC(1,2),
@ -477,7 +474,7 @@ static const gfx_layout trcharlayout =
8*8 8*8
}; };
static const gfx_layout trspritelayout = static const gfx_layout toprollr_spritelayout =
{ {
16,16, /* 16*16 sprites */ 16,16, /* 16*16 sprites */
RGN_FRAC(1,2), /* 128 sprites (64 in Crazy Climber) */ RGN_FRAC(1,2), /* 128 sprites (64 in Crazy Climber) */
@ -499,11 +496,11 @@ static GFXDECODE_START( yamato )
GFXDECODE_ENTRY( REGION_GFX1, 0x2000, spritelayout, 0, 16 ) /* sprite set #2 */ GFXDECODE_ENTRY( REGION_GFX1, 0x2000, spritelayout, 0, 16 ) /* sprite set #2 */
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( tr ) static GFXDECODE_START( toprollr )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, trcharlayout, 0, 40 ) GFXDECODE_ENTRY( REGION_GFX1, 0x0000, toprollr_charlayout, 0, 40 )
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, trcharlayout, 0, 40 ) GFXDECODE_ENTRY( REGION_GFX2, 0x0000, toprollr_charlayout, 0, 40 )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, trspritelayout, 0, 40 ) GFXDECODE_ENTRY( REGION_GFX1, 0x0000, toprollr_spritelayout, 0, 40 )
GFXDECODE_ENTRY( REGION_GFX3, 0x0000, trcharlayout, 0, 40 ) GFXDECODE_ENTRY( REGION_GFX3, 0x0000, toprollr_charlayout, 0, 40 )
GFXDECODE_END GFXDECODE_END
static MACHINE_DRIVER_START( yamato ) static MACHINE_DRIVER_START( yamato )
@ -548,8 +545,8 @@ static MACHINE_DRIVER_START( toprollr )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD(Z80, 3072000) MDRV_CPU_ADD(Z80, 3072000)
MDRV_CPU_PROGRAM_MAP(trmem_map,0) MDRV_CPU_PROGRAM_MAP(toprollr_map,0)
MDRV_CPU_IO_MAP(trport_map,0) MDRV_CPU_IO_MAP(toprollr_io_map,0)
MDRV_CPU_VBLANK_INT(nmi_line_pulse,1) MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_REFRESH_RATE(60)
@ -561,7 +558,7 @@ static MACHINE_DRIVER_START( toprollr )
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1) MDRV_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(tr) MDRV_GFXDECODE(toprollr)
MDRV_PALETTE_LENGTH(32*5) MDRV_PALETTE_LENGTH(32*5)
MDRV_PALETTE_INIT(toprollr) MDRV_PALETTE_INIT(toprollr)

View File

@ -8,6 +8,7 @@
/*----------- defined in video/arabian.c -----------*/ /*----------- defined in video/arabian.c -----------*/
extern UINT8 *arabian_blitter;
extern UINT8 arabian_video_control; extern UINT8 arabian_video_control;
extern UINT8 arabian_flip_screen; extern UINT8 arabian_flip_screen;

View File

@ -14,12 +14,15 @@ extern size_t cclimber_bsvideoram_size;
extern UINT8 *cclimber_bigspriteram; extern UINT8 *cclimber_bigspriteram;
extern UINT8 *cclimber_column_scroll; extern UINT8 *cclimber_column_scroll;
extern UINT8 *swimmer_bgcolor;
extern UINT8 *swimmer_sidepanel_enabled;
extern UINT8 *swimmer_palettebank;
extern UINT8 *toprollr_videoram2; extern UINT8 *toprollr_videoram2;
extern UINT8 *toprollr_videoram3; extern UINT8 *toprollr_videoram3;
extern UINT8 *toprollr_videoram4; extern UINT8 *toprollr_videoram4;
WRITE8_HANDLER( cclimber_colorram_w ); WRITE8_HANDLER( cclimber_colorram_w );
WRITE8_HANDLER( cclimber_bigsprite_videoram_w );
PALETTE_INIT( cclimber ); PALETTE_INIT( cclimber );
VIDEO_UPDATE( cclimber ); VIDEO_UPDATE( cclimber );
@ -29,11 +32,8 @@ VIDEO_UPDATE( yamato );
VIDEO_START( toprollr ); VIDEO_START( toprollr );
VIDEO_UPDATE( toprollr ); VIDEO_UPDATE( toprollr );
WRITE8_HANDLER( swimmer_bgcolor_w );
WRITE8_HANDLER( swimmer_palettebank_w );
PALETTE_INIT( swimmer ); PALETTE_INIT( swimmer );
VIDEO_UPDATE( swimmer ); VIDEO_UPDATE( swimmer );
WRITE8_HANDLER( swimmer_sidepanel_enable_w );
/*----------- defined in audio/cclimber.c -----------*/ /*----------- defined in audio/cclimber.c -----------*/

View File

@ -340,8 +340,8 @@ const game_driver * const drivers[] =
DRIVER( ckongalc ) /* bootleg */ DRIVER( ckongalc ) /* bootleg */
DRIVER( bigkong ) /* bootleg */ DRIVER( bigkong ) /* bootleg */
DRIVER( monkeyd ) /* bootleg */ DRIVER( monkeyd ) /* bootleg */
DRIVER( rpatrol ) /* Orca, from a suspicious set */
DRIVER( rpatrolb ) /* bootleg */ DRIVER( rpatrolb ) /* bootleg */
DRIVER( rpatrolo ) /* Orca, from a suspicious set */
DRIVER( silvland ) /* Falcon */ DRIVER( silvland ) /* Falcon */
DRIVER( yamato ) /* (c) 1983 Sega */ DRIVER( yamato ) /* (c) 1983 Sega */
DRIVER( yamato2 ) /* (c) 1983 Sega */ DRIVER( yamato2 ) /* (c) 1983 Sega */

View File

@ -21,6 +21,7 @@ static UINT8 *converted_gfx;
/* Globals */ /* Globals */
UINT8 *arabian_blitter;
UINT8 arabian_video_control; UINT8 arabian_video_control;
UINT8 arabian_flip_screen; UINT8 arabian_flip_screen;
@ -36,18 +37,11 @@ PALETTE_INIT( arabian )
{ {
int i; int i;
/* there are effectively 6 bits of color: 2 red, 2 green, 2 blue */
for (i = 0; i < 64; i++)
{
palette_set_color_rgb(machine, i,
((i >> 5) & 1) * (153*192/255) + ((i >> 4) & 1) * (102*192/255) + ((i & 0x30) ? 63 : 0),
((i >> 3) & 1) * (156*192/255) + ((i >> 2) & 1) * (99*192/255) + ((i & 0x0c) ? 63 : 0),
((i >> 1) & 1) * 192 + ((i >> 0) & 1) * 63);
}
/* there are 13 color table bits */ /* there are 13 color table bits */
for (i = 0; i < (1 << 13); i++) for (i = 0; i < (1 << 13); i++)
{ {
int r, g, b;
int ena = (i >> 12) & 1; int ena = (i >> 12) & 1;
int enb = (i >> 11) & 1; int enb = (i >> 11) & 1;
int abhf = (~i >> 10) & 1; int abhf = (~i >> 10) & 1;
@ -146,9 +140,19 @@ PALETTE_INIT( arabian )
int bhi = ab; int bhi = ab;
int bbase = (!abhf & az) ? 0 : ab; int bbase = (!abhf & az) ? 0 : ab;
*colortable++ = (rhi << 5) | (rlo << 4) | /* convert an RGB color -
(ghi << 3) | (glo << 2) | there are effectively 6 bits of color: 2 red, 2 green, 2 blue */
(bhi << 1) | bbase; r = ( rhi * (int)(((153.0 * 192) / 255) + 0.5)) +
( rlo * (int)(((102.0 * 192) / 255) + 0.5)) +
((rhi | rlo) ? 63 : 0);
g = ( ghi * (int)(((156.0 * 192) / 255) + 0.5)) +
( glo * (int)((( 99.0 * 192) / 255) + 0.5)) +
((ghi | glo) ? 63 : 0);
b = (bhi * 192) + (bbase * 63);
palette_set_color(machine, i, MAKE_RGB(r, g, b));
} }
} }
@ -272,19 +276,18 @@ static void blit_area(UINT8 plane, UINT16 src, UINT8 x, UINT8 y, UINT8 sx, UINT8
WRITE8_HANDLER( arabian_blitter_w ) WRITE8_HANDLER( arabian_blitter_w )
{ {
/* write the data */ /* write the data */
offset &= 7; arabian_blitter[offset] = data;
spriteram[offset] = data;
/* watch for a write to offset 6 -- that triggers the blit */ /* watch for a write to offset 6 -- that triggers the blit */
if ((offset & 0x07) == 6) if (offset == 6)
{ {
/* extract the data */ /* extract the data */
int plane = spriteram[offset - 6]; int plane = arabian_blitter[0];
int src = spriteram[offset - 5] | (spriteram[offset - 4] << 8); int src = arabian_blitter[1] | (arabian_blitter[2] << 8);
int x = spriteram[offset - 2] << 2; int x = arabian_blitter[4] << 2;
int y = spriteram[offset - 3]; int y = arabian_blitter[3];
int sx = spriteram[offset - 0]; int sx = arabian_blitter[6];
int sy = spriteram[offset - 1]; int sy = arabian_blitter[5];
/* blit it */ /* blit it */
blit_area(plane, src, x, y, sx, sy); blit_area(plane, src, x, y, sx, sy);
@ -304,7 +307,7 @@ WRITE8_HANDLER( arabian_videoram_w )
UINT8 *base; UINT8 *base;
UINT8 x, y; UINT8 x, y;
/* determine X/Y and mark the area dirty */ /* determine X/Y */
x = (offset >> 8) << 2; x = (offset >> 8) << 2;
y = offset & 0xff; y = offset & 0xff;
@ -324,7 +327,7 @@ WRITE8_HANDLER( arabian_videoram_w )
*/ */
/* enable writes to AZ/AR */ /* enable writes to AZ/AR */
if (spriteram[0] & 0x08) if (arabian_blitter[0] & 0x08)
{ {
base[0] = (base[0] & ~0x03) | ((data & 0x10) >> 3) | ((data & 0x01) >> 0); base[0] = (base[0] & ~0x03) | ((data & 0x10) >> 3) | ((data & 0x01) >> 0);
base[1] = (base[1] & ~0x03) | ((data & 0x20) >> 4) | ((data & 0x02) >> 1); base[1] = (base[1] & ~0x03) | ((data & 0x20) >> 4) | ((data & 0x02) >> 1);
@ -333,7 +336,7 @@ WRITE8_HANDLER( arabian_videoram_w )
} }
/* enable writes to AG/AB */ /* enable writes to AG/AB */
if (spriteram[0] & 0x04) if (arabian_blitter[0] & 0x04)
{ {
base[0] = (base[0] & ~0x0c) | ((data & 0x10) >> 1) | ((data & 0x01) << 2); base[0] = (base[0] & ~0x0c) | ((data & 0x10) >> 1) | ((data & 0x01) << 2);
base[1] = (base[1] & ~0x0c) | ((data & 0x20) >> 2) | ((data & 0x02) << 1); base[1] = (base[1] & ~0x0c) | ((data & 0x20) >> 2) | ((data & 0x02) << 1);
@ -342,7 +345,7 @@ WRITE8_HANDLER( arabian_videoram_w )
} }
/* enable writes to BZ/BR */ /* enable writes to BZ/BR */
if (spriteram[0] & 0x02) if (arabian_blitter[0] & 0x02)
{ {
base[0] = (base[0] & ~0x30) | ((data & 0x10) << 1) | ((data & 0x01) << 4); base[0] = (base[0] & ~0x30) | ((data & 0x10) << 1) | ((data & 0x01) << 4);
base[1] = (base[1] & ~0x30) | ((data & 0x20) << 0) | ((data & 0x02) << 3); base[1] = (base[1] & ~0x30) | ((data & 0x20) << 0) | ((data & 0x02) << 3);
@ -351,7 +354,7 @@ WRITE8_HANDLER( arabian_videoram_w )
} }
/* enable writes to BG/BB */ /* enable writes to BG/BB */
if (spriteram[0] & 0x01) if (arabian_blitter[0] & 0x01)
{ {
base[0] = (base[0] & ~0xc0) | ((data & 0x10) << 3) | ((data & 0x01) << 6); base[0] = (base[0] & ~0xc0) | ((data & 0x10) << 3) | ((data & 0x01) << 6);
base[1] = (base[1] & ~0xc0) | ((data & 0x20) << 2) | ((data & 0x02) << 5); base[1] = (base[1] & ~0xc0) | ((data & 0x20) << 2) | ((data & 0x02) << 5);
@ -370,7 +373,7 @@ WRITE8_HANDLER( arabian_videoram_w )
VIDEO_UPDATE( arabian ) VIDEO_UPDATE( arabian )
{ {
const pen_t *colortable = &machine->remapped_colortable[(arabian_video_control >> 3) << 8]; const pen_t *pens = &machine->pens[(arabian_video_control >> 3) << 8];
int y; int y;
/* render the screen from the bitmap */ /* render the screen from the bitmap */
@ -378,7 +381,7 @@ VIDEO_UPDATE( arabian )
{ {
/* non-flipped case */ /* non-flipped case */
if (!arabian_flip_screen) if (!arabian_flip_screen)
draw_scanline8(bitmap, 0, y, BITMAP_WIDTH, &main_bitmap[y * BITMAP_WIDTH], colortable, -1); draw_scanline8(bitmap, 0, y, BITMAP_WIDTH, &main_bitmap[y * BITMAP_WIDTH], pens, -1);
/* flipped case */ /* flipped case */
else else
@ -387,7 +390,7 @@ VIDEO_UPDATE( arabian )
int x; int x;
for (x = 0; x < BITMAP_WIDTH; x++) for (x = 0; x < BITMAP_WIDTH; x++)
scanline[BITMAP_WIDTH - 1 - x] = main_bitmap[y * BITMAP_WIDTH + x]; scanline[BITMAP_WIDTH - 1 - x] = main_bitmap[y * BITMAP_WIDTH + x];
draw_scanline8(bitmap, 0, BITMAP_HEIGHT - 1 - y, BITMAP_WIDTH, scanline, colortable, -1); draw_scanline8(bitmap, 0, BITMAP_HEIGHT - 1 - y, BITMAP_WIDTH, scanline, pens, -1);
} }
} }
return 0; return 0;

View File

@ -7,16 +7,16 @@
***************************************************************************/ ***************************************************************************/
#include "driver.h" #include "driver.h"
#include "deprecat.h" #include "video\resnet.h"
#include "includes/cclimber.h"
UINT8 *cclimber_bsvideoram; UINT8 *cclimber_bsvideoram;
size_t cclimber_bsvideoram_size; size_t cclimber_bsvideoram_size;
UINT8 *cclimber_bigspriteram; UINT8 *cclimber_bigspriteram;
UINT8 *cclimber_column_scroll; UINT8 *cclimber_column_scroll;
static int palettebank; UINT8 *swimmer_bgcolor;
static int sidepanel_enabled; UINT8 *swimmer_sidepanel_enabled;
UINT8 *swimmer_palettebank;
/*************************************************************************** /***************************************************************************
@ -38,52 +38,47 @@ static int sidepanel_enabled;
***************************************************************************/ ***************************************************************************/
PALETTE_INIT( cclimber ) PALETTE_INIT( cclimber )
{ {
static const int resistances_rg[3] = { 1000, 470, 220 };
static const int resistances_b [2] = { 470, 220 };
double rweights[3], gweights[3], bweights[2];
int i; int i;
#define TOTAL_COLORS(gfxn) (machine->gfx[gfxn]->total_colors * machine->gfx[gfxn]->color_granularity)
#define COLOR(gfxn,offs) (colortable[machine->drv->gfxdecodeinfo[gfxn].color_codes_start + (offs)])
/* compute the color output resistor weights */
compute_resistor_weights(0, 255, -1.0,
3, &resistances_rg[0], rweights, 0, 0,
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
for (i = 0;i < machine->drv->total_colors;i++) for (i = 0;i < machine->drv->total_colors; i++)
{ {
int bit0,bit1,bit2,r,g,b; UINT8 data;
int bit0, bit1, bit2;
int r, g, b;
if (i & 0x07)
data = color_prom[i];
else
/* River Patrol shows that background is pen 0 */
data = color_prom[0];
/* red component */ /* red component */
bit0 = (*color_prom >> 0) & 0x01; bit0 = (data >> 0) & 0x01;
bit1 = (*color_prom >> 1) & 0x01; bit1 = (data >> 1) & 0x01;
bit2 = (*color_prom >> 2) & 0x01; bit2 = (data >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; r = combine_3_weights(rweights, bit0, bit1, bit2);
/* green component */ /* green component */
bit0 = (*color_prom >> 3) & 0x01; bit0 = (data >> 3) & 0x01;
bit1 = (*color_prom >> 4) & 0x01; bit1 = (data >> 4) & 0x01;
bit2 = (*color_prom >> 5) & 0x01; bit2 = (data >> 5) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; g = combine_3_weights(gweights, bit0, bit1, bit2);
/* blue component */ /* blue component */
bit0 = 0; bit0 = (data >> 6) & 0x01;
bit1 = (*color_prom >> 6) & 0x01; bit1 = (data >> 7) & 0x01;
bit2 = (*color_prom >> 7) & 0x01; b = combine_2_weights(bweights, bit0, bit1);
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b)); palette_set_color(machine, i, MAKE_RGB(r, g, b));
color_prom++;
}
/* character and sprite lookup table */
/* they use colors 0-63 */
for (i = 0;i < TOTAL_COLORS(0);i++)
{
/* pen 0 always uses color 0 (background in River Patrol and Silver Land) */
if (i % 4 == 0) COLOR(0,i) = 0;
else COLOR(0,i) = i;
}
/* big sprite lookup table */
/* it uses colors 64-95 */
for (i = 0;i < TOTAL_COLORS(2);i++)
{
if (i % 4 == 0) COLOR(2,i) = 0;
else COLOR(2,i) = i + 64;
} }
} }
@ -124,91 +119,87 @@ PALETTE_INIT( cclimber )
***************************************************************************/ ***************************************************************************/
#define BGPEN (256+32)
#define SIDEPEN (256+32+1)
PALETTE_INIT( swimmer ) PALETTE_INIT( swimmer )
{ {
int i; int i;
#define TOTAL_COLORS(gfxn) (machine->gfx[gfxn]->total_colors * machine->gfx[gfxn]->color_granularity)
#define COLOR(gfxn,offs) (colortable[machine->drv->gfxdecodeinfo[gfxn].color_codes_start + (offs)])
for (i = 0; i < 0x200; i++)
for (i = 0;i < 256;i++)
{ {
int bit0,bit1,bit2,r,g,b; rgb_t color;
/* non-backgrond pens */
/* red component */ if (i & 0x07)
bit0 = (color_prom[i] >> 0) & 0x01;
bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01;
r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* green component */
bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i+256] >> 0) & 0x01;
bit2 = (color_prom[i+256] >> 1) & 0x01;
g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* blue component */
bit0 = 0;
bit1 = (color_prom[i+256] >> 2) & 0x01;
bit2 = (color_prom[i+256] >> 3) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b));
/* side panel */
if (i % 8)
{ {
COLOR(0,i) = i; int bit0, bit1, bit2;
COLOR(0,i+256) = i; int r, g, b;
/* red component */
bit0 = (color_prom[(i & 0xff) + 0x000] >> 0) & 0x01;
bit1 = (color_prom[(i & 0xff) + 0x000] >> 1) & 0x01;
bit2 = (color_prom[(i & 0xff) + 0x000] >> 2) & 0x01;
r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* green component */
bit0 = (color_prom[(i & 0xff) + 0x000] >> 3) & 0x01;
bit1 = (color_prom[(i & 0xff) + 0x100] >> 0) & 0x01;
bit2 = (color_prom[(i & 0xff) + 0x100] >> 1) & 0x01;
g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* blue component */
bit0 = 0;
bit1 = (color_prom[(i & 0xff) + 0x100] >> 2) & 0x01;
bit2 = (color_prom[(i & 0xff) + 0x100] >> 3) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
color = MAKE_RGB(r,g,b);
} }
/* backgrond pen */
else else
{ {
/* background */ if (i & 0x100)
COLOR(0,i) = BGPEN; /* side panel */
COLOR(0,i+256) = SIDEPEN; #if 0
// values calculated from the resistors don't seem to match the real board
color = MAKE_RGB(0x24, 0x5d, 0x4e);
#endif
color = MAKE_RGB(0x20, 0x98, 0x79);
else
/* 'water' background -- will be modified dynamically later */
color = RGB_BLACK;
} }
palette_set_color(machine, i, color);
} }
color_prom += 2 * 256; color_prom += 0x200;
/* big sprite */ /* big sprite */
for (i = 0;i < 32;i++) for (i = 0; i < 0x20; i++)
{ {
int bit0,bit1,bit2,r,g,b; int bit0, bit1, bit2;
int r, g, b;
/* red component */ /* red component */
bit0 = (color_prom[i] >> 0) & 0x01; bit0 = (color_prom[i] >> 0) & 0x01;
bit1 = (color_prom[i] >> 1) & 0x01; bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01; bit2 = (color_prom[i] >> 2) & 0x01;
r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* green component */ /* green component */
bit0 = (color_prom[i] >> 3) & 0x01; bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01; bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01; bit2 = (color_prom[i] >> 5) & 0x01;
g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* blue component */ /* blue component */
bit0 = 0; bit0 = 0;
bit1 = (color_prom[i] >> 6) & 0x01; bit1 = (color_prom[i] >> 6) & 0x01;
bit2 = (color_prom[i] >> 7) & 0x01; bit2 = (color_prom[i] >> 7) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
palette_set_color(machine,i+256,MAKE_RGB(r,g,b)); palette_set_color(machine, i + 0x200, MAKE_RGB(r, g, b));
if (i % 8 == 0) COLOR(2,i) = BGPEN; /* enforce transparency */
else COLOR(2,i) = i+256;
} }
/* background */
palette_set_color(machine,BGPEN,MAKE_RGB(0,0,0));
/* side panel background color */
#if 0
// values calculated from the resistors don't seem to match the real board
palette_set_color(machine,SIDEPEN,MAKE_RGB(0x24,0x5d,0x4e));
#endif
palette_set_color(machine,SIDEPEN,MAKE_RGB(0x20,0x98,0x79));
} }
@ -229,31 +220,37 @@ PALETTE_INIT( swimmer )
bit 0 -- 1 kohm resistor -- BLUE bit 0 -- 1 kohm resistor -- BLUE
***************************************************************************/ ***************************************************************************/
WRITE8_HANDLER( swimmer_bgcolor_w )
{
int bit0,bit1,bit2;
int r,g,b;
static void swimmer_set_background_pen(running_machine *machine)
{
int i;
pen_t color;
int bit0, bit1, bit2;
int r, g, b;
/* red component */ /* red component */
bit0 = 0; bit0 = 0;
bit1 = (data >> 6) & 0x01; bit1 = (*swimmer_bgcolor >> 6) & 0x01;
bit2 = (data >> 7) & 0x01; bit2 = (*swimmer_bgcolor >> 7) & 0x01;
r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; r = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* green component */ /* green component */
bit0 = (data >> 3) & 0x01; bit0 = (*swimmer_bgcolor >> 3) & 0x01;
bit1 = (data >> 4) & 0x01; bit1 = (*swimmer_bgcolor >> 4) & 0x01;
bit2 = (data >> 5) & 0x01; bit2 = (*swimmer_bgcolor >> 5) & 0x01;
g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; g = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
/* blue component */ /* blue component */
bit0 = (data >> 0) & 0x01; bit0 = (*swimmer_bgcolor >> 0) & 0x01;
bit1 = (data >> 1) & 0x01; bit1 = (*swimmer_bgcolor >> 1) & 0x01;
bit2 = (data >> 2) & 0x01; bit2 = (*swimmer_bgcolor >> 2) & 0x01;
b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2; b = 0x20 * bit0 + 0x40 * bit1 + 0x80 * bit2;
palette_set_color(Machine,BGPEN,MAKE_RGB(r,g,b)); color = MAKE_RGB(r, g, b);
/* set pen 0 if each color code */
for (i = 0; i < 0x100; i += 8)
palette_set_color(machine, i, color);
} }
@ -263,31 +260,8 @@ WRITE8_HANDLER( cclimber_colorram_w )
/* bit 5 of the address is not used for color memory. There is just */ /* bit 5 of the address is not used for color memory. There is just */
/* 512 bytes of memory; every two consecutive rows share the same memory */ /* 512 bytes of memory; every two consecutive rows share the same memory */
/* region. */ /* region. */
offset &= 0xffdf;
colorram[offset] = data; colorram[offset] = data;
colorram[offset + 0x20] = data; colorram[offset ^ 0x20] = data;
}
WRITE8_HANDLER( cclimber_bigsprite_videoram_w )
{
cclimber_bsvideoram[offset] = data;
}
WRITE8_HANDLER( swimmer_palettebank_w )
{
palettebank = data & 1;
}
WRITE8_HANDLER( swimmer_sidepanel_enable_w )
{
sidepanel_enabled = data & 1;
} }
@ -553,6 +527,8 @@ VIDEO_UPDATE( swimmer )
{ {
int offs; int offs;
swimmer_set_background_pen(machine);
for (offs = videoram_size - 1;offs >= 0;offs--) for (offs = videoram_size - 1;offs >= 0;offs--)
{ {
int sx,sy,flipx,flipy,color; int sx,sy,flipx,flipy,color;
@ -564,8 +540,8 @@ VIDEO_UPDATE( swimmer )
/* vertical flipping flips two adjacent characters */ /* vertical flipping flips two adjacent characters */
if (flipy) sy ^= 1; if (flipy) sy ^= 1;
color = (colorram[offs] & 0x0f) + 0x10 * palettebank; color = (colorram[offs] & 0x0f) + 0x10 * (*swimmer_palettebank & 0x01);
if (sx >= 24 && sidepanel_enabled) if (sx >= 24 && (*swimmer_sidepanel_enabled & 0x01))
{ {
color += 32; color += 32;
} }
@ -639,7 +615,7 @@ VIDEO_UPDATE( swimmer )
drawgfx(bitmap,machine->gfx[1], drawgfx(bitmap,machine->gfx[1],
(spriteram[offs] & 0x3f) | (spriteram[offs + 1] & 0x10) << 2, (spriteram[offs] & 0x3f) | (spriteram[offs + 1] & 0x10) << 2,
(spriteram[offs + 1] & 0x0f) + 0x10 * palettebank, (spriteram[offs + 1] & 0x0f) + 0x10 * (*swimmer_palettebank & 0x01),
flipx,flipy, flipx,flipy,
sx,sy, sx,sy,
cliprect,TRANSPARENCY_PEN,0); cliprect,TRANSPARENCY_PEN,0);