コード例 #1
0
ファイル: mpf.c プロジェクト: SonnyJim/freewpc
CALLSET_ENTRY (mpf, lamp_update)
{
	lamplist_apply (LAMPLIST_MPF, lamp_off);
	lamplist_apply (LAMPLIST_MPF, lamp_flash_off);
	switch (mpf_level)
	{
		case 0:
			lamp_flash_on (LM_MPF_100K);
			break;
		case 1:
			lamp_on (LM_MPF_100K);
			lamp_flash_on (LM_MPF_200K);
			break;
		case 2:
			lamp_on (LM_MPF_100K);
			lamp_on (LM_MPF_200K);
			lamp_flash_on (LM_MPF_300K);
			break;
		case 3:
			lamp_flash_on (LM_MPF_100K);
			lamp_flash_on (LM_MPF_200K);
			lamp_flash_on (LM_MPF_300K);
			callset_invoke (head_enable_divert);
			break;
		default:
			break;
	}

}
コード例 #2
0
ファイル: lanes.c プロジェクト: SonnyJim/freewpc
/* 'Dead End' Lane */
CALLSET_ENTRY (lanes, sw_right_inlane)
{
    event_can_follow (left_or_right_inlane, either_outlane, TIME_1S);
    lamp_on (LM_RIGHT_INLANE);
    check_rollover ();
    score (SC_1K);

    /* Light Dead end if not lit */
    lamp_on (LM_DEAD_END);
    timer_restart_free (GID_TNF_READY, TIME_4S);
    //event_can_follow (right_inlane, left_ramp, TIME_4S);
}
コード例 #3
0
ファイル: logic.c プロジェクト: windsorschmidt/evac
void logic_headlamp(uint8_t state) {
    if (state) {
        /* headlamp switch on */
        lamp_on(LAMP_HEADLAMP);
        lamp_on(LAMP_TAILLAMP);
        usart_send(PACK_WORDS(MSG_LAMP_HEADLAMP, ON));
    } else {
        /* headlamp switch off */
        lamp_off(LAMP_HEADLAMP);
        lamp_off(LAMP_TAILLAMP);
        usart_send(PACK_WORDS(MSG_LAMP_HEADLAMP, OFF));
    }
}
コード例 #4
0
ファイル: rules.c プロジェクト: Dmilo/freewpc
CALLSET_ENTRY (magic_spell, sw_ramp_targets)
{
	score (SC_5K);
	if (magic_relight_ramp_count > 0)
	{
		if (--magic_relight_ramp_count == 0)
		{
			if (!lamp_test (LM_CENTER_MAGIC))
				lamp_on (LM_CENTER_MAGIC);
			else if (!lamp_test (LM_RIGHT_MAGIC))
				lamp_on (LM_RIGHT_MAGIC);
		}
	}
}
コード例 #5
0
ファイル: jets.c プロジェクト: SonnyJim/freewpc
CALLSET_ENTRY (jets, lamp_update)
{
	if (!timed_mode_running_p (&jets_frenzy_mode))
	{
		lamplist_apply (LAMPLIST_JETS_ENTER, lamp_off);
		
		if (score_compare (total_jets_score, score_table[SC_25K]) >= 0)
			lamp_on (LM_JETS_25K);
		if (score_compare (total_jets_score, score_table[SC_50K]) >= 0)
			lamp_on (LM_JETS_50K);
		if (score_compare (total_jets_score, score_table[SC_100K]) >= 0)
			lamp_on (LM_JETS_100K);
		if (score_compare (total_jets_score, score_table[SC_500K]) >= 0)
			lamp_on (LM_JETS_500K);
	}

}
コード例 #6
0
ファイル: slot.c プロジェクト: SonnyJim/freewpc
void sslot_award (void)
{
	sslot_award_index_stored = sslot_award_index;
	task_kill_gid (GID_SSLOT_AWARD_ROTATE);
	
	/* Don't allow awarding the eb if we can't do so */
	if (!can_award_extra_ball ())
	{
		/* Pick another until it's not an EB */
		while (sslot_award_index_stored == 0)
		{
			sslot_award_index_stored = random_scaled(5);
		}
	}

	switch (sslot_award_index_stored)
	{
		case 0:
			sound_send (SND_GET_THE_EXTRA_BALL);
			light_easy_extra_ball ();
			break;
		case 1:
			sound_send (SND_THIS_IS_NO_ORDINARY_GUMBALL);
			gumball_enable_count++;
			break;
		case 2:
			sound_send (SND_ARE_YOU_READY_TO_BATTLE);
			mpf_enable_count++;
			break;
		case 3:
			sound_send (SND_MOST_UNUSUAL_CAMERA);
			cameras_lit++;
			break;
		case 4:
			sound_send (SND_TEN_MILLION_POINTS);
			score (SC_10M);
			if (!lamp_test (LM_PANEL_10M))
			{
				lamp_on (LM_PANEL_10M);
				door_panels_started++;
			}
			break;
		case 5:
			sound_send (SND_SEE_WHAT_GREED);
			score (SC_5M);
			break;
		default:
			score (SC_5M);
	}

	deff_start (DEFF_SSLOT_AWARD);
	sound_send (SND_SLOT_PAYOUT);
	lamp_tristate_off (LM_SLOT_MACHINE);
}
コード例 #7
0
ファイル: logic.c プロジェクト: windsorschmidt/evac
void logic_reverse(uint8_t state) {
    if (state) {
        /* reverse switch on */
        lamp_on(LAMP_REVERSE);
        usart_send(PACK_WORDS(MSG_LAMP_REVERSE, ON));
    } else {
        /* reverse switch off */
        lamp_off(LAMP_REVERSE);
        usart_send(PACK_WORDS(MSG_LAMP_REVERSE, OFF));
    }
}
コード例 #8
0
ファイル: logic.c プロジェクト: windsorschmidt/evac
void logic_highbeam(uint8_t state) {
    if (state) {
        /* highbeam switch on */
        lamp_on(LAMP_HIGHBEAM);
        usart_send(PACK_WORDS(MSG_LAMP_HIGHBEAM, ON));
    } else {
        /* highbeam switch off */
        lamp_off(LAMP_HIGHBEAM);
        usart_send(PACK_WORDS(MSG_LAMP_HIGHBEAM, OFF));
    }
}
コード例 #9
0
ファイル: logic.c プロジェクト: windsorschmidt/evac
void logic_brake(uint8_t state) {
    if (state) {
        /* brake switch on */
        lamp_on(LAMP_BRAKE);
        usart_send(PACK_WORDS(MSG_LAMP_BRAKE, ON));
    } else {
        /* brake switch off */
        lamp_off(LAMP_BRAKE);
        usart_send(PACK_WORDS(MSG_LAMP_BRAKE, OFF));
    }
}
コード例 #10
0
ファイル: lanes.c プロジェクト: SonnyJim/freewpc
/* 'Light Slot Machine' Lane */
CALLSET_ENTRY (lanes, sw_left_inlane_2)
{
    if (!lamp_test (LM_LEFT_INLANE2) && spiralaward_set_completed == FALSE)
    {
        callset_invoke(start_spiralaward_timer);
    }
    lamp_on (LM_LEFT_INLANE2);
    check_rollover ();
    score (SC_1K);
    event_can_follow (left_inlane_2, right_loop, TIME_3S);
}
コード例 #11
0
ファイル: deadend.c プロジェクト: CardonaPinball/freewpc
CALLSET_ENTRY (deadend, start_player)
{
	/* Don't allow lighting extra ball if impossible
	 * or if previously collected */
	if (system_config.max_ebs == 0)
		extra_ball_lit_from_deadend = TRUE;
	else
		extra_ball_lit_from_deadend = FALSE;
	dead_end_count = 0;
	lamp_on (LM_DEAD_END);
}
コード例 #12
0
ファイル: logic.c プロジェクト: windsorschmidt/evac
void logic_rturn(uint8_t state) {
    if (state) {
        /* right-turn switch on */
        blinker_on(LAMP_RTURN);
        lamp_on(LAMP_RTURN);
        usart_send(PACK_WORDS(MSG_LAMP_RTURN, ON));
    } else {
        /* right-turn switch off */
        blinker_off(LAMP_RTURN);
        lamp_off(LAMP_RTURN);
        usart_send(PACK_WORDS(MSG_LAMP_RTURN, OFF));
    }
}
コード例 #13
0
ファイル: lanes.c プロジェクト: SonnyJim/freewpc
/* 'Light Spiral' Lane */
CALLSET_ENTRY (lanes, sw_left_inlane_1)
{
    event_can_follow (left_or_right_inlane, either_outlane, TIME_1S);
    /* Start the spiralaward timer only if the lane has
     * just been lit */
    if (!lamp_test (LM_LEFT_INLANE1) && spiralaward_set_completed == FALSE)
    {
        callset_invoke (start_spiralaward_timer);
    }
    lamp_on (LM_LEFT_INLANE1);
    check_rollover ();
    score (SC_1K);
    event_can_follow (left_inlane_1, right_loop, TIME_3S);
}
コード例 #14
0
ファイル: pause.c プロジェクト: Curbfeeler/freewpc
void mute_and_pause_monitor (void)
{
	flipper_hold_on ();
	lamp_on (LM_BUY_IN_BUTTON);
	kickout_lock (KLOCK_USER);
	music_disable ();
	callset_invoke (machine_paused);

	/* Timeout after 15 minutes */
	U8 timeout = 180; /* = (60secs * 15)/5 */
	while (--timeout != 0)
	{
		ball_search_timer_reset ();
		task_sleep_sec (5);
	}
	mute_and_pause_stop ();
	task_exit ();
}
コード例 #15
0
ファイル: lanes.c プロジェクト: SonnyJim/freewpc
static inline void award_rollover_completed (void)
{
    bounded_increment (rollover_count, 99);
    score (SC_1M);
    /* Hack as I can't be bothered to fix the sw_right_inlane on my table */
    if (!lamp_test (LM_DEAD_END))
        lamp_on (LM_DEAD_END);
    /* Increment cameras_lit every 4 rollovers */
    if (rollover_count % 4 == 0)
        bounded_increment (cameras_lit, 99);
    /* Show animation */
    deff_start (DEFF_ROLLOVER_COMPLETED);
    /* Turn off inlane lamps */
    lamplist_apply (LAMPLIST_INLANES, lamp_off);
    lamplist_apply (LAMPLIST_INLANES, lamp_flash_on);
    task_sleep_sec (1);
    lamplist_apply (LAMPLIST_INLANES, lamp_flash_off);
}
コード例 #16
0
ファイル: rules.c プロジェクト: Dmilo/freewpc
void bonusx_lane (U8 lamp)
{
	if (lamp_test (lamp))
	{
		score (SC_10K);
	}
	else
	{
		score (SC_50K);
		lamp_on (lamp);

		if (lamp_test (LM_ROLLOVER_1) && lamp_test (LM_ROLLOVER_2))
		{
			bonusx_add (1);
			lamplist_apply (LAMPLIST_ROLLOVERS, lamp_off);
			sound_send (SND_TADA);
			deff_data_init ();
			deff_data_push (bonusx);
			deff_start (DEFF_BONUSX);
			leff_start (LEFF_BONUSX);
		}
	}
}
コード例 #17
0
ファイル: rules.c プロジェクト: Dave2084/freewpc
void rules_deff (void)
{
	music_disable ();
	music_set (MUS_RESTART_PLUNGER);
	sol_request (SOL_EYELIDS_OPEN);

	rule_begin ();
	rule_msg ("HOW TO PLAY", "FUNHOUSE");
	task_create_gid1 (GID_RULES_LEFF, rules_flasher_leff);
	rule_complete ();

	rule_begin ();
	rule_msg ("ALL TARGETS", "ADVANCE CLOCK");
	task_create_gid1 (GID_RULES_LEFF, rules_clock_leff);
	rule_complete ();

	rule_begin ();
	rule_msg ("REACH 11:30", "TO LIGHT LOCK");
	fh_clock_set (11, TIME_30_MIN);
	lamp_tristate_flash (LM_LOCK);
	rule_complete ();

	rule_begin ();
	rule_msg ("LOCK BALL 1", "FOR 11:45");
	fh_clock_set (11, TIME_45_MIN);
	lamp_tristate_flash (LM_LOCK);
	rule_complete ();

	rule_begin ();
	rule_msg ("LOCK BALL 2", " FOR 12:00");
	fh_clock_set (12, TIME_0_MIN);
	lamp_tristate_flash (LM_MILLION);
	sol_request (SOL_EYELIDS_CLOSED);
	rule_complete ();

	rule_begin ();
	rule_msg ("WAKE RUDY", "FOR MULTIBALL");
	sol_request (SOL_EYELIDS_OPEN);
	rule_complete ();

	rule_begin ();
	rule_msg ("SHOOT TRAP DOOR", "FOR JACKPOTS");
	lamp_tristate_flash (LM_MILLION_PLUS);
	rule_complete ();

	rule_begin ();
	rule_msg ("SHOOT MIRROR TO", "COLLECT AWARDS");
	lamplist_apply (LAMPLIST_MIRROR_AWARDS, lamp_flash_on);
	lamp_tristate_flash (LM_MIRROR_VALUE);
	rule_complete ();

	rule_begin ();
	rule_msg ("HIT RUDY TO", "RELIGHT MIRROR");
	lamplist_apply (LAMPLIST_MIRROR_AWARDS, lamp_on);
	rule_complete ();

	rule_begin ();
	rule_msg ("BLUE TARGETS", "LIGHT THE STEPS");
	lamplist_apply (LAMPLIST_STEP_TARGETS, lamp_flash_on);
	lamplist_apply (LAMPLIST_STEPS_AWARDS, lamp_flash_on);
	rule_complete ();

	rule_begin ();
	rule_msg ("SHOOT STEPS FROM", "LEFT PLUNGER");
	lamplist_apply (LAMPLIST_STEPS_AWARDS, lamp_flash_on);
	lamp_tristate_flash (LM_STEPS_GATE_OPEN);
	lamp_tristate_flash (LM_RAMP_STEPS);
	rule_complete ();

	rule_begin ();
	rule_msg ("SHOOT LOOPS TO", "COLLECT GANGWAYS");
	lamp_flash_on (LM_LEFT_GANGWAY);
	lamp_flash_on (LM_RIGHT_GANGWAY);
	lamplist_apply (LAMPLIST_GANGWAYS, lamp_on);
	rule_complete ();

	rule_begin ();
	rule_msg ("EXTRA BALLS LIT", "AT TOP LOOP");
	lamp_on (LM_EXTRA_BALL);
	lamp_flash_on (LM_MIRROR_EX_BALL);
	lamp_flash_on (LM_GANGWAY_EX_BALL);
	lamp_flash_on (LM_STEPS_EB);
	rule_complete ();

	rule_begin ();
	rule_msg ("PLAY", "FUNHOUSE");
	task_create_gid1 (GID_RULES_LEFF, rules_flasher_leff);
	task_create_gid1 (GID_RULES_LEFF, rules_clock_leff);
	rule_complete ();

	sol_request (SOL_EYELIDS_CLOSED);
	music_enable ();
	deff_exit ();
}
コード例 #18
0
ファイル: kickback.c プロジェクト: CardonaPinball/freewpc
void kickback_enable (void)
{
	lamp_on(LM_KICKBACK_ARROW);
	kickback_driver_enable();
}