📄 exidy.c
字号:
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
gfxdecodeinfo,
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
exidy_vh_start,
exidy_vh_stop,
exidy_vh_screenrefresh,
/* sound hardware */
0,
0,
0,
0,
};
static struct CustomSound_interface exidy_custom_interface =
{
exidy_sh_start,
exidy_sh_stop,
0
};
static struct Samplesinterface venture_samples_interface=
{
3 /* 3 Channels */
};
static struct MachineDriver venture_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
11289000/16,
0,
readmem,writemem,0,0,
venture_interrupt,32 /* Need to have multiple IRQs per frame if there's a collision */
},
{
CPU_M6502 | CPU_AUDIO_CPU,
3579545/4,
2, /* memory region #2 */
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
exidy_init_machine,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
gfxdecodeinfo,
sizeof(palette)/3,sizeof(colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
exidy_vh_start,
exidy_vh_stop,
exidy_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_SAMPLES,
&venture_samples_interface
},
{
SOUND_CUSTOM,
&exidy_custom_interface
}
}
};
static struct MachineDriver pepper2_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
11289000/16,
0,
readmem,pepper2_writemem,0,0,
exidy_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
3579545/4,
2,
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
exidy_init_machine,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
pepper2_gfxdecodeinfo,
sizeof(palette)/3,sizeof(pepper2_colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
exidy_vh_start,
exidy_vh_stop,
exidy_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_SAMPLES,
&venture_samples_interface
},
{
SOUND_CUSTOM,
&exidy_custom_interface
}
}
};
static struct MachineDriver fax_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6502,
11289000/16,
0,
fax_readmem,fax_writemem,0,0,
exidy_interrupt,1
},
{
CPU_M6502 | CPU_AUDIO_CPU,
3579545/4,
2,
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
10, /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
exidy_init_machine,
/* video hardware */
32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
pepper2_gfxdecodeinfo,
sizeof(palette)/3,sizeof(pepper2_colortable)/sizeof(unsigned short),
0,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY|VIDEO_MODIFIES_PALETTE,
0,
exidy_vh_start,
exidy_vh_stop,
exidy_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_SAMPLES,
&venture_samples_interface
},
{
SOUND_CUSTOM,
&exidy_custom_interface
}
}
};
/***************************************************************************
Game ROMs
***************************************************************************/
ROM_START( sidetrac_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "stl8a-1", 0x2800, 0x0800, 0xe41750ff )
ROM_LOAD( "stl7a-2", 0x3000, 0x0800, 0x57fb28dc )
ROM_LOAD( "stl6a-2", 0x3800, 0x0800, 0x4226d469 )
ROM_RELOAD( 0xf800, 0x0800 ) /* for the reset/interrupt vectors */
ROM_LOAD( "stl9c-1", 0x4800, 0x0400, 0x08710a84 ) /* prom instead of ram chr gen*/
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "stl11d", 0x0000, 0x0200, 0x3bd1acc1 )
ROM_END
ROM_START( targ_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "targ10a1", 0x1800, 0x0800, 0x969744e1 )
ROM_LOAD( "targ09a1", 0x2000, 0x0800, 0xa177a72d )
ROM_LOAD( "targ08a1", 0x2800, 0x0800, 0x6e6928a5 )
ROM_LOAD( "targ07a4", 0x3000, 0x0800, 0xe2f37f93 )
ROM_LOAD( "targ06a3", 0x3800, 0x0800, 0xa60a1bfc )
ROM_RELOAD( 0xf800, 0x0800 ) /* for the reset/interrupt vectors */
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "targ11d1", 0x0000, 0x0400, 0x9f03513e )
ROM_END
ROM_START( spectar_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "spl11a-3", 0x1000, 0x0800, 0x08880aff )
ROM_LOAD( "spl10a-2", 0x1800, 0x0800, 0xfca667c1 )
ROM_LOAD( "spl9a-3", 0x2000, 0x0800, 0x9d4ce8ba )
ROM_LOAD( "spl8a-2", 0x2800, 0x0800, 0xcfacbadf )
ROM_LOAD( "spl7a-2", 0x3000, 0x0800, 0x4c4741ff )
ROM_LOAD( "spl6a-2", 0x3800, 0x0800, 0x0cb46b25 )
ROM_RELOAD( 0xf800, 0x0800 ) /* for the reset/interrupt vectors */
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "hrl11d-2", 0x0000, 0x0400, 0xc55b645d ) /* this is actually not used (all FF) */
ROM_CONTINUE( 0x0000, 0x0400 ) /* overwrite with the real one */
ROM_END
ROM_START( spectar1_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "spl12a1", 0x0800, 0x0800, 0x7002efb4 )
ROM_LOAD( "spl11a1", 0x1000, 0x0800, 0x8eb8526a )
ROM_LOAD( "spl10a1", 0x1800, 0x0800, 0x9d169b3d )
ROM_LOAD( "spl9a1", 0x2000, 0x0800, 0x40e3eba1 )
ROM_LOAD( "spl8a1", 0x2800, 0x0800, 0x64d8eb84 )
ROM_LOAD( "spl7a1", 0x3000, 0x0800, 0xe08b0d8d )
ROM_LOAD( "spl6a1", 0x3800, 0x0800, 0xf0e4e71a )
ROM_RELOAD( 0xf800, 0x0800 ) /* for the reset/interrupt vectors */
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "hrl11d-2", 0x0000, 0x0400, 0xc55b645d ) /* this is actually not used (all FF) */
ROM_CONTINUE( 0x0000, 0x0400 ) /* overwrite with the real one */
ROM_END
ROM_START( mtrap_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "mtl11a.bin", 0xA000, 0x1000, 0xbd6c3eb5 )
ROM_LOAD( "mtl10a.bin", 0xB000, 0x1000, 0x75b0593e )
ROM_LOAD( "mtl9a.bin", 0xC000, 0x1000, 0x28dd20ff )
ROM_LOAD( "mtl8a.bin", 0xD000, 0x1000, 0xcc09f7a4 )
ROM_LOAD( "mtl7a.bin", 0xE000, 0x1000, 0xcaafbb6d )
ROM_LOAD( "mtl6a.bin", 0xF000, 0x1000, 0xd85e52ca )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "mtl11d.bin", 0x0000, 0x0800, 0xc6e4d339 )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, 0xdbe4ec02 )
ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, 0xc00f0c05 )
ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, 0xf3f16ca7 )
ROM_RELOAD( 0xf800, 0x0800 )
ROM_END
ROM_START( venture_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "13a-cpu", 0x8000, 0x1000, 0xf4e4d991 )
ROM_LOAD( "12a-cpu", 0x9000, 0x1000, 0xc6d8cb04 )
ROM_LOAD( "11a-cpu", 0xA000, 0x1000, 0x3bdb01f4 )
ROM_LOAD( "10a-cpu", 0xB000, 0x1000, 0x0da769e9 )
ROM_LOAD( "9a-cpu", 0xC000, 0x1000, 0x0ae05855 )
ROM_LOAD( "8a-cpu", 0xD000, 0x1000, 0x4ae59676 )
ROM_LOAD( "7a-cpu", 0xE000, 0x1000, 0x48d66220 )
ROM_LOAD( "6a-cpu", 0xF000, 0x1000, 0x7b78cf49 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, 0xb4bb2503 )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "3a-ac", 0x5800, 0x0800, 0x4ea1c3d9 )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, 0x5154c39e )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, 0x1e1e3916 )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, 0x80f3357a )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, 0x466addc7 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
ROM_START( venture2_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "vent_a13.cpu", 0x8000, 0x1000, 0x4c833f99 )
ROM_LOAD( "vent_a12.cpu", 0x9000, 0x1000, 0x8163cefc )
ROM_LOAD( "vent_a11.cpu", 0xA000, 0x1000, 0x324a5054 )
ROM_LOAD( "vent_a10.cpu", 0xB000, 0x1000, 0x24358203 )
ROM_LOAD( "vent_a9.cpu", 0xC000, 0x1000, 0x04428165 )
ROM_LOAD( "vent_a8.cpu", 0xD000, 0x1000, 0x4c1a702a )
ROM_LOAD( "vent_a7.cpu", 0xE000, 0x1000, 0x1aab27c2 )
ROM_LOAD( "vent_a6.cpu", 0xF000, 0x1000, 0x767bdd71 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "11d-cpu", 0x0000, 0x0800, 0xb4bb2503 )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "3a-ac", 0x5800, 0x0800, 0x4ea1c3d9 )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, 0x5154c39e )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, 0x1e1e3916 )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, 0x80f3357a )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, 0x466addc7 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
ROM_START( venture4_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "vel13a-4", 0x8000, 0x1000, 0x1c5448f9 )
ROM_LOAD( "vel12a-4", 0x9000, 0x1000, 0xe62491cc )
ROM_LOAD( "vel11a-4", 0xA000, 0x1000, 0xe91faeaf )
ROM_LOAD( "vel10a-4", 0xB000, 0x1000, 0xda3a2991 )
ROM_LOAD( "vel9a-4", 0xC000, 0x1000, 0xd1887b11 )
ROM_LOAD( "vel8a-4", 0xD000, 0x1000, 0x8e8153fc )
ROM_LOAD( "vel7a-4", 0xE000, 0x1000, 0x0a091701 )
ROM_LOAD( "vel6a-4", 0xF000, 0x1000, 0x7b165f67 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "vel11d-2", 0x0000, 0x0800, 0xea6fd981 )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "vea3a-2", 0x5800, 0x0800, 0x83b8836f )
ROM_LOAD( "4a-ac", 0x6000, 0x0800, 0x5154c39e )
ROM_LOAD( "5a-ac", 0x6800, 0x0800, 0x1e1e3916 )
ROM_LOAD( "6a-ac", 0x7000, 0x0800, 0x80f3357a )
ROM_LOAD( "7a-ac", 0x7800, 0x0800, 0x466addc7 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
ROM_START( pepper2_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "main_12a", 0x9000, 0x1000, 0x33db4737 )
ROM_LOAD( "main_11a", 0xA000, 0x1000, 0xa1f43b1f )
ROM_LOAD( "main_10a", 0xB000, 0x1000, 0x4d7d7786 )
ROM_LOAD( "main_9a", 0xC000, 0x1000, 0xb3362298 )
ROM_LOAD( "main_8a", 0xD000, 0x1000, 0x64d106ed )
ROM_LOAD( "main_7a", 0xE000, 0x1000, 0xb1c6f07c )
ROM_LOAD( "main_6a", 0xF000, 0x1000, 0x515b1046 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "main_11d", 0x0000, 0x0800, 0xb25160cd )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "audio_5a", 0x6800, 0x0800, 0x90e3c781 )
ROM_LOAD( "audio_6a", 0x7000, 0x0800, 0xdd343e34 )
ROM_LOAD( "audio_7a", 0x7800, 0x0800, 0xe02b4356 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
ROM_START( hardhat_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "hhl-2.11a", 0xA000, 0x1000, 0x7623deea )
ROM_LOAD( "hhl-2.10a", 0xB000, 0x1000, 0xe6bf2fb1 )
ROM_LOAD( "hhl-2.9a", 0xC000, 0x1000, 0xacc2bce5 )
ROM_LOAD( "hhl-2.8a", 0xD000, 0x1000, 0x23c7a2f8 )
ROM_LOAD( "hhl-2.7a", 0xE000, 0x1000, 0x6f7ce1c2 )
ROM_LOAD( "hhl-2.6a", 0xF000, 0x1000, 0x2a20cf10 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "hhl-1.11d", 0x0000, 0x0800, 0xdbcdf353 )
ROM_REGION(0x10000) /* 64k for audio */
ROM_LOAD( "hha-1.5a", 0x6800, 0x0800, 0x16a5a183 )
ROM_LOAD( "hha-1.6a", 0x7000, 0x0800, 0xbde64021 )
ROM_LOAD( "hha-1.7a", 0x7800, 0x0800, 0x505ee5d3 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
ROM_START( fax_rom )
ROM_REGION(0x40000) /* 64k for code + 192k for extra memory */
ROM_LOAD( "fxl8-13a.32", 0x8000, 0x1000, 0x8e30bf6b )
ROM_LOAD( "fxl8-12a.32", 0x9000, 0x1000, 0x60a41ff1 )
ROM_LOAD( "fxl8-11a.32", 0xA000, 0x1000, 0x2c9cee8a )
ROM_LOAD( "fxl8-10a.32", 0xB000, 0x1000, 0x9b03938f )
ROM_LOAD( "fxl8-9a.32", 0xC000, 0x1000, 0xfb869f62 )
ROM_LOAD( "fxl8-8a.32", 0xD000, 0x1000, 0xdb3470bc )
ROM_LOAD( "fxl8-7a.32", 0xE000, 0x1000, 0x1471fef5 )
ROM_LOAD( "fxl8-6a.32", 0xF000, 0x1000, 0x812e39f3 )
/* Banks of question ROMs */
ROM_LOAD( "fxd-1c.64", 0x10000, 0x2000, 0xfd7e3137 )
ROM_LOAD( "fxd-2c.64", 0x12000, 0x2000, 0xe78cb16f )
ROM_LOAD( "fxd-3c.64", 0x14000, 0x2000, 0x57a94c6f )
ROM_LOAD( "fxd-4c.64", 0x16000, 0x2000, 0x9036c5a2 )
ROM_LOAD( "fxd-5c.64", 0x18000, 0x2000, 0x38c03405 )
ROM_LOAD( "fxd-6c.64", 0x1A000, 0x2000, 0xf48fc308 )
ROM_LOAD( "fxd-7c.64", 0x1C000, 0x2000, 0xcf93b924 )
ROM_LOAD( "fxd-8c.64", 0x1E000, 0x2000, 0x607b48da )
ROM_LOAD( "fxd-1b.64", 0x20000, 0x2000, 0x62872d4f )
ROM_LOAD( "fxd-2b.64", 0x22000, 0x2000, 0x625778d0 )
ROM_LOAD( "fxd-3b.64", 0x24000, 0x2000, 0xc3473dee )
ROM_LOAD( "fxd-4b.64", 0x26000, 0x2000, 0xe39a15f5 )
ROM_LOAD( "fxd-5b.64", 0x28000, 0x2000, 0x101a9d70 )
ROM_LOAD( "fxd-6b.64", 0x2A000, 0x2000, 0x374a8f05 )
ROM_LOAD( "fxd-7b.64", 0x2C000, 0x2000, 0xf7e7f824 )
ROM_LOAD( "fxd-8b.64", 0x2E000, 0x2000, 0x8f1a5287 )
ROM_LOAD( "fxd-1a.64", 0x30000, 0x2000, 0xfc5e6344 )
ROM_LOAD( "fxd-2a.64", 0x32000, 0x2000, 0x43cf60b3 )
ROM_LOAD( "fxd-3a.64", 0x34000, 0x2000, 0x6b7d29cb )
ROM_LOAD( "fxd-4a.64", 0x36000, 0x2000, 0xb9de3c2d )
ROM_LOAD( "fxd-5a.64", 0x38000, 0x2000, 0x67285bc6 )
ROM_LOAD( "fxd-6a.64", 0x3A000, 0x2000, 0xba67b7b2 )
ROM_REGION_DISPOSE(0x0800) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "fxl1-11d.32", 0x0000, 0x0800, 0x54fc873d )
ROM_CONTINUE( 0x0000, 0x0800 ) /* overwrite with the real one - should be a 2716? */
ROM_REGION(0x10000) /* 64k for audio */
/* 5a missing! */
ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, 0x2b3bfc44 )
ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, 0x578c62b7 )
ROM_RELOAD( 0xF800, 0x0800 )
ROM_END
/***************************************************************************
Hi Score Routines
***************************************************************************/
static int mtrap_hiload(void)
{
unsigned char *RAM = Machine->memory_region[Machine->drv->cpu[0].memory_region];
static int firsttime;
/* 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[0x0380],0xff,5+6*5); /* high score */
firsttime = 1;
}
/* check if the hi score table has already been initialized */
if ((memcmp(&RAM[0x0380],"\x00\x06\x0C\x12\x18",5) == 0) &&
(memcmp(&RAM[0x03A0],"LWH",3) == 0))
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x0380],5+6*5);
osd_fclose(f);
}
firsttime = 0;
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void mtrap_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)
{
/* 5 bytes for score order, 6 bytes per score/initials */
osd_fwrite(f,&RAM[0x0380],5+6*5);
osd_fclose(f);
}
}
static int venture_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[0x0380],"\x00\x06\x0C\x12\x18",5) == 0) &&
(memcmp(&RAM[0x03A0],"DJS",3) == 0))
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -