⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ninjakd2.c

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    PORT_START  /* dsw0 */
    PORT_DIPNAME( 0x01, 0x01, "Unknown", IP_KEY_NONE )
    PORT_DIPSETTING(    0x01, "Off" )
    PORT_DIPSETTING(    0x00, "On" )
    PORT_DIPNAME( 0x06, 0x06, "Bonus Life", IP_KEY_NONE )
    PORT_DIPSETTING(    0x04, "20000 50000" )
    PORT_DIPSETTING(    0x06, "30000 50000" )
    PORT_DIPSETTING(    0x02, "50000 100000" )
    PORT_DIPSETTING(    0x00, "None" )
    PORT_DIPNAME( 0x08, 0x08, "Allow Continue", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "No" )
    PORT_DIPSETTING(    0x08, "Yes"  )
    PORT_DIPNAME( 0x10, 0x00, "Demo Sounds", IP_KEY_NONE )
    PORT_DIPSETTING(    0x10, "Off" )
    PORT_DIPSETTING(    0x00, "On"  )
    PORT_DIPNAME( 0x20, 0x20, "Difficulty", IP_KEY_NONE )
    PORT_DIPSETTING(    0x20, "Normal" )
    PORT_DIPSETTING(    0x00, "Hard" )
    PORT_DIPNAME( 0x40, 0x40, "Lives", IP_KEY_NONE )
    PORT_DIPSETTING(    0x40, "3" )
    PORT_DIPSETTING(    0x00, "4" )
    PORT_DIPNAME( 0x80, 0x00, "Language", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "English" )
    PORT_DIPSETTING(    0x80, "Japanese" )

    PORT_START  /* dsw1 */
    PORT_BITX(    0x01, 0x01, IPT_DIPSWITCH_NAME | IPF_TOGGLE, "Service Mode", OSD_KEY_F2, IP_JOY_NONE, 0 )
    PORT_DIPSETTING(    0x01, "Off" )
    PORT_DIPSETTING(    0x00, "On" )
    PORT_DIPNAME( 0x02, 0x00, "Cabinet", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "Upright" )
    PORT_DIPSETTING(    0x02, "Cocktail" )
    PORT_DIPNAME( 0x04, 0x00, "Credit Service", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "Off" )
    PORT_DIPSETTING(    0x04, "On" )
    PORT_DIPNAME( 0x18, 0x18, "Coin B", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "2 Coins/1 Credit" )
    PORT_DIPSETTING(    0x18, "1 Coin/1 Credit" )
    PORT_DIPSETTING(    0x10, "1 Coin/2 Credits" )
    PORT_DIPSETTING(    0x08, "1 Coin/3 Credits" )
    PORT_DIPNAME( 0xe0, 0xe0, "Coin A", IP_KEY_NONE )
    PORT_DIPSETTING(    0x00, "5 Coins/1 Credit" )
    PORT_DIPSETTING(    0x20, "4 Coins/1 Credit" )
    PORT_DIPSETTING(    0x40, "3 Coins/1 Credit" )
    PORT_DIPSETTING(    0x60, "2 Coins/1 Credit" )
    PORT_DIPSETTING(    0xe0, "1 Coin/1 Credit" )
    PORT_DIPSETTING(    0xc0, "1 Coin/2 Credits" )
    PORT_DIPSETTING(    0xa0, "1 Coin/3 Credits" )
    PORT_DIPSETTING(    0x80, "1 Coin/4 Credits" )
INPUT_PORTS_END



static struct GfxLayout charlayout =
{
	8,8,     /* 8*8 characters */
	1024,    /* 1024 characters */
	4,       /* 4 bits per pixel */
	{0,1,2,3 }, /* the bitplanes are packed in one nibble */
	{0, 4, 16384*8+0, 16384*8+4, 8, 12, 16384*8+8, 16384*8+12 },
	{16*0, 16*1, 16*2, 16*3, 16*4, 16*5, 16*6, 16*7 },
	8*16
};

static struct GfxLayout spritelayout =
{
	16,16,   /* 16*16 characters */
	1024,    /* 1024 sprites */
	4,       /* 4 bits per pixel */
	{0,1,2,3}, /* the bitplanes are packed in one nibble */
	{0,  4,  65536*8+0,  65536*8+4,  8, 12,  65536*8+8, 65536*8+12,
		16*8+0, 16*8+4, 16*8+65536*8+0, 16*8+65536*8+4, 16*8+8, 16*8+12, 16*8+65536*8+8, 16*8+65536*8+12},
	{16*0, 16*1, 16*2, 16*3, 16*4, 16*5, 16*6, 16*7,
		32*8+16*0, 32*8+16*1, 32*8+16*2, 32*8+16*3, 32*8+16*4, 32*8+16*5, 32*8+16*6, 32*8+16*7},
	8*64
};

static struct GfxDecodeInfo gfxdecodeinfo[] =
{
	{ 1, 0x20000, &spritelayout,  0*16, 16 },
	{ 1, 0x00000, &spritelayout, 16*16, 16 },
	{ 1, 0x40000, &charlayout,   32*16, 16 },
	{ -1 } /* end of array */
};

static struct YM2203interface ym2203_interface =
{
	2, /* 2 chips */
	1250000, /* 5000000/4 MHz ???? */
	{ YM2203_VOL(25,25), YM2203_VOL(25,25) },
	{ 0 },
	{ 0 },
	{ 0 },
	{ 0 }
};



static struct MachineDriver ninjakd2_machine_driver =
{
	{
		{
			CPU_Z80,
			6000000,		/* 12000000/2 ??? */
			0,			/* & vbl duration since sprites are */
			readmem,writemem,0,0,	/* very sensitive to these settings */
			ninjakd2_interrupt,1
		}
	},
	60, 10000,			/* frames per second, vblank duration */
	10,				/* single CPU, no need for interleaving */
	ninjakd2_init_machine,
	32*8, 32*8,
	{ 0*8, 32*8-1, 4*8, 28*8-1 },
	gfxdecodeinfo,
	48*16,48*16,
	0,
	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
	0,
	ninjakd2_vh_start,
	ninjakd2_vh_stop,
	ninjakd2_vh_screenrefresh,

	0,0,0,0,
	{
		{
			SOUND_YM2203,
			&ym2203_interface
		}
	}
};

static struct MachineDriver ninjak2a_machine_driver =
{
	{
/* TODO: currently I have to put the sound CPU first because the main core supports */
/* opcode decryption only on the first CPU */
		{
			CPU_Z80 | CPU_AUDIO_CPU,
			4000000,		/* 12000000/3 ??? */
			0,
			snd_readmem,snd_writemem,
			0,snd_writeport,
			interrupt,2
		},
		{
			CPU_Z80,
			6000000,		/* 12000000/2 ??? */
			2,			/* & vbl duration since sprites are */
			readmem,writemem,0,0,	/* very sensitive to these settings */
			ninjakd2_interrupt,1
		}
	},
	60, 10000,	/* frames per second, vblank duration */
	10,
	ninjak2a_init_machine,
	32*8, 32*8,
	{ 0*8, 32*8-1, 4*8, 28*8-1 },
	gfxdecodeinfo,
	48*16,48*16,
	0,
	VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
	0,
	ninjakd2_vh_start,
	ninjakd2_vh_stop,
	ninjakd2_vh_screenrefresh,

	0,0,0,0,
	{
		{
			SOUND_YM2203,
			&ym2203_interface
		}
	}
};



ROM_START( ninjakd2_rom )
	ROM_REGION(0x30000)
	ROM_LOAD( "nk2_01.rom",   0x00000, 0x8000, 0x3cdbb906 )
	ROM_LOAD( "nk2_02.rom",   0x10000, 0x8000, 0xb5ce9a1a )
	ROM_LOAD( "nk2_03.rom",   0x18000, 0x8000, 0xad275654 )
	ROM_LOAD( "nk2_04.rom",   0x20000, 0x8000, 0xe7692a77 )
	ROM_LOAD( "nk2_05.rom",   0x28000, 0x8000, 0x5dac9426 )

	ROM_REGION_DISPOSE(0x48000)	/* temporary space for graphics (disposed after conversion) */
	ROM_LOAD( "nk2_08.rom",   0x00000, 0x4000, 0x1b79c50a )   
	ROM_CONTINUE(	        0x10000, 0x4000)
	ROM_CONTINUE(	        0x04000, 0x4000)
	ROM_CONTINUE(	        0x14000, 0x4000)
	ROM_LOAD( "nk2_07.rom",   0x08000, 0x4000, 0x0be5cd13 )
	ROM_CONTINUE(	        0x18000, 0x4000)
	ROM_CONTINUE(	        0x0C000, 0x4000)
	ROM_CONTINUE(	        0x1C000, 0x4000)
	ROM_LOAD( "nk2_11.rom",   0x20000, 0x4000, 0x41a714b3 )   
	ROM_CONTINUE(	        0x30000, 0x4000)
	ROM_CONTINUE(	        0x24000, 0x4000)
	ROM_CONTINUE(	        0x34000, 0x4000)
	ROM_LOAD( "nk2_10.rom",   0x28000, 0x4000, 0xc913c4ab )
	ROM_CONTINUE(	        0x38000, 0x4000)
	ROM_CONTINUE(	        0x2C000, 0x4000)
	ROM_CONTINUE(	        0x3C000, 0x4000)
	ROM_LOAD( "nk2_12.rom",   0x40000, 0x02000, 0xdb5657a9 )  
	ROM_CONTINUE(	        0x44000, 0x02000)
	ROM_CONTINUE(	        0x42000, 0x02000)
	ROM_CONTINUE(	        0x46000, 0x02000)

	ROM_REGION(0x10000)
	ROM_LOAD( "nk2_06.rom",   0x0000, 0x10000, 0xd3a18a79 )  

	ROM_REGION(0x10000)
	ROM_LOAD( "nk2_09.rom",   0x0000, 0x10000, 0xc1d2d170 )  
ROM_END

ROM_START( ninjak2a_rom )
	ROM_REGION(0x10000)
	ROM_LOAD( "nk2_06.bin",   0x0000, 0x10000, 0x7bfe6c9e )  

	ROM_REGION_DISPOSE(0x48000)	/* temporary space for graphics (disposed after conversion) */
	ROM_LOAD( "nk2_08.rom",   0x00000, 0x4000, 0x1b79c50a )   
	ROM_CONTINUE(	        0x10000, 0x4000)
	ROM_CONTINUE(	        0x04000, 0x4000)
	ROM_CONTINUE(	        0x14000, 0x4000)
	ROM_LOAD( "nk2_07.rom",   0x08000, 0x4000, 0x0be5cd13 )
	ROM_CONTINUE(	        0x18000, 0x4000)
	ROM_CONTINUE(	        0x0C000, 0x4000)
	ROM_CONTINUE(	        0x1C000, 0x4000)
	ROM_LOAD( "nk2_11.rom",   0x20000, 0x4000, 0x41a714b3 )   
	ROM_CONTINUE(	        0x30000, 0x4000)
	ROM_CONTINUE(	        0x24000, 0x4000)
	ROM_CONTINUE(	        0x34000, 0x4000)
	ROM_LOAD( "nk2_10.rom",   0x28000, 0x4000, 0xc913c4ab )
	ROM_CONTINUE(	        0x38000, 0x4000)
	ROM_CONTINUE(	        0x2C000, 0x4000)
	ROM_CONTINUE(	        0x3C000, 0x4000)
	ROM_LOAD( "nk2_12.rom",   0x40000, 0x02000, 0xdb5657a9 )  
	ROM_CONTINUE(	        0x44000, 0x02000)
	ROM_CONTINUE(	        0x42000, 0x02000)
	ROM_CONTINUE(	        0x46000, 0x02000)

	ROM_REGION(0x30000)
	ROM_LOAD( "nk2_01.bin",   0x00000, 0x8000, 0xe6adca65 )
	ROM_LOAD( "nk2_02.bin",   0x10000, 0x8000, 0xd9284bd1 )
	ROM_LOAD( "nk2_03.rom",   0x18000, 0x8000, 0xad275654 )
	ROM_LOAD( "nk2_04.rom",   0x20000, 0x8000, 0xe7692a77 )
	ROM_LOAD( "nk2_05.bin",   0x28000, 0x8000, 0x960725fb )

	ROM_REGION(0x10000)
	ROM_LOAD( "nk2_09.rom",   0x0000, 0x10000, 0xc1d2d170 )  
ROM_END



static int hiload(void)
{
    void *f;
    unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[main_cpu_num].memory_region];

    /* check if the hi score table has already been initialized */
    if (memcmp(&RAM[0xe0f4],"\x00\x30\x00",3) == 0 )
    {
        if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
        {
            osd_fread(f,&RAM[0xe04e],100);
	    osd_fread(f,&RAM[0xe0f4],3);
            osd_fclose(f);
        }
        return 1;
    }
    else
        return 0;  /* we can't load the hi scores yet */
}

static void hisave(void)
{
    void *f;
    unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[main_cpu_num].memory_region];

    if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
    {
        osd_fwrite(f,&RAM[0xe04e],100);
	osd_fwrite(f,&RAM[0xe0f4],3);
        osd_fclose(f);
    }
}

void ninjak2a_sound_decode(void)
{
	int A;
	unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];

	memcpy(ROM,RAM,0xffff);

	for (A = 0x0000;A < 0x7FFF;A++)
		RAM[A] = RAM[A+0x8000];
}

struct GameDriver ninjakd2_driver =
{
	__FILE__,
	0,
	"ninjakd2",
	"Ninja Kid II",
	"1987",
	"UPL",
	"Jarek Parchanski (MAME driver)\nRoberto Ventura (hardware info)",
#if 0
"\n\n\nGame authors:\n\n \
Game design:    Tsutomu Fuzisawa\n \
Program design: Satoru Kinjo\n \
Char. design:   Tsutomu Fizisawa\n \
Char. design:   Akemi Tsunoda\n \
Sound compose:  Tsutomu Fuzisawa\n \
Bgm create:     Mecano Associate\n \
Data make:      Takashi Hayashi\n",
#endif
	GAME_NOT_WORKING,
	&ninjakd2_machine_driver,
	0,

	ninjakd2_rom,
	0,0,
	0,
	0, /* sound prom */

	input_ports,

	0, 0, 0,
	ORIENTATION_DEFAULT,

	hiload,hisave
};

struct GameDriver ninjak2a_driver =
{
	__FILE__,
	&ninjakd2_driver,
	"ninjak2a",
	"Ninja Kid II (alternate)",
	"1987",
	"UPL",
	"Jarek Parchanski (MAME driver)\nRoberto Ventura (hardware info)",
#if 0
"\n\n\nGame authors:\n\n \
Game design:    Tsutomu Fuzisawa\n \
Program design: Satoru Kinjo\n \
Char. design:   Tsutomu Fizisawa\n \
Char. design:   Akemi Tsunoda\n \
Sound compose:  Tsutomu Fuzisawa\n \
Bgm create:     Mecano Associate\n \
Data make:      Takashi Hayashi\n",
#endif
	0,
	&ninjak2a_machine_driver,
	0,

	ninjak2a_rom,
	0,ninjak2a_sound_decode,
	0,
	0, /* sound prom */

	input_ports,

	0, 0, 0,
	ORIENTATION_DEFAULT,

	hiload,hisave
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -