📄 gaiden.c
字号:
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x01, 0x01, "Demo Sounds", IP_KEY_NONE )
PORT_DIPSETTING( 0x00, "Off" )
PORT_DIPSETTING( 0x01, "On" )
PORT_START /* DSWB */
PORT_DIPNAME( 0x01, 0x01, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x01, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x02, 0x02, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x02, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x04, 0x04, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x04, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x08, 0x08, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x08, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x10, 0x10, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x10, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0x20, 0x20, "Unknown", IP_KEY_NONE )
PORT_DIPSETTING( 0x20, "Off" )
PORT_DIPSETTING( 0x00, "On" )
PORT_DIPNAME( 0xc0, 0xc0, "Lives", IP_KEY_NONE )
PORT_DIPSETTING( 0x80, "1" )
PORT_DIPSETTING( 0xc0, "2" )
PORT_DIPSETTING( 0x40, "3" )
/* PORT_DIPSETTING( 0x00, "2" ) */
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
INPUT_PORTS_END
static struct GfxLayout tilelayout =
{
8,8, /* 8*8 tiles */
2048, /* 2048 tiles */
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 },
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
32*8 /* every tile takes 32 consecutive bytes */
};
static struct GfxLayout tile2layout =
{
16,16, /* 16*16 sprites */
4096, /* 2048 tiles */
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 }, /* the bitplanes are packed in one nibble */
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4,
32*8+0*4, 32*8+1*4, 32*8+2*4, 32*8+3*4,
32*8+4*4, 32*8+5*4, 32*8+6*4, 32*8+7*4,},
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32},
128*8 /* every sprite takes 128 bytes */
};
static struct GfxLayout spritelayout =
{
32,32, /* 32*32 sprites */
2048, /* 2048 sprites */
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 }, /* the bitplanes are packed in one nibble */
{ 0*4, 1*4, 0*4+2048*256*8, 1*4+2048*256*8, 2*4, 3*4, 2*4+2048*256*8, 3*4+2048*256*8,
32*4+0*4, 32*4+1*4, 32*4+0*4+2048*256*8, 32*4+1*4+2048*256*8, 32*4+2*4, 32*4+3*4, 32*4+2*4+2048*256*8, 32*4+3*4+2048*256*8,
128*4+0*4, 128*4+1*4, 128*4+0*4+2048*256*8, 128*4+1*4+2048*256*8, 128*4+2*4, 128*4+3*4, 128*4+2*4+2048*256*8, 128*4+3*4+2048*256*8,
160*4+0*4, 160*4+1*4, 160*4+0*4+2048*256*8, 160*4+1*4+2048*256*8, 160*4+2*4, 160*4+3*4, 160*4+2*4+2048*256*8, 160*4+3*4+2048*256*8 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16,
64*16, 65*16, 66*16, 67*16, 68*16, 69*16, 70*16, 71*16,
80*16, 81*16, 82*16, 83*16, 84*16, 85*16, 86*16, 87*16 },
256*8 /* 256 bytes to next sprite */
};
static struct GfxLayout spritelayout16x16 =
{
16,16, /* 16*16 sprites */
8192, /* 8192 sprites */
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 }, /* the bitplanes are packed in one nibble */
{ 0*4, 1*4, 0*4+2048*256*8, 1*4+2048*256*8, 2*4, 3*4, 2*4+2048*256*8, 3*4+2048*256*8,
32*4+0*4, 32*4+1*4, 32*4+0*4+2048*256*8, 32*4+1*4+2048*256*8, 32*4+2*4, 32*4+3*4, 32*4+2*4+2048*256*8, 32*4+3*4+2048*256*8 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16 },
64*8 /* 64 bytes to the next sprite */
};
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x000000, &tilelayout, 256, 16 }, /* tiles 8x8*/
{ 1, 0x010000, &tile2layout, 768, 16 }, /* tiles 16x16*/
{ 1, 0x090000, &tile2layout, 512, 16 }, /* tiles 16x16*/
{ 1, 0x110000, &spritelayout, 0, 16 }, /* sprites 32x32*/
{ 1, 0x110000, &spritelayout16x16, 0, 16 }, /* sprites 16x16*/
{ -1 } /* end of array */
};
/* handler called by the 2203 emulator when the internal timers cause an IRQ */
static void irqhandler(void)
{
cpu_cause_interrupt(1,0xff);
}
static struct YM2203interface ym2203_interface =
{
2, /* 2 chips */
2000000, /* 2 MHz ? (hand tuned) */
{ YM2203_VOL(255,255), YM2203_VOL(255,255) },
{ 0 },
{ 0 },
{ 0 },
{ 0 },
{ irqhandler }
};
static struct OKIM6295interface okim6295_interface =
{
1, /* 1 chip */
8000, /* 8000Hz frequency */
3, /* memory region 3 */
{ 128 }
};
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
{
CPU_M68000,
8000000, /* 8 Mhz */
0,
readmem,writemem,0,0,
gaiden_interrupt,1,0,0
},
{
CPU_Z80 | CPU_AUDIO_CPU,
4000000, /* 4 MHz */
2, /* memory region #2 */
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0 /* NMIs are triggered by the main CPU */
/* IRQs are triggered by the YM2203 */
}
},
60, DEFAULT_60HZ_VBLANK_DURATION,
1, /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
0,
/* video hardware */
32*8, 30*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
1024, 1024,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
0,
gaiden_vh_start,
gaiden_vh_stop,
gaiden_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_YM2203,
&ym2203_interface
},
{
SOUND_OKIM6295,
&okim6295_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( gaiden_rom )
ROM_REGION(0x40000) /* 2*128k for 68000 code */
ROM_LOAD_EVEN( "gaiden.1", 0x00000, 0x20000, 0xe037ff7c )
ROM_LOAD_ODD ( "gaiden.2", 0x00000, 0x20000, 0x454f7314 )
ROM_REGION_DISPOSE(0x210000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "gaiden.5", 0x000000, 0x10000, 0x8d4035f7 ) /* 8x8 tiles */
ROM_LOAD( "14.bin", 0x010000, 0x20000, 0x1ecfddaa )
ROM_LOAD( "15.bin", 0x030000, 0x20000, 0x1291a696 )
ROM_LOAD( "16.bin", 0x050000, 0x20000, 0x140b47ca )
ROM_LOAD( "17.bin", 0x070000, 0x20000, 0x7638cccb )
ROM_LOAD( "18.bin", 0x090000, 0x20000, 0x3fadafd6 )
ROM_LOAD( "19.bin", 0x0b0000, 0x20000, 0xddae9d5b )
ROM_LOAD( "20.bin", 0x0d0000, 0x20000, 0x08cf7a93 )
ROM_LOAD( "21.bin", 0x0f0000, 0x20000, 0x1ac892f5 )
ROM_LOAD( "gaiden.6", 0x110000, 0x20000, 0xe7ccdf9f ) /* sprites A1 */
ROM_LOAD( "gaiden.8", 0x130000, 0x20000, 0x7ef7f880 ) /* sprites B1 */
ROM_LOAD( "gaiden.10", 0x150000, 0x20000, 0xa6451dec ) /* sprites C1 */
ROM_LOAD( "gaiden.12", 0x170000, 0x20000, 0x90f1e13a ) /* sprites D1 */
ROM_LOAD( "gaiden.7", 0x190000, 0x20000, 0x016bec95 ) /* sprites A2 */
ROM_LOAD( "gaiden.9", 0x1b0000, 0x20000, 0x6e9b7fd3 ) /* sprites B2 */
ROM_LOAD( "gaiden.11", 0x1d0000, 0x20000, 0x7fbfdf5e ) /* sprites C2 */
ROM_LOAD( "gaiden.13", 0x1f0000, 0x20000, 0x7d9f5c5e ) /* sprites D2 */
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "gaiden.3", 0x0000, 0x10000, 0x75fd3e6a ) /* Audio CPU is a Z80 */
ROM_REGION(0x20000) /* 128k for ADPCM samples - sound chip is OKIM6295 */
ROM_LOAD( "gaiden.4", 0x0000, 0x20000, 0xb0e0faf9 ) /* samples */
ROM_END
ROM_START( shadoww_rom )
ROM_REGION(0x40000) /* 2*128k for 68000 code */
ROM_LOAD_EVEN( "shadoww.1", 0x00000, 0x20000, 0xfefba387 )
ROM_LOAD_ODD ( "shadoww.2", 0x00000, 0x20000, 0x9b9d6b18 )
ROM_REGION_DISPOSE(0x210000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "gaiden.5", 0x000000, 0x10000, 0x8d4035f7 ) /* 8x8 tiles */
ROM_LOAD( "14.bin", 0x010000, 0x20000, 0x1ecfddaa )
ROM_LOAD( "15.bin", 0x030000, 0x20000, 0x1291a696 )
ROM_LOAD( "16.bin", 0x050000, 0x20000, 0x140b47ca )
ROM_LOAD( "17.bin", 0x070000, 0x20000, 0x7638cccb )
ROM_LOAD( "18.bin", 0x090000, 0x20000, 0x3fadafd6 )
ROM_LOAD( "19.bin", 0x0b0000, 0x20000, 0xddae9d5b )
ROM_LOAD( "20.bin", 0x0d0000, 0x20000, 0x08cf7a93 )
ROM_LOAD( "21.bin", 0x0f0000, 0x20000, 0x1ac892f5 )
ROM_LOAD( "gaiden.6", 0x110000, 0x20000, 0xe7ccdf9f ) /* sprites A1 */
ROM_LOAD( "gaiden.8", 0x130000, 0x20000, 0x7ef7f880 ) /* sprites B1 */
ROM_LOAD( "gaiden.10", 0x150000, 0x20000, 0xa6451dec ) /* sprites C1 */
ROM_LOAD( "shadoww.12a", 0x170000, 0x10000, 0x9bb07731 ) /* sprites D1 */
ROM_LOAD( "shadoww.12b", 0x180000, 0x10000, 0xa4a950a2 ) /* sprites D1 */
ROM_LOAD( "gaiden.7", 0x190000, 0x20000, 0x016bec95 ) /* sprites A2 */
ROM_LOAD( "gaiden.9", 0x1b0000, 0x20000, 0x6e9b7fd3 ) /* sprites B2 */
ROM_LOAD( "gaiden.11", 0x1d0000, 0x20000, 0x7fbfdf5e ) /* sprites C2 */
ROM_LOAD( "shadoww.13a", 0x1f0000, 0x10000, 0x996d2fa5 ) /* sprites D2 */
ROM_LOAD( "shadoww.13b", 0x200000, 0x10000, 0xb8df8a34 ) /* sprites D2 */
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "gaiden.3", 0x0000, 0x10000, 0x75fd3e6a ) /* Audio CPU is a Z80 */
ROM_REGION(0x20000) /* 128k for ADPCM samples - sound chip is OKIM6295 */
ROM_LOAD( "gaiden.4", 0x0000, 0x20000, 0xb0e0faf9 ) /* samples */
ROM_END
ROM_START( tknight_rom )
ROM_REGION(0x40000) /* 2*128k for 68000 code */
ROM_LOAD_EVEN( "tkni1.bin", 0x00000, 0x20000, 0x9121daa8 )
ROM_LOAD_ODD ( "tkni2.bin", 0x00000, 0x20000, 0x6669cd87 )
ROM_REGION_DISPOSE(0x210000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "tkni5.bin", 0x000000, 0x10000, 0x5ed15896 ) /* 8x8 tiles */
ROM_LOAD( "tkni7.bin", 0x010000, 0x80000, 0x4b4d4286 )
ROM_LOAD( "tkni6.bin", 0x090000, 0x80000, 0xf68fafb1 )
ROM_LOAD( "tkni9.bin", 0x110000, 0x80000, 0xd22f4239 ) /* sprites */
ROM_LOAD( "tkni8.bin", 0x190000, 0x80000, 0x4931b184 ) /* sprites */
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "tkni3.bin", 0x0000, 0x10000, 0x15623ec7 ) /* Audio CPU is a Z80 */
ROM_REGION(0x20000) /* 128k for ADPCM samples - sound chip is OKIM6295 */
ROM_LOAD( "tkni4.bin", 0x0000, 0x20000, 0xa7a1dbcf ) /* samples */
ROM_END
struct GameDriver gaiden_driver =
{
__FILE__,
0,
"gaiden",
"Ninja Gaiden",
"1988",
"Tecmo",
"Alex Pasadyn",
0,
&machine_driver,
0,
gaiden_rom,
0, 0,
0,
0, /* sound_prom */
gaiden_input_ports,
0, 0, 0, /* colors, palette, colortable */
ORIENTATION_DEFAULT,
0, 0
};
struct GameDriver shadoww_driver =
{
__FILE__,
&gaiden_driver,
"shadoww",
"Shadow Warriors",
"1988",
"Tecmo",
"Alex Pasadyn",
0,
&machine_driver,
0,
shadoww_rom,
0, 0,
0,
0, /* sound_prom */
gaiden_input_ports,
0, 0, 0, /* colors, palette, colortable */
ORIENTATION_DEFAULT,
0, 0
};
struct GameDriver tknight_driver =
{
__FILE__,
0,
"tknight",
"Tecmo Knight",
"1989",
"Tecmo",
"Alex Pasadyn\nNicola Salmoria",
0,
&machine_driver,
0,
tknight_rom,
0, 0,
0,
0, /* sound_prom */
tknight_input_ports,
0, 0, 0, /* colors, palette, colortable */
ORIENTATION_DEFAULT,
0, 0
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -