コード例 #1
0
ファイル: osk.c プロジェクト: cwbowron/pspchess
void draw_osk()
{
    int middle_x = 240;

    int y = 230;
    int i;

    msxPutString(5,27,lawngreen,g_osk_buffer);
    msxPutCharAbsolute((strlen(g_osk_buffer))*6+5*8,27*8,cyan,'_');
    
    //pgFillBox(middle_x-16, y-4,middle_x+13, y+26, darkgray);
    pgDrawFrame(middle_x-16, y-4,middle_x+13, y+26, gray);
    pgDrawFrame(30,y-6,480-30,y+28,gray);
    
    for (i=-6;i<=6;i++)
    {
	int color = (i==0) ? cyan : gray;

	int px = middle_x + (i*30);

	msxPutCharAbsolute(
	    px-4,y+1,color,
	    get_osk_character(PSP_CTRL_TRIANGLE,g_osk_cursor+i));
	
	msxPutCharAbsolute(px+3,y+8,color,
			   get_osk_character(PSP_CTRL_CIRCLE,g_osk_cursor+i));
	msxPutCharAbsolute(px-4,y+15,color,
			   get_osk_character(PSP_CTRL_CROSS,g_osk_cursor+i));
	msxPutCharAbsolute(px-11,y+8,color,
			   get_osk_character(PSP_CTRL_SQUARE,g_osk_cursor+i));
    }
}
コード例 #2
0
ファイル: psp_ui.c プロジェクト: phoe-nix/s9xTYLmecm_mod
int msgBoxLinesRaw(const char *msg,int rev_line) {
	unsigned int len,width;
	unsigned char c;
	char str[256];
	int i,j,x,y,lines,ret;

	if (!msg) return -1;
	if (!msg[0]) return -1;

	pgCopyScreen();

	lines=1;
	j=0;
	len=0;
	width=0;
	while ((c=msg[len])) {
		if (((c>=0x80) && (c<0xa0)) || (c>=0xe0)) {			
			len++;
		} else {
			if (c=='\n') {
				lines++;			
				if (width<(len-j)) width=len-j;
				j=len+1;
			}
		}
		len++;
	}
	if (width<(len-j)) width=len-j;
	if (!width) width=strlen(msg);

	y=(272-lines*12)/2;
	x=(480-width*6)/2;

	pgFillBox(x-12-1,y-6-1,x+width*6+12+1,y+lines*12+6,BOX_COLOR);
	pgDrawFrame(x-12,y-6,x+width*6+12,y+lines*12+6-1,FRAME_COLOR);

	len=0;
	for (i=0;i<lines;i++){
		j=0;
		while ((c=msg[len])) {
			if (((c>=0x80) && (c<0xa0)) || (c>=0xe0)) {
				str[j++]=msg[len++];
			} else {
				if (c=='\n') break;
			}
			str[j++]=msg[len++];
		}
		if (msg[len]=='\n') len++;
		str[j]=0;
		if (i==rev_line) {
			width=mh_length(str);
			x=(480-width)>>1;
			pgFillBox(x-1,y-1,x+width+1,y+12-1,0);
			pgDrawFrame(x-1,y-1,x+width+1,y+12-1,7<<10);
			mh_printCenter(y,str,28<<5);
		}
		else mh_printCenter(y,str,TEXT_COLOR);
コード例 #3
0
ファイル: psp_ui.c プロジェクト: phoe-nix/s9xTYLmecm_mod
////////////////////////////////////////////////////////////////////////////////////////
// Multiple lines message box
////////////////////////////////////////////////////////////////////////////////////////
int msgBoxLines(const char *msg,int delay_vblank) {
	int len,width;
	unsigned char c;
	char str[256];
	int i,j,x,y,lines,ret;
	
	if (!msg) return -1;
  if (!(msg[0])) return -1;
	
	pgCopyScreen();
	
	lines=1;	
	j=0;
	len=0;
	width=0;
	while ((c=msg[len])) {
		if (((c>=0x80) && (c<0xa0)) || (c>=0xe0)) {
			len++;
		} else {
			if (c=='\n') {
				lines++;			
				if (width<(len-j)) width=len-j;
				j=len+1;
			}
		}
		len++;
	}	
	if (width<(len-j)) width=len-j;
	if (!width) width=strlen(msg);
	
	y=(272-lines*12)/2;
	x=(480-width*6)/2;
	
	pgFillBox(x-12-1,y-6-1,x+width*6+12+1,y+lines*12+6,BOX_COLOR);
	pgDrawFrame(x-12,y-6,x+width*6+12,y+lines*12+6-1,FRAME_COLOR);
	
	len=0;
	for (i=0;i<lines;i++){
		j=0;
		while ((c=msg[len])) {
			if (((c>=0x80) && (c<0xa0)) || (c>=0xe0)) {
				str[j++]=msg[len++];
			} else {
				if (c=='\n') break;
			}
			str[j++]=msg[len++];
		}
		if (msg[len]=='\n') len++;
		str[j]=0;
		mh_printCenter(y,str,TEXT_COLOR);
		ret=y;
		y+=12;
	}


	pgScreenFlipV();
	if (delay_vblank>0) pgWaitVn(delay_vblank);
	return ret;
}
コード例 #4
0
ファイル: psp_ui.c プロジェクト: phoe-nix/s9xTYLmecm_mod
////////////////////////////////////////////////////////////////////////////////////////
// Message box
////////////////////////////////////////////////////////////////////////////////////////
void msgBox(const char *msg,int delay_vblank) {
	int len;
	char str[60];
	
	pgCopyScreen();
	
	memcpy(str,msg,50);
	str[50]=0;
	len=strlen(msg);
	if (len>=50) {
		str[50-3]=str[50-2]=str[50-1]='.';
		len=49;
	}
	len*=8;

	pgFillBox(240-len/2-20-1,136-12-1,240+len/2+20+1,136+18+1,BOX_COLOR);
	pgDrawFrame(240-len/2-20,136-12,240+len/2+20,136+18,FRAME_COLOR);

	pgPrintCenter(17,TEXT_COLOR,str);

	pgScreenFlipV();
	if (delay_vblank<=0) delay_vblank=1;
	pgWaitVn(delay_vblank);
}
コード例 #5
0
ファイル: os9xZ_openspc.cpp プロジェクト: BASLQC/snes9xTYL
void OSPC_Play(char *fname,int release,int vol) {
	  u16 *menu_bg;	  
		u16 *dst,*src;
    int i,j,pollcpt;    
    char str[256];    
    char *emulator[3]={"Unknown","Zsnes","Snes9x"};
    uint8 *scr;
   
    OSPC_Init();

    if (i=OSPC_Load(fname))
    {
    	sprintf(str,"Error at SPC loading, code : %d",i);
    	msgBoxLines(str,60);
    	//gp32_pause();
    	//GpAppExit();
    	return;
    }
     

	OSPC_id=OSPC_GetID666(spc_data);
	
  OSPC_sound_fd = sceAudioChReserve( -1, 1024, 0 );
  OSPC_exit=0;
  OSPC_volume=vol;
  OSPC_thread = sceKernelCreateThread( "OSPC Thread", (SceKernelThreadEntry)OSPC_PlayThread, 0x8, 256*1024, 0, 0 );    
  if (OSPC_thread<0) {
  	msgBoxLines("Cannot create OSPC playback thread",60);
  } else {
  	//init start time
		scePowerSetClockFrequency(266,266,133);
		sceKernelLibcGettimeofday( &OSPC_start_time, 0 );
  	
  	sceKernelStartThread( OSPC_thread, 0, 0 );
  	
  	if (release) return;  		  		  			
  	//init bg
  	menu_bg=(u16*)malloc_64(480*272*2);
		dst=menu_bg;
		show_background(bg_img_mul,(os9x_lowbat?0x600000:0));	
		for (i=0;i<272;i++) {
			src = (u16*)pgGetVramAddr(0,i);						
			memcpy(dst,src,480*2);
			dst+=480;
		}
		//init fx
		fx_init();  		  			
  	for (;;) {
  		//show bg
  		OSPC_show_bg(menu_bg);
  		//show bg fx
  		fx_main(pgGetVramAddr(0,0));
  		
   		//batt infos
  		show_batteryinfo();
  		//music info
  		//draw frame
  		pgDrawFrame(14,14,20+230+5+1,75+1,12|(12<<5)|(12<<10));
  		pgDrawFrame(13,13,20+230+5+2,75+2,30|(30<<5)|(30<<10));
  		pgDrawFrame(12,12,20+230+5+3,75+3,12|(12<<5)|(12<<10));
  		pgFillBoxHalfer(15,15,20+230+5,75);
  		//
  		if (strlen(OSPC_id->gametitle)) sprintf(str,"Game : %s",OSPC_id->gametitle);
  		else sprintf(str,"Game : unknown");
  		mh_print(20,20,(char*)str,30|(30<<5)|(30<<10));
  		
  		if (strlen(OSPC_id->songname)) sprintf(str,"Song : %s",OSPC_id->songname);
  		else sprintf(str,"Song : unknown");  			
  		mh_print(20,30,(char*)str,30|(30<<5)|(30<<10));
  		
  		if (strlen(OSPC_id->dumper)) sprintf(str,"Dumper : %s",OSPC_id->dumper);
  		else sprintf(str,"Dumper : unknown");
  		mh_print(20,40,(char*)str,30|(30<<5)|(30<<10));
  		
  		if (strlen(OSPC_id->comments)) sprintf(str,"Comments : %s",OSPC_id->comments);
  		else sprintf(str,"Comments : unknown");
  		mh_print(20,50,(char*)str,30|(30<<5)|(30<<10));
  		
  		if (strlen(OSPC_id->author)) sprintf(str,"Author : %s",OSPC_id->author);
  		else sprintf(str,"Author : unknown");
  		mh_print(20,60,(char*)str,30|(30<<5)|(30<<10));
			//time infos
			//draw frame
			//draw frame
  		pgDrawFrame(14,94,20+65+5+1,116,8|(8<<5)|(16<<10));
  		pgDrawFrame(13,93,20+65+5+2,117,28|(28<<5)|(31<<10));
  		pgDrawFrame(12,92,20+65+5+3,118,8|(8<<5)|(16<<10));
			pgFillBoxHalfer(15,95,20+65+5,115);
			sceKernelLibcGettimeofday( &OSPC_cur_time, 0 );
			i=(OSPC_cur_time.tv_sec-OSPC_start_time.tv_sec)+(OSPC_cur_time.tv_usec-OSPC_start_time.tv_usec)/1000000;
  		sprintf(str,"%2d%c%.2d / %2d:%.2d",i/60,((i&1)?':':' '),i%60,OSPC_id->playtime/60,OSPC_id->playtime%60);
  		mh_print(20,100,(char*)str,(20)|(31<<5)|(18<<10));
  		  		
  		if (get_pad()) break;
  			
  		pgScreenFlip();
  	}
  	OSPC_exit=1;  	
  	sceKernelWaitThreadEnd( OSPC_thread, NULL );
		sceKernelDeleteThread( OSPC_thread );
		OSPC_thread=-1;
		
		free(menu_bg);
		fx_close();
  }    
  sceAudioChRelease( OSPC_sound_fd );
  OSPC_Stop();            
  OSPC_Close();    
  if (OSPC_id) free(OSPC_id);
}