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

📄 dkong.c

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 C
📖 第 1 页 / 共 4 页
字号:
	if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
	{
		osd_fwrite(f,&RAM[0x6307],162);
		osd_fclose(f);
	}
}



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


	/* check if the hi score table has already been initialized */
	if (memcmp(&RAM[0x611d],"\x50\x76\x00",3) == 0 &&
			memcmp(&RAM[0x61a5],"\x00\x43\x00",3) == 0 &&
			memcmp(&RAM[0x60b8],"\x50\x76\x00",3) == 0)	/* high score */
	{
		void *f;


		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x6100],34*5);
			RAM[0x60b8] = RAM[0x611d];
			RAM[0x60b9] = RAM[0x611e];
			RAM[0x60ba] = RAM[0x611f];
			/* also copy the high score to the screen, otherwise it won't be */
			/* updated until a new game is started */
			videoram_w(0x0241,RAM[0x6107]);
			videoram_w(0x0221,RAM[0x6108]);
			videoram_w(0x0201,RAM[0x6109]);
			videoram_w(0x01e1,RAM[0x610a]);
			videoram_w(0x01c1,RAM[0x610b]);
			videoram_w(0x01a1,RAM[0x610c]);
			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[0].memory_region];


	if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
	{
		osd_fwrite(f,&RAM[0x6100],34*5);
		osd_fclose(f);
	}
}

static int dkong3_hiload(void)
{
	unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
	static int firsttime;
	/* check if the hi score table has already been initialized */
	/* the high score table is intialized to all 0, so first of all */
	/* we dirty it, then we wait for it to be cleared again */
	if (firsttime == 0)
	{
		memset(&RAM[0x6b00],0xff,34*5);
		firsttime = 1;
	}




	/* check if the hi score table has already been initialized */
	if (memcmp(&RAM[0x6b00],"\xf3\x76\xe8",3) == 0 &&
	    memcmp(&RAM[0x6ba7],"\x00\x5b\x76",3) == 0)
	{
		void *f;


		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x6b00],34*5);	/* hi scores */
			RAM[0x68f3] = RAM[0x6b1f];
			RAM[0x68f4] = RAM[0x6b1e];
			RAM[0x68f5] = RAM[0x6b1d];
			osd_fread(f,&RAM[0x6c20],0x40);	/* distributions */
			osd_fread(f,&RAM[0x6c16],4);
			osd_fclose(f);
		}
		firsttime = 0;
		return 1;
	}
	else return 0;	/* we can't load the hi scores yet */
}


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


	if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
	{
		osd_fwrite(f,&RAM[0x6b00],34*5);	/* hi scores */
		osd_fwrite(f,&RAM[0x6c20],0x40);	/* distribution */
		osd_fwrite(f,&RAM[0x6c16],4);
		osd_fclose(f);
	}
}


static int dkngjrjp_hiload(void)
{

	unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];

	/* check if the hi score table has already been initialized */
	if (memcmp(&RAM[0x611d],"\x00\x18\x01",3) == 0 &&
			memcmp(&RAM[0x61a5],"\x00\x57\x00",3) == 0 &&
			memcmp(&RAM[0x60b8],"\x00\x18\x01",3) == 0)	/* high score */
	{
		void *f;


		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x6100],34*5);
			osd_fclose(f);
			RAM[0x60b8] = RAM[0x611d];
			RAM[0x60b9] = RAM[0x611e];
			RAM[0x60ba] = RAM[0x611f];

			/* also copy the high score to the screen, otherwise it won't be */
			/* updated until a new game is started */
			videoram_w(0x0241,RAM[0x6107]);
			videoram_w(0x0221,RAM[0x6108]);
			videoram_w(0x0201,RAM[0x6109]);
			videoram_w(0x01e1,RAM[0x610a]);
			videoram_w(0x01c1,RAM[0x610b]);
			videoram_w(0x01a1,RAM[0x610c]);

		}

		return 1;
	}
	else return 0;	/* we can't load the hi scores yet */
}



struct GameDriver radarscp_driver =
{
	__FILE__,
	0,
	"radarscp",
	"Radar Scope",
	"1980",
	"Nintendo",
	"Andy White (protection workaround)\nGary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nEdward Massey (MageX emulator)\nNicola Salmoria (MAME driver)\nMarco Cassili\nAndy White (color info)\nTim Lindquist (color info)",
	0,
	&dkong_machine_driver,
	0,

	radarscp_rom,
	radarscp_unprotect, 0,
	0,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	radarscp_hiload,radarscp_hisave
};

struct GameDriver dkong_driver =
{
	__FILE__,
	0,
	"dkong",
	"Donkey Kong (US)",
	"1981",
	"Nintendo of America",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nEdward Massey (MageX emulator)\nNicola Salmoria (MAME driver)\nRon Fries (sound)\nGary Walton (color info)\nSimon Walls (color info)\nMarco Cassili",
	0,
	&dkong_machine_driver,
	0,

	dkong_rom,
	0, 0,
	sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	hiload, hisave
};

struct GameDriver dkongjp_driver =
{
	__FILE__,
	&dkong_driver,
	"dkongjp",
	"Donkey Kong (Japan)",
	"1981",
	"Nintendo",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nEdward Massey (MageX emulator)\nNicola Salmoria (MAME driver)\nRon Fries (sound)\nGary Walton (color info)\nSimon Walls (color info)\nMarco Cassili",
	0,
	&dkong_machine_driver,
	0,

	dkongjp_rom,
	0, 0,
	sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	hiload, hisave
};

struct GameDriver dkongjr_driver =
{
	__FILE__,
	0,
	"dkongjr",
	"Donkey Kong Junior (US)",
	"1982",
	"Nintendo of America",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nNicola Salmoria (MAME driver)\nTim Lindquist (color info)\nMarco Cassili",
	0,
	&dkongjr_machine_driver,
	0,

	dkongjr_rom,
	0, 0,
	dkongjr_sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	hiload, hisave
};

struct GameDriver dkngjrjp_driver =
{
	__FILE__,
	&dkongjr_driver,
	"dkngjrjp",
	"Donkey Kong Jr. (Original Japanese)",
	"1982",
	"bootleg?",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nNicola Salmoria (MAME driver)\nTim Lindquist (color info)\nMarco Cassili",
	0,
	&dkongjr_machine_driver,
	0,

	dkngjrjp_rom,
	0, 0,
	dkongjr_sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	dkngjrjp_hiload,hisave
};

struct GameDriver dkjrjp_driver =
{
	__FILE__,
	&dkongjr_driver,
	"dkjrjp",
	"Donkey Kong Junior (Japan)",
	"1982",
	"Nintendo",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nNicola Salmoria (MAME driver)\nTim Lindquist (color info)\nMarco Cassili",
	0,
	&dkongjr_machine_driver,
	0,

	dkjrjp_rom,
	0, 0,
	dkongjr_sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	hiload, hisave
};

struct GameDriver dkjrbl_driver =
{
	__FILE__,
	&dkongjr_driver,
	"dkjrbl",
	"Donkey Kong Junior (bootleg?)",
	"1982",
	"Nintendo of America",
	"Gary Shepherdson (Kong emulator)\nBrad Thomas (hardware info)\nNicola Salmoria (MAME driver)\nTim Lindquist (color info)\nMarco Cassili",
	0,
	&dkongjr_machine_driver,
	0,

	dkjrbl_rom,
	0, 0,
	dkongjr_sample_names,
	0,      /* sound_prom */

	dkong_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	hiload, hisave
};

struct GameDriver dkong3_driver =
{
	__FILE__,
	0,
	"dkong3",
	"Donkey Kong 3",
	"1983",
	"Nintendo of America",
	"Mirko Buffoni (MAME driver)\nNicola Salmoria (additional code)\nTim Lindquist (color info)\nMarco Cassili",
	0,
	&dkong3_machine_driver,
	0,

	dkong3_rom,
	0, 0,
	0,
	0,      /* sound_prom */

	dkong3_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_ROTATE_90,

	dkong3_hiload, dkong3_hisave
};


/* Since this game does not work the input ports and dip switches
 have not been tested */
struct GameDriver hunchy_driver =
{
	__FILE__,
	0,
	"hunchy",
	"Hunchback",
	"????",
	"?????",
	"Nicola Salmoria (MAME driver)\nTim Lindquist (color info)",
	GAME_NOT_WORKING,
	&dkongjr_machine_driver,
	0,

	hunchy_rom,
	0, 0,
	0,
	0,      /* sound_prom */

	dkong_input_ports,

	hunchy_color_prom, 0, 0,
	ORIENTATION_ROTATE_90,

	0, 0
};

struct GameDriver herocast_driver =
{
	__FILE__,
	0,
	"herocast",
	"herocast",
	"1984",
	"Seatongrove (Crown license)",
	"Nicola Salmoria",
	GAME_NOT_WORKING,
	&dkong_machine_driver,
	0,

	herocast_rom,
	herocast_decode, 0,
	0,
	0,      /* sound_prom */

	dkong_input_ports,

	hunchy_color_prom, 0, 0,
	ORIENTATION_ROTATE_90,

	0, 0
};

⌨️ 快捷键说明

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