trunk/src/mess/drivers/fmtowns.c
| r22788 | r22789 | |
| 2242 | 2242 | AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff00ff) |
| 2243 | 2243 | AM_RANGE(0x04d4,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff0000) |
| 2244 | 2244 | // Sound (YM3438 [FM], RF5c68 [PCM]) |
| 2245 | | AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8_LEGACY("fm",ym3438_r,ym3438_w,0x00ff00ff) |
| 2245 | AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff00ff) |
| 2246 | 2246 | AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffffffff) // R/W -- volume ports |
| 2247 | 2247 | AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffffffff) |
| 2248 | 2248 | AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffffffff) |
| r22788 | r22789 | |
| 2294 | 2294 | AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff) |
| 2295 | 2295 | AM_RANGE(0x04d6,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff) |
| 2296 | 2296 | // Sound (YM3438 [FM], RF5c68 [PCM]) |
| 2297 | | AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8_LEGACY("fm",ym3438_r,ym3438_w,0x00ff) |
| 2297 | AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff) |
| 2298 | 2298 | AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffff) // R/W -- volume ports |
| 2299 | 2299 | AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffff) |
| 2300 | 2300 | AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffff) |
| r22788 | r22789 | |
| 2748 | 2748 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL } |
| 2749 | 2749 | }; |
| 2750 | 2750 | |
| 2751 | | static const ym3438_interface ym3438_intf = |
| 2752 | | { |
| 2753 | | DEVCB_DRIVER_LINE_MEMBER(towns_state,towns_fm_irq) |
| 2754 | | }; |
| 2755 | | |
| 2756 | 2751 | static const rf5c68_interface rf5c68_intf = |
| 2757 | 2752 | { |
| 2758 | 2753 | towns_pcm_irq |
| r22788 | r22789 | |
| 2813 | 2808 | /* sound hardware */ |
| 2814 | 2809 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2815 | 2810 | MCFG_SOUND_ADD("fm", YM3438, 53693100 / 7) // actual clock speed unknown |
| 2816 | | MCFG_SOUND_CONFIG(ym3438_intf) |
| 2811 | MCFG_YM2612_IRQ_HANDLER(WRITELINE(towns_state, towns_fm_irq)) |
| 2817 | 2812 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 2818 | 2813 | MCFG_RF5C68_ADD("pcm", 53693100 / 7) // actual clock speed unknown |
| 2819 | 2814 | MCFG_SOUND_CONFIG(rf5c68_intf) |
trunk/src/mess/machine/c64_sfx_sound_expander.c
| r22788 | r22789 | |
| 35 | 35 | m_slot->irq_w(state); |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | | static const ym3526_interface ym3526_config = |
| 39 | | { |
| 40 | | DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, c64_sfx_sound_expander_cartridge_device, opl_irq_w) |
| 41 | | }; |
| 42 | 38 | |
| 43 | | |
| 44 | 39 | //------------------------------------------------- |
| 45 | 40 | // MACHINE_CONFIG_FRAGMENT( c64_sfx_sound_expander ) |
| 46 | 41 | //------------------------------------------------- |
| r22788 | r22789 | |
| 48 | 43 | static MACHINE_CONFIG_FRAGMENT( c64_sfx_sound_expander ) |
| 49 | 44 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 50 | 45 | MCFG_SOUND_ADD(YM3526_TAG, YM3526, XTAL_3_579545MHz) |
| 51 | | MCFG_SOUND_CONFIG(ym3526_config) |
| 46 | MCFG_YM3526_IRQ_HANDLER(WRITELINE(c64_sfx_sound_expander_cartridge_device, opl_irq_w)) |
| 52 | 47 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) |
| 53 | 48 | |
| 54 | 49 | MCFG_C64_PASSTHRU_EXPANSION_SLOT_ADD() |
| r22788 | r22789 | |
| 250 | 245 | } |
| 251 | 246 | else if (BIT(offset, 5)) |
| 252 | 247 | { |
| 253 | | data = ym3526_r(m_opl, space, BIT(offset, 4)); |
| 248 | data = m_opl->read(space, BIT(offset, 4)); |
| 254 | 249 | } |
| 255 | 250 | } |
| 256 | 251 | |
| r22788 | r22789 | |
| 266 | 261 | { |
| 267 | 262 | if (!io2 && BIT(offset, 5)) |
| 268 | 263 | { |
| 269 | | ym3526_w(m_opl, space, BIT(offset, 4), data); |
| 264 | m_opl->write(space, BIT(offset, 4), data); |
| 270 | 265 | } |
| 271 | 266 | |
| 272 | 267 | m_exp->cd_w(space, get_offset(offset, 0), data, sphi2, ba, roml, romh, io1, io2); |