📄 atarisy2.c
字号:
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* ADC3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* LETA0 */
PORT_ANALOG ( 0xff, 0x80, IPT_AD_STICK_Y | IPF_PLAYER1, 100, 0, 0x10, 0xf0 )
PORT_START /* LETA1 */
PORT_ANALOG ( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 100, 0, 0x10, 0xf0 )
PORT_START /* LETA2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* LETA3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
INPUT_PORTS_START( ssprint_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* IN2 */
PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Self Test", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x80, "Off")
PORT_DIPSETTING( 0x00, "On")
PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* ADC0 */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER3 )
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* ADC1 */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* ADC2 */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* ADC3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* LETA0 */
PORT_ANALOG ( 0xff, 0x40, IPT_DIAL | IPF_PLAYER3, 25, 0, 0x00, 0x7f )
PORT_START /* LETA1 */
PORT_ANALOG ( 0xff, 0x40, IPT_DIAL | IPF_PLAYER2, 25, 0, 0x00, 0x7f )
PORT_START /* LETA2 */
PORT_ANALOG ( 0xff, 0x40, IPT_DIAL | IPF_PLAYER1, 25, 0, 0x00, 0x7f )
PORT_START /* LETA3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
INPUT_PORTS_START( csprint_input_ports )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN1 */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_START /* IN2 */
PORT_BITX( 0x80, 0x80, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Self Test", OSD_KEY_F2, IP_JOY_NONE, 0 )
PORT_DIPSETTING( 0x80, "Off")
PORT_DIPSETTING( 0x00, "On")
PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* ADC0 */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* ADC1 */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* ADC2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* ADC3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* LETA0 */
PORT_ANALOG ( 0xff, 0x40, IPT_DIAL | IPF_PLAYER2, 25, 0, 0x00, 0x7f )
PORT_START /* LETA1 */
PORT_ANALOG ( 0xff, 0x40, IPT_DIAL | IPF_PLAYER1, 25, 0, 0x00, 0x7f )
PORT_START /* LETA2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* LETA3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
/*************************************
*
* Graphics definitions
*
*************************************/
static struct GfxLayout atarisys2_alpha_512 =
{
8,8, /* 8*8 chars */
512, /* 512 chars */
2, /* 2 bits per pixel */
{ 0, 4 },
{ 0, 1, 2, 3, 8, 9, 10, 11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
8*16 /* every char takes 16 consecutive bytes */
};
static struct GfxLayout atarisys2_alpha_1024 =
{
8,8, /* 8*8 chars */
1024, /* 1024 chars */
2, /* 2 bits per pixel */
{ 0, 4 },
{ 0, 1, 2, 3, 8, 9, 10, 11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
8*16 /* every char takes 16 consecutive bytes */
};
static struct GfxLayout atarisys2_8x8x4_4096 =
{
8,8, /* 8*8 sprites */
4096, /* 4096 of them */
4, /* 4 bits per pixel */
{ 0, 4, 4096*16*8, 4096*16*8+4 },
{ 0, 1, 2, 3, 8, 9, 10, 11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
8*16 /* every sprite takes 16 consecutive bytes */
};
static struct GfxLayout atarisys2_8x8x4_8192 =
{
8,8, /* 8*8 sprites */
8192, /* 8192 of them */
4, /* 4 bits per pixel */
{ 0, 4, 8192*16*8, 8192*16*8+4 },
{ 0, 1, 2, 3, 8, 9, 10, 11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
8*16 /* every sprite takes 16 consecutive bytes */
};
static struct GfxLayout atarisys2_8x8x4_16384 =
{
8,8, /* 8*8 sprites */
16384, /* 16384 of them */
4, /* 4 bits per pixel */
{ 0, 4, 16384*16*8, 16384*16*8+4 },
{ 0, 1, 2, 3, 8, 9, 10, 11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
8*16 /* every sprite takes 16 consecutive bytes */
};
static struct GfxLayout atarisys2_16x16x4_2048 =
{
16,16, /* 16*16 sprites */
2048, /* 2048 of them */
4, /* 4 bits per pixel */
{ 0, 4, 2048*64*8, 2048*64*8+4 },
{ 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
8*64 /* every sprite takes 64 consecutive bytes */
};
static struct GfxLayout atarisys2_16x16x4_8192 =
{
16,16, /* 16*16 sprites */
8192, /* 8192 of them */
4, /* 4 bits per pixel */
{ 0, 4, 8192*64*8, 8192*64*8+4 },
{ 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
8*64 /* every sprite takes 64 consecutive bytes */
};
static struct GfxDecodeInfo paperboy_gfxdecodeinfo[] =
{
{ 1, 0x060000, &atarisys2_alpha_512, 64, 8 },
{ 1, 0x000000, &atarisys2_8x8x4_4096, 128, 8 },
{ 1, 0x020000, &atarisys2_16x16x4_2048, 0, 4 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo apb_gfxdecodeinfo[] =
{
{ 1, 0x180000, &atarisys2_alpha_1024, 64, 8 },
{ 1, 0x000000, &atarisys2_8x8x4_16384, 128, 8 },
{ 1, 0x080000, &atarisys2_16x16x4_8192, 0, 4 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo a720_gfxdecodeinfo[] =
{
{ 1, 0x140000, &atarisys2_alpha_1024, 64, 8 },
{ 1, 0x000000, &atarisys2_8x8x4_8192, 128, 8 },
{ 1, 0x040000, &atarisys2_16x16x4_8192, 0, 4 },
{ -1 } /* end of array */
};
static struct GfxDecodeInfo ssprint_gfxdecodeinfo[] =
{
{ 1, 0x0c0000, &atarisys2_alpha_1024, 64, 8 },
{ 1, 0x000000, &atarisys2_8x8x4_16384, 128, 8 },
{ 1, 0x080000, &atarisys2_16x16x4_2048, 0, 4 },
{ -1 } /* end of array */
};
/* warning: not real; same as Super Sprint for now */
static struct GfxDecodeInfo csprint_gfxdecodeinfo[] =
{
{ 1, 0x0c0000, &atarisys2_alpha_1024, 64, 8 },
{ 1, 0x000000, &atarisys2_8x8x4_16384, 128, 8 },
{ 1, 0x080000, &atarisys2_16x16x4_2048, 0, 4 },
{ -1 } /* end of array */
};
/*************************************
*
* Sound definitions
*
*************************************/
static struct TMS5220interface tms5220_interface =
{
640000, /* clock speed (80*samplerate) */
100, /* volume */
0 /* irq handler */
};
static struct POKEYinterface pokey_interface =
{
2, /* 2 chips */
1789790, /* ? */
60,
POKEY_DEFAULT_GAIN,
USE_CLIP,
/* The 8 pot handlers */
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
/* The allpot handler */
{ 0 }
};
static struct YM2151interface ym2151_interface =
{
1, /* 1 chip */
3579580, /* 3.58 MHZ ? */
{ 40 },
{ 0 }
};
/*************************************
*
* Machine driver
*
*************************************/
static struct MachineDriver paperboy_machine_driver =
{
/* basic machine hardware */
{
{
CPU_T11,
10000000, /* 10 MHz */
0,
atarisys2_readmem,atarisys2_writemem,0,0,
atarisys2_interrupt,1
},
{
CPU_M6502,
1789790,
2,
atarisys2_sound_readmem,atarisys2_sound_writemem,0,0,
0,0,
atarisys2_sound_interrupt,250
},
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* we need some interleave since the sound CPU talks to the main CPU */
paperboy_init_machine,
/* video hardware */
64*8, 48*8, { 0*8, 64*8-1, 0*8, 48*8-1 },
paperboy_gfxdecodeinfo,
256,256,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
0,
paperboy_vh_start,
atarisys2_vh_stop,
atarisys2_vh_screenrefresh,
/* sound hardware */
SOUND_SUPPORTS_STEREO,0,0,0,
{
{
SOUND_YM2151,
&ym2151_interface
},
{
SOUND_TMS5220,
&tms5220_interface
},
{
SOUND_POKEY,
&pokey_interface
}
}
};
static struct MachineDriver apb_machine_driver =
{
/* basic machine hardware */
{
{
CPU_T11,
10000000, /* 10 MHz */
0,
atarisys2_readmem,atarisys2_writemem,0,0,
atarisys2_interrupt,1
},
{
CPU_M6502,
1789790,
2,
atarisys2_sound_readmem,atarisys2_sound_writemem,0,0,
0,0,
atarisys2_sound_interrupt,250
},
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* we need some interleave since the sound CPU talks to the main CPU */
apb_init_machine,
/* video hardware */
64*8, 48*8, { 0*8, 64*8-1, 0*8, 48*8-1 },
apb_gfxdecodeinfo,
256,256,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
0,
apb_vh_start,
atarisys2_vh_stop,
atarisys2_vh_screenrefresh,
/* sound hardware */
SOUND_SUPPORTS_STEREO,0,0,0,
{
{
SOUND_YM2151,
&ym2151_interface
},
{
SOUND_TMS5220,
&tms5220_interface
},
{
SOUND_POKEY,
&pokey_interface
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -