Exemple #1
0
attotime ttl74123_device::compute_duration()
{
	double duration;

	switch (m_config.m_connection_type)
	{
	case TTL74123_NOT_GROUNDED_NO_DIODE:
		duration = 0.28 * m_config.m_res * m_config.m_cap * (1.0 + (700.0 / m_config.m_res));
		break;

	case TTL74123_NOT_GROUNDED_DIODE:
		duration = 0.25 * m_config.m_res * m_config.m_cap * (1.0 + (700.0 / m_config.m_res));
		break;

	case TTL74123_GROUNDED:
	default:
		if (m_config.m_cap < CAP_U(0.1))
		{
			/* this is really a curve - a very flat one in the 0.1uF-.01uF range */
			duration = 0.32 * m_config.m_res * m_config.m_cap;
		}
		else
		{
			duration = 0.33 * m_config.m_res * m_config.m_cap;
		}
		break;
	}

	return double_to_attotime(duration);
}
Exemple #2
0
void snk6502_sound_device::device_start()
{
	// adjusted
	set_music_freq(43000);

	// 38.99 Hz update (according to schematic)
	set_music_clock(M_LN2 * (RES_K(18) * 2 + RES_K(1)) * CAP_U(1));

	m_tone_stream = machine().sound().stream_alloc(*this, 0, 1, SAMPLE_RATE);

	for (int i = 0; i < NUM_CHANNELS; i++)
	{
		save_item(NAME(m_tone_channels[i].mute), i);
		save_item(NAME(m_tone_channels[i].offset), i);
		save_item(NAME(m_tone_channels[i].base), i);
		save_item(NAME(m_tone_channels[i].mask), i);
		save_item(NAME(m_tone_channels[i].sample_step), i);
		save_item(NAME(m_tone_channels[i].sample_cur), i);
		save_item(NAME(m_tone_channels[i].form), i);
	}

	save_item(NAME(m_tone_clock));
	save_item(NAME(m_sound0_stop_on_rollover));
	save_item(NAME(m_hd38880_cmd));
	save_item(NAME(m_hd38880_addr));
	save_item(NAME(m_hd38880_data_bytes));
	save_item(NAME(m_hd38880_speed));
}
Exemple #3
0
void sasuke_sound_device::device_reset()
{
	m_custom->set_music_clock(M_LN2 * (RES_K(18) + RES_K(1)) * CAP_U(1));

	// adjusted (measured through audio recording of pcb)
	m_custom->set_music_freq(35300);
}
Exemple #4
0
void TTL74123_config(int which, const TTL74123_interface *intf)
{
	TTL74123_state *chip;

	assert_always(which < MAX_TTL74123, "Exceeded maximum number of 74123 chips");
	assert_always(intf, "No interface specified");
	assert_always((intf->connection_type == TTL74123_GROUNDED) && (intf->cap >= CAP_U(0.01)), "Only capacitors >= 0.01uF supported for GROUNDED type");
	assert_always(intf->cap >= CAP_P(1000), "Only capacitors >= 1000pF supported ");

	chip = &chips[which];

	chip->intf = intf;
	chip->which = which;
	chip->timer = timer_alloc(clear_callback, chip);

	/* start with the defaults */
	chip->A = intf->A;
    chip->B = intf->B;
	chip->clear = intf->clear;

	/* register for state saving */
	state_save_register_item("TTL74123", which, chip->A);
	state_save_register_item("TTL74123", which, chip->B);
	state_save_register_item("TTL74123", which, chip->clear);
}
Exemple #5
0
static attotime compute_duration(ttl74123_t *chip)
{
	double duration;

	switch (chip->intf->connection_type)
	{
	case TTL74123_NOT_GROUNDED_NO_DIODE:
		duration = 0.28 * chip->intf->res * chip->intf->cap * (1.0 + (700.0 / chip->intf->res));
		break;

	case TTL74123_NOT_GROUNDED_DIODE:
		duration = 0.25 * chip->intf->res * chip->intf->cap * (1.0 + (700.0 / chip->intf->res));
		break;

	case TTL74123_GROUNDED:
	default:
		if (chip->intf->cap < CAP_U(0.1))
			/* this is really a curve - a very flat one in the 0.1uF-.01uF range */
			duration = 0.32 * chip->intf->res * chip->intf->cap;
		else
			duration = 0.33 * chip->intf->res * chip->intf->cap;
		break;
	}

	return double_to_attotime(duration);
}
Exemple #6
0
INPUT_PORTS_END



//**************************************************************************
//  MACHINE INITIALIZATION
//**************************************************************************

int newbrain_state::get_reset_t()
{
	return RES_K(220) * CAP_U(10) * 1000; // t = R128 * C125 = 2.2s
}
Exemple #7
0
void snk6502_sound_device::device_start()
{
	m_ROM = machine().root_device().memregion("snk6502")->base();

	// adjusted
	set_music_freq(43000);

	// 38.99 Hz update (according to schematic)
	set_music_clock(M_LN2 * (RES_K(18) * 2 + RES_K(1)) * CAP_U(1));

	m_tone_stream = machine().sound().stream_alloc(*this, 0, 1, SAMPLE_RATE);
}
Exemple #8
0
void comx35_state::machine_reset()
{
	int t = RES_K(27) * CAP_U(1) * 1000; // t = R1 * C1

	m_clear = 0;
	m_iden = 1;
	m_cr1 = 1;
	m_ef4 = CLEAR_LINE;
	m_int = CLEAR_LINE;
	m_prd = CLEAR_LINE;

	timer_set(attotime::from_msec(t), TIMER_ID_RESET);
}
Exemple #9
0
void comx35_state::machine_reset()
{
	int t = RES_K(27) * CAP_U(1) * 1000; // t = R1 * C1

	m_clear = 0;
	m_iden = 1;
	m_cr1 = 1;
	m_ef4 = CLEAR_LINE;
	m_int = CLEAR_LINE;
	m_prd = CLEAR_LINE;

	m_reset_timer->adjust(attotime::from_msec(t));
}
Exemple #10
0
void n8080_state::spacefev_sound(machine_config &config)
{
	MCFG_SOUND_START_OVERRIDE(n8080_state,spacefev)
	MCFG_SOUND_RESET_OVERRIDE(n8080_state,spacefev)

	/* basic machine hardware */
	I8035(config, m_audiocpu, 6000000);
	m_audiocpu->set_addrmap(AS_PROGRAM, &n8080_state::n8080_sound_cpu_map);
	m_audiocpu->t0_in_cb().set(FUNC(n8080_state::n8080_8035_t0_r));
	m_audiocpu->t1_in_cb().set(FUNC(n8080_state::n8080_8035_t1_r));
	m_audiocpu->p1_in_cb().set(FUNC(n8080_state::n8080_8035_p1_r));
	m_audiocpu->p2_out_cb().set(FUNC(n8080_state::n8080_dac_w));

	TIMER(config, "vco_timer").configure_periodic(FUNC(n8080_state::spacefev_vco_voltage_timer), attotime::from_hz(1000));

	/* sound hardware */
	SPEAKER(config, "speaker").front_center();

	DAC_1BIT(config, m_n8080_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15);
	voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
	vref.add_route(0, "n8080_dac", 1.0, DAC_VREF_POS_INPUT);

	SN76477(config, m_sn);
	m_sn->set_noise_params(RES_K(36), RES_K(150), CAP_N(1));
	m_sn->set_decay_res(RES_M(1));
	m_sn->set_attack_params(CAP_U(1.0), RES_K(20));
	m_sn->set_amp_res(RES_K(150));
	m_sn->set_feedback_res(RES_K(47));
	m_sn->set_vco_params(0, CAP_N(1), RES_M(1.5));
	m_sn->set_pitch_voltage(0);
	m_sn->set_slf_params(CAP_N(47), RES_M(1));
	m_sn->set_oneshot_params(CAP_N(47), RES_K(820));
	m_sn->set_vco_mode(0);
	m_sn->set_mixer_params(0, 0, 0);
	m_sn->set_envelope_params(1, 0);
	m_sn->set_enable(1);
	m_sn->add_route(ALL_OUTPUTS, "speaker", 0.35);
}
Exemple #11
0
static TIMER_CALLBACK( schaser_effect_555_cb )
{
	_8080bw_state *state = machine.driver_data<_8080bw_state>();
	int effect = param;
	attotime new_time;
	/* Toggle 555 output */
	state->m_schaser_effect_555_is_low = !state->m_schaser_effect_555_is_low;
	state->m_schaser_effect_555_time_remain = attotime::zero;
	state->m_schaser_effect_555_time_remain_savable = state->m_schaser_effect_555_time_remain.as_double();

	if (state->m_schaser_effect_555_is_low)
		new_time = PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)) / 2;
	else
	{
		if (effect)
			new_time = attotime(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
		else
			new_time = attotime::never;
	}
	state->m_schaser_effect_555_timer->adjust(new_time, effect);
	sn76477_enable_w(state->m_sn, !(state->m_schaser_effect_555_is_low || state->m_schaser_explosion));
	sn76477_one_shot_cap_voltage_w(state->m_sn, !(state->m_schaser_effect_555_is_low || state->m_schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
}
Exemple #12
0
static TIMER_CALLBACK( schaser_effect_555_cb )
{
    mw8080bw_state *state = machine->driver_data<mw8080bw_state>();
    int effect = param;
    attotime new_time;
    /* Toggle 555 output */
    state->schaser_effect_555_is_low = !state->schaser_effect_555_is_low;
    state->schaser_effect_555_time_remain = attotime_zero;
    state->schaser_effect_555_time_remain_savable = attotime_to_double(state->schaser_effect_555_time_remain);

    if (state->schaser_effect_555_is_low)
        new_time = attotime_div(PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)), 2);
    else
    {
        if (effect)
            new_time = attotime_make(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
        else
            new_time = attotime_never;
    }
    timer_adjust_oneshot(state->schaser_effect_555_timer, new_time, effect);
    sn76477_enable_w(state->sn, !(state->schaser_effect_555_is_low || state->schaser_explosion));
    sn76477_one_shot_cap_voltage_w(state->sn, !(state->schaser_effect_555_is_low || state->schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
}
Exemple #13
0
static const discrete_mixer_desc ironhors_mixer_desc =
	{DISC_MIXER_IS_RESISTOR,
		{RES_K(2.2), RES_K(2.2), RES_K(2.2)},
		{0,0,0,0,0,0},  /* no variable resistors   */
		{0,0,0,0,0,0},  /* no node capacitors      */
		0, RES_K(1),   /* RF */
		0,
		0,
		0, 1};

static const discrete_mixer_desc ironhors_mixer_desc_final =
	{DISC_MIXER_IS_RESISTOR,
		{RES_K(0.5), RES_K(1)},
		{0,0,0,0,0,0},  /* no variable resistors   */
		{CAP_U(4.7), CAP_U(4.7)},  /* node capacitors         */
		0, RES_K(1),   /* RF */
		0,
		0,
		0, 1};

static DISCRETE_SOUND_START( ironhors )

	DISCRETE_INPUTX_STREAM(NODE_01, 0, 5.0, 0)
	DISCRETE_INPUTX_STREAM(NODE_02, 1, 5.0, 0)
	DISCRETE_INPUTX_STREAM(NODE_03, 2, 5.0, 0)

	DISCRETE_INPUTX_STREAM(NODE_04, 3, 1.0, 0)

	DISCRETE_INPUT_DATA(NODE_11)
	DISCRETE_INPUT_DATA(NODE_12)
Exemple #14
0
	DISCRETE_TRANSFORM2(QIX_VOL_DATA_R, QIX_VOL_DATA, 0x0f, "01&")

	/* Work out the parallel resistance of the selected resistors. */
	DISCRETE_COMP_ADDER(NODE_10, QIX_VOL_DATA_L, &qix_attn_table)
	DISCRETE_COMP_ADDER(NODE_20, QIX_VOL_DATA_R, &qix_attn_table)

	/* Then use it for the resistor divider network. */
	DISCRETE_TRANSFORM3(NODE_11, NODE_10, RES_K(10), QIX_DAC_DATA, "001+/2*")
	DISCRETE_TRANSFORM3(NODE_21, NODE_20, RES_K(10), QIX_DAC_DATA, "001+/2*")

	/* If no resistors are selected (0), then the volume is full. */
	DISCRETE_SWITCH(NODE_12, 1, QIX_VOL_DATA_L, QIX_DAC_DATA, NODE_11)
	DISCRETE_SWITCH(NODE_22, 1, QIX_VOL_DATA_R, QIX_DAC_DATA, NODE_21)

	/* Filter the DC using the lowest case filter. */
	DISCRETE_CRFILTER(NODE_13, NODE_12, RES_K(1.5), CAP_U(1))
	DISCRETE_CRFILTER(NODE_23, NODE_22, RES_K(1.5), CAP_U(1))

	DISCRETE_OUTPUT(NODE_13, 1)
	DISCRETE_OUTPUT(NODE_23, 1)
DISCRETE_SOUND_END



/*************************************
 *
 *  PIA handlers
 *
 *************************************/

static WRITE8_DEVICE_HANDLER( sndpia_2_warning_w )
Exemple #15
0
	PORT_START("TRACKY")
	PORT_BIT( 0x0f, 0, IPT_TRACKBALL_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(10)
INPUT_PORTS_END


/*************************************
 *
 *  Discrete Sound Blocks
 *
 *************************************/

static discrete_op_amp_filt_info pokey1_info = {
		RES_K(220), 0, 0, 0, /* r1 .. r4 */
		RES_K(220),          /* rF */
		CAP_U(0.022),        /* C1 */
		CAP_U(0.1),          /* C2 */
		0,                   /* C3 */
		0.0,                 /* vRef */
		15.0,                /* vP */
		-15.0,               /* vN */
};

static discrete_mixer_desc quantum_mixer = {
		DISC_MIXER_IS_OP_AMP, /* type */
		{ RES_K(220), RES_K(220) }, /* r{} */
		{},                         /* r_node */
		{ CAP_U(0.1), CAP_U(0.1) }, /* c{} */
		0,                          /* rI  */
		RES_K(220),                 /* rF  */
		0,                          /* cF  */
Exemple #16
0
static WRITE8_DEVICE_HANDLER( ic8j2_output_changed )
{
    m10_state *state = device->machine().driver_data<m10_state>();

    /* written from /Q to A with slight delight */
    LOG(("ic8j2: %d\n", data));
    ttl74123_a_w(device, 0, data);
    ttl74123_a_w(state->m_ic8j1, 0, data);
}

static const ttl74123_interface ic8j1_intf =
{
    /* completely illegible */
    TTL74123_NOT_GROUNDED_DIODE,	/* the hook up type */
    RES_K(1),				/* resistor connected to RCext */
    CAP_U(1),				/* capacitor connected to Cext and RCext */
    1,					/* A pin - driven by the CRTC */
    1,					/* B pin - pulled high */
    1,					/* Clear pin - pulled high */
    ic8j1_output_changed
};

static const ttl74123_interface ic8j2_intf =
{
    TTL74123_NOT_GROUNDED_DIODE,	/* the hook up type */
    /* 10k + 20k variable resistor */
    RES_K(22),				/* resistor connected to RCext */
    CAP_U(2.2),				/* capacitor connected to Cext and RCext */
    1,					/* A pin - driven by the CRTC */
    1,					/* B pin - pulled high */
    1,					/* Clear pin - pulled high */
Exemple #17
0
void prof80_state::ls259_w(int fa, int sa, int fb, int sb)
{
	switch (sa)
	{
	case 0: // C0/TDI
		m_rtc->data_in_w(fa);
		m_rtc->c0_w(fa);
		m_c0 = fa;
		break;

	case 1: // C1
		m_rtc->c1_w(fa);
		m_c1 = fa;
		break;

	case 2: // C2
		m_rtc->c2_w(fa);
		m_c2 = fa;
		break;

	case 3: // READY
		m_fdc->ready_w(fa);
		break;

	case 4: // TCK
		m_rtc->clk_w(fa);
		break;

	case 5: // IN USE
		output_set_led_value(0, fa);
		break;

	case 6: // _MOTOR
		if (fa)
		{
			// trigger floppy motor off NE555 timer
			int t = 110 * RES_M(10) * CAP_U(6.8); // t = 1.1 * R8 * C6

			timer_set(attotime::from_msec(t), TIMER_ID_MOTOR);
		}
		else
		{
			// turn on floppy motor
			if(m_floppy0)
				m_floppy0->mon_w(false);
			if(m_floppy1)
				m_floppy1->mon_w(false);

			m_motor = 1;

			// reset floppy motor off NE555 timer
			timer_set(attotime::never, TIMER_ID_MOTOR);
		}
		break;

	case 7: // SELECT
		break;
	}

	switch (sb)
	{
	case 0: // RESF
		if (fb) m_fdc->reset();
		break;

	case 1: // MINI
		break;

	case 2: // _RTS
		break;

	case 3: // TX
		break;

	case 4: // _MSTOP
		if (!fb)
		{
			// immediately turn off floppy motor
			synchronize(TIMER_ID_MOTOR);
		}
		break;

	case 5: // TXP
		break;

	case 6: // TSTB
		m_rtc->stb_w(fb);
		break;

	case 7: // MME
		//logerror("INIT %u\n", fb);
		m_init = fb;
		bankswitch();
		break;
	}
}
Exemple #18
0
static const discrete_555_cc_desc frogsZip555cc =
{
	DISC_555_OUT_CAP | DISC_555_OUT_DC,
	12,		// B+ voltage of 555
	DEFAULT_555_VALUES,
	12,		// B+ voltage of the Constant Current source
	0.6		// Q13 Vbe
};

static const discrete_mixer_desc frogsMixer =
{
	DISC_MIXER_IS_OP_AMP,
	{RES_K(1), RES_K(5)},
	{FROGS_R93, 0},
	{CAP_U(0.01), CAP_U(0.01)},
	0, RES_K(56), 0, CAP_U(0.1), 0, 10000
};

DISCRETE_SOUND_START(frogs_discrete_interface)
	/************************************************
     * Input register mapping for frogs
     *
     * All inputs are inverted by initial transistor.
     ************************************************/
	DISCRETE_INPUT_LOGIC(FROGS_FLY_EN)
	DISCRETE_INPUT_NOT(FROGS_JUMP_EN)
	DISCRETE_INPUT_NOT(FROGS_HOP_EN)
	DISCRETE_INPUT_NOT(FROGS_TONGUE_EN)
	DISCRETE_INPUT_NOT(FROGS_CAPTURE_EN)
	DISCRETE_INPUT_NOT(FROGS_SPLASH_EN)
Exemple #19
0
#define MADALIEN_8910_PORTA_8       NODE_09

#define MADALIEN_8910_PORTB_1       NODE_10
#define MADALIEN_8910_PORTB_23      NODE_11
#define MADALIEN_8910_PORTB_45      NODE_12
#define MADALIEN_8910_PORTB_6       NODE_13
#define MADALIEN_8910_PORTB_7       NODE_14

#define MADALIEN_8910_PSG_A         NODE_15
#define MADALIEN_8910_PSG_B         NODE_16
#define MADALIEN_8910_PSG_C         NODE_17


static const discrete_op_amp_filt_info madalien_psg_a_filter =
{
	RES_K(1)+ 270, 0, RES_K(10), 0, RES_K(100), CAP_U(.1), CAP_U(.1), 0, 0, 5, -5
};

static const discrete_op_amp_filt_info madalien_psg_c_filter =
{
	RES_K(1)+ 270, 0, RES_K(10), 0, RES_K(100), CAP_U(.068), CAP_U(.068), 0, 0, 5, -5
};

static const discrete_mixer_desc madalien_psg_mix =
{
	DISC_MIXER_IS_RESISTOR,
	{RES_K(10), RES_K(10), RES_K(10)},
	{0}, {0}, 0, 0, 0, 0, 0, 1
};

static const discrete_555_desc madalien_555_1f =
Exemple #20
0
static const discrete_dac_r1_ladder osi600_dac =
{
	4,          // size of ladder
	{ 180, 180, 180, 180, 0, 0, 0, 0 }, // R68, R69, R70, R71
	5,          // 5V
	RES_K(1),   // R67
	0,          // no rGnd
	0           // no cFilter
};

static DISCRETE_SOUND_START( osi600_discrete_interface )
	DISCRETE_INPUT_DATA(NODE_01)

	DISCRETE_DAC_R1(NODE_02, NODE_01, DEFAULT_TTL_V_LOGIC_1, &osi600_dac)
	DISCRETE_CRFILTER(NODE_03, NODE_02, (int)(1.0/(1.0/RES_K(1)+1.0/180+1.0/180+1.0/180+1.0/180)), CAP_U(0.1))
	DISCRETE_OUTPUT(NODE_03, 100)
	DISCRETE_GAIN(NODE_04, NODE_03, 32767.0/5)
	DISCRETE_OUTPUT(NODE_04, 100)
DISCRETE_SOUND_END

#if 0
static const discrete_dac_r1_ladder osi600c_dac =
{
	8,          // size of ladder
	{ RES_K(68), RES_K(33), RES_K(16), RES_K(8.2), RES_K(3.9), RES_K(2), RES_K(1), 510 }, // R73, R71, R70, R67, R68, R69, R75, R74
	5,          // 5V
	510,        // R86
	0,          // no rGnd
	CAP_U(33)   // C63
};
Exemple #21
0
static MACHINE_DRIVER_START( nitedrvr )

	/* driver data */
	MDRV_DRIVER_DATA(nitedrvr_state)

	/* basic machine hardware */
	MDRV_CPU_ADD("maincpu", M6502, XTAL_12_096MHz/12) // 1 MHz
	MDRV_CPU_PROGRAM_MAP(nitedrvr_map)
	MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
	MDRV_WATCHDOG_VBLANK_INIT(3)

	MDRV_MACHINE_START(nitedrvr)
	MDRV_MACHINE_RESET(nitedrvr)

	MDRV_TIMER_ADD_PERIODIC("crash_timer", nitedrvr_crash_toggle_callback, NSEC(PERIOD_OF_555_ASTABLE_NSEC(RES_K(180), 330, CAP_U(1))))

	/* video hardware */
	MDRV_SCREEN_ADD("screen", RASTER)
	MDRV_SCREEN_REFRESH_RATE(57) // how is this derived?
	MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
	MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
	MDRV_SCREEN_SIZE(32*8, 32*8)
	MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)

	MDRV_GFXDECODE(nitedrvr)
	MDRV_PALETTE_LENGTH(2)

	MDRV_PALETTE_INIT(black_and_white)
	MDRV_VIDEO_START(nitedrvr)
	MDRV_VIDEO_UPDATE(nitedrvr)
Exemple #22
0
int newbrain_state::get_pwrup_t()
{
	return RES_K(560) * CAP_U(10) * 1000; // t = R129 * C127 = 5.6s
}
Exemple #23
0
{
	AY8910_DISCRETE_OUTPUT,
	{ RES_K(3.3), RES_K(3.3), RES_K(3.3) },
	DEVCB_NULL,
	DEVCB_NULL,
	DEVCB_NULL,
	DEVCB_NULL
};

static const discrete_mixer_desc konami_right_mixer_desc =
	{DISC_MIXER_IS_RESISTOR,
		{RES_K(2.2), RES_K(2.2), RES_K(2.2), RES_K(3.3)/3, RES_K(3.3)/3 },
		{0,0,0,0,0,0},	/* no variable resistors   */
		{0,0,0,0,0,0},  /* no node capacitors      */
		0, 200,
		CAP_U(0.1),
		CAP_U(1),		/* DC - Removal, not in schematics */
		0, 1};

static const discrete_mixer_desc konami_left_mixer_desc =
	{DISC_MIXER_IS_RESISTOR,
	{RES_K(2.2), RES_K(2.2), RES_K(2.2), RES_K(3.3)/3, RES_K(4.7) },
	{0,0,0,0,0,0},	/* no variable resistors   */
	{0,0,0,0,0,0},  /* no node capacitors      */
	0, 200,
	CAP_U(0.1),
	CAP_U(1),		/* DC - Removal, not in schematics */
	0, 1};

static DISCRETE_SOUND_START( gyruss_sound )
Exemple #24
0
	  RES_K(22), 	/* R12 */
	  RES_K(10)},	/* R11 */
	0, 0, 0, 0		/* nothing extra */
};

/*                         R39           R38          R39 */
#define BOSCO_VREF (5.0 * (RES_K(2.2) / (RES_K(3.3) + RES_K(2.2))))

static const discrete_op_amp_filt_info bosco_chanl1_filt =
{
	BOSCO_54XX_DAC_R + RES_K(100),	/* R24 */
	0,					/* no second input */
	RES_K(22),			/* R23 */
	0,					/* not used */
	RES_K(220),			/* R22 */
	CAP_U(0.001),		/* C31 */
	CAP_U(0.001),		/* C30 */
	0,					/* not used */
	BOSCO_VREF,			/* vRef */
	5,					/* vP */
	0					/* vN */
};

static const discrete_op_amp_filt_info bosco_chanl2_filt =
{
	BOSCO_54XX_DAC_R + RES_K(47),	/* R33 */
	0,					/* no second input */
	RES_K(10),			/* R34 */
	0,					/* not used */
	RES_K(150),			/* R35 */
	CAP_U(0.01),		/* C29 */
Exemple #25
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 */
	0,			/* Output is already inverted by XNOR */
	16			/* Output bit is feedback bit */
};

static const discrete_dac_r1_ladder atarifb_crowd_r1_ladder =
{
	4,
	{RES_K(390), RES_K(220), RES_K(100), RES_K(56)},	// r17, r16, r14, r15
	0, 0,		// no bias
	0,			// no rGnd
	CAP_U(0.1)	// c32
};

static const discrete_op_amp_filt_info atarifb_crowd_filt =
{
	1.0/(1.0/RES_K(390) + 1.0/RES_K(220) + 1.0/RES_K(100) + 1.0/RES_K(56)),	// r17, r16, r14, r15
	0, 0, 0,
	RES_K(330),	// r35
	CAP_U(.01),	// c33
	CAP_U(.01),	// c44
	0,
	5, 12, 0
};

static const discrete_mixer_desc atarifb_mixer =
{
Exemple #26
0
/*******************************************************/
/*                                                     */
/* Taito "Balloon Bomber"                              */
/*   The sounds are not the correct ones               */
/*                                                     */
/*******************************************************/

/*************************************
 *
 *  Discrete Sound
 * (copied from indianbt)
 *
 *************************************/

static const discrete_dac_r1_ladder ballbomb_music_dac =
	{3, {0, RES_K(47), RES_K(12)}, 0, 0, 0, CAP_U(0.1)};

#define BALLBOMB_MUSIC_CLK      (3993.6*2*2*2)

/* Nodes - Inputs */
#define BALLBOMB_MUSIC_DATA     NODE_01
/* Nodes - Sounds */
#define BALLBOMB_MUSIC          NODE_11

DISCRETE_SOUND_START(ballbomb)

	DISCRETE_INPUT_DATA (BALLBOMB_MUSIC_DATA)

/******************************************************************************
 *
 * Music Generator
Exemple #27
0
	//----------------------------------------------------------------
	// Startup / Antenna latch
	//----------------------------------------------------------------

	TTL_INPUT(antenna, 0)

	DIODE(CR3, "1N914")
	DIODE(CR4, "1N914")
	DIODE(CR5, "1N914")
	DIODE(CR7, "1N914")

	QBJT_EB(Q1, "2N3644")
	QBJT_EB(Q2, "2N3643")
	QBJT_EB(Q3, "2N3643")
	CAP(C19, CAP_U(0.1))
	CAP(C16, CAP_U(0.1))

	RES(R25, 100)
	RES(R26, 330)
	RES(R27, 100)
	RES(R31, 220)
	RES(R32, 100)

	NET_C(GND, CR5.A, Q2.E, C16.2, R25.2, Q3.E)
	NET_C(CR5.K, Q2.B, antenna)
	NET_C(Q2.C, C16.1, R25.1, Q3.B, R27.2)
	NET_C(R27.1, CR7.A, R31.2)  //CR7.K == IN
	NET_C(R31.1, Q1.C)
	NET_C(Q3.C, R26.2, CR3.A, CR4.A, E9.5) // E9.6 = Q Q3.C=QQ CR3.K = COIN*1 CR4.K = COIN*2
	NET_C(R26.1, Q1.B, C19.2, R32.2)
Exemple #28
0
};

static const discrete_555_cc_desc frogsZip555cc =
{
	DISC_555_OUT_CAP | DISC_555_OUT_DC,
	12,     // B+ voltage of 555
	DEFAULT_555_VALUES,
	0.6     // Q13 Vbe
};

static const discrete_mixer_desc frogsMixer =
{
	DISC_MIXER_IS_OP_AMP,
	{RES_K(1), RES_K(5)},
	{FROGS_R93, 0},
	{CAP_U(0.01), CAP_U(0.01)},
	0, RES_K(56), 0, CAP_U(0.1), 0, 10000
};

static DISCRETE_SOUND_START(frogs)
	/************************************************
	 * Input register mapping for frogs
	 *
	 * All inputs are inverted by initial transistor.
	 ************************************************/
	DISCRETE_INPUT_LOGIC(FROGS_FLY_EN)
	DISCRETE_INPUT_NOT(FROGS_JUMP_EN)
	DISCRETE_INPUT_NOT(FROGS_HOP_EN)
	DISCRETE_INPUT_NOT(FROGS_TONGUE_EN)
	DISCRETE_INPUT_NOT(FROGS_CAPTURE_EN)
	DISCRETE_INPUT_NOT(FROGS_SPLASH_EN)
Exemple #29
0
	1,
	{RES_K(10)},    // R29
	5,              // 555 Vcc
	RES_K(5),       // 555 internal
	RES_K(10),      // 555 internal
	CAP_N(100)      // C100
};

static const discrete_dac_r1_ladder spiders_web_exp_dac =
{
	1,
	{RES_K(10)},    // R44
	5,              // 555 Vcc
	RES_K((5*2.2)/(5+2.2)),     // 555 internal (5k) // R49 (2.2k)
	RES_K(10),      // 555 internal
	CAP_U(0.01)     // C25
};

// IC 10
static const discrete_555_desc spiders_fire_555a =
{
	DISC_555_OUT_SQW | DISC_555_OUT_DC,
	5,      // B+ voltage of 555
	DEFAULT_555_VALUES
};


static const discrete_555_desc spiders_super_web_555a =
{
	DISC_555_OUT_CAP | DISC_555_OUT_DC,
	5,      // B+ voltage of 555
Exemple #30
0

static struct AY8910interface ay8910_interface =
{
    0,
    0,
    stratvox_sn76477_w,  /* SN76477 commands (not used in Route 16?) */
    0
};


static struct SN76477interface sn76477_interface =
{
    RES_K( 47)   ,		/*  4  noise_res         */
    RES_K(150)   ,		/*  5  filter_res        */
    CAP_U(0.001) ,		/*  6  filter_cap        */
    RES_M(3.3)   ,		/*  7  decay_res         */
    CAP_U(1.0)   ,		/*  8  attack_decay_cap  */
    RES_K(4.7)   ,		/* 10  attack_res        */
    RES_K(200)   ,		/* 11  amplitude_res     */
    RES_K( 55)   ,		/* 12  feedback_res      */
    5.0*2/(2+10) ,		/* 16  vco_voltage       */
    CAP_U(0.022) ,		/* 17  vco_cap           */
    RES_K(100)   ,		/* 18  vco_res           */
    5.0		   ,		/* 19  pitch_voltage     */
    RES_K( 75)   ,		/* 20  slf_res           */
    CAP_U(1.0)   ,		/* 21  slf_cap           */
    CAP_U(2.2)   ,		/* 23  oneshot_cap       */
    RES_K(4.7)   		/* 24  oneshot_res       */
};