vastar.c
来自「这个是延伸mame的在wince平台下的游戏模拟器的代码」· C语言 代码 · 共 538 行 · 第 1/2 页
C
538 行
2, /* 2 bits per pixel */
{ 0, 4 },
{ 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
64*8 /* every sprite takes 64 consecutive bytes */
};
static struct GfxLayout spritelayoutdw =
{
16,32, /* 16*32 sprites */
128, /* 128 sprites */
2, /* 2 bits per pixel */
{ 0, 4 },
{ 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8,
64*8, 65*8, 66*8, 67*8, 68*8, 69*8, 70*8, 71*8,
96*8, 97*8, 98*8, 99*8, 100*8, 101*8, 102*8, 103*8 },
128*8 /* every sprite takes 64 consecutive bytes */
};
static struct GfxLayout tilelayout =
{
8,8, /* 8*8 tiles */
512, /* 512 tiles */
2, /* 4 bits per pixel */
{ 0, 4 },
{ 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
16*8 /* every sprite takes 64 consecutive bytes */
};
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x0000, &charlayout, 0, 64 },
{ 1, 0x2000, &spritelayout, 0, 64 },
{ 1, 0x2000, &spritelayoutdw, 0, 64 },
{ 1, 0x6000, &tilelayout, 0, 64 },
{ 1, 0x8000, &tilelayout, 0, 64 },
{ -1 } /* end of array */
};
static struct AY8910interface ay8910_interface =
{
1, /* 1 chip */
1500000, /* 1.5 MHz??????? */
{ 255 },
{ input_port_3_r },
{ input_port_4_r },
{ 0 },
{ 0 }
};
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
3072000, /* 3.072 Mhz ???? */
0,
readmem,writemem,0,writeport,
nmi_interrupt,1
},
{
CPU_Z80,
3072000, /* 3.072 Mhz ???? */
3, /* memory region #3 */
cpu2_readmem,cpu2_writemem,cpu2_readport,cpu2_writeport,
interrupt,4 /* ??? */
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* 10 CPU slices per frame - seems enough to ensure proper */
/* synchronization of the CPUs */
vastar_init_machine,
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
256, 256,
vastar_vh_convert_color_prom,
VIDEO_TYPE_RASTER,
0,
vastar_vh_start,
vastar_vh_stop,
vastar_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_AY8910,
&ay8910_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( vastar_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "e_f4.rom", 0x0000, 0x1000, 0x45fa5075 )
ROM_LOAD( "e_k4.rom", 0x1000, 0x1000, 0x84531982 )
ROM_LOAD( "e_h4.rom", 0x2000, 0x1000, 0x94a4f778 )
ROM_LOAD( "e_l4.rom", 0x3000, 0x1000, 0x40e4d57b )
ROM_LOAD( "e_j4.rom", 0x4000, 0x1000, 0xbd607651 )
ROM_LOAD( "e_n4.rom", 0x5000, 0x1000, 0x7a3779a4 )
ROM_LOAD( "e_n7.rom", 0x6000, 0x1000, 0x31b6be39 )
ROM_LOAD( "e_n5.rom", 0x7000, 0x1000, 0xf63f0e78 )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "c_c9.rom", 0x0000, 0x2000, 0x34f067b6 )
ROM_LOAD( "c_f7.rom", 0x2000, 0x2000, 0xedbf3b13 )
ROM_LOAD( "c_f9.rom", 0x4000, 0x2000, 0x8f309e22 )
ROM_LOAD( "c_n4.rom", 0x6000, 0x2000, 0xb5f9c866 )
ROM_LOAD( "c_s4.rom", 0x8000, 0x2000, 0xc9fbbfc9 )
ROM_REGION(0x0400) /* color PROMs */
ROM_LOAD( "tbp24s10.6p", 0x0000, 0x0100, 0xa712d73a ) /* red component */
ROM_LOAD( "tbp24s10.6s", 0x0100, 0x0100, 0x0a7d48ec ) /* green component */
ROM_LOAD( "tbp24s10.6m", 0x0200, 0x0100, 0x4c3db907 ) /* blue component */
ROM_LOAD( "tbp24s10.8n", 0x0300, 0x0100, 0xb5297a3b ) /* ???? */
ROM_REGION(0x10000) /* 64k for the second CPU */
ROM_LOAD( "e_f2.rom", 0x0000, 0x1000, 0x713478d8 )
ROM_LOAD( "e_j2.rom", 0x1000, 0x1000, 0xe4535442 )
ROM_END
ROM_START( vastar2_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "3.4f", 0x0000, 0x1000, 0x6741ff9c )
ROM_LOAD( "6.4k", 0x1000, 0x1000, 0x5027619b )
ROM_LOAD( "4.4h", 0x2000, 0x1000, 0xfdaa44e6 )
ROM_LOAD( "7.4l", 0x3000, 0x1000, 0x29bef91c )
ROM_LOAD( "5.4j", 0x4000, 0x1000, 0xc17c2458 )
ROM_LOAD( "8.4n", 0x5000, 0x1000, 0x8ca25c37 )
ROM_LOAD( "10.6n", 0x6000, 0x1000, 0x80df74ba )
ROM_LOAD( "9.5n", 0x7000, 0x1000, 0x239ec84e )
ROM_REGION_DISPOSE(0xa000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "c_c9.rom", 0x0000, 0x2000, 0x34f067b6 )
ROM_LOAD( "c_f7.rom", 0x2000, 0x2000, 0xedbf3b13 )
ROM_LOAD( "c_f9.rom", 0x4000, 0x2000, 0x8f309e22 )
ROM_LOAD( "c_n4.rom", 0x6000, 0x2000, 0xb5f9c866 )
ROM_LOAD( "c_s4.rom", 0x8000, 0x2000, 0xc9fbbfc9 )
ROM_REGION(0x0400) /* color PROMs */
ROM_LOAD( "tbp24s10.6p", 0x0000, 0x0100, 0xa712d73a ) /* red component */
ROM_LOAD( "tbp24s10.6s", 0x0100, 0x0100, 0x0a7d48ec ) /* green component */
ROM_LOAD( "tbp24s10.6m", 0x0200, 0x0100, 0x4c3db907 ) /* blue component */
ROM_LOAD( "tbp24s10.8n", 0x0300, 0x0100, 0xb5297a3b ) /* ???? */
ROM_REGION(0x10000) /* 64k for the second CPU */
ROM_LOAD( "e_f2.rom", 0x0000, 0x1000, 0x713478d8 )
ROM_LOAD( "e_j2.rom", 0x1000, 0x1000, 0xe4535442 )
ROM_END
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[0xf128],"\x00\x20",2) == 0)
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0xf128],133);
osd_fclose(f);
/* let's show them on the screen!! */
RAM[0xce21]=(RAM[0xf129]/16);
RAM[0xce01]=(RAM[0xf129]%16);
RAM[0xcde1]=(RAM[0xf128]/16);
RAM[0xcdc1]=(RAM[0xf128]%16);
}
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[0xf128],133);
osd_fclose(f);
}
}
struct GameDriver vastar_driver =
{
__FILE__,
0,
"vastar",
"Vastar (set 1)",
"1983",
"Sesame Japan",
"Allard van der Bas\nNicola Salmoria\nDani Portillo (hi score)\nMirko Buffoni (additional code)\nRoberto Ventura (hardware info)",
0,
&machine_driver,
0,
vastar_rom,
0, 0,
0,
0, /* sound_prom */
input_ports,
PROM_MEMORY_REGION(2), 0, 0,
ORIENTATION_ROTATE_90,
hiload, hisave
};
struct GameDriver vastar2_driver =
{
__FILE__,
&vastar_driver,
"vastar2",
"Vastar (set 2)",
"1983",
"Sesame Japan",
"Allard van der Bas\nNicola Salmoria\nDani Portillo (hi score)\nMirko Buffoni (additional code)\nRoberto Ventura (hardware info)",
0,
&machine_driver,
0,
vastar2_rom,
0, 0,
0,
0, /* sound_prom */
input_ports,
PROM_MEMORY_REGION(2), 0, 0,
ORIENTATION_ROTATE_90,
hiload, hisave
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?