📄 kingobox.c
字号:
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END
/* Ring King */
INPUT_PORTS_START( rk_input_ports )
PORT_START /* DSW0 - 0xe000 */
PORT_DIPNAME( 0x03, 0x03, "Replay", IP_KEY_NONE )
PORT_DIPSETTING( 0x01, "70000" )
PORT_DIPSETTING( 0x02, "100000" )
PORT_DIPSETTING( 0x00, "150000" )
PORT_DIPSETTING( 0x03, "No" )
PORT_DIPNAME( 0x04, 0x04, "Demo Sounds", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x04, "On" )
PORT_DIPNAME( 0x18, 0x10, "Difficulty(2P)", IP_KEY_NONE )
PORT_DIPSETTING( 0x18, "Easy" )
PORT_DIPSETTING( 0x10, "Medium" )
PORT_DIPSETTING( 0x08, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x20, 0x00, "Cabinet", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Upright" )
PORT_DIPSETTING( 0x20, "Cocktail" )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x80, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_START /* DSW1 - 0xe001 */
PORT_DIPNAME( 0x03, 0x03, "Coin A", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x03, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x02, "1 Coin/2 Credits" )
PORT_DIPSETTING( 0x01, "1 Coin/3 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Coin B", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x0c, "1 Coin/1 Credit" )
PORT_DIPSETTING( 0x08, "1 Coin/2 Credits" )
PORT_DIPSETTING( 0x04, "1 Coin/3 Credits" )
PORT_DIPNAME( 0x30, 0x10, "Difficulty(1P)", IP_KEY_NONE )
PORT_DIPSETTING( 0x30, "Easy" )
PORT_DIPSETTING( 0x10, "Medium" )
PORT_DIPSETTING( 0x20, "Hard" )
PORT_DIPSETTING( 0x00, "Hardest" )
PORT_DIPNAME( 0x40, 0x40, "Boxing Match", IP_KEY_NONE )
PORT_DIPSETTING( 0x40, "2 Win,End" )
PORT_DIPSETTING( 0x00, "1 Win,End" )
PORT_DIPNAME( 0x80, 0x80, "Freeze", IP_KEY_NONE )
PORT_DIPSETTING( 0x80, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_START /* IN 0 - 0xe002 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* IN 1 - 0xe003 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_COCKTAIL )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* IN 2 - 0xe004 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) /* Service Switch */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Sound busy??? */
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* IN 3 - 0xfc05 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_COCKTAIL )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static struct GfxLayout charlayout =
{
8,8, /* 8*8 characters */
512, /* 1024 characters */
1, /* 1 bits per pixel */
{ 0 }, /* only 1 plane */
{ 0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */
};
static struct GfxLayout spritelayout =
{
16,16, /* 16*16 chars */
1024, /* 1024 characters */
3, /* bits per pixel */
{ 2*0x4000*8, 1*0x4000*8, 0*0x4000*8 },
{ 3*0x4000*8+0,3*0x4000*8+1,3*0x4000*8+2,3*0x4000*8+3,
3*0x4000*8+4,3*0x4000*8+5,3*0x4000*8+6,3*0x4000*8+7,
0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*8
};
static struct GfxLayout tilelayout =
{
16,16, /* 16*16 chars */
512, /* 512 characters */
3, /* bits per pixel */
{ 2*0x2000*8, 1*0x2000*8, 0*0x2000*8 },
{ 3*0x2000*8+0,3*0x2000*8+1,3*0x2000*8+2,3*0x2000*8+3,
3*0x2000*8+4,3*0x2000*8+5,3*0x2000*8+6,3*0x2000*8+7,
0, 1, 2, 3, 4, 5, 6, 7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*8
};
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x00000, &charlayout, 256, 8 }, /* characters */
{ 1, 0x01000, &charlayout, 256, 8 }, /* characters */
{ 1, 0x02000, &spritelayout, 0, 32 }, /* sprites */
{ 1, 0x1a000, &tilelayout, 0, 32 }, /* bg tiles */
{ -1 } /* end of array */
};
/* Ring King */
static struct GfxLayout rk_charlayout1 =
{
8,8, /* 8*8 characters */
512, /* 1024 characters */
1, /* 1 bits per pixel */
{ 0 }, /* only 1 plane */
{ 7, 6, 5, 4, (0x1000*8)+7, (0x1000*8)+6, (0x1000*8)+5, (0x1000*8)+4 },
{ 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
8*8 /* every char takes 8 consecutive bytes */
};
static struct GfxLayout rk_charlayout2 =
{
8,8, /* 8*8 characters */
512, /* 1024 characters */
1, /* 1 bits per pixel */
{ 0 }, /* only 1 plane */
{ 3, 2, 1, 0, (0x1000*8)+3, (0x1000*8)+2, (0x1000*8)+1, (0x1000*8)+0 },
{ 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
8*8 /* every char takes 8 consecutive bytes */
};
static struct GfxLayout rk_spritelayout =
{
16,16, /* 16*16 chars */
1024, /* 1024 characters */
3, /* bits per pixel */
{ 0*0x8000*8, 1*0x8000*8, 2*0x8000*8 },
{ 7, 6, 5, 4, 3, 2, 1, 0,
16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
32*8
};
static struct GfxLayout rk_tilelayout =
{
16,16, /* 16*16 chars */
512, /* 1024 characters */
3, /* bits per pixel */
{ 0*0x4000*8, 1*0x4000*8, 2*0x4000*8 },
{ 7, 6, 5, 4, 3, 2, 1, 0,
16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
32*8
};
static struct GfxLayout rk_bglayout =
{
16,16, /* 16*16 chars */
256, /* 1024 characters */
3, /* bits per pixel */
{ 0x4000*8+4, 0, 4 },
{ 16*8+3, 16*8+2, 16*8+1, 16*8+0, 0x2000*8+3, 0x2000*8+2, 0x2000*8+1, 0x2000*8+0,
3, 2, 1, 0, 0x2010*8+3, 0x2010*8+2, 0x2010*8+1, 0x2010*8+0 },
{ 15*8, 14*8, 13*8, 12*8, 11*8, 10*8, 9*8, 8*8,
7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
32*8
};
static struct GfxDecodeInfo rk_gfxdecodeinfo[] =
{
{ 1, 0x00000, &rk_charlayout1, 256, 8 }, /* characters */
{ 1, 0x00000, &rk_charlayout2, 256, 8 }, /* characters */
{ 1, 0x0e000, &rk_spritelayout, 0, 32 }, /* sprites */
{ 1, 0x02000, &rk_tilelayout, 0, 32 }, /* sprites/bg tiles */
{ 1, 0x26000, &rk_bglayout, 0, 32 }, /* bg tiles */
{ -1 } /* end of array */
};
static struct AY8910interface ay8910_interface =
{
1, /* 1 chip */
1500000, /* 1.5 MHz ? */
{ 255 },
{ soundlatch_r },
{ 0 },
{ 0 },
{ 0 }
};
static struct DACinterface dac_interface =
{
1,
{ 255 }
};
static int kingobox_interrupt( void ) {
if ( kingofb_nmi_enable )
return nmi_interrupt();
return ignore_interrupt();
}
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
4000000, /* 4.0 Mhz */
0,
main_readmem, main_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80,
4000000, /* 4.0 Mhz */
3,
video_readmem, video_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80,
4000000, /* 4.0 Mhz */
4,
sprite_readmem, sprite_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80 | CPU_AUDIO_CPU,
4000000, /* 4.0 Mhz */
5,
sound_readmem, sound_writemem,sound_readport,sound_writeport,
ignore_interrupt, 0,
nmi_interrupt, 6000 /* Hz */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* We really need heavy synching among the processors */
0,
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
256+8, 256+8*2,
kingobox_vh_convert_color_prom,
VIDEO_TYPE_RASTER,
0,
generic_vh_start,
generic_vh_stop,
kingobox_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_AY8910,
&ay8910_interface
},
{
SOUND_DAC,
&dac_interface
}
}
};
/* Ring King */
static struct MachineDriver rk_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
4000000, /* 4.0 Mhz */
0,
rk_main_readmem, rk_main_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80,
4000000, /* 4.0 Mhz */
3,
rk_video_readmem, rk_video_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80,
4000000, /* 4.0 Mhz */
4,
rk_sprite_readmem, rk_sprite_writemem,0,0,
kingobox_interrupt,1
},
{
CPU_Z80 | CPU_AUDIO_CPU,
4000000, /* 4.0 Mhz */
5,
sound_readmem, sound_writemem,rk_sound_readport,rk_sound_writeport,
ignore_interrupt, 0,
nmi_interrupt, 6000 /* Hz */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* We really need heavy synching among the processors */
0,
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
rk_gfxdecodeinfo,
256+8, 256+8*2,
ringking_vh_convert_color_prom,
VIDEO_TYPE_RASTER,
0,
generic_vh_start,
generic_vh_stop,
ringking_vh_screenrefresh,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -