Beispiel #1
0
int main(void)
{
	VGA_Init();
  USART_Init();
	PS2_Init();
  ANSI_Init();

	while(1)
	{
		if(FIFO_ReadAvail((FIFO*)RxBuf))
			ANSI_FSM(Getc((FIFO*)RxBuf));

		if(FIFO_ReadAvail((FIFO*)PS2_Buf))
			PS2_Task();
		
		if(Cursor.Update)
			Cursor_Task();
		
	}
}
Beispiel #2
0
/*envia dato y comprueba su recepcion correcta, si no reenvia o resetea y reenvia*/
void PS2_send(unsigned char data){
	unsigned char ack_byte;
	PS2_write(data);
	PS2_read(&ack_byte);
	switch (ack_byte){
	case PS2_ACK: {
		break;
	}
	case PS2_RESEND: {
		PS2_send(data); 
		break;
	}
	case PS2_ERROR: {
		PS2_Init(); 
		PS2_send(data); 
		break;
	}
	default: break; 
	}	
}
/////////////////////////////////////////////////////////////
//                         MAIN                            //
/////////////////////////////////////////////////////////////
int main(int argc, char **argv)
{
	PS2_Init();

   audsrv_init();

	format.bits = 16;
	format.freq = 44100;
	format.channels = 2;
   audsrv_set_format(&format);

	guiFadeOut(4);
   DisplayIntroBox(APP_NAME);
	guiFadeIn(4);
	guiFadeOut(4);

	for ( int i = 0; i < 160*144; i++ )
      g_BitmapData[i] = 0;

   PS2_LoadButtonsConfig(ButtonsConfigPath);
   Load_CNF(ConfigPath);

   if ( SoundEnabled )
      audsrv_set_volume(MAX_VOLUME);
   else
      audsrv_set_volume(MIN_VOLUME);

   // Main Loop
   while ( true ) {
      g_SamplePos = 0;

      dwKeyPad1 = 0;
      dwKeyPad2 = 0;

      if ( !auto_ROM_flag ) {
         MenuBrowser();
      } else {
         // KarasQ: Here preselected ROM path is already
         // copied to g_FilePath (look function Load_CNF)
         auto_ROM_flag = 0;
      }

      int res = infogb_load_rom(g_FilePath);

      // KarasQ: display error and return to
      // browser if ROM is not loaded successfully
      if ( res < 1 ) {
         infogb_close();
      }

      switch ( res ) {
         case 0:
            DisplayMessageBox
            (
               "\nERROR!\n\n"
               "Could not load ROM\n"
               "Failed opening file\n"
               "File not found!",
               MSG_VOID
            );
            continue;
         case -1:
            DisplayMessageBox
            (
               "\nWARNING!\n\n"
               "Could not load ROM\n"
               "Unknown ROM type!",
               MSG_VOID
            );
            continue;
         case -2:
            DisplayMessageBox
            (
               "\nWARNING!\n\n"
               "Could not load ROM\n"
               "Unknown ROM size!",
               MSG_VOID
            );
            continue;
         case -3:
            DisplayMessageBox
            (
               "\nWARNING!\n\n"
               "Could not load ROM\n"
               "Unknown RAM size!",
               MSG_VOID
            );
            continue;
         case -4:
            DisplayMessageBox
            (
               "\nWARNING!\n\n"
               "File name of this ROM is longer\n"
               "than 32 characters! It's better\n"
               "to change it before playing!",
               MSG_VOID
            );
            continue;
         case -5:
            DisplayMessageBox
            (
               "\nERROR!\n\n"
               "Could not extract file archive\n",
               MSG_VOID
            );
            continue;
      }
      CDVD_Stop();

      infogb_init();

      gameboy_cpu_hardreset();
      gameboy_cpu_run();

      audsrv_stop_audio();

      infogb_close();
   }

	return 0;
}
Beispiel #4
0
/*
*********************************************************************************************************
*	函 数 名: Init_Mouse 
*	功能说明: 用于初始化鼠标	 
*	形    参:无			  
*	返 回 值: 返回0表示成功返回 否则没有成功
*********************************************************************************************************
*/	 
u8 Init_Mouse(void)
{
	u8 t;
			 
	PS2_Init();							     
	delay_ms(800);               /* 等待上电复位完成 */ 			 	 
	PS2_Status=CMDMODE;          /* 进入命令模式	 */
	
	/* 复位鼠标		 */
	t=PS2_Send_Cmd(PS_RESET);     
	if(t!=0)	return 1;
	t=PS2_Get_Byte();			  
    if(t!=0XFA) return 2;
	t=0;

	/* 等待复位完毕     */ 
	while((PS2_Status&0x80)==0)  
	{
		t++;
		delay_ms(10);      
		if(t>50)return 3;
	}

	PS2_Get_Byte();     		/* 得到0XAA    */
	PS2_Get_Byte();				/* 得到ID 0X00 */
					 
	/* 进入滚轮模式的特殊初始化序列 分别设置200,100,80采样率 */
	PS2_Send_Cmd(SET_SAMPLE_RATE);		/* 进入设置采样率 */
    if(PS2_Get_Byte()!=0XFA)return 4;	/* 传输失败 	  */  
	PS2_Send_Cmd(0XC8);					/* 采样率200      */
    if(PS2_Get_Byte()!=0XFA)return 5;	/* 传输失败       */

	PS2_Send_Cmd(SET_SAMPLE_RATE);		/* 进入设置采样率 */
    if(PS2_Get_Byte()!=0XFA)return 6;	/* 传输失败       */
	PS2_Send_Cmd(0X64);					/* 采样率100      */
    if(PS2_Get_Byte()!=0XFA)return 7;	/* 传输失败       */

	PS2_Send_Cmd(SET_SAMPLE_RATE);		/* 进入设置采样率 */
    if(PS2_Get_Byte()!=0XFA)return 8;	/* 传输失败       */
	PS2_Send_Cmd(0X50);				    /* 采样率80       */
    if(PS2_Get_Byte()!=0XFA)return 9;	/* 传输失败       */

	/* 序列完成 */		   
	PS2_Send_Cmd(GET_DEVICE_ID); 		/* 读取ID        */
    if(PS2_Get_Byte()!=0XFA)return 10;	/* 传输失败      */
	MOUSE_ID=PS2_Get_Byte();			/* 得到MOUSE ID  */
		 
	PS2_Send_Cmd(SET_SAMPLE_RATE);		/* 再次进入设置采样率  */
    if(PS2_Get_Byte()!=0XFA)return 11;	/* 传输失败  	*/
	PS2_Send_Cmd(0X0A);					/* 采样率10  	*/
    if(PS2_Get_Byte()!=0XFA)return 12;	/* 传输失败  	*/
				 
	PS2_Send_Cmd(GET_DEVICE_ID); 		/* 读取ID   	*/
    if(PS2_Get_Byte()!=0XFA)return 13;	/* 传输失败  	*/
	MOUSE_ID=PS2_Get_Byte();			/* 得到MOUSE ID	*/
		 
	PS2_Send_Cmd(SET_RESOLUTION);  		/* 设置分辨率 	*/
    if(PS2_Get_Byte()!=0XFA)return 14;	/* 传输失败   	*/
	   
 	PS2_Send_Cmd(0X03);					/* 8点/mm     	*/
    if(PS2_Get_Byte()!=0XFA)return 15;	/* 传输失败		*/ 

	PS2_Send_Cmd(SET_SCALING11);   		/* 设置缩放比率为1:1*/
    if(PS2_Get_Byte()!=0XFA)return 16;	/* 传输失败		*/ 
	  
 	PS2_Send_Cmd(SET_SAMPLE_RATE); 		/* 设置采样率	*/
    if(PS2_Get_Byte()!=0XFA)return 17;	/* 传输失败		*/   
 	PS2_Send_Cmd(0X28);					/* 40			*/
    if(PS2_Get_Byte()!=0XFA)return 18;	/* 传输失败		*/ 
	   
	PS2_Send_Cmd(EN_DATA_REPORT);   	/* 使能数据报告 */
    if(PS2_Get_Byte()!=0XFA)return 19;	/* 传输失败  	*/

	PS2_Status=MOUSE;					/* 进入鼠标模式 */
	return 0;							/* 无错误,初始化成功  */   
}
Beispiel #5
0
//初始化鼠标
//返回:0,初始化成功
//其他:错误代码
//CHECK OK 2010/5/2
u8 Init_Mouse(void)
{
	u8 t;		 
	PS2_Init();							     
	delay_ms(800);       //等待上电复位完成		 	 
	PS2_Status=CMDMODE;  //进入命令模式
	t=PS2_Send_Cmd(PS_RESET);  //复位鼠标		 
	if(t!=0)return 1;
	t=PS2_Get_Byte();			  
    if(t!=0XFA)return 2;
	t=0;
	while((PS2_Status&0x80)==0)//等待复位完毕 
	{
		t++;
		delay_ms(10);      
		if(t>50)return 3;
	}
	PS2_Get_Byte();//得到0XAA
	PS2_Get_Byte();//得到ID 0X00

	//进入滚轮模式的特殊初始化序列
	PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 4;//传输失败
	PS2_Send_Cmd(0XC8);//采样率200
    if(PS2_Get_Byte()!=0XFA)return 5;//传输失败
	PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 6;//传输失败
	PS2_Send_Cmd(0X64);//采样率100
    if(PS2_Get_Byte()!=0XFA)return 7;//传输失败
	PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 8;//传输失败
	PS2_Send_Cmd(0X50);//采样率80
    if(PS2_Get_Byte()!=0XFA)return 9;//传输失败
	//序列完成		   
	PS2_Send_Cmd(GET_DEVICE_ID); //读取ID
    if(PS2_Get_Byte()!=0XFA)return 10;//传输失败
	MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID	 

	PS2_Send_Cmd(SET_SAMPLE_RATE);//再次进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 11;//传输失败
	PS2_Send_Cmd(0X0A);//采样率10
    if(PS2_Get_Byte()!=0XFA)return 12;//传输失败		 
	PS2_Send_Cmd(GET_DEVICE_ID); //读取ID
    if(PS2_Get_Byte()!=0XFA)return 13;//传输失败
	MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID		 

	PS2_Send_Cmd(SET_RESOLUTION);  //设置分辨率
    if(PS2_Get_Byte()!=0XFA)return 14;//传输失败   
 	PS2_Send_Cmd(0X03);//8点/mm
    if(PS2_Get_Byte()!=0XFA)return 15;//传输失败 
	PS2_Send_Cmd(SET_SCALING11);   //设置缩放比率为1:1
    if(PS2_Get_Byte()!=0XFA)return 16;//传输失败 
	  
 	PS2_Send_Cmd(SET_SAMPLE_RATE); //设置采样率
    if(PS2_Get_Byte()!=0XFA)return 17;//传输失败   
 	PS2_Send_Cmd(0X28);//40
    if(PS2_Get_Byte()!=0XFA)return 18;//传输失败 
	   
	PS2_Send_Cmd(EN_DATA_REPORT);   //使能数据报告
    if(PS2_Get_Byte()!=0XFA)return 19;//传输失败

	PS2_Status=MOUSE;//进入鼠标模式
	return 0;//无错误,初始化成功   
}