mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
Added mcu emulation to bking3 (bking3076u2red is fixed)
Fixed clocks as per Guru readme Added GAME_WRONG_COLORS flag to bking3
This commit is contained in:
parent
1f92fb28a0
commit
5c6ecd64b7
@ -10,43 +10,55 @@ Birdie King / Birdie King II / Birdie King III Memory Map
|
||||
9000-97ff Playfield RAM
|
||||
a000-bfff Unused?
|
||||
|
||||
|
||||
NOTE:
|
||||
ROM DM03 is missing from all known ROM sets. This is a color palette.
|
||||
* is this note out of date?, DM_03.d1 in bking.zip = 82s141.2d in bking2.zip
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "cpu/m6805/m6805.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
PALETTE_INIT( bking2 );
|
||||
|
||||
VIDEO_START( bking2 );
|
||||
VIDEO_UPDATE( bking2 );
|
||||
VIDEO_EOF( bking2 );
|
||||
/* bking3 mcu communication */
|
||||
extern MACHINE_RESET( buggychl );
|
||||
extern READ8_HANDLER( buggychl_68705_portA_r );
|
||||
extern WRITE8_HANDLER( buggychl_68705_portA_w );
|
||||
extern WRITE8_HANDLER( buggychl_68705_ddrA_w );
|
||||
extern READ8_HANDLER( buggychl_68705_portB_r );
|
||||
extern WRITE8_HANDLER( buggychl_68705_portB_w );
|
||||
extern WRITE8_HANDLER( buggychl_68705_ddrB_w );
|
||||
extern READ8_HANDLER( buggychl_68705_portC_r );
|
||||
extern WRITE8_HANDLER( buggychl_68705_portC_w );
|
||||
extern WRITE8_HANDLER( buggychl_68705_ddrC_w );
|
||||
extern WRITE8_HANDLER( buggychl_mcu_w );
|
||||
extern READ8_HANDLER( buggychl_mcu_r );
|
||||
extern READ8_HANDLER( buggychl_mcu_status_r );
|
||||
|
||||
WRITE8_HANDLER( bking2_xld1_w );
|
||||
WRITE8_HANDLER( bking2_yld1_w );
|
||||
WRITE8_HANDLER( bking2_xld2_w );
|
||||
WRITE8_HANDLER( bking2_yld2_w );
|
||||
WRITE8_HANDLER( bking2_xld3_w );
|
||||
WRITE8_HANDLER( bking2_yld3_w );
|
||||
WRITE8_HANDLER( bking2_msk_w );
|
||||
WRITE8_HANDLER( bking2_cont1_w );
|
||||
WRITE8_HANDLER( bking2_cont2_w );
|
||||
WRITE8_HANDLER( bking2_cont3_w );
|
||||
WRITE8_HANDLER( bking2_hitclr_w );
|
||||
WRITE8_HANDLER( bking2_playfield_w );
|
||||
extern PALETTE_INIT( bking2 );
|
||||
|
||||
READ8_HANDLER( bking2_input_port_5_r );
|
||||
READ8_HANDLER( bking2_input_port_6_r );
|
||||
READ8_HANDLER( bking2_pos_r );
|
||||
extern VIDEO_START( bking2 );
|
||||
extern VIDEO_UPDATE( bking2 );
|
||||
extern VIDEO_EOF( bking2 );
|
||||
|
||||
UINT8* bking2_playfield_ram;
|
||||
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 READ8_HANDLER( bking2_input_port_5_r );
|
||||
extern READ8_HANDLER( bking2_input_port_6_r );
|
||||
extern READ8_HANDLER( bking2_pos_r );
|
||||
|
||||
UINT8 *bking2_playfield_ram;
|
||||
|
||||
static int bking3_addr_h, bking3_addr_l;
|
||||
static int sndnmi_enable = 1;
|
||||
|
||||
static READ8_HANDLER( bking2_sndnmi_disable_r )
|
||||
@ -72,23 +84,20 @@ static WRITE8_HANDLER( bking2_soundlatch_w )
|
||||
if (sndnmi_enable) cpunum_set_input_line(1, INPUT_LINE_NMI, PULSE_LINE);
|
||||
}
|
||||
|
||||
|
||||
static int bk3_l, bk3_h;
|
||||
|
||||
static WRITE8_HANDLER( bk3_l_w)
|
||||
static WRITE8_HANDLER( bking3_addr_l_w )
|
||||
{
|
||||
bk3_l = data;
|
||||
bking3_addr_l = data;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( bk3_h_w)
|
||||
static WRITE8_HANDLER( bking3_addr_h_w )
|
||||
{
|
||||
bk3_h = data;
|
||||
bking3_addr_h = data;
|
||||
}
|
||||
|
||||
static READ8_HANDLER( bk3_r )
|
||||
static READ8_HANDLER( bking3_extrarom_r )
|
||||
{
|
||||
UINT8 *rom = memory_region(REGION_USER2);
|
||||
return rom[bk3_h*256+bk3_l];
|
||||
return rom[bking3_addr_h * 256 + bking3_addr_l];
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( unk_w )
|
||||
@ -99,94 +108,26 @@ static WRITE8_HANDLER( unk_w )
|
||||
*/
|
||||
}
|
||||
|
||||
static READ8_HANDLER( mcu_status_r )
|
||||
static READ8_HANDLER( bking3_ext_check_r )
|
||||
{
|
||||
static int res = 3;
|
||||
|
||||
return res;//cpu data / MCU ready
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Birdie King 3 MCU simulation
|
||||
Nothing really special to report,just the typical protection HW test and another
|
||||
protection routine with 0x30 command when the player have to shot on the green.
|
||||
|
||||
Todo:
|
||||
\-How to handle the reads at port($6f)?
|
||||
\-In-depth game untested.
|
||||
*/
|
||||
static UINT8 mcu_val;
|
||||
|
||||
static WRITE8_HANDLER( mcu_data_w )
|
||||
{
|
||||
#ifdef MAME_DEBUG
|
||||
logerror("mcu_data_w = %x\n",data);
|
||||
#endif
|
||||
mcu_val = data;
|
||||
/* HW test */
|
||||
/* all bits of port ($02) except the MSB are connected to the command,
|
||||
in all cases it should return 0x5e.This one is here to avoid to get a big
|
||||
switch-case statement in the mcu_data_r function... */
|
||||
if(mcu_val >= 0x80)
|
||||
mcu_val = 0x5e;
|
||||
}
|
||||
|
||||
static READ8_HANDLER( mcu_data_r )
|
||||
{
|
||||
// popmessage("MCU-r1 PC = %04x %02x",activecpu_get_pc(),mcu_val);
|
||||
switch(mcu_val)
|
||||
{
|
||||
/* Shot counter control at the green (check $bdf and afterwards in that condition)*/
|
||||
case 0x30: return (mcu_val-0x1e);
|
||||
default: return (mcu_val);
|
||||
}
|
||||
}
|
||||
|
||||
static READ8_HANDLER( mcu_data_r2 )
|
||||
{
|
||||
// popmessage("MCU-r2 PC = %04x %02x",activecpu_get_pc(),mcu_val);
|
||||
return 0x31; //no "bad rom.", no "bad ext."
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM)
|
||||
AM_RANGE(0x8000, 0x83ff) AM_READ(MRA8_RAM)
|
||||
AM_RANGE(0x9000, 0x97ff) AM_READ(MRA8_RAM)
|
||||
static ADDRESS_MAP_START( bking2_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)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM)
|
||||
AM_RANGE(0x8000, 0x83ff) AM_WRITE(MWA8_RAM)
|
||||
AM_RANGE(0x9000, 0x97ff) AM_WRITE(bking2_playfield_w) AM_BASE(&bking2_playfield_ram)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
|
||||
static ADDRESS_MAP_START( bking2_io_map, ADDRESS_SPACE_IO, 8 )
|
||||
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
|
||||
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
|
||||
AM_RANGE(0x01, 0x01) AM_READ(input_port_1_r)
|
||||
AM_RANGE(0x02, 0x02) AM_READ(input_port_2_r)
|
||||
AM_RANGE(0x03, 0x03) AM_READ(input_port_3_r)
|
||||
AM_RANGE(0x04, 0x04) AM_READ(input_port_4_r)
|
||||
AM_RANGE(0x05, 0x05) AM_READ(bking2_input_port_5_r)
|
||||
AM_RANGE(0x06, 0x06) AM_READ(bking2_input_port_6_r)
|
||||
AM_RANGE(0x07, 0x1f) AM_READ(bking2_pos_r)
|
||||
|
||||
AM_RANGE(0x2f, 0x2f) AM_READ(mcu_data_r)
|
||||
AM_RANGE(0x4f, 0x4f) AM_READ(mcu_status_r)
|
||||
AM_RANGE(0x60, 0x60) AM_READ(bk3_r)
|
||||
AM_RANGE(0x6f, 0x6f) AM_READ(mcu_data_r2)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
|
||||
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(bking2_xld1_w)
|
||||
AM_RANGE(0x01, 0x01) AM_WRITE(bking2_yld1_w)
|
||||
AM_RANGE(0x02, 0x02) AM_WRITE(bking2_xld2_w)
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(bking2_yld2_w)
|
||||
AM_RANGE(0x04, 0x04) AM_WRITE(bking2_xld3_w)
|
||||
AM_RANGE(0x05, 0x05) AM_WRITE(bking2_yld3_w)
|
||||
AM_RANGE(0x06, 0x06) AM_WRITE(bking2_msk_w)
|
||||
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(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)
|
||||
@ -194,35 +135,122 @@ static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
|
||||
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(0x2f, 0x2f) AM_WRITE(mcu_data_w)
|
||||
AM_RANGE(0x4f, 0x4f) AM_WRITE(unk_w)
|
||||
AM_RANGE(0x6f, 0x6f) AM_WRITE(bk3_h_w)
|
||||
AM_RANGE(0x8f, 0x8f) AM_WRITE(bk3_l_w)
|
||||
AM_RANGE(0x07, 0x1f) AM_READ(bking2_pos_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_READ(MRA8_ROM)
|
||||
AM_RANGE(0x2000, 0x2fff) AM_READ(MRA8_ROM) //only bking3
|
||||
AM_RANGE(0x4000, 0x43ff) AM_READ(MRA8_RAM)
|
||||
AM_RANGE(0x4401, 0x4401) AM_READ(AY8910_read_port_0_r)
|
||||
AM_RANGE(0x4403, 0x4403) AM_READ(AY8910_read_port_1_r)
|
||||
AM_RANGE(0x4800, 0x4800) AM_READ(soundlatch_r)
|
||||
AM_RANGE(0x4802, 0x4802) AM_READ(bking2_sndnmi_disable_r)
|
||||
AM_RANGE(0xe000, 0xefff) AM_READ(MRA8_ROM) /* space for some other ROM???
|
||||
It's checked if there is valid code there
|
||||
[Probably diagnostic ROM like other early Taito games -AS]*/
|
||||
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(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(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)
|
||||
AM_RANGE(0x6f, 0x6f) AM_READWRITE(bking3_ext_check_r, bking3_addr_h_w)
|
||||
AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_WRITE(MWA8_ROM)
|
||||
AM_RANGE(0x2000, 0x2fff) AM_WRITE(MWA8_ROM) //only bking3
|
||||
AM_RANGE(0x4000, 0x43ff) AM_WRITE(MWA8_RAM)
|
||||
static ADDRESS_MAP_START( sound_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
|
||||
AM_RANGE(0x4400, 0x4400) AM_WRITE(AY8910_control_port_0_w)
|
||||
AM_RANGE(0x4401, 0x4401) AM_WRITE(AY8910_write_port_0_w)
|
||||
AM_RANGE(0x4401, 0x4401) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)
|
||||
AM_RANGE(0x4402, 0x4402) AM_WRITE(AY8910_control_port_1_w)
|
||||
AM_RANGE(0x4403, 0x4403) AM_WRITE(AY8910_write_port_1_w)
|
||||
AM_RANGE(0x4802, 0x4802) AM_WRITE(bking2_sndnmi_enable_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(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
#if 0
|
||||
static UINT8 portA_in,portA_out,ddrA;
|
||||
|
||||
static READ8_HANDLER( bking3_68705_portA_r )
|
||||
{
|
||||
//printf("portA_r = %02X\n",(portA_out & ddrA) | (portA_in & ~ddrA));
|
||||
return (portA_out & ddrA) | (portA_in & ~ddrA);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( bking3_68705_portA_w )
|
||||
{
|
||||
portA_out = data;
|
||||
// printf("portA_out = %02X\n",data);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( bking3_68705_ddrA_w )
|
||||
{
|
||||
ddrA = data;
|
||||
}
|
||||
|
||||
static UINT8 portB_in,portB_out,ddrB;
|
||||
|
||||
static READ8_HANDLER( bking3_68705_portB_r )
|
||||
{
|
||||
return (portB_out & ddrB) | (portB_in & ~ddrB);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( bking3_68705_portB_w )
|
||||
{
|
||||
// if(data != 0xff)
|
||||
// printf("portB_out = %02X\n",data);
|
||||
|
||||
if (~data & 0x02)
|
||||
{
|
||||
portA_in = from_main;
|
||||
if (main_sent) cpunum_set_input_line(2,0,CLEAR_LINE);
|
||||
main_sent = 0;
|
||||
}
|
||||
|
||||
if (~data & 0x04)
|
||||
{
|
||||
/* 68705 is writing data for the Z80 */
|
||||
from_mcu = portA_out;
|
||||
mcu_sent = 1;
|
||||
}
|
||||
|
||||
if(data != 0xff && data != 0xfb && data != 0xfd)
|
||||
printf("portB_w = %X\n",data);
|
||||
|
||||
portB_out = data;
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( bking3_68705_ddrB_w )
|
||||
{
|
||||
ddrB = data;
|
||||
}
|
||||
|
||||
static READ8_HANDLER( bking3_68705_portC_r )
|
||||
{
|
||||
int portC_in = 0;
|
||||
if (main_sent) portC_in |= 0x01;
|
||||
if (!mcu_sent) portC_in |= 0x02;
|
||||
//logerror("%04x: 68705 port C read %02x\n",activecpu_get_pc(),portC_in);
|
||||
return portC_in;
|
||||
}
|
||||
#endif
|
||||
static ADDRESS_MAP_START( m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(buggychl_68705_portA_r, buggychl_68705_portA_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(buggychl_68705_portB_r, buggychl_68705_portB_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READWRITE(buggychl_68705_portC_r, buggychl_68705_portC_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(buggychl_68705_ddrA_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(buggychl_68705_ddrB_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_WRITE(buggychl_68705_ddrC_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( bking )
|
||||
@ -519,14 +547,14 @@ static const struct AY8910interface ay8910_interface =
|
||||
static MACHINE_DRIVER_START( bking2 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(Z80, 4000000) /* 4 MHz */
|
||||
MDRV_CPU_PROGRAM_MAP(readmem,writemem)
|
||||
MDRV_CPU_IO_MAP(readport,writeport)
|
||||
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_VBLANK_INT(irq0_line_hold,1)
|
||||
|
||||
MDRV_CPU_ADD(Z80, 3000000) /* 3 MHz */
|
||||
MDRV_CPU_ADD(Z80, XTAL_6MHz/2) /* 3 MHz */
|
||||
/* audio CPU */
|
||||
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
|
||||
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 */
|
||||
@ -553,10 +581,10 @@ static MACHINE_DRIVER_START( bking2 )
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MDRV_SOUND_ADD(AY8910, 2000000)
|
||||
MDRV_SOUND_ADD(AY8910, XTAL_6MHz/4)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
|
||||
MDRV_SOUND_ADD(AY8910, 2000000)
|
||||
MDRV_SOUND_ADD(AY8910, XTAL_6MHz/4)
|
||||
MDRV_SOUND_CONFIG(ay8910_interface)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
|
||||
@ -564,6 +592,20 @@ static MACHINE_DRIVER_START( bking2 )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static MACHINE_DRIVER_START( bking3 )
|
||||
MDRV_IMPORT_FROM(bking2)
|
||||
|
||||
MDRV_CPU_MODIFY("main_cpu")
|
||||
MDRV_CPU_IO_MAP(bking3_io_map,0)
|
||||
|
||||
MDRV_CPU_ADD(M68705, XTAL_3MHz/M68705_CLOCK_DIVIDER) /* xtal is 3MHz, divided by 4 internally */
|
||||
MDRV_CPU_PROGRAM_MAP(m68705_map,0)
|
||||
|
||||
MDRV_MACHINE_RESET(buggychl)
|
||||
|
||||
MDRV_INTERLEAVE(100)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
@ -651,6 +693,161 @@ ROM_START( bking2 )
|
||||
ROM_LOAD( "pal16l8.3", 0x0400, 0x0104, CRC(a609d0cf) SHA1(7a18040720646c2dff4c1dc6f272c6a69e538c47) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
Birdie King 3
|
||||
Taito, 1984
|
||||
|
||||
A golf game using a trackball. Uses same harness/pinout as
|
||||
Elevator Action, Victorious Nine, Jolly Jogger (etc)
|
||||
|
||||
PCB Layouts
|
||||
(Note! There are no PALs on ANY of the PCBs)
|
||||
|
||||
Top PCB
|
||||
-------
|
||||
DMO70003A
|
||||
K1000173B (sticker)
|
||||
|------------------------|
|
||||
| |
|
||||
|-| |
|
||||
| | Z80 2114 |
|
||||
| | 2114 |
|
||||
| |N |
|
||||
| | A24_18.4F |
|
||||
| | A24_19.4D |
|
||||
|-| A24_20.4B |
|
||||
| |
|
||||
| AY3-8910 |
|
||||
| |
|
||||
| AY3-8910 |
|
||||
| |
|
||||
| |
|
||||
| 6MHz |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| LM3900 LM3900 LM3900 |
|
||||
|------------------------|
|
||||
Notes:
|
||||
Z80 - Clock 3.000MHz [6/2]
|
||||
AY3-8910 - Clock 1.500MHz [6/4]
|
||||
2114 - 1kx4 SRAM (DIP18)
|
||||
N - Flat cable connector, joins to main board
|
||||
LM3900 - National LM3900 Quad, dual-input amplifier IC (DIP14)
|
||||
plus many resistors/capacitors below the AY3-8910's
|
||||
|
||||
|
||||
Sub PCB (below Top PCB)
|
||||
-----------------------
|
||||
SUB PCB J910 0010 A
|
||||
K910 0018 A
|
||||
|------------------------|
|
||||
| * |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
|A24_21.IC25 |
|
||||
| |
|
||||
| S2 |
|
||||
| |
|
||||
| 3MHz S1|
|
||||
|T A24_22.IC17 |
|
||||
|------------------------|
|
||||
Notes:
|
||||
A24_22.IC17 - Motorola 68705P5 Microcontroller, clock 3.000MHz
|
||||
A24_21.IC25 - 2732 EPROM
|
||||
* - DIP24 socket with flat cable below PCB, joins to main board
|
||||
T - 4-pin power connector (5 volts) coming from main board
|
||||
S1 - Flat cable connector, joins to main PCB to connector S
|
||||
S2 - Flat cable connector, joins to bottom PCB to connector S
|
||||
|
||||
|
||||
|
||||
Main PCB
|
||||
--------
|
||||
J1100001A
|
||||
K1100001A
|
||||
M4300001D (sticker)
|
||||
K1100032A (sticker)
|
||||
|--------------------------------------------------------------|
|
||||
| M3712 VOL A24_03.2D M53354 |
|
||||
|H DM-04.2C |-|
|
||||
| N * | |
|
||||
| MC14584 R| |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| |-|
|
||||
| |
|
||||
|G LM3900 |
|
||||
| MC14093 |
|
||||
| A24_01.7E |-|
|
||||
| | |
|
||||
| A24_01.9E | |
|
||||
| MC14584 S| |
|
||||
| A24_02.10E | |
|
||||
| MC14584 MC1455 | |
|
||||
| |-|
|
||||
| DSWC DSWB DSWA |
|
||||
|--------------------------------------------------------------|
|
||||
Notes:
|
||||
M53354 - ?, maybe 74LS154? (DIP24)
|
||||
MC1455 - Motorola MC1455 Monolithic Timing Circuit (NE555 compatible)
|
||||
A24_01/02 - 2716 EPROMs
|
||||
A24_03 - Signetics 82S141 PROM (DIP24)
|
||||
DM-04 - Signetics 82S123 PROM (DIP8)
|
||||
* - DIP24 socket with flat cable, joins to SUB PCB DIP24 socket
|
||||
R/S - Flat cable connector, R joins to main board, S joins to SUB PCB
|
||||
G - 22-way Edge Connector
|
||||
N - Flat cable connector, joins to TOP PCB
|
||||
H - 12-pin power connector
|
||||
VSync - 60Hz
|
||||
HSync - 15.67kHz
|
||||
|
||||
|
||||
Bottom PCB
|
||||
----------
|
||||
DMO70002A
|
||||
DMN00002A
|
||||
K1000172B (sticker)
|
||||
|--------------------------------------------------------------|
|
||||
| A24_17.13A 2114 Z80 A24_04.13F |
|
||||
| |-|
|
||||
| A24_16.11A 2114 A24_05.11F | |
|
||||
| S| |
|
||||
| A24_15.10A A24_06.10F | |
|
||||
| | |
|
||||
| A24_14.8A A24_07.8F | |
|
||||
| |-|
|
||||
|T A24_13.7A A24_08.7F |
|
||||
| |
|
||||
| A24_12.5A A24_09.5F |
|
||||
| |-|
|
||||
| A24_10.4F | |
|
||||
| 2114 | |
|
||||
| A24_11.2F R| |
|
||||
| 2114 | |
|
||||
| | |
|
||||
| 2114 |-|
|
||||
| 12MHz |
|
||||
|--------------------------------------------------------------|
|
||||
Notes:
|
||||
R/S - Flat cable connector, R joins to main board, S joins to SUB PCB
|
||||
T - 18-Way Edge Connector (for +5V/GND only)
|
||||
A24_* - 2732 EPROMs
|
||||
Z80 - Clock 3.000MHz [12/4]
|
||||
2114 - 1kx4 SRAM (DIP18)
|
||||
*/
|
||||
|
||||
ROM_START( bking3 )
|
||||
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
||||
ROM_LOAD( "a24-04.13f", 0x0000, 0x1000, CRC(a0c319a6) SHA1(6b79667288113fde43975fcfd05e93d8e45bf92d) )
|
||||
@ -668,7 +865,7 @@ ROM_START( bking3 )
|
||||
ROM_LOAD( "a24-20.4b", 0x2000, 0x1000, CRC(0e9e16d6) SHA1(43c69602a8d9c34c527ce54472db84168acc4ef4) )
|
||||
|
||||
ROM_REGION( 0x0800, REGION_CPU3, 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a24_22", 0x0000, 0x0800, NO_DUMP ) //M68705P5S uC 3MHz xtal
|
||||
ROM_LOAD( "a24_22.ic17", 0x000000, 0x000800, CRC(27c497d5) SHA1(c6c72bbf0537da53148fa0a56d412ab46129d29c) ) //M68705P5S uC 3MHz xtal
|
||||
|
||||
ROM_REGION( 0x6000, REGION_GFX1, ROMREGION_DISPOSE ) /* Tiles */
|
||||
ROM_LOAD( "a24-12.5a", 0x0000, 0x1000, CRC(c5fe4817) SHA1(fbf82d9d85e18b76c7e939932df074a545e73f42) )
|
||||
@ -691,17 +888,12 @@ ROM_START( bking3 )
|
||||
ROM_LOAD( "82s123.2c", 0x0000, 0x0020, CRC(4cb5bd32) SHA1(8851bae033ba67516d5ff6888e5daef10c2116ee) ) /* collision detection */
|
||||
|
||||
ROM_REGION( 0x0200, REGION_PROMS, 0 )
|
||||
ROM_LOAD( "82s141.2d", 0x0000, 0x0200, CRC(61b7a9ff) SHA1(4302de0c0dad2b871ad4719ad934beaee05a0c40) ) /* palette */
|
||||
ROM_LOAD( "a24_03.2d", 0x0000, 0x0200, CRC(61b7a9ff) SHA1(4302de0c0dad2b871ad4719ad934beaee05a0c40) ) /* palette */
|
||||
|
||||
ROM_REGION( 0x1000, REGION_USER2, 0 )
|
||||
ROM_LOAD( "a24-21.25", 0x0000, 0x1000, CRC(3106fcac) SHA1(08454adfb58e5df84140d86ed52fa4ef684df9f1) ) /* extra rom on the same SUB PCB where is the mcu */
|
||||
|
||||
//missing?
|
||||
//"a24_03" A24_03 - TI TBP28S46N - Not read
|
||||
//"a24_04" A24_04 - Bipolar PROM - Not read
|
||||
|
||||
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( 1984, bking3, 0, bking2, bking2, 0, ROT90, "Taito Corporation", "Birdie King 3", 0 )
|
||||
GAME( 1984, bking3, 0, bking3, bking2, 0, ROT90, "Taito Corporation", "Birdie King 3", GAME_WRONG_COLORS )
|
||||
|
@ -85,6 +85,7 @@ dcxx = /SPOSI (S36)
|
||||
|
||||
|
||||
/* in machine */
|
||||
MACHINE_RESET( buggychl );
|
||||
READ8_HANDLER( buggychl_68705_portA_r );
|
||||
WRITE8_HANDLER( buggychl_68705_portA_w );
|
||||
WRITE8_HANDLER( buggychl_68705_ddrA_w );
|
||||
@ -452,6 +453,8 @@ static MACHINE_DRIVER_START( buggychl )
|
||||
MDRV_GFXDECODE(buggychl)
|
||||
MDRV_PALETTE_LENGTH(128+128)
|
||||
|
||||
MDRV_MACHINE_RESET(buggychl)
|
||||
|
||||
MDRV_PALETTE_INIT(buggychl)
|
||||
MDRV_VIDEO_START(buggychl)
|
||||
MDRV_VIDEO_UPDATE(buggychl)
|
||||
|
@ -3,7 +3,14 @@
|
||||
|
||||
|
||||
static UINT8 from_main,from_mcu;
|
||||
static int mcu_sent = 0,main_sent = 0;
|
||||
static int mcu_sent,main_sent;
|
||||
|
||||
MACHINE_RESET( buggychl )
|
||||
{
|
||||
mcu_sent = 0;
|
||||
main_sent = 0;
|
||||
cpunum_set_input_line(2,0,CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user