return 0xd7; /* RST 10h */ else return 0xcf; /* RST 08h */ } /* Handler called by the YM2203 emulator when the internal timers cause an IRQ */ static void irqhandler(int irq) { cpu_set_irq_line(1, 0, irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface argus_ym2203_interface = { 1, /* 1 chip */ 6000000 / 4, /* 1.5 MHz */ { YM2203_VOL(50,15) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static struct YM2203interface valtric_ym2203_interface = { 2, /* 2 chips */ 6000000 / 4, /* 1.5 MHz */ { YM2203_VOL(50,15), YM2203_VOL(50,15) }, { 0 }, { 0 }, { 0 },
{ REGION_GFX3, 0, &tiles, 512, 16 }, { -1 } /* end of array */ }; /******************************************************************************/ static void sound_irq(int linestate) { cpu_set_irq_line(1,0,linestate); /* IRQ */ } static struct YM2203interface ym2203_interface = { 1, 1500000, /* Should be accurate */ { YM2203_VOL(50,90) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct YM3812interface ym3812_interface = { 1, /* 1 chip */ 3000000, /* 3.000000 MHz (Should be accurate) */ { 45 }, { sound_irq }, }; static struct OKIM6295interface okim6295_interface =
}; static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0, 16 }, /* colors 0-255 */ { REGION_GFX2, 0, &spritelayout, 256, 16 }, /* colors 256-511 */ { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 1500000, /* 1.5 MHz ?????? */ { YM2203_VOL(25,25) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_gundealr = { /* basic machine hardware */ { { CPU_Z80, 8000000, /* 8 Mhz ??? */
0, FMGEN2608_sh_reset }, #endif #endif #endif /* forQUASI88 */ }; #if 1 /* forQUASI88 */ static struct YM2203interface ym2203_interface = { 1, /* num 1 chips */ 4000000, /* baseclock 4.0 MHz */ { YM2203_VOL(10,15) }, /* mixing_level[] FMVol, SSGVol *//*OverWrite*/ { 0 }, /* portA read handler */ { 0 }, /* portB read handler */ { 0 }, /* portA write handler */ { 0 }, /* portB write handler */ { 0 } /* IRQ handler */ }; static struct MachineSound pc88_sound_interface = { SOUND_YM2203, &ym2203_interface, NULL }; #ifdef USE_FMGEN static struct MachineSound pc88_fmgen_interface = {
16*8 }; static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0, 16 }, { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 3000000, /* 3 MHz ??? */ { YM2203_VOL(40,40) }, { input_port_3_r }, { input_port_4_r }, { 0 }, { 0 } }; #define MACHINEDRIVER(NAME) \ static struct MachineDriver machine_driver_##NAME = \ { \ { \ { \ CPU_Z80, \ 6000000, /* 6 MHz??? */ \
}; static struct GfxDecodeInfo quizdna_gfxdecodeinfo[] = { { REGION_GFX1, 0x0000, &fglayout, 0x7e0, 16 }, { REGION_GFX2, 0x0000, &bglayout, 0x000, 128 }, { REGION_GFX3, 0x0000, &objlayout, 0x600, 32 }, { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 1, MCLK/4, /* 4.000 MHz */ { YM2203_VOL(40,10) }, { input_port_1_r }, { input_port_0_r }, { 0 }, { 0 } }; static struct OKIM6295interface okim6295_interface = { 1, { MCLK/1024 }, /* 15.625KHz */ { REGION_SOUND1 }, { 30 } };
{ REGION_GFX1, 0x0000, &sprite_layout, 0, 8 }, { -1 } }; static void irqhandler(int irq) { cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 4000000, /* 4 MHz ? (hand tuned) */ { YM2203_VOL(40,15), YM2203_VOL(40,15) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static struct MachineDriver machine_driver_lkage = { { { CPU_Z80 | CPU_16BIT_PORT, 6000000, /* ??? */
{ REGION_GFX2, 0, &turtship_tilelayout, 0, 32 }, /* colors 0-511 */ { REGION_GFX3, 0, &spritelayout, 512, 16 }, /* colors 512-767 */ { -1 } /* end of array */ }; /* handler called by the 2203 emulator when the internal timers cause an IRQ */ static void irqhandler(int irq) { cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 4000000, /* 4 MHz ? (hand tuned) */ { YM2203_VOL(15,25), YM2203_VOL(15,25) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static struct MachineDriver machine_driver_sidearms = { /* basic machine hardware */ { { CPU_Z80,
static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 448, 16 }, /* colors 448 - 511 */ { REGION_GFX2, 0, &tilelayout, 128, 8 }, /* colors 128 - 255 */ { REGION_GFX3, 0, &spritelayout, 256, 8 }, /* colors 256 - 383 */ { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 4000000, /* 4.0 MHz (? hand tuned to match the real board) */ { YM2203_VOL(60,20), YM2203_VOL(60,20) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_srumbler = { /* basic machine hardware */ { { CPU_M6809, 1500000, /* 1.5 Mhz (?) */
return cmd_latch; } static struct OKIM6295interface okim6295_intf_8kHz = { 1, { 8000 }, /* ? */ { RGN_SAMP1 }, { 100 } }; static struct YM2203interface ym2203_intf_4MHz = { 1, 4000000, /* ? */ { YM2203_VOL(50,15) }, { 0 }, { 0 }, { 0 }, { 0 }, { YM_IRQHandler } }; static struct YM2203interface ym2203_maz_intf_4MHz = { 1, 4000000, /* ? */ { YM2203_VOL(50,15) }, { 0 }, { 0 }, { 0 },
static struct YM3526interface ym3526_interface = { 1, /* 1 chip (no more supported) */ 4000000, /* 4 MHz ? (hand tuned) */ { 255 } /* (not supported) */ }; static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 3000000, /* 3 MHz ???? */ { YM2203_VOL(40,20), YM2203_VOL(40,20) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct DACinterface dac_interface = { 2, /* 2 channels */ { 50, 50 } }; static struct MachineDriver machine_driver_ym3526 = {
{ REGION_GFX4, 0, &robokid_spritelayout, 32*16, 16}, { REGION_GFX4, 0, &robokid_bigspritelayout, 32*16, 16}, { REGION_GFX5, 0, &omegaf_charlayout, 48*16, 16}, { -1} /* end of array */ }; /************************************************************************** Machine drivers **************************************************************************/ static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 12000000/8, { YM2203_VOL(35, 35), YM2203_VOL(35, 35)}, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_omegaf = { { { CPU_Z80, 12000000/2, /* 12000000/2 ??? */ omegaf_readmem, omegaf_writemem, 0, 0, /* very sensitive to these settings */ omegaf_interrupt, 1 },
/*************************************************************************** Machine Drivers ***************************************************************************/ static void irqhandler(int irq) { cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface thedeep_ym2203_intf = { 1, 3000000, /* ? */ { YM2203_VOL(100,100) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static INTERRUPT_GEN( thedeep_interrupt ) { if (cpu_getiloops()) { if (protection_command != 0x59) { int coins = readinputport(4); if (coins & 1) protection_data = 1;
Machine Drivers ***************************************************************************/ static void soundirq(int state) { cpunum_set_input_line(1, 0, state); } static struct YM2203interface fuuki16_ym2203_intf = { 1, 4000000, /* ? */ { YM2203_VOL(15,15) }, { 0 }, /* Port A Read */ { 0 }, /* Port B Read */ { 0 }, /* Port A Write */ { 0 }, /* Port B Write */ { 0 } /* IRQ handler */ }; static struct YM3812interface fuuki16_ym3812_intf = { 1, 4000000, /* ? */ { 30 }, { soundirq }, /* IRQ Line */ };
{ -1 } /* end of array */ }; /* handler called by the 2203 emulator when the internal timers cause an IRQ */ static void irqhandler(int irq) { cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 3579545, /* 3.579 MHz ? (hand tuned) */ { YM2203_VOL(15,15), YM2203_VOL(15,15) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static struct MachineDriver machine_driver_blktiger = { /* basic machine hardware */ { { CPU_Z80,
{ { REGION_GFX1, 0, &gfxlayout, 0, 8*16 }, { -1 } /* end of array */ }; /*************************************************************************** Machine Driver ***************************************************************************/ static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 3000000, /* 24MHz/8? */ { YM2203_VOL(80,40), YM2203_VOL(80,40) }, { input_port_0_r }, { input_port_1_r, input_port_2_r }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_labyrunr = { /* basic machine hardware */ { { CPU_HD6309, 3000000, /* 24MHz/8? */
{ REGION_GFX2, 0x19000, &tilelayout2, 0x80, 16 }, { REGION_GFX3, 0x00000, &spritelayout, 0x40, 8 }, /* use colors 0x40-0x7f */ { -1 } /* end of array */ }; /* handler called by the 3812 emulator when the internal timers cause an IRQ */ static void irqhandler(int linestate) { cpu_set_irq_line(1,M6809_IRQ_LINE,linestate); } static struct YM2203interface ym2203_interface = { 1, 1500000, /* Unknown */ { YM2203_VOL(50,10) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct YM3526interface ym3526_interface = { 1, /* 1 chip */ 3000000, /* 3 MHz? */ { 100 }, /* volume */ { irqhandler }, };
{ -1 } /* end of array */ }; /* handler called by the 2203 emulator when the internal timers cause an IRQ */ static void irqhandler(int irq) { cpu_set_irq_line(2,M6809_FIRQ_LINE,irq ? ASSERT_LINE : CLEAR_LINE); } static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 3000000, /* 3 MHz ??? */ { YM2203_VOL(40,50), YM2203_VOL(40,50) }, { 0 }, { 0 }, { 0 }, { 0 }, { irqhandler } }; static MACHINE_DRIVER_START( xsleena ) /* basic machine hardware */ MDRV_CPU_ADD(M6809, 2000000) /* 2 MHz ??? */ MDRV_CPU_MEMORY(readmem,writemem) MDRV_CPU_VBLANK_INT(xainA_interrupt,4) /* wrong, this is just a hack */
static struct GfxDecodeInfo combascb_gfxdecodeinfo[] = { { REGION_GFX1, 0x00000, &tile_layout, 0, 8*16 }, { REGION_GFX1, 0x40000, &tile_layout, 0, 8*16 }, { REGION_GFX2, 0x00000, &sprite_layout, 0, 8*16 }, { REGION_GFX2, 0x40000, &sprite_layout, 0, 8*16 }, { -1 } }; static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 3500000, /* this is wrong but gives the correct music tempo. */ /* the correct value is 20MHz/8=2.5MHz, which gives correct pitch but wrong tempo */ { YM2203_VOL(20,20) }, { 0 }, { 0 }, { combasc_portA_w }, { 0 } }; static struct UPD7759_interface upd7759_interface = { 1, /* number of chips */ UPD7759_STANDARD_CLOCK, { 70 }, /* volume */ { REGION_SOUND1 }, /* memory region */ UPD7759_STANDALONE_MODE, /* chip mode */ {0} };
static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0, 32 }, { REGION_GFX2, 0, &fgtilelayout, 32*4, 16 }, { REGION_GFX3, 0, &bgtilelayout, 32*4+16*16, 16 }, { REGION_GFX4, 0, &spritelayout, 32*4+16*16+16*16, 16 }, { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 1500000, /* 1.5 MHz */ { YM2203_VOL(10,15), YM2203_VOL(10,15) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_1943 = { /* basic machine hardware */ { { CPU_Z80, 6000000, /* 6 Mhz */
static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &spritelayout, 0*16, 16}, { REGION_GFX2, 0, &spritelayout, 16*16, 16}, { REGION_GFX2, 0, &bigspritelayout, 16*16, 16}, { REGION_GFX3, 0, &charlayout, 32*16, 16}, { -1} /* end of array */ }; static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 12000000/8, // lax 11/03/1999 (1250000 -> 1500000 ???) { YM2203_VOL(25,25), YM2203_VOL(25,25)}, { 0 }, { 0 }, { 0 }, { 0 } }; static MACHINE_DRIVER_START( mnight ) /* basic machine hardware */ MDRV_CPU_ADD(Z80, 6000000) /* 12000000/2 ??? */ MDRV_CPU_MEMORY(readmem,writemem) /* very sensitive to these settings */ MDRV_CPU_VBLANK_INT(mnight_interrupt,1) MDRV_CPU_ADD(Z80, 4000000)
}; static struct GfxDecodeInfo gfxdecodeinfo[] = { { 1, 0x00000, &charlayout, 0, 16 }, /* colors 0-255 */ { 1, 0x10000, &spritelayout, 256, 16 }, /* colors 256-511 */ { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 1500000, /* 1.5 MHz ?????? */ { YM2203_VOL(255,255) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver = { /* basic machine hardware */ { { CPU_Z80, 8000000, /* 8 Mhz ??? */
int sound_start(void) { #if 0 /* forQUASI88 */ int totalsound = 0; int i; /* Verify the order of entries in the sndintf[] array */ for (i = 0;i < SOUND_COUNT;i++) { if (sndintf[i].sound_num != i) { int j; logerror("Sound #%d wrong ID %d: check enum SOUND_... in src/sndintrf.h!\n",i,sndintf[i].sound_num); for (j = 0; j < i; j++) logerror("ID %2d: %s\n", j, sndintf[j].name); return 1; } } /* samples will be read later if needed */ Machine->samples = 0; refresh_period = TIME_IN_HZ(Machine->drv->frames_per_second); refresh_period_inv = 1.0 / refresh_period; sound_update_timer = timer_alloc(NULL); #endif /* forQUASI88 */ #if 1 /* forQUASI88 */ #ifndef USE_FMGEN if( use_fmgen ){ if(verbose_proc) printf("(cisc's Fmgen liblary not available)..."); use_fmgen = 0; } #endif /* set interface parameter ( volume, mono/stereo, and so on ) */ /* set interface parameter and set xmame interface function */ #ifdef USE_FMGEN if( use_fmgen ){ if( sound_board==SOUND_I ){ /* fmgen ym2203 */ fm_interface = pc88_fmgen_interface; beep_interface = pc88_beep_interface; xmame_func_sound = pc88_fmgen_func; Machine__drv__sound_attributes = SOUND_SUPPORTS_STEREO; }else{ /* fmgen ym2608 */ fm_interface = pc88_fmgen2_interface; beep_interface = pc88_beep_interface; xmame_func_sound = pc88_fmgen2_func; Machine__drv__sound_attributes = SOUND_SUPPORTS_STEREO; } }else #endif { if( sound_board==SOUND_I ){ /* xmame ym2203 */ fm_interface = pc88_sound_interface; beep_interface = pc88_beep_interface; xmame_func_sound = pc88_sound_func; Machine__drv__sound_attributes = 0; }else{ /* xmame ym2608 */ fm_interface = pc88_sound2_interface; beep_interface = pc88_beep_interface; xmame_func_sound = pc88_sound2_func; Machine__drv__sound_attributes = SOUND_SUPPORTS_STEREO; } } /* set volume ( fm, psg, beep ) */ if( sound_board==SOUND_I ){ if( Machine__drv__sound_attributes == 0) ym2203_interface.mixing_level[0] = YM2203_VOL(fmvol,psgvol); else ym2203_interface.mixing_level[0] = YM3012_VOL(fmvol,MIXER_PAN_LEFT,fmvol,MIXER_PAN_RIGHT); }else{ ym2608_interface.volumeSSG[0] = psgvol; ym2608_interface.volumeFM[0] = YM3012_VOL(fmvol,MIXER_PAN_LEFT,fmvol,MIXER_PAN_RIGHT); } beep88_interface.mixing_level[0] = beepvol; #endif /* forQUASI88 */ if (mixer_sh_start() != 0) return 1; if (streams_sh_start() != 0) return 1; #if 0 /* forQUASI88 */ while (Machine->drv->sound[totalsound].sound_type != 0 && totalsound < MAX_SOUND) { if ((*sndintf[Machine->drv->sound[totalsound].sound_type].start)(&Machine->drv->sound[totalsound]) != 0) goto getout; totalsound++; } #else /* forQUASI88 */ { if ((*sndintf[ fm_interface.sound_type ].start)(&fm_interface) != 0) goto getout; if ((*sndintf[ beep_interface.sound_type ].start)(&beep_interface) != 0) goto getout; } #endif /* forQUASI88 */ return 0; getout: /* TODO: should also free the resources allocated before */ return 1; }
static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0x80, 16 }, /* colors 0x80-0xbf */ { REGION_GFX2, 0, &tilelayout, 0x00, 8 }, /* colors 0x00-0x3f */ { REGION_GFX3, 0, &spritelayout, 0x40, 4 }, /* colors 0x40-0x7f */ { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 1500000, /* 1.5 MHz (?) */ { YM2203_VOL(20,40), YM2203_VOL(20,40) }, { 0 }, { 0 }, { 0 }, { 0 } }; static MACHINE_DRIVER_START( gng ) /* basic machine hardware */ MDRV_CPU_ADD(M6809, 1500000) /* 1.5 MHz ? */ MDRV_CPU_MEMORY(readmem,writemem) MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
{ REGION_GFX3, 0, &spritelayout, 256, 16 }, /* Sprites 16x16 */ { -1 } /* end of array */ }; /******************************************************************************/ static void irqhandler(int linestate) { cpu_set_irq_line(1,0,linestate); } static struct YM2203interface ym2203_interface = { 1, 1500000, /* 12MHz clock divided by 8 = 1.50 MHz */ { YM2203_VOL(40,95) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct YM3812interface ym3812_interface = { 1, /* 1 chip */ 3000000, /* 3 MHz (12MHz/4) */ { 40 }, { irqhandler }, }; static struct OKIM6295interface okim6295_interface =
}; /* handler called by the 3812 emulator when the internal timers cause an IRQ */ static void irqhandler(int linestate) { cpu_set_irq_line(1,0,linestate); //cpu_cause_interrupt(1,0xff); } static struct YM2203interface ym2203_interface = { 1, /* 1 chip */ 1500000, /* 1.5 MHz ??? */ { YM2203_VOL(30,30) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct YM3526interface ym3526_interface = { 1, /* 1 chip (no more supported) */ 3600000, /* 3.600000 MHz ? (partially supported) */ { 30 }, /* volume */ { irqhandler } }; static int exprraid_interrupt(void)
static READ_HANDLER( latch_r ) { return cmd_latch; } static READ_HANDLER( unk_r ) { // printf("Unknown 2203 port read (PC=%x)\n", z80c_get_reg(REG_PC)); return cmd_latch; } static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 4000000, /* 4 MHz ? */ { YM2203_VOL(40,40), YM2203_VOL(40,40) }, { unk_r, unk_r }, { 0 }, { 0 }, { 0 }, { irqhandler, irqhandler } }; static MEMORY_READ_START( lastday_sound_readmem ) { 0x0000, 0x7fff, MRA_ROM }, { 0xc000, 0xc7ff, MRA_RAM }, { 0xc800, 0xc800, latch_r }, { 0xf000, 0xf000, YM2203_status_port_0_r }, { 0xf001, 0xf001, YM2203_read_port_0_r }, { 0xf002, 0xf002, YM2203_status_port_1_r }, { 0xf003, 0xf003, YM2203_read_port_1_r },
static struct GfxDecodeInfo gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0, 32 }, { REGION_GFX2, 0, &tilelayout, 32*4, 16 }, /* Tiles */ { REGION_GFX3, 0, &spritelayout, 32*4+16*16, 16 }, /* Sprites */ { -1 } /* end of array */ }; static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 1500000, /* 1.5 MHz (?) */ { YM2203_VOL(14,22), YM2203_VOL(14,22) }, { 0 }, { 0 }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_gunsmoke = { /* basic machine hardware */ { { CPU_Z80, 4000000, /* 4 MHz (?) */
AM_RANGE(0x71, 0x71) AM_READ(YM2203_read_port_0_r) ADDRESS_MAP_END static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x10, 0x10) AM_WRITE(MWA8_NOP) /* ?? */ AM_RANGE(0x20, 0x20) AM_WRITE(MWA8_NOP) /* ?? */ AM_RANGE(0x30, 0x33) AM_WRITE(ppi8255_0_w) AM_RANGE(0x70, 0x70) AM_WRITE(YM2203_control_port_0_w) AM_RANGE(0x71, 0x71) AM_WRITE(YM2203_write_port_0_w) ADDRESS_MAP_END static struct YM2203interface ym2203_interface = { 1, 6000000/2, { YM2203_VOL(50,50), }, { input_port_3_r }, { 0 }, { 0 }, { homerun_banking_w }, { 0 } }; INPUT_PORTS_START( homerun ) PORT_START PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) )
{ REGION_GFX3, 0x08000, &tilelayout, 256, 16 }, { REGION_GFX3, 0x09000, &tilelayout, 256, 16 }, { REGION_GFX3, 0x0a000, &tilelayout, 256, 16 }, { REGION_GFX3, 0x0b000, &tilelayout, 256, 16 }, { -1 } /* end of array */ }; /* actually there is one AY8910 and one YM2203, but the sound core doesn't */ /* support that so we use 2 YM2203 */ static struct YM2203interface ym2203_interface = { 2, /* 2 chips */ 1250000, /* 1.25 MHz */ { YM2203_VOL(20,MIXERG(20,MIXER_GAIN_2x,MIXER_PAN_CENTER)), YM2203_VOL(20,MIXERG(20,MIXER_GAIN_2x,MIXER_PAN_CENTER)) }, { soundlatch_r }, { soundlatch2_r }, { 0 }, { 0 } }; static struct MachineDriver machine_driver_citycon = { /* basic machine hardware */ { { CPU_M6809, 2048000, /* 2.048 Mhz ??? */