From c4c295961087217e64cfdfd11091fb9a0dd6e301 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 11 Jan 2017 22:20:27 -0500 Subject: [PATCH] Legion and Rygar have YM3526 instead of YM3812 (other Nichibutsu games to be checked) Document DACs for Legion and Terra Force/Big Fighter (nw) --- src/mame/drivers/armedf.cpp | 96 +++++++++++++++---------------------- src/mame/drivers/tecmo.cpp | 11 +++-- 2 files changed, 47 insertions(+), 60 deletions(-) diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index 660fdf16bb3..51545f99ead 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -317,6 +317,7 @@ Notes: #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "cpu/mcs51/mcs51.h" +#include "sound/3526intf.h" #include "sound/3812intf.h" #include "sound/dac.h" #include "sound/volt_reg.h" @@ -810,6 +811,15 @@ static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, armedf_state ) AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END +static ADDRESS_MAP_START( sound_3526_portmap, AS_IO, 8, armedf_state ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3526_device, write) + AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_byte_interface, write) + AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_byte_interface, write) + AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) + AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read) +ADDRESS_MAP_END + /************************************* * @@ -1224,6 +1234,26 @@ MACHINE_RESET_MEMBER(armedf_state,armedf) } +static MACHINE_CONFIG_FRAGMENT( terraf_sound ) + MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/6) // 4mhz + MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_CPU_IO_MAP(sound_portmap) + MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ? + + MCFG_SPEAKER_STANDARD_MONO("speaker") + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + + MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) + + MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // 10-pin SIP with 74HC374P latch + MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // 10-pin SIP with 74HC374P latch + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) + MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( terraf, armedf_state ) /* basic machine hardware */ @@ -1231,11 +1261,6 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_CPU_PROGRAM_MAP(terraf_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert) - MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/6) // 4mhz? - MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_IO_MAP(sound_portmap) - MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ? - MCFG_MACHINE_START_OVERRIDE(armedf_state,armedf) MCFG_MACHINE_RESET_OVERRIDE(armedf_state,armedf) @@ -1261,18 +1286,7 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("speaker") - - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz? - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - - MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // unknown DAC - MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.8) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) + MCFG_FRAGMENT_ADD(terraf_sound) MACHINE_CONFIG_END static MACHINE_CONFIG_START( terrafjb, armedf_state ) @@ -1338,11 +1352,6 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_CPU_PROGRAM_MAP(kozure_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert) - MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/6) // 4mhz - MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_IO_MAP(sound_portmap) - MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ? - MCFG_MACHINE_START_OVERRIDE(armedf_state,armedf) MCFG_MACHINE_RESET_OVERRIDE(armedf_state,armedf) @@ -1367,18 +1376,7 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("speaker") - - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - - MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC - MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) + MCFG_FRAGMENT_ADD(terraf_sound) MACHINE_CONFIG_END static MACHINE_CONFIG_START( armedf, armedf_state ) @@ -1469,7 +1467,7 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz + MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // or YM3526? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC @@ -1488,7 +1486,7 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/6) // 4mhz MCFG_CPU_PROGRAM_MAP(cclimbr2_soundmap) - MCFG_CPU_IO_MAP(sound_portmap) + MCFG_CPU_IO_MAP(sound_3526_portmap) MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ? MCFG_MACHINE_START_OVERRIDE(armedf_state,armedf) @@ -1519,11 +1517,11 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz + MCFG_SOUND_ADD("ymsnd", YM3526, XTAL_24MHz/6) // 4mhz MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC - MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC + MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // 10-pin SIP with 74HC374P latch + MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // 10-pin SIP with 74HC374P latch MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) @@ -1567,7 +1565,7 @@ static MACHINE_CONFIG_START( legionjb, armedf_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // 4mhz + MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // or YM3526? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // unknown DAC @@ -1583,11 +1581,6 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) MCFG_CPU_PROGRAM_MAP(bigfghtr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", armedf_state, irq1_line_assert) - MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/6) // verified - MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_IO_MAP(sound_portmap) - MCFG_CPU_PERIODIC_INT_DRIVER(armedf_state, irq0_line_hold, XTAL_8MHz/2/512) // ? - MCFG_CPU_ADD("mcu", I8751, XTAL_16MHz/2) // verified MCFG_CPU_PROGRAM_MAP(bigfghtr_mcu_map) MCFG_CPU_IO_MAP(bigfghtr_mcu_io_map) @@ -1611,18 +1604,7 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("speaker") - - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_24MHz/6) // verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) - - MCFG_SOUND_ADD("dac1", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC - MCFG_SOUND_ADD("dac2", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE_EX(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE_EX(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) + MCFG_FRAGMENT_ADD(terraf_sound) MACHINE_CONFIG_END /************************************* diff --git a/src/mame/drivers/tecmo.cpp b/src/mame/drivers/tecmo.cpp index 3018eeeeff2..c9f11f0d603 100644 --- a/src/mame/drivers/tecmo.cpp +++ b/src/mame/drivers/tecmo.cpp @@ -57,6 +57,7 @@ f80b ???? #include "emu.h" #include "cpu/z80/z80.h" #include "machine/watchdog.h" +#include "sound/3526intf.h" #include "sound/3812intf.h" #include "includes/tecmo.h" @@ -230,7 +231,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( rygar_sound_map, AS_PROGRAM, 8, tecmo_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write) + AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3526_device, write) AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w) AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w) @@ -659,8 +660,8 @@ static MACHINE_CONFIG_START( rygar, tecmo_state ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ - MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) + MCFG_SOUND_ADD("ymsnd", YM3526, XTAL_4MHz) /* verified on pcb */ + MCFG_YM3526_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */ @@ -680,6 +681,10 @@ static MACHINE_CONFIG_DERIVED( gemini, rygar ) MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PROGRAM_MAP(tecmo_sound_map) + + MCFG_SOUND_REPLACE("ymsnd", YM3812, XTAL_4MHz) + MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( geminib, gemini)