Esempio n. 1
0
static void drawPluginProgress(const Common::String &filename)
{
  ta_sync();
  void *mark = ta_txmark();
  const char *fn = filename.c_str();
  Label lab1, lab2, lab3;
  char buf[32];
  unsigned memleft = 0x8cf00000-((unsigned)sbrk(0));
  float ffree = memleft*(1.0/(16<<20));
  int fcol = (memleft < (1<<20)? 0xffff0000:
	      (memleft < (4<<20)? 0xffffff00: 0xff00ff00));
  snprintf(buf, sizeof(buf), "%dK free memory", memleft>>10);
  if (fn[0] == '/') fn++;
  lab1.create_texture("Loading plugins, please wait...");
  lab2.create_texture(fn);
  lab3.create_texture(buf);
  ta_begin_frame();
  draw_solid_quad(80.0, 270.0, 560.0, 300.0,
		  0xff808080, 0xff808080, 0xff808080, 0xff808080);
  draw_solid_quad(85.0, 275.0, 555.0, 295.0, 
		  0xff202020, 0xff202020, 0xff202020, 0xff202020);
  draw_solid_quad(85.0, 275.0, 85.0+470.0*ffree, 295.0,
		  fcol, fcol, fcol, fcol);
  ta_commit_end();
  lab1.draw(100.0, 150.0, 0xffffffff);
  lab2.draw(100.0, 190.0, 0xffaaffaa);
  lab3.draw(100.0, 230.0, 0xffffffff);
  ta_commit_frame();
  ta_sync();
  ta_txrelease(mark);
}
Esempio n. 2
0
void dlgabout()
{
	char work[32];
	const char str_auth[] = "Yui/Punyu/Studio Milmake";
	float x,y;

	tx_resetwork();
	icon.create_texture();
  
	milstr_ncpy(work, str_xmil, NELEMENTS(work));
	milstr_ncat(work, str_space, NELEMENTS(work));
	milstr_ncat(work, xmilversion, NELEMENTS(work));

	float base_width = MAX_MENU_SIZE;
	float base_height = (ui_font_height() + 5) * 3 + (32 + 5) + 6;

	float offx = ui_offx() + (ui_width() - base_width) / 2;
	float offy = ui_offy() + (ui_height() - base_height) / 2;

	tx_resetfont();
  
	scrnmng_update();
	draw_transquad(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, UI_TR, UI_TR, UI_TR, UI_TR);
	draw_transquad(offx, offy, offx + base_width, offy + base_height, UI_BS, UI_BS, UI_BS, UI_BS);

	x = offx + (base_width - strlen(mstr_about) * ui_font_width()) / 2;
	y = offy;
	ui_font_draw(x, y, 255, 255, 255, mstr_about);
	y += ui_font_height() + 5;

	draw_transquad(offx, y, offx + base_width, y + 1, MAKECOL32(128, 128, 128, 255),
				   MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255));

	y += 6;
  
	x = offx + (base_width - strlen(work) * ui_font_width()) / 2;
	ui_font_draw(x, y, 255, 255, 255, work);
	y += ui_font_height() + 5;

	x = offx + (base_width - 32) / 2;
	icon.drawIcon(x, y);
	y += 32 + 5;

	x = offx + (base_width - strlen(str_auth) * ui_font_width()) / 2;
	ui_font_draw(x, y, 255, 255, 255, str_auth);

	x = ui_offx();
	y = ui_height() - ui_font_height();
  
	ui_font_draw(x, y, 255, 255, 255, "B:Back");
    
	ta_commit_frame();
  
	for (;;) {
		uisys_task();

		if(ui_keypressed(JOY_B))
			break;
	}
}
Esempio n. 3
0
void waitForDisk()
{
  Label lab;
  int wasopen = 0;
  ta_sync();
  void *mark = ta_txmark();
  lab.create_texture("Please insert game CD.");
  //printf("waitForDisk, cdstate = %d\n", getCdState());
  for (;;) {
    int s = getCdState();
    if (s >= 6)
      wasopen = 1;
    if (s > 0 && s < 6 && wasopen) {
      cdfs_reinit();
      chdir("/");
      chdir("/");
      ta_sync();
      ta_txrelease(mark);
      return;
    }

    ta_begin_frame();

    drawBackground();

    ta_commit_end();

    lab.draw(166.0, 200.0, 0xffff2020);

    ta_commit_frame();

    int mousex = 0, mousey = 0;
    byte shiftFlags;

    int mask = getimask();
    setimask(15);
    handleInput(locked_get_pads(), mousex, mousey, shiftFlags);
    setimask(mask);
  }
}
Esempio n. 4
0
int snd_menu(Sound *menu, int num_items)
{
	float x,y;
	float base_width = MAX_MENU_SIZE;
	float base_height = ((menu[num_items-1].y + ui_font_height()) - menu[0].y);

	int menu_pos;
	char work[32];

	int max_menu = 0;

	base_height += ui_font_height() * 2;
	for (int i = 0; i < num_items; ++i) {
    
		switch (menu[i].type) {
		case DLGTYPE_RADIO:
		case DLGTYPE_CHECK:
		case DLGTYPE_SLIDER:
			++max_menu;
			break;
		}
	}

	int result = -1;
	int id = 0;
	int sel = 0;
#if 0  
	int max_val  = 0;
	int min_val = 0;
	int val_index = 0;
#endif  
	float offx = ui_offx() + (ui_width() - base_width) / 2;
	float offy = ui_offy() + (ui_height() - base_height) / 2;

	int fade = 128;
  
	for (;;) {
		uisys_task();
      
		if (ui_keyrepeat(JOY_UP)) {

			switch (result) {
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				break;
	
			default:
				if (--sel < 0)
					sel = max_menu - 1;
			}
      
		} else if (ui_keyrepeat(JOY_DOWN)) {
      
			switch (result) {
				
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				break;
	
			default:
				if (++sel > (max_menu - 1))
					sel = 0;
			}
		}
#if 0			
		else if (ui_keyrepeat(JOY_RIGHT) || ui_keyrepeat(JOY_RTRIGGER)) {
      
			switch (result) {
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				if (++val_index > max_val)
					val_index = max_val;
				break;
	
			default:
				if (++menu_index > 1) {
					menu_index = 1;
				} else {
					return 0;
				}
			}
		} else if (ui_keyrepeat(JOY_LEFT) || ui_keyrepeat(JOY_LTRIGGER)) {
      
			switch (result) {
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				if (--val_index < min_val)
					val_index = min_val;
				break;
	
			default:
				if (--menu_index < 0) {
					menu_index = 0;
				} else {
					return 0;
				}
			}
		}
#endif
    
		if (ui_keypressed(JOY_A)) {

			switch (id) {

			case DID_JOYPAD1:
				menudlg_setval(id, !menudlg_getval(id));
				break;
				
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				dlg_btn(id);
				break;

			}
		}
    
		if (ui_keypressed(JOY_B)) {

			switch (result) {
			case DID_PAD1_1A:
			case DID_PAD1_1B:
			case DID_PAD1_1C:
			case DID_PAD1_1D:
			case DID_PAD1_2A:
			case DID_PAD1_2B:
			case DID_PAD1_2C:
			case DID_PAD1_2D:
			case DID_PAD1_RA:
			case DID_PAD1_RB:
			case DID_PAD1_RC:
			case DID_PAD1_RD:
				result = -1;
				break;

			default:
				if (result < 0)
					return -1;
			}
		}

		if ((fade += 255/60) > 255) fade = 128;
      
		tx_resetfont();

		scrnmng_update();
		draw_transquad(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, UI_TR, UI_TR, UI_TR, UI_TR);
		draw_transquad(offx, offy, offx + base_width, offy + base_height, UI_BS, UI_BS, UI_BS, UI_BS);
      
		OEMSPRINTF(work, "%s ", mstr_snd);
		x = offx + (base_width - strlen(work) * ui_font_width()) / 2;
		y = offy;
		ui_font_draw(x, y, 255, 255, 255, work);

		y += ui_font_height();
		x = offx;

		draw_transquad(offx, y, offx + base_width, y + 1, MAKECOL32(128, 128, 128, 255),
					   MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255), MAKECOL32(128, 128, 128, 255));

		y += 6;

		menu_pos = 0;
		for (int i = 0; i < num_items; ++i) {
			
			int r = menu[i].r;
			int g = menu[i].g;
			int b = menu[i].b;
      
			switch (menu[i].type) {
	  
			case DLGTYPE_RADIO:
			case DLGTYPE_CHECK:
				if (menu_pos == sel) {

					draw_transquad(offx, y + menu[i].y, offx + base_width, y + menu[i].y + ui_font_height() + 5, MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade), MAKECOL32(255, 0, 0, fade));

					id = menu[i].id;
				}


				switch (menu[i].id) {
	    
				default:
					if (menudlg_getval(menu[i].id))
						draw_pointer(x + menu[i].x - ui_font_width(), y + menu[i].y, 1);
				}
				ui_font_draw(x + menu[i].x, y + menu[i].y, r, g, b, (const char *)menu[i].arg);
				++menu_pos;
				break;
			}
		}
    
		for (int i = 0; i < num_items; ++i) {
      
			switch (menu[i].type) {
	
			case DLGTYPE_FRAME:
			case DLGTYPE_LTEXT:
			case DLGTYPE_RTEXT:
				ui_font_draw(x + menu[i].x, y + menu[i].y, menu[i].r, menu[i].g, menu[i].b, (const char *)menu[i].arg);
				break;
			}
		}

		x = ui_offx();
		y = ui_height() - ui_font_height();
    
		switch (result) {
		default:
			ui_font_draw(x, y, 255, 255, 255, "A:Select B:Back");
		}
		
		ta_commit_frame();
	}
}
Esempio n. 5
0
int gameMenu(Game *games, int num_games)
{
  int top_game = 0, selector_pos = 0;
  int mousex = 0, mousey = 0;
  float y;

  if (!num_games)
    return -1;

  for (;;) {

    if (getCdState()>=6)
      return -1;

    ta_begin_frame();

    drawBackground();

    ta_commit_end();

    y = 40.0;
    for (int i=top_game, cnt=0; cnt<10 && i<num_games; i++, cnt++) {
      int pal = 48+(i&15);

      if (cnt == selector_pos)
	draw_trans_quad(100.0, y, 590.0, y+32.0,
			0x7000ff00, 0x7000ff00, 0x7000ff00, 0x7000ff00);

      games[i].icon.setPalette(pal);
      drawGameLabel(games[i], pal, 50.0, y, (cnt == selector_pos?
					     0xffff00 : 0xffffff));
      y += 40.0;
    }

    ta_commit_frame();

    byte shiftFlags;
    int event;

    int mask = getimask();
    setimask(15);
    event = handleInput(locked_get_pads(), mousex, mousey, shiftFlags);
    setimask(mask);

    if (event==-Common::EVENT_LBUTTONDOWN || event==Common::KEYCODE_RETURN || event==Common::KEYCODE_F5) {
      int selected_game = top_game + selector_pos;

      for (int fade=0; fade<=256; fade+=4) {

	ta_begin_frame();

	drawBackground();

	ta_commit_end();

	y = 40.0;

	if (fade < 256)
	  for (int i=top_game, cnt=0; cnt<10 && i<num_games;
	      i++, cnt++, y += 40.0)
	    if (cnt != selector_pos)
	      drawGameLabel(games[i], 48+(i&15), 50.0, y, 0xffffff, fade);

	y = (40.0/256.0 * (selector_pos + 1))*(256-fade) + 80.0/256.0*fade;
	float x = 50.0/256.0*(256-fade) + 160.0/256.0*fade;
	float scale = 1.0+9.0/256.0*fade;

	drawGameLabel(games[selected_game], 48+(selected_game&15), x, y,
		      0xffff00, 0, scale);

	ta_commit_frame();
      }
      return selected_game;
    }

    if (mousey>=16) {
      if (selector_pos + top_game + 1 < num_games)
	if (++selector_pos >= 10) {
	  --selector_pos;
	  ++top_game;
	}
      mousey -= 16;
    } else if (mousey<=-16) {
      if (selector_pos + top_game > 0)
	if (--selector_pos < 0) {
	  ++selector_pos;
	  --top_game;
	}
      mousey += 16;
    }
  }
}
Esempio n. 6
0
bool dcsys_task()
{
	enum {
		CMD_MENU = 1,
	};
	int cmd = 0;
  
	Event ev;
	static  unsigned int tick = 0;

	unsigned int tm = Timer() - tick;
	if (tm < USEC_TO_TIMER(1000000/60)) {
		return __dc_avail;
	}
  
	tick += tm;

	int x, y;

	int cJoy = 0;
	static int pJoy;
	static unsigned int repeatTime;

	if (__dc_avail) {

		dc_mouseaxis1 = 0;
		dc_mouseaxis2 = 0;

		while (PollEvent(ev)) {
      
			switch (ev.type) {
				
			case EVENT_KEYDOWN:
				switch (ev.key.keycode) {
				case KBD_S1: case KBD_S2:
					cmd = CMD_MENU;
					break;
	  
				default:
					dckbd_keydown(ev.key.keycode);
				}
				break;
	
			case EVENT_KEYUP:
				dckbd_keyup(ev.key.keycode);
				break;
	
			case EVENT_MOUSEMOTION:
				dc_mouseaxis1 += ev.motion.x;
				dc_mouseaxis2 += ev.motion.y;
				break;

			case EVENT_MOUSEBUTTONDOWN:
				switch (ev.button.button) {
				case EVENT_BUTTON_LEFT:
					mousemng_buttonevent(MOUSEMNG_LEFTDOWN);
					break;

				case EVENT_BUTTON_RIGHT:
					mousemng_buttonevent(MOUSEMNG_RIGHTDOWN);
					break;
				}
				break;
      
			case EVENT_MOUSEBUTTONUP:
				switch (ev.button.button) {
				case EVENT_BUTTON_LEFT:
					mousemng_buttonevent(MOUSEMNG_LEFTUP);
					break;

				case EVENT_BUTTON_RIGHT:
					mousemng_buttonevent(MOUSEMNG_RIGHTUP);
					break;
				}
				break;

			case EVENT_JOYAXISMOTION:
				x = 0;
				y = 0;
	
				if (ev.jaxis.axis == 0) {
					x = ev.jaxis.value;
				}
				if (ev.jaxis.axis == 1) {
					y = ev.jaxis.value;
				}

				dc_mouseaxis1 += x;
				dc_mouseaxis2 += y;
	  
				break;

			case EVENT_JOYBUTTONDOWN:

				if (ev.jbutton.button == JOY_START)
					cmd = CMD_MENU;
	
				if (ev.jbutton.button == JOY_RTRIGGER)
					__skbd_avail = !__skbd_avail;

				if (__skbd_avail && ev.jbutton.button == JOY_A)
					softkbddc_down();

				if (__skbd_avail && ev.jbutton.button == JOY_B)
					__use_bg = !__use_bg;
	
				if (__skbd_avail) {
					cJoy = ev.jbutton.button & 0xffff;
	  
				} else {
					switch (ev.jbutton.button) {

					case JOY_UP:
						dckbd_keydown(JOY1_UP);
						break;
	    
					case JOY_DOWN:
						dckbd_keydown(JOY1_DOWN);
						break;
	    
					case JOY_LEFT:
						dckbd_keydown(JOY1_LEFT);
						break;
	    
					case JOY_RIGHT:
						dckbd_keydown(JOY1_RIGHT);
						break;
	    
					case JOY_A:
						dckbd_keydown(JOY1_A);
						break;
	    
					case JOY_B:
						dckbd_keydown(JOY1_B);
						break;

					case JOY_X:
						mousemng_buttonevent(MOUSEMNG_LEFTDOWN);
						break;
	    
					case JOY_Y:
						mousemng_buttonevent(MOUSEMNG_RIGHTDOWN);
						break;
					}
				}
				break;
	
			case EVENT_JOYBUTTONUP:

				softkbddc_up();

				if (__skbd_avail) {

					pJoy = 0;
					repeatTime = 0;

				} else {
	  
					switch (ev.jbutton.button) {
	    
					case JOY_UP:
						dckbd_keyup(JOY1_UP);
						break;
	    
					case JOY_DOWN:
						dckbd_keyup(JOY1_DOWN);
						break;
	    
					case JOY_LEFT:
						dckbd_keyup(JOY1_LEFT);
						break;
	    
					case JOY_RIGHT:
						dckbd_keyup(JOY1_RIGHT);
						break;
	    
					case JOY_A:
						dckbd_keyup(JOY1_A);
						break;
	    
					case JOY_B:
						dckbd_keyup(JOY1_B);
						break;

					case JOY_X:
						mousemng_buttonevent(MOUSEMNG_LEFTUP);
						break;

					case JOY_Y:
						mousemng_buttonevent(MOUSEMNG_RIGHTUP);
						break;
					}
				}
				break;
	
			case EVENT_QUIT:
				__dc_avail = false;
				break;
			}
		}
	}


	if (__skbd_avail) {

		dc_joyinput = 0;

		int button = 0;
    
		if (cJoy) {
			repeatTime = Timer() + USEC_TO_TIMER(1000000/60*30);
			pJoy = cJoy;
			button = cJoy;
		} else if (repeatTime < Timer()) {

			button = pJoy;
			repeatTime = Timer() + USEC_TO_TIMER(1000000/60*10);
		}

		softkbddc_send(button);

	} else
		getJoyButton(JOYSTICKID1, &dc_joyinput);

	if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {
		initsave();
		sysmng_initialize();
	}

	switch (cmd) {
	case CMD_MENU:
		sysmenu_menuopen();
		break;
	}

	scrnmng_update();
	softkbddc_draw();
	ta_commit_frame();
  
	return __dc_avail;
}
Esempio n. 7
0
void display_progress(double i, double size)
{
	struct polygon_list mypoly;
	struct packed_colour_vertex_list myvertex;
	char str[16];
	float sx, sy;
	const unsigned int bar_w = 320;
	const unsigned int bar_h = 8;
	float x, y;

	tx_resetfont();
  
	scrnmng_update();
	draw_transquad(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, UI_TR, UI_TR, UI_TR, UI_TR);

	x = ui_offx() + 2 * ui_font_width();
	y = ui_offy() + (ui_height() - ui_font_height()+bar_h)/2;

	ui_font_draw(x, y - ui_font_height(), 255, 255, 255, "Loading, do not remove VMU!");
  
	sx = ui_offx() + (ui_width()-bar_w)/2;
	sy = y;

	draw_transquad(sx, sy, sx + bar_w, sy + bar_h, MAKECOL32(64, 64, 64, 128), MAKECOL32(64, 64, 64, 128), MAKECOL32(64, 64, 64, 128), MAKECOL32(64, 64, 64, 128));

	mypoly.cmd =
		TA_CMD_POLYGON|TA_CMD_POLYGON_TYPE_TRANSPARENT|TA_CMD_POLYGON_SUBLIST|
		TA_CMD_POLYGON_STRIPLENGTH_2|TA_CMD_POLYGON_GOURAUD_SHADING;
	mypoly.mode1 = TA_POLYMODE1_Z_ALWAYS|TA_POLYMODE1_NO_Z_UPDATE;
	mypoly.mode2 = TA_POLYMODE2_BLEND_SRC_ALPHA|TA_POLYMODE2_BLEND_DST_INVALPHA|
		TA_POLYMODE2_ENABLE_ALPHA|TA_POLYMODE2_FOG_DISABLED|TA_POLYMODE2_TEXTURE_MODULATE_ALPHA;
	mypoly.texture = 0;
	mypoly.alpha = mypoly.red = mypoly.green = mypoly.blue = 0;
	ta_commit_list(&mypoly);
	myvertex.cmd = TA_CMD_VERTEX;
	myvertex.x = sx;
	myvertex.y = sy;
	myvertex.z = 0.5;
	myvertex.colour = 0xff00e0e0;
	myvertex.ocolour = 0;
	ta_commit_list(&myvertex);

	myvertex.x = sx + bar_w * (1.0/size) * i;
	ta_commit_list(&myvertex);

	myvertex.x = sx;
	myvertex.y = sy + bar_h;
	ta_commit_list(&myvertex);

	myvertex.cmd |= TA_CMD_VERTEX_EOS;
	myvertex.x = sx + bar_w * (1.0/size) * i;
	ta_commit_list(&myvertex);
  
	sprintf(str, "%3.0f", (i/size) * 100);
  
	x = sx + (bar_w - 3 * ui_font_width()) / 2;
	y = sy + bar_h + 2;
	ui_font_draw(x, y, 255, 255, 255, str);
	x += 3 * ui_font_width();
	ui_font_draw(x, y, 255, 255, 255, "%");

	ta_commit_frame();
}