📄 berzerk.c
字号:
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
berzerk_vh_screenrefresh,
/* sound hardware */
0,
berzerk_sh_start,
0,
berzerk_sh_update,
{
{
SOUND_SAMPLES,
&berzerk_samples_interface
}
}
};
static struct MachineDriver frenzy_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
2500000, /* 2.5 MHz */
0,
frenzy_readmem,frenzy_writemem,readport,writeport,
berzerk_interrupt,8
},
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
256, 256, { 0, 256-1, 0, 256-1 },
0,
sizeof(berzerk_palette)/3, 0,
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
berzerk_vh_screenrefresh,
/* sound hardware */
0,
berzerk_sh_start,
0,
berzerk_sh_update,
{
{
SOUND_SAMPLES,
&berzerk_samples_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( berzerk1_rom )
ROM_REGION(0x10000)
ROM_LOAD( "rom0.1c", 0x0000, 0x0800, 0x5b7eb77d )
ROM_LOAD( "rom1.1d", 0x1000, 0x0800, 0xe58c8678 )
ROM_LOAD( "rom2.3d", 0x1800, 0x0800, 0x705bb339 )
ROM_LOAD( "rom3.5d", 0x2000, 0x0800, 0x6a1936b4 )
ROM_LOAD( "rom4.6d", 0x2800, 0x0800, 0xfa5dce40 )
ROM_LOAD( "rom5.5c", 0x3000, 0x0800, 0x2579b9f4 )
ROM_END
ROM_START( berzerk_rom )
ROM_REGION(0x10000)
ROM_LOAD( "1c-0", 0x0000, 0x0800, 0xca566dbc )
ROM_LOAD( "1d-1", 0x1000, 0x0800, 0x7ba69fde )
ROM_LOAD( "3d-2", 0x1800, 0x0800, 0xa1d5248b )
ROM_LOAD( "5d-3", 0x2000, 0x0800, 0xfcaefa95 )
ROM_LOAD( "6d-4", 0x2800, 0x0800, 0x1e35b9a0 )
ROM_LOAD( "5c-5", 0x3000, 0x0800, 0xc8c665e5 )
ROM_END
ROM_START( frenzy_rom )
ROM_REGION(0x10000)
ROM_LOAD( "1c-0", 0x0000, 0x1000, 0xabdd25b8 )
ROM_LOAD( "1d-1", 0x1000, 0x1000, 0x536e4ae8 )
ROM_LOAD( "3d-2", 0x2000, 0x1000, 0x3eb9bc9b )
ROM_LOAD( "5d-3", 0x3000, 0x1000, 0xe1d3133c )
ROM_LOAD( "6d-4", 0xc000, 0x1000, 0x5581a7b1 )
/* 1c & 2c are the voice ROMs */
ROM_END
ROM_START( frenzy1_rom )
ROM_REGION(0x10000)
ROM_LOAD( "frenzy01.bin", 0x0000, 0x4000, 0xeb70f964 )
ROM_LOAD( "frenzy02.bin", 0xc000, 0x1000, 0x5581a7b1 )
ROM_END
static const char *berzerk_sample_names[] =
{
"*berzerk", /* universal samples directory */
"",
"01.sam",
"02.sam",
"03.sam",
"04.sam",
"05.sam",
"06.sam",
"",
"08.sam",
"09.sam",
"10.sam",
"11.sam",
"12.sam",
"",
"",
"15.sam",
"16.sam",
"17.sam",
"18.sam",
"",
"20.sam",
"21.sam",
"22.sam",
"23.sam",
"24.sam",
"25.sam",
"26.sam",
"27.sam",
"28.sam",
"",
"30.sam",
"31.sam",
"32.sam",
"33.sam",
"34.sam",
0 /* end of array */
};
static int berzerk_hiload(void)
{
unsigned char *RAM = Machine->memory_region[0];
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x0800],0x0800);
osd_fclose(f);
}
return 1;
}
static void berzerk_hisave(void)
{
void *f;
unsigned char *RAM = Machine->memory_region[0];
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
{
osd_fwrite(f,&RAM[0x0800],0x800);
osd_fclose(f);
}
}
static int frenzy_hiload(void)
{
static int firsttime = 0;
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
/* 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[0x406f],0xff,59);
firsttime = 1;
}
if (memcmp(&RAM[0x406F],"\x00\x00\x00",3) == 0 &&
memcmp(&RAM[0x40A7],"\x00\x00\x00",3) == 0 &&
memcmp (&RAM[0x5c81],"\x04\x10\x80",3)==0 )
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x406f],59);
osd_fclose(f);
}
firsttime = 0;
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void frenzy_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[0x406f],59);
osd_fclose(f);
}
}
struct GameDriver berzerk_driver =
{
__FILE__,
0,
"berzerk",
"Berzerk",
"1980",
"Stern",
"Zsolt Vasvari\nChristopher Kirmse\nMirko Buffoni\nValerio Verrando\nDouglas Silfen\nAlex Judd (Sound Programming)",
0,
&berzerk_machine_driver,
0,
berzerk_rom,
0, 0,
berzerk_sample_names,
0, /* sound_prom */
input_ports,
0, berzerk_palette, 0,
ORIENTATION_DEFAULT,
berzerk_hiload, berzerk_hisave
};
struct GameDriver berzerk1_driver =
{
__FILE__,
&berzerk_driver,
"berzerk1",
"Berzerk (version 1)",
"1980",
"Stern",
"Zsolt Vasvari\nChristopher Kirmse\nMirko Buffoni\nValerio Verrando\nDouglas Silfen\nAlex Judd (Sound Programming)",
0,
&berzerk_machine_driver,
0,
berzerk1_rom,
0, 0,
berzerk_sample_names,
0, /* sound_prom */
input_ports,
0, berzerk_palette, 0,
ORIENTATION_DEFAULT,
berzerk_hiload, berzerk_hisave
};
struct GameDriver frenzy_driver =
{
__FILE__,
0,
"frenzy",
"Frenzy",
"1982",
"Stern",
"Keith Gerdes\nMirko Buffoni\nMike Cuddy\nBrad Oliver\nZsolt Vasvari\nChristopher Kirmse",
0,
&frenzy_machine_driver,
0,
frenzy_rom,
0, 0,
berzerk_sample_names,
0, /* sound_prom */
frenzy_input_ports,
0, berzerk_palette, 0,
ORIENTATION_DEFAULT,
frenzy_hiload, frenzy_hisave
};
struct GameDriver frenzy1_driver =
{
__FILE__,
&frenzy_driver,
"frenzy1",
"Frenzy (version 1)",
"1982",
"Stern",
"Keith Gerdes\nMirko Buffoni\nMike Cuddy\nBrad Oliver\nZsolt Vasvari\nChristopher Kirmse",
0,
&frenzy_machine_driver,
0,
frenzy1_rom,
0, 0,
berzerk_sample_names,
0, /* sound_prom */
frenzy_input_ports,
0, berzerk_palette, 0,
ORIENTATION_DEFAULT,
frenzy_hiload, frenzy_hisave
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -