예제 #1
0
void redtgt_off (void)
{
	global_flag_off (GLOBAL_FLAG_REDTGT1);	
	global_flag_off (GLOBAL_FLAG_REDTGT2);	
	global_flag_off (GLOBAL_FLAG_REDTGT3);	
	lamp_tristate_off (LM_3BANK_TOP);
	lamp_tristate_off (LM_3BANK_CENTER);
	lamp_tristate_off (LM_3BANK_BOTTOM);
}
예제 #2
0
void dragrace_disable( void ) {
	if (!global_flag_test(GLOBAL_FLAG_DRAGRACE_ENABLED)) {
		return;
	}

	lamp_tristate_off(LM_RACE_TODAY);
	lamp_tristate_off(LM_ROUTE_66_ARROW);

	global_flag_off(GLOBAL_FLAG_DRAGRACE_ENABLED);
	global_flag_off(GLOBAL_FLAG_DIVERTER_ENABLED);
}
예제 #3
0
void dragrace_stop( void ) {
	flipper_enable();
	ball_search_monitor_start();
	racetrack_car_return();
	global_flag_off(GLOBAL_FLAG_DRAGRACE_IN_PROGRESS);
	task_kill_gid(GID_DRAGRACE_TASK);
}
예제 #4
0
void prison_break_mode_init (void) {
	prison_break_suspend = FALSE;
			//the claw mode can expire on its own and since it is a lower priority it will not display
			//callset_invoke (end_claw_mode); // this seemed to cause occasional crashes
			clawmagnet_off ();
			global_flag_off(GLOBAL_FLAG_IS_BALL_ON_CLAW);
			flipper_enable ();
			ballsave_add_time (system_config.mode_ballsave);

	//reset counter if first time run, otherwise do not - player may restart prison_break while currently running
	if (! get_dm_mode(BREAKOUT_COMPLETED) ) {
		prison_break_mode_shots_made = 0;
		score_zero(prison_break_mode_score);
		score_zero(prison_break_mode_last_score);
	}

	sound_start (ST_SPEECH, SPCH_CRYO_PRISON_BREAKOUT, SL_4S, PRI_GAME_QUICK3);
	//flash lamp for a time
	lamp_tristate_flash(LM_CLAW_PRISON_BREAK);
	task_sleep(TIME_500MS);
	lamp_tristate_on(LM_CLAW_PRISON_BREAK);
	score_add(prison_break_mode_last_score, score_table[PRIS_BREAK_HIT_SCORE]);

	score_zero(prison_break_mode_next_score);
	if (get_dm_mode(BREAKOUT_COMPLETED)) 	{
		score(PRIS_BREAK_START_SCORE2);
		score_add(prison_break_mode_score, score_table[PRIS_BREAK_START_SCORE2]);
	}
	else {
		score(PRIS_BREAK_START_SCORE1);
		score_add(prison_break_mode_score, score_table[PRIS_BREAK_START_SCORE1]);
	}
	set_dm_mode(BREAKOUT_COMPLETED); //for next time
}//end of function
예제 #5
0
void racetrack_reset(void) {
	disable_interrupts();

	// initialise the lanes
	memset(racetrack_lanes, 0, sizeof(racetrack_lanes));

	racetrack_lanes[LANE_LEFT].solenoid = SOL_LEFT_RACE_ENABLE;
	racetrack_lanes[LANE_RIGHT].solenoid = SOL_RIGHT_RACE_ENABLE;

	racetrack_lanes[LANE_LEFT].start_switch = SW_LEFT_RACE_START;
	racetrack_lanes[LANE_RIGHT].start_switch = SW_RIGHT_RACE_START;

	set_lane_speed(LANE_LEFT, RACETRACK_SPEED_MEDIUM);
	set_lane_speed(LANE_RIGHT, RACETRACK_SPEED_MEDIUM);

	// set flags
	racetrack_calibrated = FALSE;
	racetrack_calibration_attempted = FALSE;
	racetrack_last_calibration_result_code = CC_NOT_CALIBRATED;

	// set states
	racetrack_reset_track_state();
	racetrack_state = RACETRACK_INITIALIZE;
	racetrack_previous_state = RACETRACK_INITIALIZE;
	global_flag_off(GLOBAL_FLAG_RACETRACK_WORKING);

	enable_interrupts();
}
예제 #6
0
void superjets_mode_init (void) {
		//the claw mode can expire on its own and since it is a lower priority it will not display
		//	callset_invoke (end_claw_mode); // this seemed to cause occasional crashes
			clawmagnet_off ();
			global_flag_off(GLOBAL_FLAG_IS_BALL_ON_CLAW);
			flipper_enable ();
			//reset counter if first time run, otherwise do not - player may restart acmag while currently running
	sound_start (ST_SPEECH, SPCH_SUPERJETS_ACTIVATED, SL_4S, PRI_GAME_QUICK3);
	ballsave_add_time (system_config.mode_ballsave);
	//flash lamp for a time
	lamp_tristate_flash(LM_CLAW_SUPER_JETS);
	task_sleep(TIME_500MS);
	lamp_tristate_on(LM_CLAW_SUPER_JETS);
	if (get_dm_mode(SJETS_COMPLETED)) 	{
		score_add(superjets_mode_next_score, score_table[SUPERJETS_HIT_SCORE2]);
		score_add(superjets_mode_score, score_table[SUPERJETS_START_SCORE2]);
		score(SUPERJETS_START_SCORE2);
	}
	else {
		superjets_mode_shots_made = 0;
		score_zero(superjets_mode_score);
		score_zero(superjets_mode_next_score);
		score_add(superjets_mode_next_score, score_table[SUPERJETS_HIT_SCORE1]);
		score_add(superjets_mode_score, score_table[SUPERJETS_START_SCORE1]);
		score(SUPERJETS_START_SCORE1);
	}
}//end of function
예제 #7
0
파일: plunger.c 프로젝트: SonnyJim/freewpc
void shooter_clear_monitor (void)
{
    task_add_duration (TASK_DURATION_INF);
    task_sleep_sec (4); /* this could be machine-specific */
    global_flag_off (GLOBAL_FLAG_BALL_AT_PLUNGER);
    task_exit ();
}
예제 #8
0
파일: gumball.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (gumball, init)
{
	global_flag_off (GLOBAL_FLAG_SUPER_MB_RUNNING);
	gumball_enable_from_trough = FALSE;
	gumball_pending_releases = 0;
	gumball_count = 3;
	powerball_loaded_into_gumball = FALSE;
}
예제 #9
0
파일: gumball.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (gumball, start_ball)
{
	task_recreate_gid (GID_FAR_LEFT_TROUGH_MONITOR, sw_far_left_trough_monitor);
	gumball_score = 0;
	gumball_collected_count = 0;
	gumball_enable_from_trough = FALSE;
	global_flag_off (GLOBAL_FLAG_SUPER_MB_RUNNING);
}
예제 #10
0
void sssmb_stop (void)
{
	if (!global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING))
		return;	
	if (mball_jackpot_uncollected == TRUE)
		sound_send (SND_NOOOOOOOO);

	global_flag_off (GLOBAL_FLAG_SSSMB_RUNNING);
	global_flag_off (GLOBAL_FLAG_SSSMB_RED_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT);
	timer_kill_gid (GID_SSSMB_DIVERT_DEBOUNCE);
	task_kill_gid (GID_SSSMB_JACKPOT_READY);
	deff_stop (DEFF_SSSMB_RUNNING);
	lamp_tristate_off (LM_SUPER_SKILL);
	effect_update_request ();
}
예제 #11
0
파일: sssmb.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (sssmb, skill_yellow)
{
	if (global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING)
		&& global_flag_test (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT))
	{
		global_flag_off (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT);
		sssmb_award_jackpot ();
	}
}
예제 #12
0
파일: plunger.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (plunger, valid_playfield)
{
#ifdef INCLUDE_AUTOPLUNGER
    task_kill_gid (GID_TIMED_PLUNGER_MONITOR);
#endif
    task_kill_gid (GID_SHOOTER_CLEAR);
    global_flag_off (GLOBAL_FLAG_BALL_AT_PLUNGER);

}
예제 #13
0
파일: sssmb.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (sssmb, skill_orange)
{
	if (global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING)
		&& global_flag_test (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT))
	{
		global_flag_off (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT);
		sssmb_award_jackpot ();
	}
}
예제 #14
0
CALLSET_ENTRY (multiball, award_scoop_jackpot)
{
	if (multi_ball_play () && global_flag_test (GLOBAL_FLAG_MB_JACKPOT_LIT))
	{
		global_flag_off (GLOBAL_FLAG_MB_JACKPOT_LIT);
		sound_send (SND_JACKPOT);
		score (SC_1M);
		deff_start (DEFF_JACKPOT);
	}
}
예제 #15
0
CALLSET_ENTRY (dragrace, device_update) {
	if (!global_flag_test(GLOBAL_FLAG_DRAGRACE_ENABLED)) {
		return;
	}

	if (multi_ball_play()) {
		global_flag_off(GLOBAL_FLAG_DIVERTER_ENABLED);
	} else {
		global_flag_on(GLOBAL_FLAG_DIVERTER_ENABLED);
	}
}
예제 #16
0
파일: sssmb.c 프로젝트: SonnyJim/freewpc
void sssmb_stop (void)
{
	callset_invoke (sssmb_stop);
	if (!global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING))
		return;	
	if (mball_jackpot_uncollected == TRUE)
	{
		sound_send (SND_NOOOOOOOO);
		callset_invoke (start_hurryup);
	}

	global_flag_off (GLOBAL_FLAG_SSSMB_RUNNING);
	global_flag_off (GLOBAL_FLAG_SSSMB_RED_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT);
	timer_kill_gid (GID_SSSMB_DIVERT_DEBOUNCE);
	task_kill_gid (GID_SSSMB_JACKPOT_READY);
	deff_stop (DEFF_SSSMB_RUNNING);
	lamp_tristate_off (LM_SUPER_SKILL);
	music_refresh ();
}
예제 #17
0
void skillshot_rollover_disable( void ) {
	if (!global_flag_test (GLOBAL_FLAG_SKILLSHOT_ROLLOVER_ENABLED)) {
		return;
	}

	global_flag_off ( GLOBAL_FLAG_SKILLSHOT_ROLLOVER_ENABLED );

	lamp_tristate_off (LM_LEFT_ROLLOVER);
	lamp_tristate_off (LM_MIDDLE_ROLLOVER);
	lamp_tristate_off (LM_RIGHT_ROLLOVER);

	flag_on (FLAG_LOOP_GATE_OPENED);

	task_kill_gid (GID_SKILLSHOT_ROLLOVER_TIMER);
}
예제 #18
0
void racetrack_state_calibrate_enter(void) {
	// reset flags
	racetrack_calibrated = FALSE;
	racetrack_calibration_attempted = FALSE;
	racetrack_last_calibration_result_code = CC_NOT_CALIBRATED;
	global_flag_off(GLOBAL_FLAG_RACETRACK_WORKING);

	// initialise the first calibration state

	racetrack_calibrate_counter = 0;
	racetrack_calibrate_previous_state = RT_CALIBRATE_INITIALISE;
	racetrack_calibrate_state = RT_CALIBRATE_CAR_RETURN;

	racetrack_calibrate_ticks = RACETRACK_CALIBRATE_TICKS;
	racetrack_calibrate_ticks_remaining = racetrack_calibrate_ticks;
}
예제 #19
0
파일: service.c 프로젝트: Elwoodbe/freewpc
void coin_door_closed (void)
{
	global_flag_off (GLOBAL_FLAG_COIN_DOOR_OPENED);

	if (in_live_game && system_config.coin_door_ball_save)
	{
#ifdef DEVNO_TROUGH
		dbprintf ("resetting to %d balls\n", live_balls_before_door_open);
		if (live_balls_before_door_open != live_balls)
		{
			set_ball_count (live_balls_before_door_open);
#ifdef DEFF_BALL_SAVE
		deff_start (DEFF_BALL_SAVE);
#endif
		}
#endif
		ball_search_monitor_start ();
		live_balls_before_door_open = 0;
	}
}
예제 #20
0
파일: trunk.c 프로젝트: Dmilo/freewpc
void trunk_reset (void)
{
	global_flag_off (GLOBAL_FLAG_TRUNK_ERROR);
	trunk_time_since_last_sw = 0;
	trunk_curr_pos = 0;
}
예제 #21
0
파일: gumball.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (gumball, single_ball_play)
{
	global_flag_off (GLOBAL_FLAG_SUPER_MB_RUNNING);
}
예제 #22
0
CALLSET_ENTRY (multiball, score_super_jackpot)
{
	score_long (super_jackpot_value);
	deff_start (DEFF_SUPER_JACKPOT);
	global_flag_off (GLOBAL_FLAG_SUPER_JACKPOT_LIT);
}
예제 #23
0
파일: sharpe.c 프로젝트: SonnyJim/freewpc
CALLSET_ENTRY (sharpe, sharpe_end, stop_game, end_ball)
{
	global_flag_off (GLOBAL_FLAG_SHARPE_RUNNING);
}