/* sound hardware */ static DISCRETE_SOUND_START( hec2hrp ) DISCRETE_INPUT_LOGIC(NODE_01) DISCRETE_OUTPUT(NODE_01, 5000) DISCRETE_SOUND_END MACHINE_CONFIG_FRAGMENT( hector_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(0, "mono", 0.25) /* Sound level for cassette, as it is in mono => output channel=0*/ MCFG_SOUND_ADD("sn76477", SN76477, 0) MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) /* Son 1bit*/ MCFG_DISCRETE_INTF(hec2hrp) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END
0 }; const samples_interface fantasy_samples_interface = { 1, /* 1 channel */ fantasy_sample_names }; const sn76477_interface sasuke_sn76477_intf_1 = { RES_K(470), /* 4 noise_res */ RES_K(150), /* 5 filter_res */ CAP_P(4700), /* 6 filter_cap */ RES_K(22), /* 7 decay_res */ CAP_U(10), /* 8 attack_decay_cap */ RES_K(10), /* 10 attack_res */ RES_K(100), /* 11 amplitude_res */ RES_K(47), /* 12 feedback_res */ 0 /* NC */, /* 16 vco_voltage */ 0 /* NC */, /* 17 vco_cap */ 0 /* NC */, /* 18 vco_res */ 0 /* NC */, /* 19 pitch_voltage */ RES_K(10), /* 20 slf_res */ 0 /* NC */, /* 21 slf_cap */ CAP_U(2.2), /* 23 oneshot_cap */ RES_K(100), /* 24 oneshot_res */ 0, /* 22 vco */ 0, /* 26 mixer A */
RES(RWORKAROUND, RES_K(27)) NET_C(VWORKAROUND.Q, RWORKAROUND.1) NET_C(XU1.6, RWORKAROUND.2) CAP(C200, CAP_N(100)) CAP(C28, CAP_U(1)) CAP(C31, CAP_N(470)) CAP(C32, CAP_N(3.3)) CAP(C33, CAP_U(1)) CAP(C34, CAP_N(1)) CAP(C35, CAP_N(1)) CAP(C36, CAP_N(6.5)) CAP(C37, CAP_N(22)) CAP(C38, CAP_N(1)) CAP(C39, CAP_N(1)) CAP(C40, CAP_P(12)) CAP(C41, CAP_U(1)) CAP(C42, CAP_N(1.2)) CAP(C43, CAP_N(1.2)) CAP(C44, CAP_U(1)) CAP(C45, CAP_N(22)) CAP(C47, CAP_U(1)) CAP(C48, CAP_N(470)) CAP(C49, CAP_N(3.3)) CAP(C50, CAP_N(22)) CAP(C51, CAP_N(22)) CAP(C52, CAP_N(27)) CAP(C53, CAP_N(27)) CAP(C56, CAP_N(6.8)) CAP(C57, CAP_N(6.8)) CAP(C59, CAP_N(6.8))
static void gpss1_init(struct sndbrdData *brdData) { /* MIXER = 0 */ SN76477_mixer_w(0, 0); /* ENVELOPE is constant: pin1 = lo, pin 28 = hi */ SN76477_envelope_w(0, 2); } // SSU-2/3 static struct SN76477interface gpSS2_sn76477Int = { 3, { 50, 50, 50 }, /* mixing levels */ /* #0 #1 #2 pin description */ { RES_K(47), RES_K(100), 0 }, /* 4 noise_res */ { RES_K(330), RES_K(470), 0 }, /* 5 filter_res */ { CAP_P(680), CAP_P(680), 0 }, /* 6 filter_cap */ { RES_M(2.2), RES_M(2.2), 0 }, /* 7 decay_res */ { CAP_U(1), CAP_U(0.1), 0 }, /* 8 attack_decay_cap */ { RES_K(4.7), RES_K(4.7), 0 }, /* 10 attack_res */ { RES_K(68), RES_K(68), RES_K(68) }, /* 11 amplitude_res */ { RES_K(57.4),RES_K(57.4),RES_K(57.4) }, /* 12 feedback_res */ { 0, 1.5,/* ? */ 0.8 /* ? */ }, /* 16 vco_voltage */ { 0, CAP_U(0.1), CAP_U(0.1) }, /* 17 vco_cap */ { 0, RES_K(56), RES_K(100) }, /* 18 vco_res */ { 0, 5.0, 5.0 }, /* 19 pitch_voltage */ { 0, RES_M(2.2), 0 }, /* 20 slf_res */ { 0, CAP_U(1), 0 }, /* 21 slf_cap */ { CAP_U(10), CAP_U(1), 0 }, /* 23 oneshot_cap */ { RES_K(100), RES_K(330), 0 } /* 24 oneshot_res */ };
drawgfx_transpen(bitmap,cliprect,screen->machine().gfx[1], state->m_sprite_code, state->m_sprite_color, 0,0, state->m_sprite_x - 6,state->m_sprite_y,0); return 0; } /* Laser Battle sound **********************************/ static const sn76477_interface laserbat_sn76477_interface = { RES_K(47), /* 4 noise_res R21 47K */ 0, /* 5 filter_res (variable) */ CAP_P(1000), /* 6 filter_cap C21 1000 pF */ 0, /* 7 decay_res */ 0, /* 8 attack_decay_cap */ 0, /* 10 attack_res */ RES_K(47), /* 11 amplitude_res R26 47K */ 0, /* 12 feedback_res (variable) */ 5.0 * RES_K(2.2) / (RES_K(2.2) + RES_K(4.7)), /* 16 vco_voltage */ 0, /* 17 vco_cap */ 0, /* 18 vco_res (variable) */ 5.0, /* 19 pitch_voltage */ 0, /* 20 slf_res (variable) */ CAP_U(4.7), /* 21 slf_cap C24 4.7 uF */ 0, /* 23 oneshot_cap */ 0, /* 24 oneshot_res */ 0, /* 22 vco (variable) */ 0, /* 26 mixer A */
static const discrete_lfsr_desc polaris_lfsr= { DISC_CLK_IS_FREQ, 17, /* Bit Length */ 0, /* Reset Value */ 4, /* Use Bit 4 as XOR input 0 */ 16, /* Use Bit 16 as XOR input 1 */ DISC_LFSR_XOR, /* Feedback stage1 is XOR */ 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 */ 0, /* Output is not inverted */ 12 /* Output bit */ }; static const discrete_dac_r1_ladder polaris_music_dac = {2, {RES_K(47), RES_K(12), 0,0,0,0,0,0}, 0, 0, 0, CAP_P(180)}; static const discrete_op_amp_filt_info polaris_music_op_amp_filt_info = {RES_K(580), 0, 0, RES_M(2.2), RES_M(1), CAP_U(.01), 0, 0, 0, 12, 0}; static const discrete_op_amp_filt_info polaris_nol_op_amp_filt_info = {560, RES_K(6.8), RES_K(1002), RES_M(2.2), RES_M(1), CAP_U(.22), CAP_U(.22), CAP_U(1), 0, 12, 0}; static const discrete_op_amp_filt_info polaris_noh_op_amp_filt_info = {560, RES_K(6.8), RES_K(1002), RES_M(2.2), RES_M(1), CAP_U(.001), CAP_U(.001), CAP_U(.01), 0, 12, 0}; static const discrete_op_amp_osc_info polaris_sonar_vco_info = {DISC_OP_AMP_OSCILLATOR_VCO_1 | DISC_OP_AMP_IS_NORTON | DISC_OP_AMP_OSCILLATOR_OUT_CAP, RES_M(1), RES_K(680), RES_K(680), RES_M(1), RES_M(1), RES_K(120), RES_M(1), 0, CAP_P(180), 12}; static const discrete_op_amp_tvca_info polaris_sonar_tvca_info = { RES_M(2.7), RES_K(680), 0, RES_K(680), RES_K(1), RES_K(120), RES_K(560), 0, 0, 0, 0, CAP_U(1), 0, 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_TRG1, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0_INV, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
void sasuke_sound_device::device_add_mconfig(machine_config &config) { SPEAKER(config, "mono").front_center(); SNK6502_SOUND(config, m_custom, 0); m_custom->add_route(ALL_OUTPUTS, "mono", 0.50); samples_device &samples(SAMPLES(config, "samples")); samples.set_channels(4); samples.set_samples_names(sasuke_sample_names); samples.add_route(ALL_OUTPUTS, "mono", 0.12); sn76477_device &sn76477_1(SN76477(config, "sn76477.1")); // ic48 GND: 2,22,26,27,28 +5V: 1,15,25 sn76477_1.set_noise_params(RES_K(470), RES_K(150), CAP_P(4700)); sn76477_1.set_decay_res(RES_K(22)); sn76477_1.set_attack_params(CAP_U(10), RES_K(10)); sn76477_1.set_amp_res(RES_K(100)); sn76477_1.set_feedback_res(RES_K(47)); sn76477_1.set_vco_params(0, 0, 0); sn76477_1.set_pitch_voltage(0); sn76477_1.set_slf_params(0, RES_K(10)); sn76477_1.set_oneshot_params(CAP_U(2.2), RES_K(100)); sn76477_1.set_vco_mode(0); sn76477_1.set_mixer_params(0, 1, 0); sn76477_1.set_envelope_params(1, 0); sn76477_1.set_enable(1); sn76477_1.add_route(ALL_OUTPUTS, "mono", 0.50); sn76477_device &sn76477_2(SN76477(config, "sn76477.2")); // ic51 GND: 2,26,27 +5V: 1,15,22,25,28 sn76477_2.set_noise_params(RES_K(340), RES_K(47), CAP_P(100)); sn76477_2.set_decay_res(RES_K(470)); sn76477_2.set_attack_params(CAP_U(4.7), RES_K(10)); sn76477_2.set_amp_res(RES_K(100)); sn76477_2.set_feedback_res(RES_K(47)); sn76477_2.set_vco_params(0, CAP_P(220), RES_K(1000)); sn76477_2.set_pitch_voltage(0); sn76477_2.set_slf_params(0, RES_K(220)); sn76477_2.set_oneshot_params(CAP_U(22), RES_K(47)); sn76477_2.set_vco_mode(1); sn76477_2.set_mixer_params(0, 1, 0); sn76477_2.set_envelope_params(1, 1); sn76477_2.set_enable(1); sn76477_2.add_route(ALL_OUTPUTS, "mono", 0.50); sn76477_device &sn76477_3(SN76477(config, "sn76477.3")); // ic52 GND: 2,22,27,28 +5V: 1,15,25,26 sn76477_3.set_noise_params(RES_K(330), RES_K(47), CAP_P(100)); sn76477_3.set_decay_res(RES_K(1)); sn76477_3.set_attack_params(0, RES_K(1)); sn76477_3.set_amp_res(RES_K(100)); sn76477_3.set_feedback_res(RES_K(47)); sn76477_3.set_vco_params(0, CAP_P(1000), RES_K(1000)); sn76477_3.set_pitch_voltage(0); sn76477_3.set_slf_params(CAP_U(1), RES_K(10)); sn76477_3.set_oneshot_params(CAP_U(2.2), RES_K(150)); sn76477_3.set_vco_mode(0); sn76477_3.set_mixer_params(1, 1, 0); sn76477_3.set_envelope_params(1, 0); sn76477_3.set_enable(1); sn76477_3.add_route(ALL_OUTPUTS, "mono", 0.50); }
// Shared chips TTL_7474_DIP(U3A) // FIXME: need 74LS family model (higher input impedance, half the sink capability) CD4016_DIP(U5D) NET_C(VCC, /*U3A.14,*/ U5D.14) // 7474 model doesn't have Vcc pin NET_C(GND, /*U3A.7,*/ U5D.7) // 7474 model doesn't have GND pin NET_C(VCC, U3A.10, U3A.11, U3A.12, U3A.13) // only half of this chip is used in this audio section - tie up the other inputs // ANAL1/IOA3/IOA4 -> RULLANTE/CASSA CAP(C61, CAP_U(10)) CAP(C62, CAP_P(1000)) CAP(C63, CAP_U(0.01)) CAP(C68, CAP_U(0.1)) RES(R84, RES_K(1.5)) RES(R102, RES_K(10)) RES(R103, RES_K(10)) RES(R104, RES_K(120)) RES(R105, RES_K(56)) RES(R120, RES_K(47)) RES(R121, 680) // incorrectly labelled R128 on schematic RES(R122, RES_K(33)) RES(R123, RES_K(1)) RES(R124, RES_K(39)) RES(R125, RES_K(560)) RES(R126, RES_K(470)) RES(R127, RES_K(100))
CAP(C32, CAP_N(68)) CAP(C33, CAP_N(33)) CAP(C34, CAP_U(47)) CAP(C35, CAP_N(33)) CAP(C36, CAP_N(33)) CAP(C37, CAP_U(1)) CAP(C38, CAP_N(10)) CAP(C39, CAP_N(3.3)) CAP(C40, CAP_U(2.2)) CAP(C41, CAP_N(6.8)) CAP(C42, CAP_N(6.8)) CAP(C43, CAP_N(47)) CAP(C44, CAP_U(1)) CAP(C45, CAP_U(33)) CAP(C46, CAP_N(100)) CAP(C47, CAP_P(470)) CAP(C48, CAP_N(1.5)) CAP(C49, CAP_P(220)) CAP(C50, CAP_N(3.9)) CAP(C51, CAP_U(1)) CAP(C52, CAP_U(1)) CAP(C53, CAP_U(1)) CAP(C54, CAP_U(1)) CAP(C55, CAP_U(1)) CAP(C56, CAP_U(10)) CAP(C57, CAP_N(47)) CAP(C58, CAP_N(22)) CAP(C59, CAP_U(10)) CAP(C60, CAP_N(22)) CAP(C62, CAP_N(22)) CAP(C61, CAP_U(1))
#define FANTASY_NOISE_LOGIC NODE_03 static DISCRETE_SOUND_START( fantasy_discrete ) DISCRETE_INPUT_LOGIC (FANTASY_BOMB_EN) DISCRETE_INPUT_STREAM(FANTASY_NOISE_STREAM_IN, 0) /* This is not the perfect way to discharge, but it is good enough for now */ /* it does not take into acount that there is no discharge when noise is low */ DISCRETE_RCDISC2(NODE_10, FANTASY_BOMB_EN, 0, RES_K(10) + RES_K(33), DEFAULT_TTL_V_LOGIC_1 - 0.5, RES_K(1), CAP_U(1)) DISCRETE_CLAMP(FANTASY_NOISE_LOGIC, FANTASY_NOISE_STREAM_IN, 0, 1) DISCRETE_SWITCH(NODE_11, 1, FANTASY_NOISE_LOGIC, 0, NODE_10) DISCRETE_OP_AMP_FILTER(NODE_20, 1, NODE_11, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &fantasy_filter) DISCRETE_RCFILTER(NODE_21, NODE_20, RES_K(22), CAP_U(.01)) DISCRETE_RCFILTER(NODE_22, NODE_21, RES_K(22) + RES_K(22), CAP_P(2200)) DISCRETE_RCFILTER(NODE_23, NODE_22, RES_K(22) + RES_K(22) + RES_K(22), CAP_U(.001)) DISCRETE_OUTPUT(NODE_23, 32760.0/12) DISCRETE_SOUND_END DEFINE_DEVICE_TYPE(SNK6502_SOUND, snk6502_sound_device, "snk6502_sound", "SNK6502 Custom Sound") DEFINE_DEVICE_TYPE(VANGUARD_SOUND, vanguard_sound_device, "vanguard_sound", "SNK Vanguard Sound") DEFINE_DEVICE_TYPE(FANTASY_SOUND, fantasy_sound_device, "fantasy_sound", "SNK Fantasy Sound") DEFINE_DEVICE_TYPE(NIBBLER_SOUND, nibbler_sound_device, "nibbler_sound", "Rock-Ola Nibbler Sound") DEFINE_DEVICE_TYPE(PBALLOON_SOUND, pballoon_sound_device, "pballoon_sound", "SNK Pioneer Balloon Sound") DEFINE_DEVICE_TYPE(SASUKE_SOUND, sasuke_sound_device, "sasuke_sound", "SNK Sasuke Vs. Commander Sound") DEFINE_DEVICE_TYPE(SATANSAT_SOUND, satansat_sound_device, "satansat_sound", "SNK Satan of Saturn Sound")
LOGIC_INPUT(P10, 1, "OPENDRAIN") LOGIC_INPUT(P11, 1, "OPENDRAIN") LOGIC_INPUT(P12, 1, "OPENDRAIN") LOGIC_INPUT(P13, 1, "OPENDRAIN") LOGIC_INPUT(P14, 1, "OPENDRAIN") LOGIC_INPUT(P15, 1, "OPENDRAIN") RES(R1, RES_K(2.4)) RES(R2, RES_K(10)) RES(R3, RES_K(4.3)) RES(R4, RES_K(150)) RES(R5, RES_K(240)) RES(R6, RES_K(2.4)) RES(SPK1, 8) CAP(C1, CAP_P(50)) CAP(C2, CAP_U(0.001)) CAP(C3, CAP_U(0.002)) CAP(C4, CAP_U(0.005)) CAP(C5, CAP_U(0.010)) CAP(C6, CAP_P(50)) CAP(C7, CAP_U(0.01)) CAP(C8, CAP_U(470)) QBJT_EB(Q1, "9013") MC1455P_DIP(IC1) NET_C(P08.Q, R2.2, IC1.4) NET_C(P09.Q, C8.2)
//************************************************************************** // DEVICE DEFINITIONS //************************************************************************** DEFINE_DEVICE_TYPE(EINSTEIN_SPECULATOR, einstein_speculator_device, "einstein_speculator", "Einstein Speculator") //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- MACHINE_CONFIG_MEMBER( einstein_speculator_device::device_add_mconfig ) MCFG_DEVICE_ADD("ic5a", TTL74123, 0) MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) MCFG_TTL74123_RESISTOR_VALUE(RES_K(47)) MCFG_TTL74123_CAPACITOR_VALUE(CAP_P(560)) MCFG_TTL74123_A_PIN_VALUE(1) MCFG_TTL74123_B_PIN_VALUE(1) MCFG_TTL74123_CLEAR_PIN_VALUE(0) MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITELINE(einstein_speculator_device, ic5a_q_w)) MCFG_DEVICE_ADD("ic5b", TTL74123, 0) MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE) MCFG_TTL74123_RESISTOR_VALUE(RES_K(47)) MCFG_TTL74123_CAPACITOR_VALUE(CAP_P(560)) MCFG_TTL74123_A_PIN_VALUE(1) MCFG_TTL74123_B_PIN_VALUE(1) MCFG_TTL74123_CLEAR_PIN_VALUE(0) MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITELINE(einstein_speculator_device, ic5b_q_w)) MCFG_SPEAKER_STANDARD_MONO("mono")
NET_C(3M_1.VP, V5) NET_C(DAC.VOUT, R34.1) NET_C(3M_1.MINUS, R34.2, R35.2) NET_C(3M_1.OUT, R35.1) NET_C(3M_1.PLUS, R36.1) NET_C(R36.2, GND) RES(R21, RES_M(1.8)) RES(R23, RES_K(10)) RES(R25, RES_K(10)) RES(R37, RES_K(750)) RES(R38, RES_K(360)) RES(R39, RES_K(750)) CAP(C18, CAP_P(100)) CAP(C19, CAP_U(10)) CAP(C20, CAP_U(1)) CAP(C30, CAP_P(100)) LM3900(3M_2) NET_C(3M_2.VM, GND) NET_C(3M_2.VP, V5) NET_C(R35.1, C20.1) NET_C(C20.2, R37.1) NET_C(R37.2, R38.2, C18.1, R39.2) NET_C(C18.2, GND) NET_C(R38.1, C30.2, 3M_2.MINUS) NET_C(3M_2.OUT, R39.1, C30.1)
void timeplt_audio_device::filter_w( device_t *device, int data ) { int C = 0; if (data & 1) C += 220000; /* 220000pF = 0.220uF */ if (data & 2) C += 47000; /* 47000pF = 0.047uF */ dynamic_cast<filter_rc_device*>(device)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C)); }
m_timer = 0; } /************************************* * * Audio hardware * *************************************/ static const sn76477_interface sn76477_intf = { RES_K(47), /* 4 noise_res */ // RES_K(120), /* 5 filter_res */ RES_M(1.2), /* 5 filter_res */ CAP_P(470), /* 6 filter_cap */ RES_K(680), /* 7 decay_res */ CAP_U(0.2), /* 8 attack_decay_cap */ RES_K(3.3), /* 10 attack_res */ 0, /* 11 amplitude_res (variable) */ RES_K(50), /* 12 feedback_res */ 0, /* 16 vco_voltage (variable) */ CAP_U(0.1), /* 17 vco_cap */ RES_K(51), /* 18 vco_res */ 5.0, /* 19 pitch_voltage (N/C) */ RES_K(470), /* 20 slf_res */ CAP_U(0.1), /* 21 slf_cap */ CAP_U(0.1), /* 23 oneshot_cap */ RES_M(1), /* 24 oneshot_res */ 0, /* 22 vco (variable) */ 0, /* 26 mixer A (variable) */
TTL_7402_NOR(K6_2, CYCLE_RESET, SPEED_KILL_Q) ALIAS(RETURN_THROTTLE, K6_2.Q) TTL_7408_AND(N8_1, CYCLE_WINDOW, RAMPS) ALIAS(RAMPS_AND_CYCLE_WINDOW, N8_1.Q) TTL_7400_NAND(M7_1, OBJECT_ZONE, CYCLE) ALIAS(OBJECT_HIT_Q, M7_1.Q) TTL_7400_NAND(N9_2, FIXED_RAMP_ZONE, RAMPS_AND_CYCLE_WINDOW) TTL_7408_AND(N8_4, OBJECT_HIT_Q, N9_2.Q) ALIAS(LOAD_Q, N8_4.Q) RES(R106, 330) CAP(C57, CAP_P(220)) NET_C(R106.1, LOAD_Q) NET_C(R106.2, C57.1) NET_C(C57.2, GND) TTL_7400_NAND(N9_4, R106.2, N9_1.Q) TTL_7400_NAND(N9_1, MS_3, N9_4.Q) ALIAS(JUMP, N9_4.Q) ALIAS(JUMP_Q, N9_1.Q) TTL_7400_NAND(N9_3, JUMP, BAD_JUMP_Q) TTL_7400_NAND(L9_1, R39_2, BAD_JUMP_Q) TTL_7400_NAND(L9_2, BAD_JUMP, 64V) TTL_7420_NAND(M9_1, R38_2, GRAVITY, BAD_JUMP_Q, SPEED_KILL_Q) TTL_7420_NAND(M9_2, L9_2.Q, SPEED_KILL_Q, L9_1.Q, GRAVITY)
static WRITE8_HANDLER( tp84_filter_w ) { int C; /* 76489 #0 */ C = 0; if (offset & 0x008) C += 47000; /* 47000pF = 0.047uF */ if (offset & 0x010) C += 470000; /* 470000pF = 0.47uF */ filter_rc_set_RC(devtag_get_device(space->machine, "filter1"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); /* 76489 #1 (optional) */ C = 0; if (offset & 0x020) C += 47000; /* 47000pF = 0.047uF */ if (offset & 0x040) C += 470000; /* 470000pF = 0.47uF */ // filter_rc_set_RC(devtag_get_device(space->machine, "filter2"),1000,2200,1000,C); /* 76489 #2 */ C = 0; if (offset & 0x080) C += 470000; /* 470000pF = 0.47uF */ filter_rc_set_RC(devtag_get_device(space->machine, "filter2"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); /* 76489 #3 */ C = 0; if (offset & 0x100) C += 470000; /* 470000pF = 0.47uF */ filter_rc_set_RC(devtag_get_device(space->machine, "filter3"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C)); }
static WRITE8_DEVICE_HANDLER( megazone_portB_w ) { static const char *const fltname[] = { "filter.0.0", "filter.0.1", "filter.0.2" }; int i; for (i = 0;i < 3;i++) { int C; C = 0; if (data & 1) C += 10000; /* 10000pF = 0.01uF */ if (data & 2) C += 220000; /* 220000pF = 0.22uF */ data >>= 2; filter_rc_set_RC(devtag_get_device(device->machine, fltname[i]),FLT_RC_LOWPASS,1000,2200,200,CAP_P(C)); } }
/* following the resistor DAC are two opamps. The first is a 1:1 amplifier, the second * is a filter circuit. Simulation in LTSPICE shows, that the following is equivalent: */ DISCRETE_TASK_START(1) DISCRETE_INPUT_BUFFER(DS_DAC, 0) DISCRETE_MULTIPLY(NODE_170, DS_DAC, TTL_HIGH / 256.0) /* MXR1 */ /* this stage reduces the gain of the DAC by 50%, so yes the volume is much lower then the walk sound */ DISCRETE_OP_AMP(NODE_171, /* IC 3M, pin 5 */ 1, /* ENAB */ NODE_170, 5, /* IN0 - IC 3M, pin 6; IN1 - IC 3M, pin 1 */ &mario_dac_amp) /* This provides a close simulation of the IC 3M, pin 10 filter circuit */ /* The Measured and SPICEd low freq gain is 1, it then has a high frequency * drop close to the following RC filter. */ DISCRETE_RCFILTER_VREF(DS_OUT_DAC, NODE_171, RES_K(750), CAP_P(180), 2.5) DISCRETE_TASK_END() /************************************************ * MIXER ************************************************/ DISCRETE_TASK_START(2) DISCRETE_MIXER4(NODE_297, 1, /* ENAB */ DS_OUT_SOUND0, DS_OUT_SOUND1, DS_OUT_SOUND7, DS_OUT_DAC, &mario_mixer) /* approx -0.625V to 0.980V when playing, but turn on sound peaks at 2.38V */ /* we will set the full wav range to 1.19V which will cause clipping on the turn on * sound. The real game would do this when the volume is turned up too.
//------------------------------------------------- static ADDRESS_MAP_START( ibm_pc_83_keyboard_io, AS_IO, 8, ibm_pc_83_keyboard_device ) AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t1_r) ADDRESS_MAP_END //------------------------------------------------- // MACHINE_DRIVER( ibm_pc_83_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( ibm_pc_83_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20))) MCFG_CPU_IO_MAP(ibm_pc_83_keyboard_io) MACHINE_CONFIG_END //------------------------------------------------- // machine_config_additions - device-specific // machine configurations //------------------------------------------------- machine_config_constructor ibm_pc_83_keyboard_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( ibm_pc_83_keyboard ); }
MCFG_GFXDECODE_ADD("gfxdecode", "palette", laserbat) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED_CLASS( laserbat, laserbat_base, laserbat_state ) // video hardware MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_INIT_OWNER(laserbat_state, laserbat) // sound board devices MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("csg", SN76477, 0) // audio output not used MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(270), CAP_P(1000)) // R21, switchable R30/R23/R24/R25/R29/R28/R27/R26, C21 MCFG_SN76477_DECAY_RES(RES_INF) // NC MCFG_SN76477_ATTACK_PARAMS(0, RES_INF) // NC, NC MCFG_SN76477_AMP_RES(RES_K(47)) // R26 47k MCFG_SN76477_FEEDBACK_RES(RES_INF) // NC MCFG_SN76477_VCO_PARAMS(5.0 * RES_VOLTAGE_DIVIDER(RES_K(4.7), RES_K(2.2)), 0, RES_K(47)) // R22/R19, NC, switchable R47/R40/R41/R42/R46/R45/R44/R43 MCFG_SN76477_PITCH_VOLTAGE(5.0) // tied to Vreg MCFG_SN76477_SLF_PARAMS(CAP_U(4.7), RES_INF) // C24, switchable NC/R54/R53/R52/R51 MCFG_SN76477_ONESHOT_PARAMS(0, RES_INF) // NC, NC MCFG_SN76477_VCO_MODE(1) // BIT15 MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // GND, VCO/NOISE, GND MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // GND, Vreg MCFG_SN76477_ENABLE(0) // AB SOUND MCFG_TMS3615_ADD("synth_low", XTAL_4MHz/16/2) // from the other one's /2 clock output MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0)
}; static const gfx_decode gfxdecodeinfo[] = { { REGION_GFX1, 0, &charlayout, 0, 16 }, { REGION_GFX2, 0, &spritelayout, 0, 16 }, { -1 } /* end of array */ }; static struct SN76477interface sn76477_interface = { RES_K( 47) , /* 4 noise_res */ RES_K(330) , /* 5 filter_res */ CAP_P(470) , /* 6 filter_cap */ RES_K(220) , /* 7 decay_res */ CAP_U(1.0) , /* 8 attack_decay_cap */ RES_K(4.7) , /* 10 attack_res */ RES_M( 1) , /* 11 amplitude_res */ RES_K(200) , /* 12 feedback_res */ 5.0 , /* 16 vco_voltage */ CAP_P(470) , /* 17 vco_cap */ RES_K(330) , /* 18 vco_res */ 5.0 , /* 19 pitch_voltage */ RES_K( 20) , /* 20 slf_res */ CAP_P(420) , /* 21 slf_cap */ CAP_U(1.0) , /* 23 oneshot_cap */ RES_K( 47) /* 24 oneshot_res */ };
//------------------------------------------------- // DISCRETE_SOUND( vip ) //------------------------------------------------- static const discrete_555_desc vip_ca555_a = { DISC_555_OUT_SQW | DISC_555_OUT_DC, 5, // B+ voltage of 555 DEFAULT_555_VALUES }; static DISCRETE_SOUND_START( vip ) DISCRETE_INPUT_LOGIC(NODE_01) DISCRETE_555_ASTABLE_CV(NODE_02, NODE_01, 470, (int) RES_M(1), (int) CAP_P(470), NODE_01, &vip_ca555_a) DISCRETE_OUTPUT(NODE_02, 5000) DISCRETE_SOUND_END //------------------------------------------------- // VIP_BYTEIO_PORT_INTERFACE( byteio_intf ) //------------------------------------------------- WRITE_LINE_MEMBER( vip_state::byteio_inst_w ) { if (!state) { m_byteio_data = m_byteio->in_r(); } }
* Final mix and output. ************************************************/ DISCRETE_ADDER2(NODE_90, 1, CRBALOON_LAUGH_SND, CRBALOON_MUSIC_SND) DISCRETE_CRFILTER(NODE_91, NODE_90, RES_K(100), CAP_U(1)) DISCRETE_OUTPUT(NODE_91, 65000.0/12) DISCRETE_SOUND_END MACHINE_CONFIG_START(crbaloon_state::crbaloon_audio) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(470)) // noise + filter MCFG_SN76477_DECAY_RES(RES_K(220)) // decay_res MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(4.7)) // attack_decay_cap + attack_res MCFG_SN76477_AMP_RES(RES_M(1)) // amplitude_res MCFG_SN76477_FEEDBACK_RES(RES_K(200)) // feedback_res MCFG_SN76477_VCO_PARAMS(5.0, CAP_P(470), RES_K(330)) // VCO volt + cap + res MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage MCFG_SN76477_SLF_PARAMS(CAP_P(420), RES_K(20)) // slf caps + res MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.0), RES_K(47)) // oneshot caps + res MCFG_SN76477_VCO_MODE(0) // VCO mode MCFG_SN76477_MIXER_PARAMS(0, 0, 1) // mixer A, B, C MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 MCFG_SN76477_ENABLE(0) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) MCFG_SOUND_ADD("discrete", DISCRETE, 0)