📄 ddragon.c
字号:
{ 50, 50 }
};
static struct OKIM6295interface okim6295_interface =
{
1, /* 1 chip */
8000, /* frequency (Hz) */
4, /* memory region */
{ 15 }
};
static int dd_interrupt(void)
{
return ( M6809_INT_FIRQ | M6809_INT_NMI );
}
static struct MachineDriver ddragon_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6309,
3579545, /* 3.579545 Mhz */
0,
readmem,writemem,0,0,
dd_interrupt,1
},
{
CPU_HD63701, /* we're missing the code for this one */
12000000 / 3, /* 4 Mhz */
2,
sub_readmem,sub_writemem,0,0,
ignore_interrupt,0
},
{
CPU_M6809 | CPU_AUDIO_CPU,
3579545, /* 3.579545 Mhz */
3,
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0 /* irq on command */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* heavy interleaving to sync up sprite<->main cpu's */
dd_init_machine,
/* video hardware */
32*8, 32*8,{ 1*8, 31*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
384, 384,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
0,
dd_vh_start,
dd_vh_stop,
dd_vh_screenrefresh,
/* sound hardware */
SOUND_SUPPORTS_STEREO,0,0,0,
{
{
SOUND_YM2151_ALT,
&ym2151_interface
},
{
SOUND_ADPCM,
&adpcm_interface
}
}
};
static struct MachineDriver ddragonb_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6309,
3579545, /* 3.579545 Mhz */
0,
readmem,writemem,0,0,
dd_interrupt,1
},
{
CPU_M6809,
12000000 / 3, /* 4 Mhz */
2,
sub_readmem,sub_writemem,0,0,
ignore_interrupt,0
},
{
CPU_M6809 | CPU_AUDIO_CPU,
3579545, /* 3.579545 Mhz */
3,
sound_readmem,sound_writemem,0,0,
ignore_interrupt,0 /* irq on command */
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* heavy interleaving to sync up sprite<->main cpu's */
dd_init_machine,
/* video hardware */
32*8, 32*8,{ 1*8, 31*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
384, 384,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
0,
dd_vh_start,
dd_vh_stop,
dd_vh_screenrefresh,
/* sound hardware */
SOUND_SUPPORTS_STEREO,0,0,0,
{
{
SOUND_YM2151_ALT,
&ym2151_interface
},
{
SOUND_ADPCM,
&adpcm_interface
}
}
};
static struct MachineDriver ddragon2_machine_driver =
{
/* basic machine hardware */
{
{
CPU_M6309,
3579545, /* 3.579545 Mhz */
0,
readmem,dd2_writemem,0,0,
dd_interrupt,1
},
{
CPU_Z80,
12000000 / 3, /* 4 Mhz */
2, /* memory region */
dd2_sub_readmem,dd2_sub_writemem,0,0,
ignore_interrupt,0
},
{
CPU_Z80 | CPU_AUDIO_CPU,
3579545, /* 3.579545 Mhz */
3, /* memory region */
dd2_sound_readmem,dd2_sound_writemem,0,0,
ignore_interrupt,0
}
},
60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
100, /* heavy interleaving to sync up sprite<->main cpu's */
dd2_init_machine,
/* video hardware */
32*8, 32*8,{ 1*8, 31*8-1, 2*8, 30*8-1 },
dd2_gfxdecodeinfo,
384, 384,
0,
VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
0,
dd_vh_start,
dd_vh_stop,
dd_vh_screenrefresh,
/* sound hardware */
SOUND_SUPPORTS_STEREO,0,0,0,
{
{
SOUND_YM2151_ALT,
&ym2151_interface
},
{
SOUND_OKIM6295,
&okim6295_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( ddragon_rom )
ROM_REGION(0x28000) /* 64k for code + bankswitched memory */
ROM_LOAD( "a_m2_d02.bin", 0x08000, 0x08000, 0x668dfa19 )
ROM_LOAD( "a_k2_d03.bin", 0x10000, 0x08000, 0x5779705e ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "a_h2_d04.bin", 0x18000, 0x08000, 0x3bdea613 ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "a_g2_d05.bin", 0x20000, 0x08000, 0x728f87b9 ) /* banked at 0x4000-0x8000 */
ROM_REGION_DISPOSE(0xC8000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "a_a2_d06.bin", 0xC0000, 0x08000, 0x7a8b8db4 ) /* 0,1,2,3 */ /* text */
ROM_LOAD( "b_c5_d09.bin", 0x00000, 0x10000, 0x7c435887 ) /* 0,1 */ /* tiles */
ROM_LOAD( "b_a5_d10.bin", 0x10000, 0x10000, 0xc6640aed ) /* 0,1 */ /* tiles */
ROM_LOAD( "b_c7_d19.bin", 0x20000, 0x10000, 0x5effb0a0 ) /* 2,3 */ /* tiles */
ROM_LOAD( "b_a7_d20.bin", 0x30000, 0x10000, 0x5fb42e7c ) /* 2,3 */ /* tiles */
ROM_LOAD( "b_r7_d11.bin", 0x40000, 0x10000, 0x574face3 ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_p7_d12.bin", 0x50000, 0x10000, 0x40507a76 ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_m7_d13.bin", 0x60000, 0x10000, 0xbb0bc76f ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_l7_d14.bin", 0x70000, 0x10000, 0xcb4f231b ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_j7_d15.bin", 0x80000, 0x10000, 0xa0a0c261 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_h7_d16.bin", 0x90000, 0x10000, 0x6ba152f6 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_f7_d17.bin", 0xA0000, 0x10000, 0x3220a0b6 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_d7_d18.bin", 0xB0000, 0x10000, 0x65c7517d ) /* 2,3 */ /* sprites */
ROM_REGION(0x10000) /* sprite cpu */
/* missing mcu code */
/* currently load the audio cpu code in this location */
/* because otherwise mame will loop indefinately in cpu_run */
ROM_LOAD( "a_s2_d01.bin", 0x08000, 0x08000, 0x9efa95bb )
ROM_REGION(0x10000) /* audio cpu */
ROM_LOAD( "a_s2_d01.bin", 0x08000, 0x08000, 0x9efa95bb )
ROM_REGION(0x20000) /* adpcm samples */
ROM_LOAD( "a_s6_d07.bin", 0x00000, 0x10000, 0x34755de3 )
ROM_LOAD( "a_r6_d08.bin", 0x10000, 0x10000, 0x904de6f8 )
ROM_END
ROM_START( ddragonb_rom )
ROM_REGION(0x28000) /* 64k for code + bankswitched memory */
ROM_LOAD( "ic26", 0x08000, 0x08000, 0xae714964 )
ROM_LOAD( "a_k2_d03.bin", 0x10000, 0x08000, 0x5779705e ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "ic24", 0x18000, 0x08000, 0xdbf24897 ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "ic23", 0x20000, 0x08000, 0x6c9f46fa ) /* banked at 0x4000-0x8000 */
ROM_REGION_DISPOSE(0xc8000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "a_a2_d06.bin", 0xC0000, 0x08000, 0x7a8b8db4 ) /* 0,1,2,3 */ /* text */
ROM_LOAD( "b_c5_d09.bin", 0x00000, 0x10000, 0x7c435887 ) /* 0,1 */ /* tiles */
ROM_LOAD( "b_a5_d10.bin", 0x10000, 0x10000, 0xc6640aed ) /* 0,1 */ /* tiles */
ROM_LOAD( "b_c7_d19.bin", 0x20000, 0x10000, 0x5effb0a0 ) /* 2,3 */ /* tiles */
ROM_LOAD( "b_a7_d20.bin", 0x30000, 0x10000, 0x5fb42e7c ) /* 2,3 */ /* tiles */
ROM_LOAD( "b_r7_d11.bin", 0x40000, 0x10000, 0x574face3 ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_p7_d12.bin", 0x50000, 0x10000, 0x40507a76 ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_m7_d13.bin", 0x60000, 0x10000, 0xbb0bc76f ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_l7_d14.bin", 0x70000, 0x10000, 0xcb4f231b ) /* 0,1 */ /* sprites */
ROM_LOAD( "b_j7_d15.bin", 0x80000, 0x10000, 0xa0a0c261 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_h7_d16.bin", 0x90000, 0x10000, 0x6ba152f6 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_f7_d17.bin", 0xA0000, 0x10000, 0x3220a0b6 ) /* 2,3 */ /* sprites */
ROM_LOAD( "b_d7_d18.bin", 0xB0000, 0x10000, 0x65c7517d ) /* 2,3 */ /* sprites */
ROM_REGION(0x10000) /* sprite cpu */
ROM_LOAD( "ic38", 0x0c000, 0x04000, 0x6a6a0325 )
ROM_REGION(0x10000) /* audio cpu */
ROM_LOAD( "a_s2_d01.bin", 0x08000, 0x08000, 0x9efa95bb )
ROM_REGION(0x20000) /* adpcm samples */
ROM_LOAD( "a_s6_d07.bin", 0x00000, 0x10000, 0x34755de3 )
ROM_LOAD( "a_r6_d08.bin", 0x10000, 0x10000, 0x904de6f8 )
ROM_END
ROM_START( ddragon2_rom )
ROM_REGION(0x28000) /* region#0: 64k for code */
ROM_LOAD( "26a9-04.bin", 0x08000, 0x8000, 0xf2cfc649 )
ROM_LOAD( "26aa-03.bin", 0x10000, 0x8000, 0x44dd5d4b )
ROM_LOAD( "26ab-0.bin", 0x18000, 0x8000, 0x49ddddcd )
ROM_LOAD( "26ac-02.bin", 0x20000, 0x8000, 0x097eaf26 )
ROM_REGION_DISPOSE(0x110000) /* region#1: graphics (disposed after conversion) */
ROM_LOAD( "26a8-0.bin", 0x00000, 0x10000, 0x3ad1049c ) /* 0,1,2,3 */ /* text */
ROM_LOAD( "26j4-0.bin", 0x10000, 0x20000, 0xa8c93e76 ) /* 0,1 */ /* tiles */
ROM_LOAD( "26j5-0.bin", 0x30000, 0x20000, 0xee555237 ) /* 2,3 */ /* tiles */
ROM_LOAD( "26j0-0.bin", 0x50000, 0x20000, 0xdb309c84 ) /* 0,1 */ /* sprites */
ROM_LOAD( "26j1-0.bin", 0x70000, 0x20000, 0xc3081e0c ) /* 0,1 */ /* sprites */
ROM_LOAD( "26af-0.bin", 0x90000, 0x20000, 0x3a615aad ) /* 0,1 */ /* sprites */
ROM_LOAD( "26j2-0.bin", 0xb0000, 0x20000, 0x589564ae ) /* 2,3 */ /* sprites */
ROM_LOAD( "26j3-0.bin", 0xd0000, 0x20000, 0xdaf040d6 ) /* 2,3 */ /* sprites */
ROM_LOAD( "26a10-0.bin", 0xf0000, 0x20000, 0x6d16d889 ) /* 2,3 */ /* sprites */
ROM_REGION(0x10000) /* region#2: sprite CPU 64kb (Upper 16kb = 0) */
ROM_LOAD( "26ae-0.bin", 0x00000, 0x10000, 0xea437867 )
ROM_REGION(0x10000) /* region#3: music CPU, 64kb */
ROM_LOAD( "26ad-0.bin", 0x00000, 0x8000, 0x75e36cd6 )
ROM_REGION(0x40000) /* region#4: adpcm */
ROM_LOAD( "26j6-0.bin", 0x00000, 0x20000, 0xa84b2a29 )
ROM_LOAD( "26j7-0.bin", 0x20000, 0x20000, 0xbc6a48d5 )
ROM_END
static int ddragonb_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 ((RAM[0x0e73] == 0x02) && (RAM[0x0e76] == 0x27) && (RAM[0x0023] == 0x02))
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x0e73],6*5);
RAM[0x0023] = RAM[0x0e73];
RAM[0x0024] = RAM[0x0e74];
RAM[0x0025] = RAM[0x0e75];
osd_fclose(f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void ddragonb_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[0x0e73],6*5);
osd_fclose(f);
}
}
static int ddragon2_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 ((RAM[0x0f91] == 0x02) && (RAM[0x0f94] == 0x25) && (RAM[0x0023] == 0x02))
{
void *f;
if ((f = osd_fopen(Machine->gamedrv->name,0,OSD_FILETYPE_HIGHSCORE,0)) != 0)
{
osd_fread(f,&RAM[0x0f91],6*5);
RAM[0x0023] = RAM[0x0f91];
RAM[0x0024] = RAM[0x0f92];
RAM[0x0025] = RAM[0x0f93];
osd_fclose(f);
}
return 1;
}
else return 0; /* we can't load the hi scores yet */
}
static void ddragon2_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[0x0f91],6*5);
osd_fclose(f);
}
}
struct GameDriver ddragon_driver =
{
__FILE__,
0,
"ddragon",
"Double Dragon",
"1987",
"bootleg?",
"Carlos A. Lozano\nRob Rosenbrock\nChris Moore\nPhil Stroffolino\nErnesto Corvi",
GAME_NOT_WORKING,
&ddragon_machine_driver,
0,
ddragon_rom,
0, 0,
0,
0,
dd1_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
ddragonb_hiload, ddragonb_hisave
};
struct GameDriver ddragonb_driver =
{
__FILE__,
&ddragon_driver,
"ddragonb",
"Double Dragon (bootleg)",
"1987",
"bootleg",
"Carlos A. Lozano\nRob Rosenbrock\nChris Moore\nPhil Stroffolino\nErnesto Corvi\n",
0,
&ddragonb_machine_driver,
0,
ddragonb_rom,
0, 0,
0,
0,
dd1_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
ddragonb_hiload, ddragonb_hisave
};
struct GameDriver ddragon2_driver =
{
__FILE__,
0,
"ddragon2",
"Double Dragon 2",
"1988",
"Technos",
"Carlos A. Lozano\nRob Rosenbrock\nPhil Stroffolino\nErnesto Corvi\n",
0,
&ddragon2_machine_driver,
0,
ddragon2_rom,
0, 0,
0,
0,
dd2_input_ports,
0, 0, 0,
ORIENTATION_DEFAULT,
ddragon2_hiload, ddragon2_hisave
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -