📄 dkong.c
字号:
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 + -