diff options
Diffstat (limited to 'src/mame/audio/skyraid.c')
-rw-r--r-- | src/mame/audio/skyraid.c | 220 |
1 files changed, 110 insertions, 110 deletions
diff --git a/src/mame/audio/skyraid.c b/src/mame/audio/skyraid.c index bba258f9747..51b2735f754 100644 --- a/src/mame/audio/skyraid.c +++ b/src/mame/audio/skyraid.c @@ -8,96 +8,96 @@ /* Discrete Sound Input Nodes */ -#define SKYRAID_PLANE_SWEEP_EN NODE_01 -#define SKYRAID_MISSILE_EN NODE_02 -#define SKYRAID_EXPLOSION_EN NODE_03 -#define SKYRAID_PLANE_ON_EN NODE_04 -#define SKYRAID_PLANE_ON__IC_E8 SKYRAID_PLANE_ON_EN -#define SKYRAID_ATTRACT_EN NODE_05 +#define SKYRAID_PLANE_SWEEP_EN NODE_01 +#define SKYRAID_MISSILE_EN NODE_02 +#define SKYRAID_EXPLOSION_EN NODE_03 +#define SKYRAID_PLANE_ON_EN NODE_04 +#define SKYRAID_PLANE_ON__IC_E8 SKYRAID_PLANE_ON_EN +#define SKYRAID_ATTRACT_EN NODE_05 /* Discrete Sound Output Nodes */ -#define SKYRAID_NOISE NODE_10 -#define SKYRAID_EXPLOSION_SND NODE_11 -#define SKYRAID_JET_A_SND NODE_12 -#define SKYRAID_JET_B_SND NODE_13 -#define SKYRAID_MSL_A_SND NODE_14 -#define SKYRAID_MSL_B_SND NODE_15 -#define SKYRAID_PLANE_SND NODE_16 +#define SKYRAID_NOISE NODE_10 +#define SKYRAID_EXPLOSION_SND NODE_11 +#define SKYRAID_JET_A_SND NODE_12 +#define SKYRAID_JET_B_SND NODE_13 +#define SKYRAID_MSL_A_SND NODE_14 +#define SKYRAID_MSL_B_SND NODE_15 +#define SKYRAID_PLANE_SND NODE_16 /* Parts List - Resistors */ -#define SKYRAID_R12 RES_K(1) -#define SKYRAID_R13 RES_K(10) -#define SKYRAID_R14 RES_K(100) -#define SKYRAID_R16 RES_K(10) -#define SKYRAID_R18 RES_K(10) -#define SKYRAID_R19 RES_K(10) -#define SKYRAID_R20 RES_K(47) -#define SKYRAID_R24 RES_M(10) -#define SKYRAID_R25 RES_M(3.9) -#define SKYRAID_R27 RES_M(1.5) -#define SKYRAID_R28 RES_M(1.5) -#define SKYRAID_R29 RES_M(4.7) -#define SKYRAID_R30 RES_M(1) -#define SKYRAID_R31 RES_M(1) -#define SKYRAID_R32 RES_M(4.7) -#define SKYRAID_R84 RES_K(22) -#define SKYRAID_R85 RES_K(100) -#define SKYRAID_R86 820 -#define SKYRAID_R110 RES_K(330) -#define SKYRAID_R118 RES_K(470) -#define SKYRAID_R119 RES_K(10) -#define SKYRAID_R120 RES_K(220) -#define SKYRAID_R121 RES_K(1) -#define SKYRAID_R122 RES_K(150) +#define SKYRAID_R12 RES_K(1) +#define SKYRAID_R13 RES_K(10) +#define SKYRAID_R14 RES_K(100) +#define SKYRAID_R16 RES_K(10) +#define SKYRAID_R18 RES_K(10) +#define SKYRAID_R19 RES_K(10) +#define SKYRAID_R20 RES_K(47) +#define SKYRAID_R24 RES_M(10) +#define SKYRAID_R25 RES_M(3.9) +#define SKYRAID_R27 RES_M(1.5) +#define SKYRAID_R28 RES_M(1.5) +#define SKYRAID_R29 RES_M(4.7) +#define SKYRAID_R30 RES_M(1) +#define SKYRAID_R31 RES_M(1) +#define SKYRAID_R32 RES_M(4.7) +#define SKYRAID_R84 RES_K(22) +#define SKYRAID_R85 RES_K(100) +#define SKYRAID_R86 820 +#define SKYRAID_R110 RES_K(330) +#define SKYRAID_R118 RES_K(470) +#define SKYRAID_R119 RES_K(10) +#define SKYRAID_R120 RES_K(220) +#define SKYRAID_R121 RES_K(1) +#define SKYRAID_R122 RES_K(150) /* Parts List - Capacitors */ -#define SKYRAID_C44 CAP_U(4.7) -#define SKYRAID_C45 CAP_U(.0047) -#define SKYRAID_C46 CAP_U(.001) -#define SKYRAID_C48 CAP_U(.0047) -#define SKYRAID_C49 CAP_U(.1) -#define SKYRAID_C50 CAP_U(.001) -#define SKYRAID_C51 CAP_U(.01) -#define SKYRAID_C68 CAP_U(10) -#define SKYRAID_C85 CAP_U(.068) -#define SKYRAID_C86 CAP_U(.1) -#define SKYRAID_C93 CAP_U(.1) +#define SKYRAID_C44 CAP_U(4.7) +#define SKYRAID_C45 CAP_U(.0047) +#define SKYRAID_C46 CAP_U(.001) +#define SKYRAID_C48 CAP_U(.0047) +#define SKYRAID_C49 CAP_U(.1) +#define SKYRAID_C50 CAP_U(.001) +#define SKYRAID_C51 CAP_U(.01) +#define SKYRAID_C68 CAP_U(10) +#define SKYRAID_C85 CAP_U(.068) +#define SKYRAID_C86 CAP_U(.1) +#define SKYRAID_C93 CAP_U(.1) static const discrete_lfsr_desc skyraid_lfsr = { DISC_CLK_IS_FREQ, - 16, /* Bit Length */ - 0, /* Reset Value */ - 0, /* Use Bit 0 as XOR input 0 */ - 14, /* Use Bit 14 as XOR input 1 */ - DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */ - DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */ - DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */ - 0x000001, /* Everything is shifted into the first bit only */ - DISC_LFSR_FLAG_RESET_TYPE_H, /* Output is not inverted */ - 15 /* Output bit */ + 16, /* Bit Length */ + 0, /* Reset Value */ + 0, /* Use Bit 0 as XOR input 0 */ + 14, /* Use Bit 14 as XOR input 1 */ + DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */ + DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */ + DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */ + 0x000001, /* Everything is shifted into the first bit only */ + DISC_LFSR_FLAG_RESET_TYPE_H, /* Output is not inverted */ + 15 /* Output bit */ }; static const discrete_op_amp_filt_info skyraid_explosion_filter = { - SKYRAID_R85, 0, SKYRAID_R86, 0, SKYRAID_R110, /* r1, r2, r3, r4, rF*/ - SKYRAID_C85, SKYRAID_C86, 0, /* c1, c2, c3 */ - 0, 12, -5, /* vRef, vP, vN */ + SKYRAID_R85, 0, SKYRAID_R86, 0, SKYRAID_R110, /* r1, r2, r3, r4, rF*/ + SKYRAID_C85, SKYRAID_C86, 0, /* c1, c2, c3 */ + 0, 12, -5, /* vRef, vP, vN */ }; static const discrete_dac_r1_ladder skyraid_plane_dac = { 2, {SKYRAID_R28, SKYRAID_R27}, - 0, 0, 0, 0 /* no vBias, rBias, rGnd, cFilter */ + 0, 0, 0, 0 /* no vBias, rBias, rGnd, cFilter */ }; static const discrete_mixer_desc skyraid_mixer = { DISC_MIXER_IS_RESISTOR, {SKYRAID_R120, SKYRAID_R32, SKYRAID_R29, SKYRAID_R30, SKYRAID_R31, RES_2_PARALLEL(SKYRAID_R28, SKYRAID_R27)}, - {0, 0, 0, 0, 0, SKYRAID_PLANE_ON__IC_E8}, /* r_nodes */ - {0}, 0, 0, 0, 0, 0, 1 /* no c, rI, rF, cF, cAmp, vRef, gain */ + {0, 0, 0, 0, 0, SKYRAID_PLANE_ON__IC_E8}, /* r_nodes */ + {0}, 0, 0, 0, 0, 0, 1 /* no c, rI, rF, cF, cAmp, vRef, gain */ }; @@ -135,11 +135,11 @@ static const discrete_mixer_desc skyraid_mixer = * |/ * ************************************************************************/ -#define SKYRAID_MISSLE_CUSTOM_IN1 DISCRETE_INPUT(0) -#define SKYRAID_MISSLE_CUSTOM_R1 DISCRETE_INPUT(1) -#define SKYRAID_MISSLE_CUSTOM_R2 DISCRETE_INPUT(2) -#define SKYRAID_MISSLE_CUSTOM_R3 DISCRETE_INPUT(3) -#define SKYRAID_MISSLE_CUSTOM_C DISCRETE_INPUT(4) +#define SKYRAID_MISSLE_CUSTOM_IN1 DISCRETE_INPUT(0) +#define SKYRAID_MISSLE_CUSTOM_R1 DISCRETE_INPUT(1) +#define SKYRAID_MISSLE_CUSTOM_R2 DISCRETE_INPUT(2) +#define SKYRAID_MISSLE_CUSTOM_R3 DISCRETE_INPUT(3) +#define SKYRAID_MISSLE_CUSTOM_C DISCRETE_INPUT(4) DISCRETE_CLASS_STEP_RESET(skyraid_missle_custom_charge, 2, double m_v_charge[2]; @@ -148,7 +148,7 @@ DISCRETE_CLASS_STEP_RESET(skyraid_missle_custom_charge, 2, ); /* the high charge is clamped by the diode to 0.7V above the 5V line */ -#define SKYRAID_MISSLE_CHARGE_PLUS (5.0 + 0.7) +#define SKYRAID_MISSLE_CHARGE_PLUS (5.0 + 0.7) DISCRETE_STEP( skyraid_missle_custom_charge ) { @@ -184,8 +184,8 @@ DISCRETE_RESET( skyraid_missle_custom_charge ) DISCRETE_SOUND_START( skyraid ) /************************************************ - * Input register mapping - ************************************************/ + * Input register mapping + ************************************************/ /* convert the PLANE_SWEEP line to voltage*/ DISCRETE_INPUTX_LOGIC(SKYRAID_PLANE_SWEEP_EN, DEFAULT_TTL_V_LOGIC_1 * RES_VOLTAGE_DIVIDER(SKYRAID_R25, SKYRAID_R24), 0, 0) DISCRETE_INPUT_LOGIC(SKYRAID_MISSILE_EN) @@ -195,76 +195,76 @@ DISCRETE_SOUND_START( skyraid ) DISCRETE_INPUT_LOGIC(SKYRAID_ATTRACT_EN) /************************************************ - * Noise Generator, Explosion sound - ************************************************/ + * Noise Generator, Explosion sound + ************************************************/ /* Note: the noise reset is not emulated 100% accurate */ /* According to the schematics, Attract only clears the lower 8 bits. */ /* I may modify the noise module in the future to properly emulate this, */ /* but you will never hear the difference. */ /* It only wrong for 8 cycles of the 555 while no sound is being generated. */ - DISCRETE_LFSR_NOISE(SKYRAID_NOISE, /* IC F7, pin 13 */ - 1, /* ENAB */ - SKYRAID_ATTRACT_EN, /* RESET */ - 1.49 / ((SKYRAID_R20 + 2 * SKYRAID_R19) * SKYRAID_C51), /* CLK - 555 astable source */ - 1, 0, 0.5, &skyraid_lfsr) /* AMPL, FEED, BIAS */ + DISCRETE_LFSR_NOISE(SKYRAID_NOISE, /* IC F7, pin 13 */ + 1, /* ENAB */ + SKYRAID_ATTRACT_EN, /* RESET */ + 1.49 / ((SKYRAID_R20 + 2 * SKYRAID_R19) * SKYRAID_C51), /* CLK - 555 astable source */ + 1, 0, 0.5, &skyraid_lfsr) /* AMPL, FEED, BIAS */ DISCRETE_LOGIC_NOR(NODE_20, SKYRAID_EXPLOSION_EN, SKYRAID_NOISE) DISCRETE_RC_CIRCUIT_1(NODE_21, - SKYRAID_EXPLOSION_EN, NODE_20, /* INP0, INP1 */ + SKYRAID_EXPLOSION_EN, NODE_20, /* INP0, INP1 */ RES_2_PARALLEL(SKYRAID_R84, SKYRAID_R85 + SKYRAID_R86), SKYRAID_C68) DISCRETE_OP_AMP_FILTER(NODE_22, - 1, /* ENAB */ - NODE_21, 0, /* INP0, INP1 */ - DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &skyraid_explosion_filter) /* TYPE,INFO */ + 1, /* ENAB */ + NODE_21, 0, /* INP0, INP1 */ + DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &skyraid_explosion_filter) /* TYPE,INFO */ /* IC E10, pin 14 gain and clipping */ DISCRETE_GAIN(NODE_23, NODE_22, SKYRAID_R119 / SKYRAID_R121 + 1) DISCRETE_CLAMP(SKYRAID_EXPLOSION_SND, NODE_23, -5, 12.0 - 1.5) /************************************************ - * Jet, Plane sound - ************************************************/ - DISCRETE_RCFILTER(NODE_30, /* IC J6, pin 5 */ - SKYRAID_PLANE_SWEEP_EN, /* IN0 */ + * Jet, Plane sound + ************************************************/ + DISCRETE_RCFILTER(NODE_30, /* IC J6, pin 5 */ + SKYRAID_PLANE_SWEEP_EN, /* IN0 */ RES_2_PARALLEL(SKYRAID_R25, SKYRAID_R24), SKYRAID_C49) - DISCRETE_566(NODE_31, /* IC J6, pin 3 */ - NODE_30, /* VMOD */ + DISCRETE_566(NODE_31, /* IC J6, pin 3 */ + NODE_30, /* VMOD */ SKYRAID_R18, SKYRAID_C48, - 5, -5, 5, /* VPOS,VNEG,VCHARGE */ + 5, -5, 5, /* VPOS,VNEG,VCHARGE */ DISC_566_OUT_COUNT_R) - DISCRETE_LOGIC_SHIFT(NODE_32, /* IC H7, J7 output */ - SKYRAID_NOISE, /* IC H7, J7 pins 1 & 2 */ - 1, NODE_31, 16, /* RESET, CLK, SIZE */ + DISCRETE_LOGIC_SHIFT(NODE_32, /* IC H7, J7 output */ + SKYRAID_NOISE, /* IC H7, J7 pins 1 & 2 */ + 1, NODE_31, 16, /* RESET, CLK, SIZE */ DISC_LOGIC_SHIFT__RESET_L | DISC_LOGIC_SHIFT__LEFT | DISC_CLK_BY_COUNT) /* move bits together for ease of use */ DISCRETE_TRANSFORM4(NODE_33, NODE_32, 1, 1 << 14, 2, "01&02/3&|") DISCRETE_DAC_R1(SKYRAID_PLANE_SND, - NODE_33, /* DATA */ + NODE_33, /* DATA */ DEFAULT_TTL_V_LOGIC_1, &skyraid_plane_dac) - DISCRETE_BIT_DECODE(SKYRAID_JET_A_SND, NODE_32, 0, DEFAULT_TTL_V_LOGIC_1) /* IC H7, pin 3 */ - DISCRETE_BIT_DECODE(SKYRAID_JET_B_SND, NODE_32, 15, DEFAULT_TTL_V_LOGIC_1) /* IC J7, pin 13 */ + DISCRETE_BIT_DECODE(SKYRAID_JET_A_SND, NODE_32, 0, DEFAULT_TTL_V_LOGIC_1) /* IC H7, pin 3 */ + DISCRETE_BIT_DECODE(SKYRAID_JET_B_SND, NODE_32, 15, DEFAULT_TTL_V_LOGIC_1) /* IC J7, pin 13 */ /************************************************ - * Missle sound - ************************************************/ + * Missle sound + ************************************************/ DISCRETE_CUSTOM5(NODE_40, skyraid_missle_custom_charge, SKYRAID_MISSILE_EN, SKYRAID_R12, SKYRAID_R14, SKYRAID_R13, SKYRAID_C44, NULL) - DISCRETE_566(NODE_41, /* IC K6, pin 3 */ - NODE_40, /* VMOD */ + DISCRETE_566(NODE_41, /* IC K6, pin 3 */ + NODE_40, /* VMOD */ SKYRAID_R16, SKYRAID_C45, - 5, -5, SKYRAID_MISSLE_CHARGE_PLUS, /* VPOS,VNEG,VCHARGE */ + 5, -5, SKYRAID_MISSLE_CHARGE_PLUS, /* VPOS,VNEG,VCHARGE */ DISC_566_OUT_COUNT_R) - DISCRETE_LOGIC_SHIFT(NODE_42, /* IC K7, L7 output */ - SKYRAID_NOISE, /* IC K7, L7 pins 1 & 2 */ - 1, NODE_41, 16, /* RESET, CLK, SIZE */ + DISCRETE_LOGIC_SHIFT(NODE_42, /* IC K7, L7 output */ + SKYRAID_NOISE, /* IC K7, L7 pins 1 & 2 */ + 1, NODE_41, 16, /* RESET, CLK, SIZE */ DISC_LOGIC_SHIFT__RESET_L | DISC_LOGIC_SHIFT__LEFT | DISC_CLK_BY_COUNT) - DISCRETE_BIT_DECODE(SKYRAID_MSL_A_SND, NODE_42, 0, DEFAULT_TTL_V_LOGIC_1) /* IC K7, pin 3 */ - DISCRETE_BIT_DECODE(SKYRAID_MSL_B_SND, NODE_42, 15, DEFAULT_TTL_V_LOGIC_1) /* IC L7, pin 13 */ + DISCRETE_BIT_DECODE(SKYRAID_MSL_A_SND, NODE_42, 0, DEFAULT_TTL_V_LOGIC_1) /* IC K7, pin 3 */ + DISCRETE_BIT_DECODE(SKYRAID_MSL_B_SND, NODE_42, 15, DEFAULT_TTL_V_LOGIC_1) /* IC L7, pin 13 */ /************************************************ - * Final Mix - ************************************************/ + * Final Mix + ************************************************/ DISCRETE_LOGIC_INVERT(NODE_91, SKYRAID_ATTRACT_EN) DISCRETE_MIXER6(NODE_92, - NODE_91, /* ENAB */ + NODE_91, /* ENAB */ SKYRAID_EXPLOSION_SND, SKYRAID_JET_A_SND, SKYRAID_JET_B_SND, @@ -273,7 +273,7 @@ DISCRETE_SOUND_START( skyraid ) SKYRAID_PLANE_SND, &skyraid_mixer) DISCRETE_CRFILTER(NODE_93, - NODE_92, /* IN0 */ + NODE_92, /* IN0 */ SKYRAID_R122 + RES_6_PARALLEL(SKYRAID_R120, SKYRAID_R32, SKYRAID_R29, SKYRAID_R30, SKYRAID_R31, RES_2_PARALLEL(SKYRAID_R27, SKYRAID_R28)), SKYRAID_C93) /* IC E10, pin 1 gain and clipping */ |