Beispiel #1
0
CALLSET_ENTRY (multiball, multiball_start)
{
	global_flag_on (GLOBAL_FLAG_SUPER_JACKPOT_LIT);
	global_flag_on (GLOBAL_FLAG_MB_JACKPOT_LIT);
	callset_invoke (head_enable_divert);
	calculate_super_jackpot_value ();
	deff_start (DEFF_SUPER_JACKPOT_VALUE);
	mb_jackpot_collected = FALSE;
}
Beispiel #2
0
void skillshot_rollover_enable( void ) {
	current_rollover = SW_MIDDLE_ROLLOVER;
	global_flag_on(GLOBAL_FLAG_SKILLSHOT_ROLLOVER_ENABLED);
	flag_off (FLAG_LOOP_GATE_OPENED);

	// kill any existing task, just to make sure
	task_kill_gid (GID_SKILLSHOT_ROLLOVER_TIMER);
	task_create_gid1 (GID_SKILLSHOT_ROLLOVER_TIMER, skillshot_rollover_timer);
}
Beispiel #3
0
CALLSET_ENTRY (trunk_drv, idle_every_100ms)
{
	if (trunk_time_since_last_sw)
	{
		if (--trunk_time_since_last_sw == 0)
		{
			trunk_motor_stop ();
			global_flag_on (GLOBAL_FLAG_TRUNK_ERROR);
		}
	}
}
Beispiel #4
0
/*  light next unlit target */
void redtgt_addtgt (void)
{
	if (!global_flag_test (GLOBAL_FLAG_REDTGT1))
	{
		global_flag_on (GLOBAL_FLAG_REDTGT1);
//		lamp_tristate_on (LM_3BANK_TOP);
	}
	else if (!global_flag_test (GLOBAL_FLAG_REDTGT2))
	{
		global_flag_on (GLOBAL_FLAG_REDTGT2);
//		lamp_tristate_on (LM_3BANK_CENTER);
	}
	else if (!global_flag_test (GLOBAL_FLAG_REDTGT3))
	{
		global_flag_on (GLOBAL_FLAG_REDTGT3);
//		lamp_tristate_on (LM_3BANK_BOTTOM);
	}

	redtgt_check ();
}
Beispiel #5
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);
	}
}
Beispiel #6
0
void dragrace_start( U8 starter_gid ) {
	if (global_flag_test(GLOBAL_FLAG_DRAGRACE_IN_PROGRESS)) {
		return;
	}
	dragrace_starter_gid = starter_gid;
	global_flag_on(GLOBAL_FLAG_DRAGRACE_IN_PROGRESS);
	flipper_disable();
	ball_search_monitor_stop();
	racetrack_car_return();
	task_kill_gid(GID_DRAGRACE_TASK);
	task_create_gid1(GID_DRAGRACE_TASK, dragrace_task);
}
Beispiel #7
0
CALLSET_ENTRY (sssmb, sssmb_start)
{
	if (!global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING))
	{
		magnet_reset ();
		callset_invoke (mball_restart_stop);
		mball_jackpot_uncollected = TRUE;
		unlit_shot_count = 0;
		effect_update_request ();
		global_flag_on (GLOBAL_FLAG_SSSMB_RUNNING);
		global_flag_on (GLOBAL_FLAG_SSSMB_RED_JACKPOT);
		global_flag_on (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT);
		global_flag_on (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT);
		sssmb_initial_ramps_to_divert = 1;
		sssmb_ramps_to_divert = 0;
		sssmb_jackpot_value = 20;
		if (!global_flag_test (GLOBAL_FLAG_SUPER_MB_RUNNING))
		{	
			callset_invoke (mball_start_3_ball);
		}
	}
}
Beispiel #8
0
CALLSET_ENTRY (gumball, sw_gumball_enter)
{
	/* Ball has entered the gumball machine. */
	dbprintf ("Gumball entered.\n");
	gumball_enable_from_trough = FALSE;
	gumball_count++;
	if (in_live_game)
	{
		if (!multi_ball_play ())
			leff_start (LEFF_GUMBALL_STROBE);
		gumball_running = TRUE;
		gumball_collected_count++;
		award_gumball_score ();
		gumball_release ();

		if (powerball_loaded_into_gumball == TRUE)
		{
			powerball_loaded_into_gumball = FALSE;
			leff_start (LEFF_FLASH_GI2);
			callset_invoke (mball_start);
			callset_invoke (mball_start_3_ball);
			callset_invoke (powerball_in_gumball);	
			/* Do a dodgy multiball combo */
			global_flag_on (GLOBAL_FLAG_SUPER_MB_RUNNING);
			ballsave_add_time (5);
			
			if (!global_flag_test (GLOBAL_FLAG_CHAOSMB_RUNNING)
				&& !global_flag_test (GLOBAL_FLAG_SSSMB_RUNNING))
			{
				/* random_scaled (N) returns from 0 - N-1 */
				switch (random_scaled (2))
				{
					case 0:
						callset_invoke (sssmb_start);
						break;
					case 1:
						callset_invoke (chaosmb_start);
						break;
				}
			}
		}
		else
		{
			bounded_decrement (gumball_enable_count, 0);
		}
		if (!global_flag_test (GLOBAL_FLAG_SUPER_MB_RUNNING))
			deff_start (DEFF_GUMBALL);
	}
}
Beispiel #9
0
void coin_door_opened (void)
{
	global_flag_on (GLOBAL_FLAG_COIN_DOOR_OPENED);

	if (in_live_game && system_config.coin_door_ball_save)
	{
		dbprintf ("%d balls before coin door drain\n", live_balls);
		live_balls_before_door_open = live_balls;
		ball_search_monitor_stop ();
	}

	/* Print a message that high power coils are disabled */
	if (!in_test)
	{
		deff_start (DEFF_COIN_DOOR_POWER);
	}
}
Beispiel #10
0
void shooter_update (void)
{
#ifdef MACHINE_SHOOTER_SWITCH
    /* A ball seen on the shooter switch means it is definitely there.
     * If not seen, it might be out of the plunger lane, or it may just be
     * "on its way up".  During that interval, still consider the ball
     * at the plunger, so delay clearing the flag.
     */
    if (switch_poll_logical (MACHINE_SHOOTER_SWITCH))
    {
        task_kill_gid (GID_SHOOTER_CLEAR);
        global_flag_on (GLOBAL_FLAG_BALL_AT_PLUNGER);
    }
    else
    {
        task_create_gid1 (GID_SHOOTER_CLEAR, shooter_clear_monitor);
    }
#endif
}
Beispiel #11
0
CALLSET_ENTRY (sharpe, sharpe_start)
{
	global_flag_on (GLOBAL_FLAG_SHARPE_RUNNING);
}
Beispiel #12
0
static void sssmb_relight_all_jackpots (void)
{
	global_flag_on (GLOBAL_FLAG_SSSMB_RED_JACKPOT);
	global_flag_on (GLOBAL_FLAG_SSSMB_ORANGE_JACKPOT);
	global_flag_on (GLOBAL_FLAG_SSSMB_YELLOW_JACKPOT);
}
Beispiel #13
0
void dragrace_enable( void ) {
	global_flag_on(GLOBAL_FLAG_DRAGRACE_ENABLED);
}
Beispiel #14
0
void racetrack_calibration_complete(void) {
	racetrack_calibrated = TRUE;
	racetrack_last_calibration_result_code = CC_SUCCESS;
	global_flag_on(GLOBAL_FLAG_RACETRACK_WORKING);
	racetrack_state_calibrate_exit();
}