📄 tp84.c
字号:
PORT_DIPSETTING( 0x00, "Upright" )
PORT_DIPSETTING( 0x04, "Cocktail" )
PORT_DIPNAME( 0x18, 0x18, "Bonus", IP_KEY_NONE )
PORT_DIPSETTING( 0x18, "10000 50000" )
PORT_DIPSETTING( 0x10, "20000 60000" )
PORT_DIPSETTING( 0x08, "30000 70000" )
PORT_DIPSETTING( 0x00, "40000 80000" )
PORT_DIPNAME( 0x60, 0x60, "Difficulty", IP_KEY_NONE )
PORT_DIPSETTING( 0x60, "Easy" )
PORT_DIPSETTING( 0x40, "Normal" )
PORT_DIPSETTING( 0x20, "Medium" )
PORT_DIPSETTING( 0x00, "Hard" )
PORT_DIPNAME( 0x80, 0x00, "Demo Sounds", IP_KEY_NONE )
PORT_DIPSETTING( 0x80, "Off" )
PORT_DIPSETTING( 0x00, "On" )
INPUT_PORTS_END
static struct GfxLayout charlayout =
{
8,8, /* 8*8 characters */
1024, /* 1024 characters */
2, /* 2 bits per pixel */
{ 4, 0 }, /* the two bitplanes for 4 pixels are packed into one byte */
{ 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 }, /* bits are packed in groups of four */
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
16*8 /* every char takes 16 bytes */
};
static struct GfxLayout spritelayout =
{
16,16, /* 16*16 sprites */
256, /* 256 sprites */
4, /* 4 bits per pixel */
{ 256*64*8+4, 256*64*8+0, 4 ,0 },
{ 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 bytes */
};
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ 1, 0x0000, &charlayout, 0, 64*8 },
{ 1, 0x4000, &spritelayout, 64*4*8, 16*8 },
{ -1 } /* end of array */
};
static struct SN76496interface sn76496_interface =
{
3, /* 3 chips */
1789750, /* 1.78975 Mhz ? */
{ 75, 75, 75 }
};
static struct MachineDriver machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6809,
1500000, /* ? Mhz 1.1 seem too slow */
0, /* memory region */
readmem, /* MemoryReadAddress */
writemem, /* MemoryWriteAddress */
0, /* IOReadPort */
0, /* IOWritePort */
interrupt, /* interrupt routine */
1 /* interrupts per frame */
},
{
CPU_M6809,
1100000, /* ? Mhz */
3, /* memory region #3 */
readmem_cpu2,
writemem_cpu2,
0,
0,
tp84_interrupt,1 /* JB 970829 */ /*256*/
},
{
CPU_Z80 | CPU_AUDIO_CPU,
14318180/4, /* ? */
4, /* memory region #4 */
sound_readmem,sound_writemem,0,0,
ignore_interrupt,1 /* interrupts are triggered by the main CPU */
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
tp84_init_machine, /* init machine routine */ /* JB 970829 */
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
gfxdecodeinfo, /* GfxDecodeInfo * */
256,4096, /* see tp84_vh_convert_color_prom for explanation */
tp84_vh_convert_color_prom, /* convert color prom routine */
VIDEO_TYPE_RASTER,
0, /* vh_init routine */
tp84_vh_start, /* vh_start routine */
tp84_vh_stop, /* vh_stop routine */
tp84_vh_screenrefresh, /* vh_update routine */
/* sound hardware */
0,0,0,0,
{
{
SOUND_SN76496,
&sn76496_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( tp84_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "tp84_7j.bin", 0x8000, 0x2000, 0x605f61c7 )
ROM_LOAD( "tp84_8j.bin", 0xa000, 0x2000, 0x4b4629a4 )
ROM_LOAD( "tp84_9j.bin", 0xc000, 0x2000, 0xdbd5333b )
ROM_LOAD( "tp84_10j.bin", 0xe000, 0x2000, 0xa45237c4 )
ROM_REGION_DISPOSE(0xc000) /* Temporary */
ROM_LOAD( "tp84_2j.bin", 0x0000, 0x2000, 0x05c7508f ) /* chars */
ROM_LOAD( "tp84_1j.bin", 0x2000, 0x2000, 0x498d90b7 )
ROM_LOAD( "tp84_12a.bin", 0x4000, 0x2000, 0xcd682f30 ) /* sprites */
ROM_LOAD( "tp84_13a.bin", 0x6000, 0x2000, 0x888d4bd6 )
ROM_LOAD( "tp84_14a.bin", 0x8000, 0x2000, 0x9a220b39 )
ROM_LOAD( "tp84_15a.bin", 0xa000, 0x2000, 0xfac98397 )
ROM_REGION(0x0500) /* color/loookup proms */
ROM_LOAD( "tp84_2c.bin", 0x0000, 0x0100, 0xd737eaba ) /* palette red component */
ROM_LOAD( "tp84_2d.bin", 0x0100, 0x0100, 0x2f6a9a2a ) /* palette green component */
ROM_LOAD( "tp84_1e.bin", 0x0200, 0x0100, 0x2e21329b ) /* palette blue component */
ROM_LOAD( "tp84_1f.bin", 0x0300, 0x0100, 0x61d2d398 ) /* char lookup table */
ROM_LOAD( "tp84_16c.bin", 0x0400, 0x0100, 0x13c4e198 ) /* sprite lookup table */
ROM_REGION(0x10000) /* 64k for the second CPU */
ROM_LOAD( "tp84_10d.bin", 0xe000, 0x2000, 0x36462ff1 )
ROM_REGION(0x10000) /* 64k for code of sound cpu Z80 */
ROM_LOAD( "tp84s_6a.bin", 0x0000, 0x2000, 0xc44414da )
ROM_END
ROM_START( tp84a_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "tp84_7j.bin", 0x8000, 0x2000, 0x605f61c7 )
ROM_LOAD( "f05", 0xa000, 0x2000, 0xe97d5093 )
ROM_LOAD( "tp84_9j.bin", 0xc000, 0x2000, 0xdbd5333b )
ROM_LOAD( "f07", 0xe000, 0x2000, 0x8fbdb4ef )
ROM_REGION_DISPOSE(0xc000) /* Temporary */
ROM_LOAD( "tp84_2j.bin", 0x0000, 0x2000, 0x05c7508f ) /* chars */
ROM_LOAD( "tp84_1j.bin", 0x2000, 0x2000, 0x498d90b7 )
ROM_LOAD( "tp84_12a.bin", 0x4000, 0x2000, 0xcd682f30 ) /* sprites */
ROM_LOAD( "tp84_13a.bin", 0x6000, 0x2000, 0x888d4bd6 )
ROM_LOAD( "tp84_14a.bin", 0x8000, 0x2000, 0x9a220b39 )
ROM_LOAD( "tp84_15a.bin", 0xa000, 0x2000, 0xfac98397 )
ROM_REGION(0x0500) /* color/loookup proms */
ROM_LOAD( "tp84_2c.bin", 0x0000, 0x0100, 0xd737eaba ) /* palette red component */
ROM_LOAD( "tp84_2d.bin", 0x0100, 0x0100, 0x2f6a9a2a ) /* palette green component */
ROM_LOAD( "tp84_1e.bin", 0x0200, 0x0100, 0x2e21329b ) /* palette blue component */
ROM_LOAD( "tp84_1f.bin", 0x0300, 0x0100, 0x61d2d398 ) /* char lookup table */
ROM_LOAD( "tp84_16c.bin", 0x0400, 0x0100, 0x13c4e198 ) /* sprite lookup table */
ROM_REGION(0x10000) /* 64k for the second CPU */
ROM_LOAD( "tp84_10d.bin", 0xe000, 0x2000, 0x36462ff1 )
ROM_REGION(0x10000) /* 64k for code of sound cpu Z80 */
ROM_LOAD( "tp84s_6a.bin", 0x0000, 0x2000, 0xc44414da )
ROM_END
static int hiload(void)
{
unsigned char *RAM = Machine->memory_region[0];
void *f;
/* Wait for hiscore table initialization to be done. */
if (memcmp(&RAM[0x57a0], "\x00\x02\x00\x47\x53\x58", 6) != 0)
return 0;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
/* Load and set hiscore table. */
osd_fread(f,&RAM[0x57a0],5*6);
RAM[0x5737] = RAM[0x57a1];
RAM[0x5738] = RAM[0x57a2];
osd_fclose(f);
}
return 1;
}
static void hisave(void)
{
unsigned char *RAM = Machine->memory_region[0];
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1)) != 0)
{
/* Write hiscore table. */
osd_fwrite(f,&RAM[0x57a0],5*6);
osd_fclose(f);
}
}
struct GameDriver tp84_driver =
{
__FILE__,
0,
"tp84",
"Time Pilot 84 (set 1)",
"1984",
"Konami",
"Marc Lafontaine (MAME driver)\nMarco Cassili",
0,
&machine_driver, /* MachineDriver */
0,
tp84_rom, /* RomModule */
0, 0, /* ROM decrypt routines */
0, /* samplenames */
0, /* sound_prom */
input_ports,
PROM_MEMORY_REGION(2), /* color prom */
0, /* palette */
0, /* color table */
ORIENTATION_ROTATE_90,
hiload, hisave
};
struct GameDriver tp84a_driver =
{
__FILE__,
&tp84_driver,
"tp84a",
"Time Pilot 84 (set 2)",
"1984",
"Konami",
"Marc Lafontaine (MAME driver)\nMarco Cassili",
0,
&machine_driver, /* MachineDriver */
0,
tp84a_rom, /* RomModule */
0, 0, /* ROM decrypt routines */
0, /* samplenames */
0, /* sound_prom */
input_ports,
PROM_MEMORY_REGION(2), /* color prom */
0, /* palette */
0, /* color table */
ORIENTATION_ROTATE_90,
hiload, hisave
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -