- Removed color table from a couple of games

- Renamed bking2 to bking
This commit is contained in:
Zsolt Vasvari 2008-01-29 02:50:12 +00:00
parent 2a63836833
commit 274235aef1
7 changed files with 167 additions and 193 deletions

4
.gitattributes vendored
View File

@ -1216,7 +1216,7 @@ src/mame/drivers/bigstrkb.c svneol=native#text/plain
src/mame/drivers/bionicc.c svneol=native#text/plain
src/mame/drivers/bishi.c svneol=native#text/plain
src/mame/drivers/bishjan.c svneol=native#text/plain
src/mame/drivers/bking2.c svneol=native#text/plain
src/mame/drivers/bking.c svneol=native#text/plain
src/mame/drivers/bladestl.c svneol=native#text/plain
src/mame/drivers/blktiger.c svneol=native#text/plain
src/mame/drivers/blmbycar.c svneol=native#text/plain
@ -2623,7 +2623,7 @@ src/mame/video/bigevglf.c svneol=native#text/plain
src/mame/video/bigstrkb.c svneol=native#text/plain
src/mame/video/bionicc.c svneol=native#text/plain
src/mame/video/bishi.c svneol=native#text/plain
src/mame/video/bking2.c svneol=native#text/plain
src/mame/video/bking.c svneol=native#text/plain
src/mame/video/bladestl.c svneol=native#text/plain
src/mame/video/blktiger.c svneol=native#text/plain
src/mame/video/blmbycar.c svneol=native#text/plain

View File

@ -241,8 +241,7 @@ static MACHINE_DRIVER_START( appoooh )
MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(appoooh)
MDRV_PALETTE_LENGTH(32)
MDRV_COLORTABLE_LENGTH(32*8+32*8)
MDRV_PALETTE_LENGTH(32*8+32*8)
MDRV_PALETTE_INIT(appoooh)
MDRV_VIDEO_START(appoooh)
@ -486,8 +485,7 @@ static MACHINE_DRIVER_START( robowres )
MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(robowres)
MDRV_PALETTE_LENGTH(32)
MDRV_COLORTABLE_LENGTH(32*8+32*8)
MDRV_PALETTE_LENGTH(32*8+32*8)
MDRV_PALETTE_INIT(robowres)
MDRV_VIDEO_START(appoooh)

View File

@ -34,46 +34,46 @@ extern WRITE8_HANDLER( buggychl_mcu_w );
extern READ8_HANDLER( buggychl_mcu_r );
extern READ8_HANDLER( buggychl_mcu_status_r );
extern PALETTE_INIT( bking2 );
extern PALETTE_INIT( bking );
extern VIDEO_START( bking2 );
extern VIDEO_UPDATE( bking2 );
extern VIDEO_EOF( bking2 );
extern VIDEO_START( bking );
extern VIDEO_UPDATE( bking );
extern VIDEO_EOF( bking );
extern WRITE8_HANDLER( bking2_xld1_w );
extern WRITE8_HANDLER( bking2_yld1_w );
extern WRITE8_HANDLER( bking2_xld2_w );
extern WRITE8_HANDLER( bking2_yld2_w );
extern WRITE8_HANDLER( bking2_xld3_w );
extern WRITE8_HANDLER( bking2_yld3_w );
extern WRITE8_HANDLER( bking2_msk_w );
extern WRITE8_HANDLER( bking2_cont1_w );
extern WRITE8_HANDLER( bking2_cont2_w );
extern WRITE8_HANDLER( bking2_cont3_w );
extern WRITE8_HANDLER( bking2_hitclr_w );
extern WRITE8_HANDLER( bking2_playfield_w );
extern WRITE8_HANDLER( bking_xld1_w );
extern WRITE8_HANDLER( bking_yld1_w );
extern WRITE8_HANDLER( bking_xld2_w );
extern WRITE8_HANDLER( bking_yld2_w );
extern WRITE8_HANDLER( bking_xld3_w );
extern WRITE8_HANDLER( bking_yld3_w );
extern WRITE8_HANDLER( bking_msk_w );
extern WRITE8_HANDLER( bking_cont1_w );
extern WRITE8_HANDLER( bking_cont2_w );
extern WRITE8_HANDLER( bking_cont3_w );
extern WRITE8_HANDLER( bking_hitclr_w );
extern WRITE8_HANDLER( bking_playfield_w );
extern READ8_HANDLER( bking2_input_port_5_r );
extern READ8_HANDLER( bking2_input_port_6_r );
extern READ8_HANDLER( bking2_pos_r );
extern READ8_HANDLER( bking_input_port_5_r );
extern READ8_HANDLER( bking_input_port_6_r );
extern READ8_HANDLER( bking_pos_r );
UINT8 *bking2_playfield_ram;
UINT8 *bking_playfield_ram;
static int bking3_addr_h, bking3_addr_l;
static int sndnmi_enable = 1;
static READ8_HANDLER( bking2_sndnmi_disable_r )
static READ8_HANDLER( bking_sndnmi_disable_r )
{
sndnmi_enable = 0;
return 0;
}
static WRITE8_HANDLER( bking2_sndnmi_enable_w )
static WRITE8_HANDLER( bking_sndnmi_enable_w )
{
sndnmi_enable = 1;
}
static WRITE8_HANDLER( bking2_soundlatch_w )
static WRITE8_HANDLER( bking_soundlatch_w )
{
int i,code;
@ -114,48 +114,48 @@ static READ8_HANDLER( bking3_ext_check_r )
return 0x31; //no "bad rom.", no "bad ext."
}
static ADDRESS_MAP_START( bking2_map, ADDRESS_SPACE_PROGRAM, 8 )
static ADDRESS_MAP_START( bking_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x83ff) AM_RAM
AM_RANGE(0x9000, 0x97ff) AM_RAM AM_WRITE(bking2_playfield_w) AM_BASE(&bking2_playfield_ram)
AM_RANGE(0x9000, 0x97ff) AM_RAM AM_WRITE(bking_playfield_w) AM_BASE(&bking_playfield_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bking2_io_map, ADDRESS_SPACE_IO, 8 )
static ADDRESS_MAP_START( bking_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking2_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking2_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking2_xld2_w)
AM_RANGE(0x03, 0x03) AM_READWRITE(input_port_3_r, bking2_yld2_w)
AM_RANGE(0x04, 0x04) AM_READWRITE(input_port_4_r, bking2_xld3_w)
AM_RANGE(0x05, 0x05) AM_READWRITE(bking2_input_port_5_r, bking2_yld3_w)
AM_RANGE(0x06, 0x06) AM_READWRITE(bking2_input_port_6_r, bking2_msk_w)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking_xld2_w)
AM_RANGE(0x03, 0x03) AM_READWRITE(input_port_3_r, bking_yld2_w)
AM_RANGE(0x04, 0x04) AM_READWRITE(input_port_4_r, bking_xld3_w)
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x08, 0x08) AM_WRITE(bking2_cont1_w)
AM_RANGE(0x09, 0x09) AM_WRITE(bking2_cont2_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking2_cont3_w)
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking2_soundlatch_w)
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking2_eport2_w) this is not shown to be connected anywhere
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking2_hitclr_w)
AM_RANGE(0x07, 0x1f) AM_READ(bking2_pos_r)
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bking3_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking2_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking2_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking2_xld2_w)
AM_RANGE(0x03, 0x03) AM_READWRITE(input_port_3_r, bking2_yld2_w)
AM_RANGE(0x04, 0x04) AM_READWRITE(input_port_4_r, bking2_xld3_w)
AM_RANGE(0x05, 0x05) AM_READWRITE(bking2_input_port_5_r, bking2_yld3_w)
AM_RANGE(0x06, 0x06) AM_READWRITE(bking2_input_port_6_r, bking2_msk_w)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking_xld2_w)
AM_RANGE(0x03, 0x03) AM_READWRITE(input_port_3_r, bking_yld2_w)
AM_RANGE(0x04, 0x04) AM_READWRITE(input_port_4_r, bking_xld3_w)
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x08, 0x08) AM_WRITE(bking2_cont1_w)
AM_RANGE(0x09, 0x09) AM_WRITE(bking2_cont2_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking2_cont3_w)
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking2_soundlatch_w)
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking2_eport2_w) this is not shown to be connected anywhere
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking2_hitclr_w)
AM_RANGE(0x07, 0x1f) AM_READ(bking2_pos_r)
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
AM_RANGE(0x2f, 0x2f) AM_READWRITE(buggychl_mcu_r, buggychl_mcu_w)
AM_RANGE(0x4f, 0x4f) AM_READWRITE(buggychl_mcu_status_r, unk_w)
AM_RANGE(0x60, 0x60) AM_READ(bking3_extrarom_r)
@ -163,7 +163,7 @@ static ADDRESS_MAP_START( bking3_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
static ADDRESS_MAP_START( bking_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x2fff) AM_ROM //only bking3
AM_RANGE(0x4000, 0x43ff) AM_RAM
@ -172,7 +172,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x4402, 0x4402) AM_WRITE(AY8910_control_port_1_w)
AM_RANGE(0x4403, 0x4403) AM_READWRITE(AY8910_read_port_1_r, AY8910_write_port_1_w)
AM_RANGE(0x4800, 0x4800) AM_READ(soundlatch_r)
AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking2_sndnmi_disable_r, bking2_sndnmi_enable_w)
AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w)
AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
ADDRESS_MAP_END
@ -523,7 +523,7 @@ static const gfx_layout balllayout =
16*8 /* every sprite takes 16 consecutive bytes */
};
static GFXDECODE_START( bking2 )
static GFXDECODE_START( bking )
GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 4 ) /* playfield */
GFXDECODE_ENTRY( REGION_GFX2, 0, crowlayout, 4*8, 4 ) /* crow */
GFXDECODE_ENTRY( REGION_GFX3, 0, balllayout, 4*8+4*4, 4 ) /* ball 1 */
@ -545,21 +545,21 @@ static const struct AY8910interface ay8910_interface =
portb_w
};
static MACHINE_DRIVER_START( bking2 )
static MACHINE_DRIVER_START( bking )
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main_cpu", Z80, XTAL_12MHz/4) /* 3 MHz */
MDRV_CPU_PROGRAM_MAP(bking2_map,0)
MDRV_CPU_IO_MAP(bking2_io_map,0)
MDRV_CPU_PROGRAM_MAP(bking_map,0)
MDRV_CPU_IO_MAP(bking_io_map,0)
MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
MDRV_CPU_ADD(Z80, XTAL_6MHz/2) /* 3 MHz */
/* audio CPU */
MDRV_CPU_PROGRAM_MAP(sound_map,0)
/* interrupts (from Jungle King hardware, might be wrong): */
/* - no interrupts synced with vblank */
/* - NMI triggered by the main CPU */
/* - periodic IRQ, with frequency 6000000/(4*16*16*10*16) = 36.621 Hz, */
MDRV_CPU_PROGRAM_MAP(bking_audio_map,0)
/* interrupts (from Jungle King hardware, might be wrong): */
/* - no interrupts synced with vblank */
/* - NMI triggered by the main CPU */
/* - periodic IRQ, with frequency 6000000/(4*16*16*10*16) = 36.621 Hz, */
MDRV_CPU_PERIODIC_INT(irq0_line_hold, (double)6000000/(4*16*16*10*16))
MDRV_SCREEN_REFRESH_RATE(60)
@ -570,14 +570,13 @@ static MACHINE_DRIVER_START( bking2 )
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MDRV_GFXDECODE(bking2)
MDRV_PALETTE_LENGTH(512)
MDRV_COLORTABLE_LENGTH(4*8+4*4+4*2+4*2)
MDRV_GFXDECODE(bking)
MDRV_PALETTE_LENGTH(4*8+4*4+4*2+4*2)
MDRV_PALETTE_INIT(bking2)
MDRV_VIDEO_START(bking2)
MDRV_VIDEO_UPDATE(bking2)
MDRV_VIDEO_EOF(bking2)
MDRV_PALETTE_INIT(bking)
MDRV_VIDEO_START(bking)
MDRV_VIDEO_UPDATE(bking)
MDRV_VIDEO_EOF(bking)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
@ -594,7 +593,7 @@ static MACHINE_DRIVER_START( bking2 )
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( bking3 )
MDRV_IMPORT_FROM(bking2)
MDRV_IMPORT_FROM(bking)
MDRV_CPU_MODIFY("main_cpu")
MDRV_CPU_IO_MAP(bking3_io_map,0)
@ -895,6 +894,6 @@ ROM_START( bking3 )
ROM_LOAD( "a24-21.25", 0x0000, 0x1000, CRC(3106fcac) SHA1(08454adfb58e5df84140d86ed52fa4ef684df9f1) ) /* extra rom on the same SUB PCB where is the mcu */
ROM_END
GAME( 1982, bking, 0, bking2, bking, 0, ROT270, "Taito Corporation", "Birdie King", 0 )
GAME( 1983, bking2, 0, bking2, bking2, 0, ROT90, "Taito Corporation", "Birdie King 2", 0 )
GAME( 1982, bking, 0, bking, bking, 0, ROT270, "Taito Corporation", "Birdie King", 0 )
GAME( 1983, bking2, 0, bking, bking2, 0, ROT90, "Taito Corporation", "Birdie King 2", 0 )
GAME( 1984, bking3, 0, bking3, bking2, 0, ROT90, "Taito Corporation", "Birdie King 3", GAME_WRONG_COLORS )

View File

@ -1289,7 +1289,7 @@ $(MAMEOBJ)/taito.a: \
$(DRIVERS)/ashnojoe.o $(VIDEO)/ashnojoe.o \
$(DRIVERS)/asuka.o $(MACHINE)/bonzeadv.o $(VIDEO)/asuka.o \
$(DRIVERS)/bigevglf.o $(MACHINE)/bigevglf.o $(VIDEO)/bigevglf.o \
$(DRIVERS)/bking2.o $(VIDEO)/bking2.o \
$(DRIVERS)/bking.o $(VIDEO)/bking.o \
$(DRIVERS)/bublbobl.o $(MACHINE)/bublbobl.o $(VIDEO)/bublbobl.o \
$(DRIVERS)/buggychl.o $(MACHINE)/buggychl.o $(VIDEO)/buggychl.o \
$(DRIVERS)/chaknpop.o $(MACHINE)/chaknpop.o $(VIDEO)/chaknpop.o \

View File

@ -1,8 +1,5 @@
#include "driver.h"
#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])
UINT8 *c1943_scrollx;
UINT8 *c1943_scrolly;
UINT8 *c1943_bgscrollx;

View File

@ -33,83 +33,71 @@ static int priority;
PALETTE_INIT( appoooh )
{
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 < machine->drv->total_colors;i++)
for (i = 0; i < machine->drv->total_colors; i++)
{
int bit0,bit1,bit2,r,g,b;
UINT8 pen;
int bit0, bit1, bit2, r, g, b;
if (i < 0x100)
/* charset #1 */
pen = (color_prom[0x020 + (i - 0x000)] & 0x0f) | 0x00;
else
/* charset #2 */
pen = (color_prom[0x120 + (i - 0x100)] & 0x0f) | 0x10;
/* red component */
bit0 = (*color_prom >> 0) & 0x01;
bit1 = (*color_prom >> 1) & 0x01;
bit2 = (*color_prom >> 2) & 0x01;
bit0 = (color_prom[pen] >> 0) & 0x01;
bit1 = (color_prom[pen] >> 1) & 0x01;
bit2 = (color_prom[pen] >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */
bit0 = (*color_prom >> 3) & 0x01;
bit1 = (*color_prom >> 4) & 0x01;
bit2 = (*color_prom >> 5) & 0x01;
bit0 = (color_prom[pen] >> 3) & 0x01;
bit1 = (color_prom[pen] >> 4) & 0x01;
bit2 = (color_prom[pen] >> 5) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */
bit0 = 0;
bit1 = (*color_prom >> 6) & 0x01;
bit2 = (*color_prom >> 7) & 0x01;
bit1 = (color_prom[pen] >> 6) & 0x01;
bit2 = (color_prom[pen] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b));
color_prom++;
palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
/* charset #1 lookup table */
for (i = 0;i < TOTAL_COLORS(0);i++)
COLOR(0,i) = (*(color_prom++) & 0x0f)|CHR1_OFST;
/* charset #2 lookup table */
for (i = 0;i < TOTAL_COLORS(1);i++)
COLOR(1,i) = (*(color_prom++) & 0x0f)|CHR2_OFST;
/* TODO: the driver currently uses only 16 of the 32 color codes. */
/* 16-31 might be unused, but there might be a palette bank selector */
/* to use them somewhere in the game. */
}
PALETTE_INIT( robowres )
{
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 < machine->drv->total_colors;i++)
for (i = 0; i < machine->drv->total_colors; i++)
{
int bit0,bit1,bit2,r,g,b;
int bit0, bit1, bit2, r, g, b;
UINT8 pen = color_prom[0x020 + i] & 0x0f;
/* red component */
bit0 = (*color_prom >> 0) & 0x01;
bit1 = (*color_prom >> 1) & 0x01;
bit2 = (*color_prom >> 2) & 0x01;
bit0 = (color_prom[pen] >> 0) & 0x01;
bit1 = (color_prom[pen] >> 1) & 0x01;
bit2 = (color_prom[pen] >> 2) & 0x01;
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */
bit0 = (*color_prom >> 3) & 0x01;
bit1 = (*color_prom >> 4) & 0x01;
bit2 = (*color_prom >> 5) & 0x01;
bit0 = (color_prom[pen] >> 3) & 0x01;
bit1 = (color_prom[pen] >> 4) & 0x01;
bit2 = (color_prom[pen] >> 5) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */
bit0 = 0;
bit1 = (*color_prom >> 6) & 0x01;
bit2 = (*color_prom >> 7) & 0x01;
bit1 = (color_prom[pen] >> 6) & 0x01;
bit2 = (color_prom[pen] >> 7) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b));
color_prom++;
palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
/* color_prom now points to the beginning of the lookup table */
for (i = 0;i < 32*8;i++)
colortable[i]=(*(color_prom++) & 0x0f);
}

View File

@ -1,6 +1,6 @@
/***************************************************************************
bking2.c
bking.c
Functions to emulate the video hardware of the machine.
@ -8,7 +8,7 @@
#include "driver.h"
extern UINT8* bking2_playfield_ram;
extern UINT8* bking_playfield_ram;
static int pc3259_output[4];
@ -51,93 +51,85 @@ static tilemap* bg_tilemap;
bit 0 -- 220 ohm resistor -- RED
***************************************************************************/
PALETTE_INIT( bking2 )
PALETTE_INIT( bking )
{
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 < machine->drv->total_colors;i++)
for (i = 0; i < machine->drv->total_colors; i++)
{
int bit0,bit1,bit2,r,g,b;
UINT8 pen;
int bit0, bit1, bit2, r, g, b;
/* color PROM A7-A8 is the palette select */
if (i < 0x20)
/* characters - image bits go to A0-A2 of the color PROM */
pen = (((i - 0x00) << 4) & 0x180) | ((i - 0x00) & 0x07);
else if (i < 0x30)
/* crow - image bits go to A5-A6. */
pen = (((i - 0x20) << 5) & 0x180) | (((i - 0x20) & 0x03) << 5);
else if (i < 0x38)
/* ball #1 - image bit goes to A3 */
pen = (((i - 0x30) << 6) & 0x180) | (((i - 0x30) & 0x01) << 3);
else
/* ball #2 - image bit goes to A4 */
pen = (((i - 0x38) << 6) & 0x180) | (((i - 0x38) & 0x01) << 4);
/* red component */
bit0 = (*color_prom >> 0) & 0x01;
bit1 = (*color_prom >> 1) & 0x01;
bit2 = (*color_prom >> 2) & 0x01;
bit0 = (color_prom[pen] >> 0) & 0x01;
bit1 = (color_prom[pen] >> 1) & 0x01;
bit2 = (color_prom[pen] >> 2) & 0x01;
r = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
/* green component */
bit0 = (*color_prom >> 3) & 0x01;
bit1 = (*color_prom >> 4) & 0x01;
bit2 = (*color_prom >> 5) & 0x01;
bit0 = (color_prom[pen] >> 3) & 0x01;
bit1 = (color_prom[pen] >> 4) & 0x01;
bit2 = (color_prom[pen] >> 5) & 0x01;
g = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
/* blue component */
bit0 = (*color_prom >> 6) & 0x01;
bit1 = (*color_prom >> 7) & 0x01;
bit0 = (color_prom[pen] >> 6) & 0x01;
bit1 = (color_prom[pen] >> 7) & 0x01;
bit2 = 0;
b = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b));
color_prom++;
}
/* color PROM A7-A8 is the palette select */
/* character colors. Image bits go to A0-A2 of the color PROM */
for (i = 0; i < TOTAL_COLORS(0); i++)
{
COLOR(0,i) = ((i << 4) & 0x180) | (i & 0x07);
}
/* crow colors. Image bits go to A5-A6. */
for (i = 0; i < TOTAL_COLORS(1); i++)
{
COLOR(1,i) = ((i << 5) & 0x180) | ((i & 0x03) << 5);
}
/* ball colors. Ball 1 image bit goes to A3. Ball 2 to A4. */
for (i = 0; i < TOTAL_COLORS(2); i++)
{
COLOR(2,i) = ((i << 6) & 0x180) | ((i & 0x01) << 3);
COLOR(3,i) = ((i << 6) & 0x180) | ((i & 0x01) << 4);
palette_set_color(machine, i, MAKE_RGB(r, g, b));
}
}
WRITE8_HANDLER( bking2_xld1_w )
WRITE8_HANDLER( bking_xld1_w )
{
xld1 = -data;
}
WRITE8_HANDLER( bking2_yld1_w )
WRITE8_HANDLER( bking_yld1_w )
{
yld1 = -data;
}
WRITE8_HANDLER( bking2_xld2_w )
WRITE8_HANDLER( bking_xld2_w )
{
xld2 = -data;
}
WRITE8_HANDLER( bking2_yld2_w )
WRITE8_HANDLER( bking_yld2_w )
{
yld2 = -data;
}
WRITE8_HANDLER( bking2_xld3_w )
WRITE8_HANDLER( bking_xld3_w )
{
xld3 = -data;
}
WRITE8_HANDLER( bking2_yld3_w )
WRITE8_HANDLER( bking_yld3_w )
{
yld3 = -data;
}
WRITE8_HANDLER( bking2_cont1_w )
WRITE8_HANDLER( bking_cont1_w )
{
/* D0 = COIN LOCK */
/* D1 = BALL 5 (Controller selection) */
@ -156,7 +148,7 @@ WRITE8_HANDLER( bking2_cont1_w )
crow_pic = (data >> 4) & 0x0f;
}
WRITE8_HANDLER( bking2_cont2_w )
WRITE8_HANDLER( bking_cont2_w )
{
/* D0-D2 = BALL10 - BALL12 (Selects player 1 ball picture) */
/* D3-D5 = BALL20 - BALL22 (Selects player 2 ball picture) */
@ -169,7 +161,7 @@ WRITE8_HANDLER( bking2_cont2_w )
hit = data >> 6;
}
WRITE8_HANDLER( bking2_cont3_w )
WRITE8_HANDLER( bking_cont3_w )
{
/* D0 = CROW INV (inverts Crow picture and coordinates) */
/* D1-D2 = COLOR 0 - COLOR 1 (switches 4 color palettes, global across all graphics) */
@ -188,13 +180,13 @@ WRITE8_HANDLER( bking2_cont3_w )
}
WRITE8_HANDLER( bking2_msk_w )
WRITE8_HANDLER( bking_msk_w )
{
pc3259_mask++;
}
WRITE8_HANDLER( bking2_hitclr_w )
WRITE8_HANDLER( bking_hitclr_w )
{
pc3259_mask = 0;
@ -205,24 +197,24 @@ WRITE8_HANDLER( bking2_hitclr_w )
}
WRITE8_HANDLER( bking2_playfield_w )
WRITE8_HANDLER( bking_playfield_w )
{
bking2_playfield_ram[offset] = data;
bking_playfield_ram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap, offset / 2);
}
READ8_HANDLER( bking2_input_port_5_r )
READ8_HANDLER( bking_input_port_5_r )
{
return readinputport(controller ? 7 : 5);
}
READ8_HANDLER( bking2_input_port_6_r )
READ8_HANDLER( bking_input_port_6_r )
{
return readinputport(controller ? 8 : 6);
}
READ8_HANDLER( bking2_pos_r )
READ8_HANDLER( bking_pos_r )
{
return pc3259_output[offset / 8] << 4;
}
@ -230,8 +222,8 @@ READ8_HANDLER( bking2_pos_r )
static TILE_GET_INFO( get_tile_info )
{
UINT8 code0 = bking2_playfield_ram[2 * tile_index + 0];
UINT8 code1 = bking2_playfield_ram[2 * tile_index + 1];
UINT8 code0 = bking_playfield_ram[2 * tile_index + 0];
UINT8 code1 = bking_playfield_ram[2 * tile_index + 1];
int flags = 0;
@ -242,7 +234,7 @@ static TILE_GET_INFO( get_tile_info )
}
VIDEO_START( bking2 )
VIDEO_START( bking )
{
bg_tilemap = tilemap_create(get_tile_info, tilemap_scan_rows, 0, 8, 8, 32, 32);
helper0 = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
@ -250,7 +242,7 @@ VIDEO_START( bking2 )
}
VIDEO_UPDATE( bking2 )
VIDEO_UPDATE( bking )
{
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
@ -282,7 +274,7 @@ VIDEO_UPDATE( bking2 )
}
VIDEO_EOF( bking2 )
VIDEO_EOF( bking )
{
static const rectangle rect = { 0, 7, 0, 15 };