{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, 32*8 }; static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &gfxlayout, 0, 32 }, { -1 } /* end of array */ }; static struct YM2151interface ym2151_interface = { 1, 3579545, /* 3.579545 MHz */ { YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }, { 0 }, }; static void volume_callback0(int v) { K007232_set_volume(0,0,(v >> 4) * 0x11,0); K007232_set_volume(0,1,0,(v & 0x0f) * 0x11); } static struct K007232_interface k007232_interface = { 1, /* number of chips */ { REGION_SOUND1 }, /* memory region */ { K007232_VOL(50,MIXER_PAN_CENTER,50,MIXER_PAN_CENTER) }, /* volume */ { volume_callback0 } /* external port callback */
}; static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &gfx_layout, 0, 8*16 }, { REGION_GFX2, 0, &gfx_layout, 8*16*16, 8*16 }, { -1 } }; static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 3582071, /* seems to be the standard */ { YM3012_VOL(60,MIXER_PAN_RIGHT,60,MIXER_PAN_LEFT) }, { 0 } }; static struct MachineDriver machine_driver_contra = { { { CPU_M6809, 1500000, readmem,writemem,0,0, interrupt,1 }, {
Machine Drivers ***************************************************************************/ static void irq_handler(int irq) { cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2151interface afega_ym2151_intf = { 1, 4000000, /* ? */ { YM3012_VOL(30,MIXER_PAN_LEFT,30,MIXER_PAN_RIGHT) }, { irq_handler } }; static struct OKIM6295interface afega_m6295_intf = { 1, { 8000 }, /* ? */ { REGION_SOUND1 }, { 70 } }; static struct OKIM6295interface firehawk_m6295_interface = { 2, /* 2 chips */ { 1000000/132, 1000000/132 }, /* frequency (Hz) */
cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2610interface ym2610_interface = { 1, /* 1 chip */ 16000000/2, /* 8 MHz ?? */ { 25 }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler }, { REGION_SOUND2 }, /* Delta-T */ { REGION_SOUND1 }, /* ADPCM */ { YM3012_VOL(100,MIXER_PAN_CENTER,100,MIXER_PAN_CENTER) } }; /************************************************************** SUBWOOFER (SOUND) **************************************************************/ static int subwoofer_sh_start(const struct MachineSound *msound) { /* Adjust the lowpass filter of the first three YM2610 channels */ /* The 150 Hz is a common top frequency played by a generic */ /* subwoofer, the real Arcade Machine may differs */ mixer_set_lowpass_frequency(0,20);
1, /* 1 chip */ { 7757 }, /* Frequency */ { REGION_SOUND1 }, /* memory region */ { 50 } }; static void sound_irq(int state) { cpu_set_irq_line(1,1,state); /* IRQ 2 */ } static struct YM2151interface ym2151_interface = { 1, 32220000/9, /* May not be correct, there is another crystal near the ym2151 */ { YM3012_VOL(45,MIXER_PAN_LEFT,45,MIXER_PAN_RIGHT) }, { sound_irq } }; static struct MachineDriver machine_driver_tumblepop = { /* basic machine hardware */ { { CPU_M68000, 14000000, tumblepop_readmem,tumblepop_writemem,0,0, m68_level6_irq,1 }, { CPU_H6280 | CPU_AUDIO_CPU, /* Custom chip 45 */
12*32,13*32,14*32,15*32 }, 8*64 /* sprite offset */ }; static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0x000000, &tile_layout, 0x1000, 0x10 }, { -1 } }; static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 3579580, /* 3.58 MHz ? */ { YM3012_VOL(50,MIXER_PAN_LEFT,50,MIXER_PAN_RIGHT) }, { NULL } /* YM2151 IRQ line is NOT connected on the PCB */ }; static struct C140interface C140_interface_typeA = { C140_TYPE_SYSTEM21_A, 8000000/374, REGION_SOUND1, 50 }; static struct C140interface C140_interface_typeB = { C140_TYPE_SYSTEM21_B, 8000000/374,
static void OD_SendCmd(int cmda, int cmdb); static unsigned int OD_Read(unsigned int address); static void OD_Write(unsigned int address, unsigned int data); static M16809T odrwmem = { OD_Read, OD_Write, }; static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 3579545, /* 3.579545 MHz */ { YM3012_VOL(90,MIXER_PAN_LEFT,90,MIXER_PAN_RIGHT) }, { 0 }, }; static struct K053260_interface k053260_interface = { 2, { 3579545, 3579545 }, { RGN_SAMP1, RGN_SAMP1 }, /* memory region */ { { MIXER(60,MIXER_PAN_LEFT), MIXER(60,MIXER_PAN_RIGHT) }, { MIXER(60,MIXER_PAN_LEFT), MIXER(60,MIXER_PAN_RIGHT) } }, { 0, 0 } }; static int ym2151_last_adr; //static void YM2151_IRQ(int irq)
{ 0x8000, 0xbfff, MRA_BANKNO(S11S_BANK0)}, /* U22 */ { 0xc000, 0xffff, MRA_BANKNO(S11S_BANK1)}, /* U21 */ MEMORY_END static MEMORY_WRITE_START(s11s_writemem) { 0x0000, 0x0fff, MWA_RAM }, { 0x1000, 0x1000, s11s_bankSelect}, { 0x2000, 0x2003, pia_w(S11S_PIA0)}, MEMORY_END static void s11cs_ym2151IRQ(int state); static struct DACinterface s11xs_dacInt2 = { 2, { 50,50 }}; static struct hc55516_interface s11b2s_hc55516Int = { 1, { 80 }}; static struct hc55516_interface s11xs_hc55516Int2 = { 2, { 80,80 }}; static struct YM2151interface s11cs_ym2151Int = { 1, 3579545, /* Hz */ { YM3012_VOL(10,MIXER_PAN_CENTER,30,MIXER_PAN_CENTER) }, { s11cs_ym2151IRQ } }; MACHINE_DRIVER_START(wmssnd_s11s) MDRV_CPU_ADD(M6808, 1000000) MDRV_CPU_FLAGS(CPU_AUDIO_CPU) MDRV_CPU_MEMORY(s11s_readmem, s11s_writemem) MDRV_INTERLEAVE(50) MDRV_SOUND_ADD(DAC, s9s_dacInt) MDRV_SOUND_ADD(HC55516,s9s_hc55516Int) MDRV_SOUND_ADD(SAMPLES, samples_interface) MACHINE_DRIVER_END MACHINE_DRIVER_START(wmssnd_s11xs) MDRV_IMPORT_FROM(wmssnd_s11cs)
PORT_DIPSETTING( 0x60, "Easy" ) PORT_DIPSETTING( 0x40, "Normal" ) PORT_DIPSETTING( 0x20, "Hard" ) PORT_DIPSETTING( 0x00, "Hardest" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 3579545, /* 3.579545 MHz */ { YM3012_VOL(75,MIXER_PAN_LEFT,75,MIXER_PAN_RIGHT) }, { 0 } }; static struct UPD7759_interface upd7759_interface = { 2, /* number of chips */ UPD7759_STANDARD_CLOCK, { 30, 30 }, /* volume */ { REGION_SOUND1, REGION_SOUND2 }, /* memory region */ UPD7759_STANDALONE_MODE, /* chip mode */ {0} };
int oldword = READ_WORD(&videoram[offset]); int newword = COMBINE_WORD(oldword,data); if( oldword != newword ){ WRITE_WORD(&videoram[offset],newword); dirtybuffer[offset/2] = 1; } } /******************************************************************************************/ static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 3579580, /* 3.58 MHZ ? */ /* 4 MHZ in raine */ { YM3012_VOL(80,MIXER_PAN_LEFT,80,MIXER_PAN_RIGHT) }, { 0 } }; struct ADPCMinterface adpcm_interface = { 2, /* total number of ADPCM decoders in the machine */ 8000, /* playback frequency */ 3, /* memory region where the samples come from */ 0, /* initialization function */ {40,40} }; static void cabal_play_adpcm( int channel, int which ){ if( which!=0xff ){ unsigned char *RAM = Machine->memory_region[3];
RAM[0x6829] = 0x18; /* Fix WORK RAM error */ RAM[0x67fd] = 0x18; } static void irqhandler(int irq) { cpu_set_irq_line(1, 0, irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2151interface ym2151_interface = { 1, /* 1 chip */ 4000000, /* 4 MHz ? */ { YM3012_VOL(50,MIXER_PAN_CENTER,50,MIXER_PAN_CENTER) }, { irqhandler }, }; static MEMORY_READ_START( cpua_readmem ) { 0x0000, 0x7fff, MRA_ROM }, { 0x8000, 0xbfff, MRA_BANK1 }, { 0xc000, 0xc5ff, exzisus_objectram_0_r }, { 0xc600, 0xdfff, exzisus_videoram_0_r }, { 0xe000, 0xefff, MRA_RAM }, { 0xf000, 0xf000, MRA_NOP }, { 0xf001, 0xf001, taitosound_comm_r }, { 0xf400, 0xf400, input_port_0_r }, { 0xf401, 0xf401, input_port_1_r }, { 0xf402, 0xf402, input_port_2_r }, { 0xf404, 0xf404, input_port_3_r },