diff options
Diffstat (limited to 'src/mame/audio/polepos.c')
-rw-r--r-- | src/mame/audio/polepos.c | 206 |
1 files changed, 102 insertions, 104 deletions
diff --git a/src/mame/audio/polepos.c b/src/mame/audio/polepos.c index 421508cab6e..ced9d354089 100644 --- a/src/mame/audio/polepos.c +++ b/src/mame/audio/polepos.c @@ -9,15 +9,15 @@ #include "namco54.h" #include "includes/polepos.h" -#define OUTPUT_RATE 24000 +#define OUTPUT_RATE 24000 -#define POLEPOS_R166 1000.0 -#define POLEPOS_R167 2200.0 -#define POLEPOS_R168 4700.0 +#define POLEPOS_R166 1000.0 +#define POLEPOS_R167 2200.0 +#define POLEPOS_R168 4700.0 /* resistor values when shorted by 4066 running at 5V */ -#define POLEPOS_R166_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) -#define POLEPOS_R167_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) -#define POLEPOS_R168_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) +#define POLEPOS_R166_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) +#define POLEPOS_R167_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) +#define POLEPOS_R168_SHUNT 1.0/(1.0/POLEPOS_R166 + 1.0/250) struct polepos_sound_state { @@ -93,13 +93,13 @@ static STREAM_UPDATE( engine_sound_update ) { filter2_step(&state->m_filter_engine[loop]); /* The op-amp powered @ 5V will clip to 0V & 3.5V. - * Adjusted to vRef of 2V, we will clip as follows: */ + * Adjusted to vRef of 2V, we will clip as follows: */ if (state->m_filter_engine[loop].y0 > 1.5) state->m_filter_engine[loop].y0 = 1.5; if (state->m_filter_engine[loop].y0 < -2) state->m_filter_engine[loop].y0 = -2; i_total += state->m_filter_engine[loop].y0 / r_filt_out[loop]; } - i_total *= r_filt_total * 32000/2; /* now contains voltage adjusted by final gain */ + i_total *= r_filt_total * 32000/2; /* now contains voltage adjusted by final gain */ *buffer++ = (int)i_total; state->m_current_position += step; @@ -122,7 +122,7 @@ static DEVICE_START( polepos_sound ) filter_opamp_m_bandpass_setup(device, RES_K(150), RES_K(22), RES_K(330), CAP_U(.0047), CAP_U(.0047), &state->m_filter_engine[1]); /* Filter 3 is a little different. Because of the input capacitor, it is - * a high pass filter. */ + * a high pass filter. */ filter2_setup(device, FILTER_HIGHPASS, 950, Q_TO_DAMP(.707), 1, &state->m_filter_engine[2]); } @@ -170,32 +170,32 @@ WRITE8_DEVICE_HANDLER( polepos_engine_sound_msb_w ) *************************************/ /* nodes - sounds */ -#define POLEPOS_CHANL1_SND NODE_11 -#define POLEPOS_CHANL2_SND NODE_12 -#define POLEPOS_CHANL3_SND NODE_13 -#define POLEPOS_CHANL4_SND NODE_14 +#define POLEPOS_CHANL1_SND NODE_11 +#define POLEPOS_CHANL2_SND NODE_12 +#define POLEPOS_CHANL3_SND NODE_13 +#define POLEPOS_CHANL4_SND NODE_14 #define POLEPOS_54XX_DAC_R (1.0 / (1.0 / RES_K(47) + 1.0 / RES_K(22) + 1.0 / RES_K(10) + 1.0 / RES_K(4.7))) static const discrete_dac_r1_ladder polepos_54xx_dac = { - 4, /* number of DAC bits */ + 4, /* number of DAC bits */ /* 54XX_0 54XX_1 54XX_2 */ - { RES_K(47), /* R124, R136, R152 */ - RES_K(22), /* R120, R132, R142 */ - RES_K(10), /* R119, R131, R138 */ - RES_K(4.7)}, /* R118, R126, R103 */ - 0, 0, 0, 0 /* nothing extra */ + { RES_K(47), /* R124, R136, R152 */ + RES_K(22), /* R120, R132, R142 */ + RES_K(10), /* R119, R131, R138 */ + RES_K(4.7)}, /* R118, R126, R103 */ + 0, 0, 0, 0 /* nothing extra */ }; #define POLEPOS_52XX_DAC_R (1.0 / (1.0 / RES_K(100) + 1.0 / RES_K(47) + 1.0 / RES_K(22) + 1.0 / RES_K(10))) static const discrete_dac_r1_ladder polepos_52xx_dac = { - 4, /* number of DAC bits */ - { RES_K(100), /* R160 */ - RES_K(47), /* R159 */ - RES_K(22), /* R155 */ - RES_K(10)}, /* R154 */ - 0, 0, 0, 0 /* nothing extra */ + 4, /* number of DAC bits */ + { RES_K(100), /* R160 */ + RES_K(47), /* R159 */ + RES_K(22), /* R155 */ + RES_K(10)}, /* R154 */ + 0, 0, 0, 0 /* nothing extra */ }; /* R117 R116 R117 */ @@ -203,146 +203,146 @@ static const discrete_dac_r1_ladder polepos_52xx_dac = static const discrete_op_amp_filt_info polepos_chanl1_filt = { - POLEPOS_54XX_DAC_R + RES_K(22), /* R121 */ - 0, /* no second input */ - RES_K(12), /* R125 */ - 0, /* not used */ - RES_K(120), /* R122 */ - CAP_U(0.0022), /* C27 */ - CAP_U(0.0022), /* C28 */ - 0, /* not used */ - POLEPOS_VREF, /* vRef */ - 5, /* vP */ - 0 /* vN */ + POLEPOS_54XX_DAC_R + RES_K(22), /* R121 */ + 0, /* no second input */ + RES_K(12), /* R125 */ + 0, /* not used */ + RES_K(120), /* R122 */ + CAP_U(0.0022), /* C27 */ + CAP_U(0.0022), /* C28 */ + 0, /* not used */ + POLEPOS_VREF, /* vRef */ + 5, /* vP */ + 0 /* vN */ }; static const discrete_op_amp_filt_info polepos_chanl2_filt = { - POLEPOS_54XX_DAC_R + RES_K(15), /* R133 */ - 0, /* no second input */ - RES_K(15), /* R137 */ - 0, /* not used */ - RES_K(120), /* R134 */ - CAP_U(0.022), /* C29 */ - CAP_U(0.022), /* C30 */ - 0, /* not used */ - POLEPOS_VREF, /* vRef */ - 5, /* vP */ - 0 /* vN */ + POLEPOS_54XX_DAC_R + RES_K(15), /* R133 */ + 0, /* no second input */ + RES_K(15), /* R137 */ + 0, /* not used */ + RES_K(120), /* R134 */ + CAP_U(0.022), /* C29 */ + CAP_U(0.022), /* C30 */ + 0, /* not used */ + POLEPOS_VREF, /* vRef */ + 5, /* vP */ + 0 /* vN */ }; static const discrete_op_amp_filt_info polepos_chanl3_filt = { - POLEPOS_54XX_DAC_R + RES_K(22), /* R139 */ - 0, /* no second input */ - RES_K(22), /* R143 */ - 0, /* not used */ - RES_K(180), /* R140 */ - CAP_U(0.047), /* C33 */ - CAP_U(0.047), /* C34 */ - 0, /* not used */ - POLEPOS_VREF, /* vRef */ - 5, /* vP */ - 0 /* vN */ + POLEPOS_54XX_DAC_R + RES_K(22), /* R139 */ + 0, /* no second input */ + RES_K(22), /* R143 */ + 0, /* not used */ + RES_K(180), /* R140 */ + CAP_U(0.047), /* C33 */ + CAP_U(0.047), /* C34 */ + 0, /* not used */ + POLEPOS_VREF, /* vRef */ + 5, /* vP */ + 0 /* vN */ }; DISCRETE_SOUND_START(polepos) /************************************************ - * Input register mapping - ************************************************/ + * Input register mapping + ************************************************/ DISCRETE_INPUT_DATA(NAMCO_54XX_0_DATA(NODE_01)) DISCRETE_INPUT_DATA(NAMCO_54XX_1_DATA(NODE_01)) DISCRETE_INPUT_DATA(NAMCO_54XX_2_DATA(NODE_01)) DISCRETE_INPUT_DATA(NAMCO_52XX_P_DATA(NODE_04)) /************************************************ - * CHANL1 sound - ************************************************/ + * CHANL1 sound + ************************************************/ DISCRETE_DAC_R1(NODE_20, NAMCO_54XX_2_DATA(NODE_01), - 4, /* 4V - unmeasured*/ + 4, /* 4V - unmeasured*/ &polepos_54xx_dac) DISCRETE_OP_AMP_FILTER(NODE_21, - 1, /* ENAB */ - NODE_20, /* INP0 */ - 0, /* INP1 - not used */ + 1, /* ENAB */ + NODE_20, /* INP0 */ + 0, /* INP1 - not used */ DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &polepos_chanl1_filt) /* fake it so 0 is now vRef */ DISCRETE_ADDER2(POLEPOS_CHANL1_SND, - 1, /* ENAB */ + 1, /* ENAB */ NODE_21, -POLEPOS_VREF) /************************************************ - * CHANL2 sound - ************************************************/ + * CHANL2 sound + ************************************************/ DISCRETE_DAC_R1(NODE_30, NAMCO_54XX_1_DATA(NODE_01), - 4, /* 4V - unmeasured*/ + 4, /* 4V - unmeasured*/ &polepos_54xx_dac) DISCRETE_OP_AMP_FILTER(NODE_31, - 1, /* ENAB */ - NODE_30, /* INP0 */ - 0, /* INP1 - not used */ + 1, /* ENAB */ + NODE_30, /* INP0 */ + 0, /* INP1 - not used */ DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &polepos_chanl2_filt) /* fake it so 0 is now vRef */ DISCRETE_ADDER2(POLEPOS_CHANL2_SND, - 1, /* ENAB */ + 1, /* ENAB */ NODE_31, -POLEPOS_VREF) /************************************************ - * CHANL3 sound - ************************************************/ + * CHANL3 sound + ************************************************/ DISCRETE_DAC_R1(NODE_40, NAMCO_54XX_0_DATA(NODE_01), - 4, /* 4V - unmeasured*/ + 4, /* 4V - unmeasured*/ &polepos_54xx_dac) DISCRETE_OP_AMP_FILTER(NODE_41, - 1, /* ENAB */ - NODE_40, /* INP0 */ - 0, /* INP1 - not used */ + 1, /* ENAB */ + NODE_40, /* INP0 */ + 0, /* INP1 - not used */ DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &polepos_chanl3_filt) /* fake it so 0 is now vRef */ DISCRETE_ADDER2(POLEPOS_CHANL3_SND, - 1, /* ENAB */ + 1, /* ENAB */ NODE_41, -POLEPOS_VREF) /************************************************ - * CHANL4 sound - ************************************************/ + * CHANL4 sound + ************************************************/ /* this circuit was simulated in SPICE and an equivalent filter circuit generated */ DISCRETE_DAC_R1(NODE_50, NAMCO_52XX_P_DATA(NODE_04), - 4, /* 4V - unmeasured*/ + 4, /* 4V - unmeasured*/ &polepos_52xx_dac) /* fake it so 0 is now vRef */ DISCRETE_ADDER2(NODE_51, - 1, /* ENAB */ + 1, /* ENAB */ NODE_50, -POLEPOS_VREF) DISCRETE_FILTER2(NODE_52, - 1, /* ENAB */ - NODE_51, /* INP0 */ - 100, /* FREQ */ - 1.0 / 0.3, /* DAMP */ + 1, /* ENAB */ + NODE_51, /* INP0 */ + 100, /* FREQ */ + 1.0 / 0.3, /* DAMP */ DISC_FILTER_HIGHPASS) DISCRETE_FILTER2(NODE_53, - 1, /* ENAB */ - NODE_52, /* INP0 */ - 1200, /* FREQ */ - 1.0 / 0.8, /* DAMP */ + 1, /* ENAB */ + NODE_52, /* INP0 */ + 1200, /* FREQ */ + 1.0 / 0.8, /* DAMP */ DISC_FILTER_LOWPASS) DISCRETE_GAIN(NODE_54, - NODE_53, /* IN0 */ - 0.5 /* overall filter GAIN */) + NODE_53, /* IN0 */ + 0.5 /* overall filter GAIN */) /* clamp to the maximum of the op-amp shifted by vRef */ DISCRETE_CLAMP(POLEPOS_CHANL4_SND, - NODE_54, /* IN0 */ - 0, /* MIN */ - 5.0 - OP_AMP_VP_RAIL_OFFSET - POLEPOS_VREF) /* MAX */ + NODE_54, /* IN0 */ + 0, /* MIN */ + 5.0 - OP_AMP_VP_RAIL_OFFSET - POLEPOS_VREF) /* MAX */ /************************************************ - * Output - ************************************************/ + * Output + ************************************************/ DISCRETE_OUTPUT(POLEPOS_CHANL1_SND, 32767/2) DISCRETE_OUTPUT(POLEPOS_CHANL2_SND, 32767/2) DISCRETE_OUTPUT(POLEPOS_CHANL3_SND, 32767/2) @@ -354,7 +354,7 @@ const device_type POLEPOS = &device_creator<polepos_sound_device>; polepos_sound_device::polepos_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, POLEPOS, "Pole Position Custom", tag, owner, clock), - device_sound_interface(mconfig, *this) + device_sound_interface(mconfig, *this) { m_token = global_alloc_clear(polepos_sound_state); } @@ -396,5 +396,3 @@ void polepos_sound_device::sound_stream_update(sound_stream &stream, stream_samp // should never get here fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); } - - |