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

📄 btime.c

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
static int eggs_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[0x0400],"\x17\x25\x19",3)==0) &&
		(memcmp(&RAM[0x041B],"\x00\x47\x00",3) == 0))
	{
		void *f;

		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x0400],0x1E);
			/* Fix hi score at top */
			memcpy(&RAM[0x0015],&RAM[0x0403],3);
			osd_fclose(f);
		}

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

static void eggs_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[0x0400],0x1E);
		osd_fclose(f);
	}
}

static int lnc_hiload(void)
{
	unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
	static int firsttime=0;
	/* 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[0x0008],0xff,3);
		memset(&RAM[0x0294],0xff,16);
		memset(&RAM[0x02a6],0xff,16);
		firsttime = 1;
	}

	/*   Check if the hi score table has already been initialized.
	 */
	if ((memcmp(&RAM[0x0008],"\x00\x00\x00",3)==0) &&
			(memcmp(&RAM[0x02a6],"\x00\x00\x00",3) == 0))

	{
		void *f;

		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			int banksave, i;

			osd_fread(f,&RAM[0x0008],0x03);
			osd_fread(f,&RAM[0x0294],0x0f);
			osd_fread(f,&RAM[0x02a6],0x0f);

			/* Put high score on screen as we missed when it was done */
			/* by the program */
			banksave = *lnc_charbank;
			*lnc_charbank = 0;

			lnc_videoram_w(0x004c, 0x0b);
			lnc_videoram_w(0x0052, (RAM[0x0008] & 0x0f) + 1);
			lnc_videoram_w(0x0051, (RAM[0x0008] >> 4) + 1);
			lnc_videoram_w(0x0050, (RAM[0x0009] & 0x0f) + 1);
			lnc_videoram_w(0x004f, (RAM[0x0009] >> 4) + 1);
			lnc_videoram_w(0x004e, (RAM[0x000a] & 0x0f) + 1);
			lnc_videoram_w(0x004d, (RAM[0x000a] >> 4) + 1);

			/* Remove leading zeros */
			for (i = 0; i < 5; i++)
			{
				if (videoram_r(0x004d + i) != 0x01) break;

				lnc_videoram_w(0x004c + i, 0x00);
				lnc_videoram_w(0x004d + i, 0x0b);
			}

			*lnc_charbank = banksave;

			osd_fclose(f);
		}
		firsttime = 0;
		return 1;
	}

	/*
	 *  The hi scores can't be loaded yet.
	 */
	return 0;
}

static void lnc_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[0x0008],0x03);
		osd_fwrite(f,&RAM[0x0294],0x0f);
		osd_fwrite(f,&RAM[0x02a6],0x0f);
		osd_fclose(f);
	}
}

static int bnj_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[0x0500],"\x01\x00\x12",3)==0) &&
		(memcmp(&RAM[0x050c],"\x00\x19\x82",3) == 0))

	/*if (RAM[0x0640] == 0x4d)*/
	{
		void *f;

		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x0500],15);
			osd_fread(f,&RAM[0x0640],15);
			osd_fclose(f);
			/* copy top score to top of screen */
			RAM[0x000c] = RAM[0x0500];
			RAM[0x000b] = RAM[0x0501];
			RAM[0x000a] = RAM[0x0502];
		}

		return 1;
	}

	/*
	 *  The hi scores can't be loaded yet.
	 */
	return 0;
}

static void bnj_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[0x0500],15);
		osd_fwrite(f,&RAM[0x0640],15);
		osd_fclose(f);
	}
}


static int zoar_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[0x034b],"\x20",1) == 0)
	{
		void *f;

		if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
		{
			osd_fread(f,&RAM[0x02dd],3);
			osd_fread(f,&RAM[0x02e5],5*3);
			osd_fread(f,&RAM[0x034b],3);
			osd_fread(f,&RAM[0x0356],3);
			osd_fread(f,&RAM[0x0361],3);
			osd_fread(f,&RAM[0x036c],3);
			osd_fread(f,&RAM[0x0377],3);
			osd_fclose(f);
		}

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

static void zoar_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[0x02dd],3);
		osd_fwrite(f,&RAM[0x02e5],5*3);
		osd_fwrite(f,&RAM[0x034b],3);
		osd_fwrite(f,&RAM[0x0356],3);
		osd_fwrite(f,&RAM[0x0361],3);
		osd_fwrite(f,&RAM[0x036c],3);
		osd_fwrite(f,&RAM[0x0377],3);
		osd_fclose(f);
	}
}



struct GameDriver btime_driver =
{
	__FILE__,
	0,
	"btime",
	"Burger Time (Midway)",
	"1982",
	"Data East (Bally Midway license)",
	"Kevin Brisley (Replay emulator)\nMirko Buffoni (MAME driver)\nNicola Salmoria (MAME driver)\nZsolt Vasvari (ROM decryption)",
	0,
	&btime_machine_driver,
	0,

	btime_rom,
	0, btime_decode,
	0,
	0,	/* sound_prom */

	btime_input_ports,

	0, 0, 0,
	ORIENTATION_DEFAULT,

	btime_hiload, btime_hisave
};

struct GameDriver btimea_driver =
{
	__FILE__,
	&btime_driver,
	"btimea",
	"Burger Time (Data East)",
	"1982",
	"Data East Corporation",
	"Kevin Brisley (Replay emulator)\nMirko Buffoni (MAME driver)\nNicola Salmoria (MAME driver)\nZsolt Vasvari (ROM decryption)",
	0,
	&btime_machine_driver,
	0,

	btimea_rom,
	0, btime_decode,
	0,
	0,	/* sound_prom */

	btime_input_ports,

	0, 0, 0,
	ORIENTATION_DEFAULT,

	btime_hiload, btime_hisave
};

struct GameDriver cookrace_driver =
{
	__FILE__,
	&btime_driver,
	"cookrace",
	"Cook Race",
	"1982",
	"bootleg",
	"Kevin Brisley (Replay emulator)\nMirko Buffoni (MAME driver)\nNicola Salmoria (MAME driver)",
	0,
	&cookrace_machine_driver,
	0,

	cookrace_rom,
	0, cookrace_decode,
	0,
	0,	/* sound_prom */

	cookrace_input_ports,

    PROM_MEMORY_REGION(3), 0, 0,
	ORIENTATION_DEFAULT,

	0, 0
};

struct GameDriver eggs_driver =
{
	__FILE__,
	0,
	"eggs",
	"Eggs",
	"1983",
	"Universal USA",
	"Nicola Salmoria",
	0,
	&eggs_machine_driver,
	0,

	eggs_rom,
	0, 0,
	0,
	0,	/* sound_prom */

	eggs_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_DEFAULT,

	eggs_hiload, eggs_hisave
};

struct GameDriver scregg_driver =
{
	__FILE__,
	&eggs_driver,
	"scregg",
	"Scrambled Egg",
	"1983",
	"Technos",
	"Nicola Salmoria",
	0,
	&eggs_machine_driver,
	0,

	scregg_rom,
	0, 0,
	0,
	0,	/* sound_prom */

	eggs_input_ports,

	PROM_MEMORY_REGION(2), 0, 0,
	ORIENTATION_DEFAULT,

	eggs_hiload, eggs_hisave
};

struct GameDriver lnc_driver =
{
	__FILE__,
	0,
	"lnc",
	"Lock'n'Chase",
	"1981",
	"Data East Corporation",
	"Zsolt Vasvari\nKevin Brisley (Bump 'n' Jump driver)\nMirko Buffoni (Audio/Add. code)",
	0,
	&lnc_machine_driver,
	0,

	lnc_rom,
	0, lnc_decode,
	0,
	0,	/* sound_prom */

	lnc_input_ports,

   

⌨️ 快捷键说明

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