📄 mcr3.c
字号:
mcr_init_machine,
/* video hardware */
32*16, 30*16, { 0, 32*16-1, 0, 30*16-1 },
timber_gfxdecodeinfo,
8*16, 8*16,
mcr3_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
generic_vh_start,
generic_vh_stop,
mcr3_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_AY8910,
&ay8910_interface
}
}
};
static struct MachineDriver rampage_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
5000000, /* 5 Mhz */
0,
rampage_readmem,rampage_writemem,readport,rm_writeport,
mcr_interrupt,1
},
{
CPU_M68000 | CPU_AUDIO_CPU,
7500000, /* 7.5 Mhz */
2,
sg_readmem,sg_writemem,0,0,
ignore_interrupt,1
}
},
30, DEFAULT_30HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - sound CPU synchronization is done via timers */
rampage_init_machine,
/* video hardware */
32*16, 30*16, { 0, 32*16-1, 0, 30*16-1 },
rampage_gfxdecodeinfo,
8*16, 8*16,
mcr3_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
generic_vh_start,
generic_vh_stop,
rampage_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
static struct MachineDriver maxrpm_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
5000000, /* 5 Mhz */
0,
rampage_readmem,rampage_writemem,maxrpm_readport,mr_writeport,
mcr_interrupt,1
}
},
30, DEFAULT_30HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - sound CPU synchronization is done via timers */
rampage_init_machine,
/* video hardware */
32*16, 30*16, { 0, 32*16-1, 0, 30*16-1 },
rampage_gfxdecodeinfo,
8*16, 8*16,
mcr3_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
generic_vh_start,
generic_vh_stop,
rampage_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
static struct MachineDriver sarge_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
5000000, /* 5 Mhz */
0,
rampage_readmem,rampage_writemem,sarge_readport,sa_writeport,
mcr_interrupt,1
},
{
CPU_M6809 | CPU_AUDIO_CPU,
2250000, /* 2.25 Mhz??? */
2,
tcs_readmem,tcs_writemem,0,0,
ignore_interrupt,1
}
},
30, DEFAULT_30HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - sound CPU synchronization is done via timers */
sarge_init_machine,
/* video hardware */
32*16, 30*16, { 0, 32*16-1, 0, 30*16-1 },
sarge_gfxdecodeinfo,
8*16, 8*16,
mcr3_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
generic_vh_start,
generic_vh_stop,
rampage_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_DAC,
&dac_interface
}
}
};
static struct MachineDriver spyhunt_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
5000000, /* 5 Mhz */
0,
spyhunt_readmem,spyhunt_writemem,spyhunt_readport,sh_writeport,
mcr_interrupt,1
},
{
CPU_Z80 | CPU_AUDIO_CPU,
2000000, /* 2 Mhz */
2,
sound_readmem,sound_writemem,0,0,
interrupt,26
},
{
CPU_M68000 | CPU_AUDIO_CPU,
7500000, /* Actually 7.5 Mhz, but the 68000 emulator isn't accurate */
3,
csd_readmem,csd_writemem,0,0,
ignore_interrupt,1
}
},
30, DEFAULT_30HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - sound CPU has enough interrupts to handle synchronization */
spyhunt_init_machine,
/* video hardware */
31*16, 30*16, { 0, 31*16-1, 0, 30*16-1 },
spyhunt_gfxdecodeinfo,
8*16+4, 8*16+4,
spyhunt_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_MODIFIES_PALETTE,
0,
spyhunt_vh_start,
spyhunt_vh_stop,
spyhunt_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_AY8910,
&ay8910_interface
},
{
SOUND_DAC,
&dac_interface
}
}
};
static struct MachineDriver crater_machine_driver =
{
/* basic machine hardware */
{
{
CPU_Z80,
5000000, /* 5 Mhz */
0,
spyhunt_readmem,spyhunt_writemem,readport,cr_writeport,
mcr_interrupt,1
},
{
CPU_Z80 | CPU_AUDIO_CPU,
2000000, /* 2 Mhz */
2,
sound_readmem,sound_writemem,0,0,
interrupt,26
}
},
30, DEFAULT_30HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* 1 CPU slice per frame - sound CPU has enough interrupts to handle synchronization */
mcr_init_machine,
/* video hardware */
30*16, 30*16, { 0, 30*16-1, 0, 30*16-1 },
crater_gfxdecodeinfo,
8*16+4, 8*16+4,
spyhunt_vh_convert_color_prom,
VIDEO_TYPE_RASTER|VIDEO_MODIFIES_PALETTE,
0,
crater_vh_start,
spyhunt_vh_stop,
spyhunt_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_AY8910,
&ay8910_interface
}
}
};
/***************************************************************************
High score save/load
***************************************************************************/
static int mcr3_hiload(int addr, int len)
{
unsigned char *RAM = Machine->memory_region[0];
/* see if it's okay to load */
if (mcr_loadnvram)
{
void *f;
f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0);
if (f)
{
osd_fread(f,&RAM[addr],len);
osd_fclose (f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void mcr3_hisave(int addr, int len)
{
unsigned char *RAM = Machine->memory_region[0];
void *f;
f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,1);
if (f)
{
osd_fwrite(f,&RAM[addr],len);
osd_fclose (f);
}
}
static int tapper_hiload(void) { return mcr3_hiload(0xe000, 0x9d); }
static void tapper_hisave(void) { mcr3_hisave(0xe000, 0x9d); }
static int dotron_hiload(void) { return mcr3_hiload(0xe543, 0xac); }
static void dotron_hisave(void) { mcr3_hisave(0xe543, 0xac); }
static int destderb_hiload(void) { return mcr3_hiload(0xe4e6, 0x153); }
static void destderb_hisave(void) { mcr3_hisave(0xe4e6, 0x153); }
static int timber_hiload(void) { return mcr3_hiload(0xe000, 0x9f); }
static void timber_hisave(void) { mcr3_hisave(0xe000, 0x9f); }
static int rampage_hiload(void) { return mcr3_hiload(0xe631, 0x3f); }
static void rampage_hisave(void) { mcr3_hisave(0xe631, 0x3f); }
static int spyhunt_hiload(void) { return mcr3_hiload(0xf42b, 0xfb); }
static void spyhunt_hisave(void) { mcr3_hisave(0xf42b, 0xfb); }
static int crater_hiload(void) { return mcr3_hiload(0xf5fb, 0xa3); }
static void crater_hisave(void) { mcr3_hisave(0xf5fb, 0xa3); }
/***************************************************************************
ROM decoding
***************************************************************************/
static void spyhunt_decode (void)
{
unsigned char *RAM = Machine->memory_region[0];
/* some versions of rom 11d have the top and bottom 8k swapped; to enable us to work with either
a correct set or a swapped set (both of which pass the checksum!), we swap them here */
if (RAM[0xa000] != 0x0c)
{
int i;
unsigned char temp;
for (i = 0;i < 0x2000;i++)
{
temp = RAM[0xa000 + i];
RAM[0xa000 + i] = RAM[0xc000 + i];
RAM[0xc000 + i] = temp;
}
}
}
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( tapper_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "tappg0.bin", 0x0000, 0x4000, 0x127171d1 )
ROM_LOAD( "tappg1.bin", 0x4000, 0x4000, 0x9d6a47f7 )
ROM_LOAD( "tappg2.bin", 0x8000, 0x4000, 0x3a1f8778 )
ROM_LOAD( "tappg3.bin", 0xc000, 0x2000, 0xe8dcdaa4 )
ROM_REGION_DISPOSE(0x28000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "tapbg1.bin", 0x00000, 0x4000, 0x2a30238c )
ROM_LOAD( "tapbg0.bin", 0x04000, 0x4000, 0x394ab576 )
ROM_LOAD( "tapfg7.bin", 0x08000, 0x4000, 0x070b4c81 )
ROM_LOAD( "tapfg6.bin", 0x0c000, 0x4000, 0xa37aef36 )
ROM_LOAD( "tapfg5.bin", 0x10000, 0x4000, 0x800f7c8a )
ROM_LOAD( "tapfg4.bin", 0x14000, 0x4000, 0x32674ee6 )
ROM_LOAD( "tapfg3.bin", 0x18000, 0x4000, 0x818fffd4 )
ROM_LOAD( "tapfg2.bin", 0x1c000, 0x4000, 0x67e37690 )
ROM_LOAD( "tapfg1.bin", 0x20000, 0x4000, 0x32509011 )
ROM_LOAD( "tapfg0.bin", 0x24000, 0x4000, 0x8412c808 )
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "tapsnda7.bin", 0x0000, 0x1000, 0x0e8bb9d5 )
ROM_LOAD( "tapsnda8.bin", 0x1000, 0x1000, 0x0cf0e29b )
ROM_LOAD( "tapsnda9.bin", 0x2000, 0x1000, 0x31eb6dc6 )
ROM_LOAD( "tapsda10.bin", 0x3000, 0x1000, 0x01a9be6a )
ROM_END
ROM_START( sutapper_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "5791", 0x0000, 0x4000, 0x87119cc4 )
ROM_LOAD( "5792", 0x4000, 0x4000, 0x4c23ad89 )
ROM_LOAD( "5793", 0x8000, 0x4000, 0xfecbf683 )
ROM_LOAD( "5794", 0xc000, 0x2000, 0x5bdc1916 )
ROM_REGION_DISPOSE(0x28000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "5790", 0x00000, 0x4000, 0xac1558c1 )
ROM_LOAD( "5789", 0x04000, 0x4000, 0xfa66cab5 )
ROM_LOAD( "5801", 0x08000, 0x4000, 0xd70defa7 )
ROM_LOAD( "5802", 0x0c000, 0x4000, 0xd4f114b9 )
ROM_LOAD( "5799", 0x10000, 0x4000, 0x02c69432 )
ROM_LOAD( "5800", 0x14000, 0x4000, 0xebf1f948 )
ROM_LOAD( "5797", 0x18000, 0x4000, 0xf10a1d05 )
ROM_LOAD( "5798", 0x1c000, 0x4000, 0x614990cd )
ROM_LOAD( "5795", 0x20000, 0x4000, 0x5d987c92 )
ROM_LOAD( "5796", 0x24000, 0x4000, 0xde5700b4 )
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "5788", 0x0000, 0x1000, 0x5c1d0982 )
ROM_LOAD( "5787", 0x1000, 0x1000, 0x09e74ed8 )
ROM_LOAD( "5786", 0x2000, 0x1000, 0xc3e98284 )
ROM_LOAD( "5785", 0x3000, 0x1000, 0xced2fd47 )
ROM_END
ROM_START( rbtapper_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "rbtpg0.bin", 0x0000, 0x4000, 0x20b9adf4 )
ROM_LOAD( "rbtpg1.bin", 0x4000, 0x4000, 0x87e616c2 )
ROM_LOAD( "rbtpg2.bin", 0x8000, 0x4000, 0x0b332c97 )
ROM_LOAD( "rbtpg3.bin", 0xc000, 0x2000, 0x698c06f2 )
ROM_REGION_DISPOSE(0x28000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "rbtbg1.bin", 0x00000, 0x4000, 0x44dfa483 )
ROM_LOAD( "rbtbg0.bin", 0x04000, 0x4000, 0x510b13de )
ROM_LOAD( "rbtfg7.bin", 0x08000, 0x4000, 0x8dbf0c36 )
ROM_LOAD( "rbtfg6.bin", 0x0c000, 0x4000, 0x441201a0 )
ROM_LOAD( "rbtfg5.bin", 0x10000, 0x4000, 0x9eeca46e )
ROM_LOAD( "rbtfg4.bin", 0x14000, 0x4000, 0x8c79e7d7 )
ROM_LOAD( "rbtfg3.bin", 0x18000, 0x4000, 0x3e725e77 )
ROM_LOAD( "rbtfg2.bin", 0x1c000, 0x4000, 0x4ee8b624 )
ROM_LOAD( "rbtfg1.bin", 0x20000, 0x4000, 0x1c0b8791 )
ROM_LOAD( "rbtfg0.bin", 0x24000, 0x4000, 0xe99f6018 )
ROM_REGION(0x10000) /* 64k for the audio CPU */
ROM_LOAD( "rbtsnda7.bin", 0x0000, 0x1000, 0x5c1d0982 )
ROM_LOAD( "rbtsnda8.bin", 0x1000, 0x1000, 0x09e74ed8 )
ROM_LOAD( "rbtsnda9.bin", 0x2000, 0x1000, 0xc3e98284 )
ROM_LOAD( "rbtsda10.bin", 0x3000, 0x1000, 0xced2fd47 )
ROM_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -