Beispiel #1
0
/** Display effect for system reset */
void system_reset_deff (void)
{
	/* On DMD machines display the full copyright screen.  Alphanumerics
	aren't large enough to do this. */
#if (MACHINE_DMD == 1)
	dmd_alloc_low_clean ();
	font_render_string_center (&font_var5, 64, 3, "FREEWPC (C) COPYRIGHT " C_STRING(BUILD_YEAR));
	font_render_string_center (&font_var5, 64, 11, "THIS SOFTWARE IS NOT");
	font_render_string_center (&font_var5, 64, 17, "SUPPORTED BY BALLY/WILLIAMS");
	font_render_string_center (&font_var5, 64, 25, "WWW.ODDCHANGE.COM/FREEWPC");
	dmd_show_low ();
#endif
#if (MACHINE_ALPHANUMERIC == 1)
	seg_alloc_clean ();
	seg_write_row_center (0, "FREEWPC <C>" C_STRING(BUILD_YEAR));
	seg_write_row_center (1, "WWW.ODDCHANGE.COM");
	seg_show ();
#endif
	task_sleep_sec (3);
#ifdef CONFIG_DMD_OR_ALPHA
	dmd_alloc_low_clean ();
	font_render_string_left (&font_mono5, 1, 1, MACHINE_NAME);

#ifdef DEBUGGER
	sprintf ("D%s.%s", C_STRING(MACHINE_MAJOR_VERSION), C_STRING(MACHINE_MINOR_VERSION));
#else
	sprintf ("R%s.%s", C_STRING(MACHINE_MAJOR_VERSION), C_STRING(MACHINE_MINOR_VERSION));
#endif
	font_render_string_right (&font_mono5, 127, 1, sprintf_buffer);

	SECTION_VOIDCALL (__common__, render_build_date);
	font_render_string_left (&font_mono5, 1, 9, sprintf_buffer);

#if (MACHINE_PIC == 1)
	pic_render_serial_number ();
	font_render_string_left (&font_mono5, 1, 18, sprintf_buffer);
#endif

	font_render_string_left (&font_mono5, 1, 26, "TESTING...");
	dmd_show_low ();
#endif

	/* Keep the reset display for at least 3 seconds (so
	 * it is readable), keep it longer if any of the
	 * asynchronous initializations are still running. */
	task_sleep_sec (3);
	while (sys_init_pending_tasks != 0)
		task_sleep (TIME_66MS);

	/* If there were any diagnostic errors discovered, announce
	this fact. */
	diag_announce_if_errors ();

	dbprintf ("System initialized.\n");
	deff_exit ();
}
Beispiel #2
0
/**
 * The display effect for the enter initials screen.
 *
 * It continuously redraws itself whenever the timer, the selected
 * character, or the entered characters change.
 */
void enter_initials_deff (void)
{
	while (in_test || task_find_gid (GID_ENTER_INITIALS))
	{
		if (score_update_required ())
		{
#if (MACHINE_DMD == 1)
			U8 n;
			dmd_alloc_low_clean ();
			font_render_string_left (&font_var5, 0, 1, "ENTER INITIALS");
			font_render_string_left (&font_fixed10, 0, 9, initials_data);

			if (initials_selection < MAX_INITIAL_INITIAL+1)
			{
				sprintf ("%12s", initial_chars + initials_selection);
				font_render_string_left (&font_bitmap8, 0, 23, sprintf_buffer);
			}
			else
			{
				U8 x;

				x = ALPHABET_LEN - initials_selection;
				sprintf ("%*s", x, initial_chars + initials_selection);
				font_render_string_left (&font_bitmap8, 0, 23, sprintf_buffer);

				x = MAX_LETTERS_SHOWN - x;
				sprintf ("%*s", x, initial_chars);
				x = MAX_LETTERS_SHOWN - x;
				font_render_string_left (&font_bitmap8, x * FONT_WIDTH, 23, sprintf_buffer);
			}

			for (n = 22; n <= 30; n++)
			{
				dmd_low_buffer[16UL * n + SELECT_OFFSET - 1] ^= 0x80;
				dmd_low_buffer[16UL * n + SELECT_OFFSET] ^= 0x7F;
			}

			sprintf ("%d", initials_enter_timer);
			font_render_string_right (&font_fixed6, 126, 3, sprintf_buffer);
			dmd_show_low ();
#else
			seg_alloc_clean ();
			seg_write_string (0, 0, "ENTER INITIALS");
			sprintf ("%c", initial_chars[initials_selection]);
			seg_write_string (0, 15, sprintf_buffer);
			seg_write_string (1, 0, initials_data);
			sprintf ("%d", initials_enter_timer);
			seg_write_string (1, 14, sprintf_buffer);
			seg_show ();
#endif
		}
		task_sleep (TIME_66MS);
	}
	task_sleep (TIME_500MS);
	deff_exit ();
}
Beispiel #3
0
void lock_powerball_deff (void)
{
	sound_send (SND_TOO_HOT_TO_HANDLE);
	U16 fno;
	dmd_alloc_pair_clean ();
	timer_restart_free (GID_LOCK_POWERBALL, TIME_5S);
	while (task_find_gid (GID_LOCK_POWERBALL))
	{
		ball_search_timer_reset ();
		for (fno = IMG_POWERBALL_START; fno <= IMG_POWERBALL_END; fno += 2)
		{
			dmd_map_overlay ();
			dmd_clean_page_low ();
			font_render_string_center (&font_fireball, 64, 9, "LOCK BALL");
			font_render_string_left (&font_var5, 10, 24, "LEFT: NO");
			font_render_string_right (&font_var5, 118, 24, "RIGHT: YES");
			dmd_text_outline ();

			dmd_alloc_pair ();
			frame_draw (fno);
			dmd_overlay_outline ();
			dmd_show2 ();
			task_sleep (TIME_33MS);
		}
	}
	deff_exit ();
}
void prison_break_effect_deff(void) {
	U8 i = 0;
	U8 toggle = 0;
	for (;;) {
		i++;
		if (i % 5 == 0) if (++toggle >= 3) toggle = 0;//change TOGGLE once per n seconds
		dmd_alloc_pair_clean();
		//right side status display
		ll_score_draw_ball ();


		//left side display

			font_render_string_left (&font_halobold12, 1, 0, "BREAK");
			font_render_string_right (&font_halobold12, 99, 9, "OUT");

			if (ballsave_test_active()) {
				sprintf ("%d BALL SAVE", ballsave_get_timer());
			}
			else
			if (toggle == 1) 		sprintf ("%d SEC LEFT", prison_break_mode_timer);
		else if (toggle == 2)	sprintf ("%d HIT", prison_break_mode_shots_made);
		else if (toggle == 0)	sprintf ("SHOOT EVERYTHING");
		font_render_string_center (&font_var5, 50, DMD_MED_CY_BOTTOM_LINE + 3, sprintf_buffer);

		sprintf_score (prison_break_mode_score);
		font_render_string_center (&font_var5, 50, 28, sprintf_buffer);
		dmd_show_low ();
		task_sleep (TIME_1S);
	}//END OF ENDLESS LOOP
}//end of mode_effect_deff
Beispiel #5
0
void pb_test_draw (void)
{
	dmd_alloc_low_clean ();
	font_render_string_center (&font_mono5, 64, 0, "POWERBALL TEST");

	if (pb_location == PB_MISSING)
		sprintf ("LOST");
	else if (pb_location & PB_IN_LOCK)
		sprintf ("LOCK");
	else if (pb_location & PB_IN_TROUGH)
		sprintf ("TROUGH");
	else if (pb_location & PB_IN_GUMBALL)
		sprintf ("GUMBALL");
	else if (pb_location & PB_IN_PLAY)
		sprintf ("P.F.");
	else if (pb_location & PB_MAYBE_IN_PLAY)
		sprintf ("NOT SURE");
	else
		sprintf ("ERROR");
	font_render_string_left (&font_mono5, 0, 6, sprintf_buffer);

	if (pb_location & (PB_IN_LOCK | PB_IN_TROUGH))
	{
		sprintf ("POS. %d", pb_depth);
		font_render_string_right (&font_mono5, 127, 6, sprintf_buffer);
	}

	sprintf ("TROUGH SW. %s",
		switch_poll_logical (SW_TROUGH_PROXIMITY) ? "CLOSED" : "OPEN");
	font_render_string_left (&font_mono5, 0, 12, sprintf_buffer);

	sprintf ("SLOT SW. %s",
		switch_poll_logical (SW_SLOT_PROXIMITY) ? "CLOSED" : "OPEN");
	font_render_string_left (&font_mono5, 0, 18, sprintf_buffer);

	switch (pb_test_command)
	{
		case KICK_TROUGH: sprintf ("REL. TROUGH"); break;
		case KICK_LOCK: sprintf ("REL. LOCK"); break;
		case RELEASE_GUMBALL: sprintf ("REL. GUMBALL"); break;
		case LOAD_GUMBALL: sprintf ("LOAD GUMBALL"); break;
	}
	font_render_string_left (&font_mono5, 0, 24, sprintf_buffer);

	dmd_show_low ();
}
Beispiel #6
0
void sssmb_running_deff (void)
{
	U16 fno;
	for (;;)
	{

		for (fno = IMG_BOLT_TESLA_START; fno <= IMG_BOLT_TESLA_END; fno += 2)
		{
			dmd_alloc_pair_clean ();
			dmd_map_overlay ();
			dmd_clean_page_low ();

			font_render_string_left (&font_bitoutline, 1, 1, "SKILL");
			font_render_string_left (&font_quadrit, 54, 2, "MULTIBALL");
			sprintf_current_score ();
			font_render_string_center (&font_cowboy, 64, 16, sprintf_buffer);
	
			if (timer_find_gid (GID_SSSMB_DIVERT_DEBOUNCE))
			{
				sprintf ("SKILL SHOT SCORES JACKPOT");
			}
			else if (sssmb_ramps_to_divert == 0)
			{
				sprintf ("SHOOT LEFT RAMP NOW");
				}
			else if (sssmb_ramps_to_divert == 1)
			{
				sprintf ("1 RAMP FOR SKILL SHOT");
			}
			else
			{
				sprintf ("%d RAMPS FOR SKILL SHOT", sssmb_ramps_to_divert);
			}
			font_render_string_center (&font_var5, 64, 26, sprintf_buffer);
			dmd_text_outline ();
			dmd_alloc_pair ();
			frame_draw (fno);
			dmd_overlay_outline ();
			dmd_show2 ();
			task_sleep (TIME_66MS);
		}	
	}
}
Beispiel #7
0
static void rule_msg (const char *line1, const char *line2, const char *line3, const char *line4)
{
	dmd_alloc_pair_clean ();
	font_render_string_left (&font_fixed6, 2, 2, line1)
	font_render_string_center (&font_var5, 64, 15, line2)
	font_render_string_center (&font_var5, 64, 22, line3)
	font_render_string_center (&font_var5, 64, 29, line4)
	dmd_sched_transition (&trans_sequential_boxfade);
	dmd_show_low ();
}
Beispiel #8
0
void challenge_running_deff (void)
{
	bool flash = FALSE;
	while (in_live_game)
	{
		U8 time_minutes, time_seconds;
		time_minutes = 0;
		time_seconds = timed_game_timer;
		while (time_seconds >= 60)
		{
			time_minutes++;
			time_seconds -= 60;
		}

		dmd_alloc_low_clean ();
		font_render_string_center (&font_fixed6, 64, 7, "SHOOT");
		if (flash)
		{
			if (challenge_shot_1_active && challenge_shot_2_active)
			{
				sprintf("%s", challenge_shots[challenge_shot_1].shot_name);
				font_render_string_left (&font_var5, 8, 16, sprintf_buffer);
				sprintf("%s", challenge_shots[challenge_shot_2].shot_name);
				font_render_string_right (&font_var5, 120, 16, sprintf_buffer);
			}
			else if (challenge_shot_1_active)
			{
				sprintf("%s", challenge_shots[challenge_shot_1].shot_name);
				font_render_string_center (&font_var5, 64, 16, sprintf_buffer);
			}
			else if (challenge_shot_2_active)
			{
				sprintf("%s", challenge_shots[challenge_shot_2].shot_name);
				font_render_string_center (&font_var5, 64, 16, sprintf_buffer);
			}
			flash = FALSE;
		}
		else
		{
			flash = TRUE;
		}

		sprintf ("TIME: %d:%02d  SHOTS MADE: %d", time_minutes, time_seconds, shots_made);
		font_render_string_center (&font_var5, 64, 26, sprintf_buffer);
		dmd_show_low ();
		task_sleep (TIME_100MS);
		}
}
Beispiel #9
0
void vpoker_draw_deff (void)
{
	while (in_test || task_find_gid (GID_VPOKER))
	{
		if (score_update_required ())
		{
			dmd_alloc_low_clean ();
			sprintf("%s", vpoker_hand);
			font_render_string_left (&font_fixed10, 0, 9, sprintf_buffer);
			
			switch (current_state)
			{
				case VPOKER_FIRST_DEAL:
					break;
				case VPOKER_SECOND_DEAL:
					break;
				case VPOKER_SHOW_RESULT:
					break;
				case VPOKER_EXIT:
					break;
			}
			switch (vpoker_index)
			{
				/* Draw where the marker is */
				case 0:
					font_render_string_left (&font_fixed10, 0, 5, "+");
					break;
				case 1:
					font_render_string_left (&font_fixed10, 10, 5, "+");
					break;
				case 2:
					font_render_string_left (&font_fixed10, 20, 5, "+");
					break;
				case 3:
					font_render_string_left (&font_fixed10, 30, 5, "+");
					break;
				case 4:
					font_render_string_left (&font_fixed10, 40, 5, "+");
					break;
				case 5:
					font_render_string_left (&font_fixed10, 50, 5, "+");
					break;
			}
			dmd_show_low ();
			task_sleep (TIME_66MS);
		}
	}
	task_sleep (TIME_500MS);
	deff_exit ();
}
Beispiel #10
0
/*
 * Draw the constant part of the match animation once.
 */
static void
match_draw_scores (void)
{
	U8 n;

#if (MACHINE_DMD == 1)
	dmd_map_overlay ();
#endif
	dmd_clean_page_low ();
	font_render_string_right (&font_fixed6, 126, 1, "MATCH");

	for (n = 0; n < num_players; n++)
	{
		sprintf ("%2b", &scores[n][BYTES_PER_SCORE-1]);
		font_render_string_left (&font_mono5, 0, 6*n, sprintf_buffer);
	}
}
Beispiel #11
0
/** Display effect that runs during the extra ball buyin */
void buyin_offer_deff (void)
{
	U8 prev_timer;
	extern U8 buyin_offer_timer;

#if (MACHINE_DMD == 1)
	dmd_sched_transition (&trans_bitfade_slow);
#else
	seg_sched_transition (&seg_trans_fast_center_out);
#endif
	while (buyin_offer_timer > 0)
	{
		prev_timer = buyin_offer_timer;
		dmd_alloc_low_clean ();
		dmd_draw_border (dmd_low_buffer);
		font_render_string_center (&font_term6, 64, 5, "CONTINUE GAME");
#if (MACHINE_DMD == 1)
		sprintf ("%d", buyin_offer_timer);
		font_render_string_left (&font_mono5, 4, 3, sprintf_buffer);
		font_render_string_right (&font_mono5, 123, 3, sprintf_buffer);
		if (buyin_offer_timer % 2)
		{
			font_render_string_center (&font_bitmap8, 64, 16, "INSERT COINS");
			font_render_string_center (&font_bitmap8, 64, 26, "FOR EXTRA BALL");
		}
		else
		{
			font_render_string_center (&font_bitmap8, 64, 16, "THEN PRESS");
			font_render_string_center (&font_bitmap8, 64, 26, "BUY EXTRA BALL");
		}
#else
		sprintf ("%d SECS", buyin_offer_timer);
		seg_write_row_center (1, sprintf_buffer);
#endif
		dmd_show_low ();
		while (prev_timer == buyin_offer_timer)
			task_sleep (TIME_133MS);
	}
	task_sleep (TIME_1500MS);
	deff_exit ();
}
Beispiel #12
0
void huxley_effect_deff(void) {
	for (;;) {
		dmd_clean_page_low ();
		//right side status display
		ll_score_draw_ball ();

		//left side display
				sprintf_score(current_score);
				font_render_string_right (&font_var5, 98, 26, sprintf_buffer);
				font_render_string_center (&font_halobold12, 50, 5, "HUXLEY");
				if (ballsave_test_active()) {
					sprintf ("%d BALL SAVE", ballsave_get_timer());
					font_render_string_right (&font_var5, 88, 27, sprintf_buffer);
				}
				else
					font_render_string_right (&font_term6, 98, 14, "1 MILLION");

				sprintf ("%d", huxley_mode_timer);
				font_render_string_left (&font_halobold12, 1, 14, sprintf_buffer);
				dmd_show_low();
				task_sleep (TIME_1S);
	}//END OF ENDLESS LOOP
	deff_exit ();
}//end of mode_effect_deff
Beispiel #13
0
void bpt_display (void)
{
#if (MACHINE_DMD == 1)
	dmd_alloc_low_clean ();

	sprintf ("%p", bpt_mem_addr);
	font_render_string_left (&font_bitmap8, 0, 0, sprintf_buffer);

	sprintf ("%02X %02X %02X %02X",
		bpt_mem_addr[0], bpt_mem_addr[1], bpt_mem_addr[2], bpt_mem_addr[3]);
	font_render_string_left (&font_bitmap8, 40, 0, sprintf_buffer);

	if (new_fatal_error)
	{
		sprintf ("ERR %d GID %d",
			(U8)system_audits.lockup1_addr, (U8)system_audits.lockup1_pid_lef);
		font_render_string_left (&font_bitmap8, 0, 8, sprintf_buffer);
	}
	else if (task_getpid ())
	{

		sprintf ("PID %p GID %d", task_getpid (), task_getgid ());
		font_render_string_left (&font_bitmap8, 0, 8, sprintf_buffer);
		sprintf ("%02X%02X %02X", bpt_addr[0], bpt_addr[1]-2, bpt_addr[2]);
		font_render_string_left (&font_bitmap8, 0, 16, sprintf_buffer);
	}
	else
	{
		font_render_string_left (&font_bitmap8, 0, 8, "BREAK");
	}

	sprintf ("C%04lX", prev_log_callset);
	font_render_string_left (&font_bitmap8, 0, 24, sprintf_buffer);
	dmd_show_low ();
#endif
}
Beispiel #14
0
/****************************************************************************
 *
 * display effects
 *
 ****************************************************************************/
void combo_effect_deff(void) {
	U16 fno;
	if (IN_TEST) combo_counter++;

	sound_start (ST_EFFECT, SUBWAY2, SL_2S, SP_NORMAL);
	if (combo_counter % 2 == 0) {
		for (fno = IMG_COMBO1_START; fno <= IMG_COMBO1_END; fno += 2) {
					dmd_alloc_pair ();
					frame_draw(fno);
					dmd_show2 ();
					task_sleep (TIME_100MS);
		}//end of for loop
		sound_start (ST_EFFECT, SUBWAY2, SL_2S, SP_NORMAL);

		dmd_map_overlay ();
				dmd_clean_page_low ();
				if (flag_test (FLAG_IS_COMPUTER_ACTIVATED) ) sprintf ("COMPUTER READY");
				else 										 sprintf ("%d TO COMPUTER", combo_goal - combo_counter);
				font_render_string_center (&font_fixed6, DMD_MIDDLE_X, DMD_MED_CY_3, sprintf_buffer);

				sprintf ("%d", combo_counter);
				font_render_string_center (&font_fixed10, DMD_MIDDLE_X - 15, DMD_MED_CY_1 + 4, sprintf_buffer);

				dmd_text_outline ();
					dmd_alloc_pair ();
					frame_draw(IMG_COMBO1_END);
					dmd_overlay_outline ();
					dmd_show2 ();
	}//end f % 2
	else {
		for (fno = IMG_COMBO2_START; fno <= IMG_COMBO2_END; fno += 2) {
					dmd_alloc_pair ();
					frame_draw(fno);
					dmd_show2 ();
					task_sleep (TIME_100MS);
		}//end of for loop
		sound_start (ST_EFFECT, SUBWAY2, SL_2S, SP_NORMAL);

		dmd_map_overlay ();
				dmd_clean_page_low ();
				if (flag_test (FLAG_VIDEO_MODE_ENABLED) )	{
					font_render_string_center (&font_term6, DMD_MIDDLE_X - 20, DMD_MED_CY_2 + 6, "VIDEO MODE");
					font_render_string_center (&font_term6, DMD_MIDDLE_X + 45, DMD_MED_CY_3, "READY");
				}
				else {
					sprintf ("%d TO", combo_vm_goal - combo_counter);
					font_render_string_left (&font_term6, 5, DMD_MED_CY_2, sprintf_buffer);
					font_render_string_left (&font_term6, 50, DMD_MED_CY_3 - 5, "VIDEO MODE");
				}

				sprintf ("%d", combo_counter);
				font_render_string_center (&font_fixed10, DMD_MIDDLE_X - 20, DMD_MED_CY_1 + 2, sprintf_buffer);

				dmd_text_outline ();
					dmd_alloc_pair ();
					frame_draw(IMG_COMBO2_END);
					dmd_overlay_outline ();
					dmd_show2 ();
	}//end of else

	task_sleep_sec (2);
	deff_exit ();
}//end of deff
Beispiel #15
0
void burnin_draw (void)
{
	time_audit_format (&burnin_duration);
	font_render_string_left (&font_mono5, 4, 20, sprintf_buffer);
}