From 6c653b943e2fe046dca39cdec32318ac8d96889b Mon Sep 17 00:00:00 2001 From: Couriersud Date: Sun, 25 Jan 2009 16:17:31 +0000 Subject: [PATCH] Spectrum of generated sounds getting near samples. Still issues with LS123 durations For skip, samples are twice as short For run, samples are twice as long --- src/emu/sound/disc_dev.c | 6 +++++- src/mame/audio/mario.c | 15 ++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/emu/sound/disc_dev.c b/src/emu/sound/disc_dev.c index 4e2ef3c865d..508df9b1296 100644 --- a/src/emu/sound/disc_dev.c +++ b/src/emu/sound/disc_dev.c @@ -1629,7 +1629,11 @@ static DISCRETE_STEP(dsd_ls624) node->output[0] = ((double)lst) * (1.0 + context->remain / sample_t) - ((double)context->state) * context->remain / sample_t; break; case DISC_LS624_OUT_LOGIC: - node->output[0] = context->state; + /* filter out randomness */ + if (cntf + cntr > 1) + node->output[0] = 1; + else + node->output[0] = context->state; break; case DISC_LS624_OUT_COUNT_F: node->output[0] = cntf; diff --git a/src/mame/audio/mario.c b/src/mame/audio/mario.c index cbf5c4def2a..c869d7cc873 100644 --- a/src/mame/audio/mario.c +++ b/src/mame/audio/mario.c @@ -163,8 +163,8 @@ static DISCRETE_SOUND_START(mario) DISCRETE_LS123(NODE_10, DS_SOUND0_INV, MR_R17, MR_C14) DISCRETE_RCFILTER(NODE_11, 1, NODE_10, MR_R6, MR_C3) - DISCRETE_74LS624( NODE_12, 1, NODE_11, VSS, MR_C6, DISC_LS624_OUT_ENERGY) - DISCRETE_74LS624( NODE_13, 1, NODE_11, VSS, MR_C17, DISC_LS624_OUT_ENERGY) + DISCRETE_74LS624( NODE_12, 1, NODE_11, VSS, MR_C6, DISC_LS624_OUT_LOGIC) + DISCRETE_74LS624( NODE_13, 1, NODE_11, VSS, MR_C17, DISC_LS624_OUT_LOGIC) DISCRETE_LOGIC_XOR(NODE_14, 1, NODE_12, NODE_13) DISCRETE_LOGIC_AND(NODE_15, 1, NODE_14, NODE_10) @@ -176,8 +176,8 @@ static DISCRETE_SOUND_START(mario) DISCRETE_LS123(NODE_20, DS_SOUND1_INV, MR_R18, MR_C15) DISCRETE_RCFILTER(NODE_21, 1, NODE_20, MR_R7, MR_C4) - DISCRETE_74LS624( NODE_22, 1, NODE_21, VSS, MR_C5, DISC_LS624_OUT_ENERGY) - DISCRETE_74LS624( NODE_23, 1, NODE_21, VSS, MR_C16, DISC_LS624_OUT_ENERGY) + DISCRETE_74LS624( NODE_22, 1, NODE_21, VSS, MR_C5, DISC_LS624_OUT_LOGIC) + DISCRETE_74LS624( NODE_23, 1, NODE_21, VSS, MR_C16, DISC_LS624_OUT_LOGIC) DISCRETE_LOGIC_XOR(NODE_24, 1, NODE_22, NODE_23) DISCRETE_LOGIC_AND(NODE_25, 1, NODE_24, NODE_20) @@ -195,7 +195,7 @@ static DISCRETE_SOUND_START(mario) DISCRETE_LS123(NODE_110, DS_SOUND7_INV, MR_R61, MR_C41) DISCRETE_TRANSFORM2(NODE_111, NODE_110, TTL_HIGH, "0!1*") DISCRETE_RCFILTER(NODE_112, 1, NODE_111, MR_R65, MR_C44) - DISCRETE_74LS624(NODE_113, 1, NODE_112, VSS, MR_C40, DISC_LS624_OUT_ENERGY) + DISCRETE_74LS624(NODE_113, 1, NODE_112, VSS, MR_C40, DISC_LS624_OUT_LOGIC) DISCRETE_LOGIC_XOR(NODE_115, 1, NODE_102, NODE_113) @@ -228,8 +228,9 @@ static DISCRETE_SOUND_START(mario) */ // EZV20 equivalent filter circuit ... DISCRETE_CRFILTER(NODE_296,1,NODE_295, RES_K(1), CAP_U(4.7)) - DISCRETE_OUTPUT(NODE_296, 32767.0/5.0 * 3 ) - //DISCRETE_WAVELOG1(DS_OUT_DAC, 32767/5.0) + DISCRETE_OUTPUT(NODE_296, 32767.0/5.0 * 2) + //DISCRETE_WAVELOG2(NODE_296, 32767/5.0 * 2, DS_SOUND0_INV, 10000) + //DISCRETE_WAVELOG2(NODE_296, 32767/5.0 * 2, DS_SOUND7_INV, 10000) DISCRETE_SOUND_END