📄 punchout.c
字号:
PORT_DIPSETTING( 0x03, "Hardest" )
PORT_DIPNAME( 0x0c, 0x00, "Time", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "0 (Longest)" )
PORT_DIPSETTING( 0x04, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3 (Shortest)" )
PORT_DIPNAME( 0x10, 0x10, "Demo Music", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x10, "On" )
PORT_DIPNAME( 0x20, 0x00, "Rematch at a Discount", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x20, "On" )
PORT_DIPNAME( 0x40, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x40, "On" )
PORT_BITX( 0x80, 0x00, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x80, "On" )
PORT_START /* DSW1 */
PORT_DIPNAME( 0x0f, 0x00, "Coinage", IP_KEY_NONE )
PORT_DIPSETTING( 0x0e, "5 Coins/1 Credit" )
PORT_DIPSETTING( 0x0b, "4 Coins/1 Credits" )
PORT_DIPSETTING( 0x0c, "3 Coins/1 Credit" )
PORT_DIPSETTING( 0x01, "2 Coins/1 Credit" )
PORT_DIPSETTING( 0x00, "1 Coin/1 Credit" )
/* PORT_DIPSETTING( 0x03, "1 Coin/1 Credit" )*/
/* PORT_DIPSETTING( 0x08, "1 Coin/2 Credits (2 min.)" )*/
PORT_DIPSETTING( 0x0d, "1 Coin/3 Credits (2 min.)" )
PORT_DIPSETTING( 0x02, "1 Coin/2 Credits" )
/* PORT_DIPSETTING( 0x04, "1 Coin/2 Credits" )*/
/* PORT_DIPSETTING( 0x09, "1 Coin/2 Credits" )*/
PORT_DIPSETTING( 0x05, "1 Coin/3 Credits" )
PORT_DIPSETTING( 0x06, "1 Coin/4 Credits" )
PORT_DIPSETTING( 0x0a, "1 Coin/5 Credits" )
PORT_DIPSETTING( 0x07, "1 Coin/6 Credits" )
PORT_DIPSETTING( 0x0f, "Free Play" )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* VLM5030 busy signal */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_DIPNAME( 0x80, 0x00, "Copyright", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Nintendo" )
PORT_DIPSETTING( 0x80, "Nintendo of America" )
PORT_START
INPUT_PORTS_END
INPUT_PORTS_START( armwrest_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN3 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_START /* DSW0 */
PORT_DIPNAME( 0x03, 0x00, "Difficulty", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Easy" )
PORT_DIPSETTING( 0x01, "Medium" )
PORT_DIPSETTING( 0x02, "Hard" )
PORT_DIPSETTING( 0x03, "Hardest" )
PORT_DIPNAME( 0x04, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x04, "On" )
PORT_DIPNAME( 0x08, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x08, "On" )
PORT_DIPNAME( 0x10, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x10, "On" )
PORT_DIPNAME( 0x20, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x20, "On" )
PORT_DIPNAME( 0x40, 0x00, "Rematches", IP_KEY_NONE )
PORT_DIPSETTING( 0x40, "3" )
PORT_DIPSETTING( 0x00, "7" )
PORT_BITX( 0x80, 0x00, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x80, "On" )
PORT_START /* DSW1 */
PORT_DIPNAME( 0x01, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x01, "On" )
PORT_DIPNAME( 0x02, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x02, "On" )
PORT_DIPNAME( 0x04, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x04, "On" )
PORT_DIPNAME( 0x08, 0x00, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x08, "On" )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* VLM5030 busy signal */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static struct GfxLayout charlayout =
{
8,8, /* 8*8 characters */
1024, /* 1024 characters */
2, /* 2 bits per pixel */
{ 1024*8*8, 0 }, /* the bitplanes are separated */
{ 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 armwrest_charlayout =
{
8,8, /* 8*8 characters */
2048, /* 2048 characters */
2, /* 2 bits per pixel */
{ 2048*8*8, 0 }, /* the bitplanes are separated */
{ 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 armwrest_charlayout2 =
{
8,8, /* 8*8 characters */
2048, /* 2048 characters */
3, /* 3 bits per pixel */
{ 2*2048*8*8, 2048*8*8, 0 }, /* the bitplanes are separated */
{ 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 charlayout1 =
{
8,8, /* 8*8 characters */
8192, /* 8192 characters */
3, /* 3 bits per pixel */
{ 2*8192*8*8, 8192*8*8, 0 }, /* the bitplanes are separated */
{ 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 charlayout2 =
{
8,8, /* 8*8 characters */
4096, /* 4096 characters */
2, /* 2 bits per pixel */
{ 4096*8*8, 0 }, /* the bitplanes are separated */
{ 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 GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x00000, &charlayout, 0, 128 },
{ 1, 0x04000, &charlayout, 128*4, 128 },
{ 1, 0x08000, &charlayout1, 128*4+128*4, 64 },
{ 1, 0x38000, &charlayout2, 128*4+128*4+64*8, 128 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo armwrest_gfxdecodeinfo[] =
{
{ 1, 0x00000, &armwrest_charlayout, 0, 256 },
{ 1, 0x08000, &armwrest_charlayout2, 256*4, 64 },
{ 1, 0x14000, &charlayout1, 256*4+64*8, 64 },
{ 1, 0x44000, &charlayout2, 256*4+64*8+64*8, 128 },
{ -1 } /* end of array */
};
/* filename for speech sample files */
static const char *punchout_sample_names[] =
{
"00.sam","01.sam","02.sam","03.sam","04.sam","05.sam","06.sam","07.sam",
"08.sam","09.sam","0a.sam","0b.sam","0c.sam","0d.sam","0e.sam","0f.sam",
"10.sam","11.sam","12.sam","13.sam","14.sam","15.sam","16.sam","17.sam",
"18.sam","19.sam","1a.sam","1b.sam","1c.sam","1d.sam","1e.sam","1f.sam",
"20.sam","21.sam","22.sam","23.sam","24.sam","25.sam","26.sam","27.sam",
"28.sam","29.sam","2a.sam","2b.sam",
0
};
/* filename for trackn field sample files */
#define spunchout_sample_names punchout_sample_names
static struct NESinterface nes_interface =
{
1,
21477270 , /* 21.47727 MHz */
{ 255 },
};
static struct DACinterface dac_interface =
{
1,
{ 255, 255 }
};
static struct VLM5030interface vlm5030_interface =
{
3580000, /* master clock */
255, /* volume */
4, /* memory region of speech rom */
0 /* VCU pin level (default) */
};
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
8000000/2, /* 4 Mhz */
0,
readmem,writemem,readport,writeport,
nmi_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
21477270/16, /* ??? the external clock is right, I assume it is */
/* demultiplied internally by the CPU */
3, /* memory region #3 */
sound_readmem,sound_writemem,0,0,
nmi_interrupt,1
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0,
/* video hardware */
32*8, 60*8, { 0*8, 32*8-1, 0*8, 60*8-1 },
gfxdecodeinfo,
1024+1, 128*4+128*4+64*8+128*4,
punchout_vh_convert_color_prom,
VIDEO_TYPE_RASTER,
0,
punchout_vh_start,
punchout_vh_stop,
punchout_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_NES,
&nes_interface
},
{
SOUND_DAC,
&dac_interface
},
{
SOUND_VLM5030,
&vlm5030_interface
}
}
};
static struct MachineDriver armwrest_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
8000000/2, /* 4 Mhz */
0,
readmem,writemem,readport,writeport,
nmi_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
21477270/16, /* ??? the external clock is right, I assume it is */
/* demultiplied internally by the CPU */
3, /* memory region #3 */
sound_readmem,sound_writemem,0,0,
nmi_interrupt,1
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0,
/* video hardware */
32*8, 60*8, { 0*8, 32*8-1, 0*8, 60*8-1 },
armwrest_gfxdecodeinfo,
1024+1, 256*4+64*8+64*8+128*4,
armwrest_vh_convert_color_prom,
VIDEO_TYPE_RASTER,
0,
armwrest_vh_start,
punchout_vh_stop,
armwrest_vh_screenrefresh,
/* sound hardware */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -