void Capture_XY(void) { //u32 uXDat = 0; //u32 uYDat = 0; UART_Printf("\n\n[ADCTS touch screen Tracking test.]\n"); ADCTS_Init(); g_oADCTSInform.ucTouchStatus = ADCTS_TOUCH_INIT; ADC_InitADCCON(); ADCTS_SetDelay(50000); ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); Delay(10000); INTC_SetVectAddr(NUM_PENDNUP, ADCTS_ISR); INTC_Enable(NUM_PENDNUP); UART_Printf("\nPress any key to exit!!!\n"); UART_Printf("\nStylus Down, please...... \n"); // while(!GetKey()) // { if (g_oADCTSInform.ucTouchStatus == ADCTS_TOUCH_DOWN) { while( ADCTS_GetXPStylusIntState() == STYLUS_DOWN ) { ADC_InitADCCON(); ADCTS_SetMeasureMode(eADCTS_MEASURE_AUTO_SEQ); ADC_EnableStart(ENABLE); while(! (ADC_IsAfterStartup() )) ; // Wait for begin sampling while (! (ADC_IsEOCFlag())); // Wait for the EOC uXDat = ADCTS_GetXPData(); uYDat = ADCTS_GetYPData(); UART_Printf("X : %f, Y : %f\n",uXDat,uYDat); ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); ADCTS_SetStylusDetectMode(STYLUS_UP); Delay(300); } } // else if (g_oADCTSInform.ucTouchStatus == ADCTS_TOUCH_UP) // { // if ( ADCTS_GetXPStylusIntState() == STYLUS_UP ) // { // ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); // } // } // } // INTC_Disable(NUM_PENDNUP); UART_Printf("\n\n[ADCTS touch screen Tracking test End.]\n"); }
////////// // Function Name : Isr_UsbOtg // Function Description : USB OTG ISR // Input : NONE // Output : NONE // Version : void __irq Isr_UsbOtg(void) { INTC_Disable(NUM_OTG); OTGDEV_HandleEvent(); INTC_Enable(NUM_OTG); INTC_ClearVectAddr(); }
////////// // Function Name : IrDA_Fifo_Tx // Function Description : This function select FIR/MIR mode and Interrupt/DMA mode to test IrDA FIFO Tx // Input : NONE // Output : NONE // Version : v0.1 void IrDA_Fifo_Tx(void) { s32 iMode; s32 sSelect; s32 sClk; u8 cSelPort; UART_Printf("Which Port do you want to use?\n"); UART_Printf("Port 2, 3 : "); cSelPort = (u8)UART_GetIntNum(); if(cSelPort <2 || cSelPort >3) cSelPort = 2; UART_Printf("\nSelect Operation Clock Source 1. Ext_48Mhz 2.MPLL 3.EPLL : \n" ); sClk = UART_GetIntNum(); IrDA_ClkSrc((eIrDA_ClkSrc)sClk); IrDA_SetPort(cSelPort); UART_Printf("\nSelect transfering mode 1. FIR(D) 2. MIR full 3. MIR half : \n"); iMode = UART_GetIntNum() - 1; if (iMode == -2) iMode = 0; UART_Printf("IrDA Interrupt Tx Test\n"); UART_Printf("Select control mode : 1. Interrupt(D) 2. DMA\n"); sSelect = UART_GetIntNum(); if(sSelect == -1) sSelect = 1; if(sSelect == 2) { IrDA_IntClear(); Test_Irda_Fifo_Dma_Tx(iMode, PREAMBLE_VALUE, STARTFLAG_VALUE, TXFL_DMAVALUE, TXTR_DMAVALUE); } else { // Register IrDA ISR INTC_SetVectAddr(NUM_IRDA,Isr_IrDA_Int_Tx); INTC_Enable(NUM_IRDA); IrDA_IntClear(); Irda_Fifo_Int_Tx(iMode, PREAMBLE_VALUE, STARTFLAG_VALUE, TXFL_VALUE, TXTR_VALUE); } IrDA_Reset(); IrDA_ReturnPort(); }
void TIMER_OSREQUEST(void) { int i; unsigned long *p; unsigned long tv; S3C64XX_INTERRUPT *const interrupt0 = (S3C64XX_INTERRUPT *)0x71200000; S3C64XX_INTERRUPT *const interrupt1 = (S3C64XX_INTERRUPT *)0x71300000; S3C64XX_TIMERS *const timers = (S3C64XX_TIMERS *)0x7F006000; S3C64XX_GPN *const gpn = (S3C64XX_GPN *)0x7f008830; S3C64XX_EINT0 *const eint0 = (S3C64XX_EINT0 *)0x7f008900; #if 0 p = (unsigned long *)0x71200100; for(i=0;i<32;i++) { *p = (unsigned long)(__ENTRY + 0x18); p++ ; } p = (unsigned long *)0x71300100; for(i=0;i<32;i++) { *p = (unsigned long)(__ENTRY+0x18); p++; } gpn->GPNCON = 0xaaa; gpn->GPNPUD = 0xaaa; /*0 1 2 3 up pull*/ eint0->CON0 = 0x444; eint0->FLTCON0= 0xcfcfcfcf; eint0->MASK = 0xffffffc0; interrupt0->INTSELECT = 0x00000000; interrupt1->INTSELECT = 0x00000000; #endif // timers->TCFG0 = 0x0f00; //tv = get_PCLK() / (2 * 16 * 100); //timers->TCNTB4 = tv; //0x512d; #define TCON_4_AUTO (1 << 22) #define TCON_4_UPDATE (1 << 21) #define TCON_4_ONOFF (1 << 20) #define COUNT_4_ON (TCON_4_ONOFF*1) #define _ISR_STARTADDRESS 0xc7ff7e00 #define pISR_TIMER4 (*(unsigned *)(_ISR_STARTADDRESS+0x90)) /* auto load, manual update of Timer 4 */ // timers->TCON = (timers->TCON & ~0x00700000) | TCON_4_AUTO | TCON_4_UPDATE; /* auto load, start Timer 4 */ // timers->TCON = (timers->TCON & ~0x00700000) | TCON_4_AUTO | COUNT_4_ON; // pISR_TIMER4 = (unsigned)Isr_TIMER4; // 打开TIMER4中断允许 // timers->CSTAT |= 0x10; // interrupt0->INTENABLE |= (1<<28); // enable timer4 // interrupt0->INTENABLE |= (3 << 0); // enable vic0_int0 vic0_int1 // g_uIntCounter4 = 0; #if 1 PWM_stopAll(); // stop timers g_uIntCounter4 = 0; // pISR_TIMER4 = (unsigned)Isr_TIMER4; INTC_SetVectAddr(NUM_TIMER4,Isr_TIMER4); INTC_Enable(NUM_TIMER4); PWM_Select(4,255,0,30000,15000,0,0,0,1,0,1); #endif // INTC_Disable(NUM_TIMER0); }
////////// // Function Name : EintSW_Test // Function Description : SMDK6410 EINT SW Test // Input : None // Output : None // Version : v0.1 void EintSW_Test(void) { u32 usel; u32 uEintNo, uFltWidth ; u32 uIntType, uFltType; UART_Printf("[External Interrupt Test ]\n"); UART_Printf("\nSelect EINT SW : 0:EINT9, 1:EINT10, 2:EINT11 : "); usel=UART_GetIntNum(); UART_Printf("\n"); GPIO_Init(); switch(usel) { case 0: UART_Printf("Selected EINT9 SW..... \n"); uEintNo = 9; GPIO_EINT0ClrPend(uEintNo); INTC_SetVectAddr(NUM_EINT1, Isr_Eint9); // NUM_EINT1 : Eint[11:4] INTC_Enable(NUM_EINT1); break; case 1: UART_Printf("Selected EINT10 SW ..... \n"); uEintNo = 10; GPIO_EINT0ClrPend(uEintNo); INTC_SetVectAddr(NUM_EINT1, Isr_Eint10); // NUM_EINT1 : Eint[11:4] INTC_Enable(NUM_EINT1); break; case 2: UART_Printf("Selected EINT11 SW ..... \n"); uEintNo = 11; GPIO_EINT0ClrPend(uEintNo); INTC_SetVectAddr(NUM_EINT1, Isr_Eint11); // NUM_EINT1 : Eint[11:4] INTC_Enable(NUM_EINT1); break; default : Assert(0); } UART_Printf("\nSelect Int. Type : 0:Low Level, 1:High Level, 2:Falling Edge, 3:Rising Edge, 4:Both Edge : "); usel=UART_GetIntNum(); UART_Printf("\n"); switch(usel) { case 0: uIntType= Low_Level; break; case 1: uIntType= High_Level; break; case 2: uIntType= Falling_Edge; break; case 3: uIntType=Rising_Edge; break; case 4: uIntType=Both_Edge; break; default : Assert(0); } UART_Printf("\nSelect Filter Type : 0:Filter Disable, 1: Delay Filter, 2:Digital Filter : "); usel=UART_GetIntNum(); UART_Printf("\n"); switch(usel) { case 0: uFltType= eDisFLT; break; case 1: uFltType= eDLYFLT; break; case 2: uFltType= eDIGFLT; UART_Printf("\nEnter Filter Width [1~0x3F] : "); uFltWidth = UART_GetIntNum(); UART_Printf("\n"); break; default : Assert(0); } GPIO_SetEint0(uEintNo, uIntType, (FLT_eTYPE)uFltType, uFltWidth); GPIO_EINT0DisMask(uEintNo); g_IntCnt = 0; UART_Printf("Press the EINT buttons or Press any key to exit.\n"); UART_Getc(); UART_Printf("EINT interrupt is occurred %d.\n", g_IntCnt); GPIO_EINT0EnMask(uEintNo); INTC_Disable(NUM_EINT1); }
int Transform(void) { unsigned int nNumOfVertices; unsigned int nNumofData; //unsigned int ConstFloatAddr; bool bSwapBackBuffer = false; unsigned int nNumTrisCube = 12; unsigned int nNumAttributesCube = 12; FGL_TexUnitParams tuParams; Matrix4 matMV, matProj, matMVP; //float fXAng = 0.0f; // Initial Angle float fXAng = 45.0f; float fYAng = 45.0f; float fX=0, fY=0; #if 1 // touch UART_Printf("\n\n[ADCTS touch screen Tracking test.]\n"); ADCTS_Init(); g_oADCTSInform.ucTouchStatus = ADCTS_TOUCH_INIT; ADC_InitADCCON(); ADCTS_SetDelay(50000); ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); Delay(10000); INTC_SetVectAddr(NUM_PENDNUP, ADCTS_ISR); INTC_Enable(NUM_PENDNUP); UART_Printf("\nPress any key to exit!!!\n"); UART_Printf("\nStylus Down, please...... \n"); ADC_InitADCCON(); ADCTS_SetMeasureMode(eADCTS_MEASURE_AUTO_SEQ); ADC_EnableStart(ENABLE); if (g_oADCTSInform.ucTouchStatus == ADCTS_TOUCH_DOWN) { while( ADCTS_GetXPStylusIntState() == STYLUS_DOWN ) { ADC_InitADCCON(); ADCTS_SetMeasureMode(eADCTS_MEASURE_AUTO_SEQ); ADC_EnableStart(ENABLE); while(! (ADC_IsAfterStartup() )) ; // Wait for begin sampling while (! (ADC_IsEOCFlag())); // Wait for the EOC uXDat = ADCTS_GetXPData(); uYDat = ADCTS_GetYPData(); UART_Printf("a/d X : %f, a/d Y : %f\n",uXDat,uYDat); ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); ADCTS_SetStylusDetectMode(STYLUS_UP); Delay(300); } } // else if (g_oADCTSInform.ucTouchStatus == ADCTS_TOUCH_UP) // { // if ( ADCTS_GetXPStylusIntState() == STYLUS_UP ) // { // ADCTS_SetMeasureMode(eADCTS_MEASURE_FOR_STYLUS); // } // } #endif float Cube_Data[] = { // x y z w r g b a s t r q // FRONT -0.3f, -0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 1.f, 1.f, 0.f, 1.f, -0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 1.f, // BACK -0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, 0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, // LEFT -0.3f, -0.3f, 0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, 0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, -0.3f, -0.3f, -0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, 0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, -0.3f, 0.3f, -0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, -0.3f, -0.3f, -0.3f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, // RIGHT 0.3f, -0.3f, -0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.3f, 0.3f, -0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.3f, 0.3f, -0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, 0.3f, 0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, // TOP -0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, -0.3f, 0.3f, -0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.3f, 0.3f, 0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.3f, 0.3f, -0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, -0.3f, 0.3f, -0.3f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, // BOTTOM -0.3f, -0.3f, 0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 1.f, -0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, -0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, -0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 0.3f, -0.3f, 0.3f, 1.f, 0.f, 1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f }; matProj.SetAsPerspectiveMatrix(60, 800./480., 0.1, 100); UART_Printf("Transform Demo Test~~~\n"); if (fglLoadVShader(Transform_vsa) != FGL_ERR_NO_ERROR) { return ERROR; } if (fglLoadPShader(Transform_psa) != FGL_ERR_NO_ERROR) { return ERROR; } #if 0 Matrix4 matMVP(1.707107f, 0.0f, 1.707107f, 0.0f, 1.207107f, 1.707107f, -1.207107f, 0.0f, 0.501001f, -0.708522f, -0.501001f, 1.302803f, 0.5f, -0.707107f, -0.5f, 1.5f); fglWriteVertexShaderConstFloat(0, 16, matMVP.m[0]); #endif drvsys_clear_buf((unsigned int*)FIMG_DEPTH_BUFFER, CLEAR_SCREEN_SIZE, 0xFFFFFFFF); drvsys_clear_buf((unsigned int*)FIMG_COLOR_BUFFER, CLEAR_SCREEN_SIZE, 0x0); fglFlush(FGL_PIPESTATE_ALL); // Pipeline status fglSetVShaderAttribTable(FGL_OUTPUT_ATTRIB_IDX0, 0x02020100); fglSetVShaderAttribTable(FGL_OUTPUT_ATTRIB_IDX1, 0x07060504); fglSetVShaderAttribTable(FGL_OUTPUT_ATTRIB_IDX2, 0x0B0A0908); fglVSSetAttribNum(3); fglPSSetAttributeNum(2); // Raster engine SFR set fglSetFaceCullControl(FGL_TRUE, FGL_FALSE/*CCW*/, FGL_FACE_BACK); //FGL_DPFAPI( fglSetLODControl(0x0000003F) ); fglSetLODRegister(FGL_LODCOEFF_ENABLE_ALL, FGL_LODCOEFF_ENABLE_ALL, FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_DISABLE); // Per-fragment Unit SFR set fglSetZBufBaseAddr(FIMG_DEPTH_BUFFER); fglSetDepthParams(FGL_COMP_LESS); fglEnablePerFragUnit(FGL_PF_DEPTH, FGL_TRUE); // Primitive Engine SRF Set FGL_Vertex Vtx; Vtx.prim = FGL_PRIM_TRIANGLES; Vtx.enablePointSize = FGL_FALSE; Vtx.numVSOut = 2; Vtx.shadeModel = FGL_SHADING_SMOOTH; Vtx.colorAttribIdx = 0; fglSetVertex(&Vtx); // Vertex context register // Texture Unit SFR Setting tuParams.eType = FGL_TEX_2D; tuParams.eColorkey = FGL_CKEY_DISABLE; tuParams.bUseExpansion = FGL_FALSE; tuParams.ePaletteFormat = FGL_PALETTE_ARGB8888; tuParams.eFormat = FGL_TEXEL_ARGB1555; tuParams.eUMode = FGL_TEX_WRAP_REPEAT; tuParams.eVMode = FGL_TEX_WRAP_REPEAT; tuParams.bIsNonparametric = FGL_FALSE; tuParams.bUseMagFilter = FGL_TRUE; tuParams.bUseMinFilter = FGL_TRUE; //tuParams.bUseMinFilter = FGL_FALSE; tuParams.eMipMapFilter = FGL_FILTER_LINEAR; tuParams.uUSize = 256; tuParams.uVSize = 256; tuParams.uPSize = 1; fglSetTexUnitParams(0, &tuParams); fglSetTexBaseAddr(0, FIMG_TEXTURE_MEMORY); // Host Interface SFR Set FGL_HInterface HInterface; HInterface.enableAutoInc = FGL_TRUE; HInterface.enableVtxBuffer = FGL_FALSE; HInterface.enableVtxCache = FGL_FALSE; HInterface.idxType = FGL_INDEX_DATA_UINT; HInterface.numVSOut = 3; fglSetHInterface(&HInterface); FGL_Attribute HIAttr; HIAttr.bEndFlag = FGL_FALSE; HIAttr.type = FGL_ATTRIB_DATA_FLOAT; HIAttr.numComp = 4; HIAttr.srcW = FGL_ATTRIB_ORDER_4TH; HIAttr.srcZ = FGL_ATTRIB_ORDER_3RD; HIAttr.srcY = FGL_ATTRIB_ORDER_2ND; HIAttr.srcX = FGL_ATTRIB_ORDER_1ST; fglSetAttribute(0, &HIAttr); fglSetAttribute(1, &HIAttr); HIAttr.bEndFlag = FGL_TRUE; fglSetAttribute(2, &HIAttr); nNumOfVertices = nNumTrisCube * 3; nNumofData = nNumAttributesCube * nNumOfVertices; //while(1) while(GetKey() == 0) { matMV.LoadIdentity(); matMVP.LoadIdentity(); matMV.Rotate(1,0,0,fXAng); matMV.Rotate(0,1,0,fYAng); //matMV.Translate(0, 0, -1.1); matMV.Translate(fX, fY, -1.1); matMVP = matProj*matMV; fglWriteVertexShaderConstFloat(0, 16, matMVP.m[0]); unsigned int uiDummy = 0xFFFFFFFF; fglSendToFIFO(4, &nNumOfVertices); fglSendToFIFO(4, &uiDummy); fglSysTransferToPort( (unsigned int *)Cube_Data, nNumofData); fglFlush(FGL_PIPESTATE_ALL); // Pipeline status fglClearCache(FGL_CACHECTL_INIT_ALL); #if 1 //fXAng += 0.0872664f; // 5 degree //fYAng += 0.1745328f; // 10 degree fXAng += 2.0f; // 5 degree fYAng += 5.0f; // 10 degree //if(fXAng > 2*PI) fXAng = 0.0f; //if(fYAng > 2*PI) fYAng = 0.0f; if(fXAng > 360.f) fXAng = 0.0f; if(fYAng > 360.f) fYAng = 0.0f; #endif if(bSwapBackBuffer == false) { #if 0 fglSwapBuffer(0); drvsys_clear_buf((unsigned int*)FIMG_DEPTH_BUFFER, CLEAR_SCREEN_SIZE, 0xFFFFFFFF); drvsys_clear_buf((unsigned int*)(0x65000000+(CLEAR_SCREEN_SIZE)), CLEAR_SCREEN_SIZE, 0xFF000000); fglSetColorBufBaseAddr(0x65000000); bSwapBackBuffer = true; #else fglSwapBuffer(1); drvsys_clear_buf((unsigned int*)FIMG_DEPTH_BUFFER, CLEAR_SCREEN_SIZE, 0xFFFFFFFF); drvsys_clear_buf((unsigned int*)(FIMG_COLOR_BUFFER), CLEAR_SCREEN_SIZE, 0xFF000000); fglSetColorBufBaseAddr(FIMG_COLOR_BUFFER); bSwapBackBuffer = true; #endif } else { #if 0 // ori fglSwapBuffer(1); drvsys_clear_buf((unsigned int*)FIMG_DEPTH_BUFFER, CLEAR_SCREEN_SIZE, 0xFFFFFFFF); drvsys_clear_buf((unsigned int*)(0x65000000+(2*CLEAR_SCREEN_SIZE)), CLEAR_SCREEN_SIZE, 0xFF000000); fglSetColorBufBaseAddr(0x65000000+(CLEAR_SCREEN_SIZE)); bSwapBackBuffer = false; #else fglSwapBuffer(0); drvsys_clear_buf((unsigned int*)FIMG_DEPTH_BUFFER, CLEAR_SCREEN_SIZE, 0xFFFFFFFF); drvsys_clear_buf((unsigned int*)(FIMG_COLOR_BUFFER+CLEAR_SCREEN_SIZE), CLEAR_SCREEN_SIZE, 0xFF000000); fglSetColorBufBaseAddr(FIMG_COLOR_BUFFER+(CLEAR_SCREEN_SIZE)); bSwapBackBuffer = false; #endif } #if 1 // TOUCH Delay(10); //Capture_XY(); fX = (( uXDat-210)/310)-1; fY = ((uYDat-300)/200)-1; UART_Printf("X = %.2f, Y = %.2f\n", fX, fY); #endif } fglSetFaceCullControl(FGL_FALSE, FGL_FALSE, FGL_FACE_BACK); fglSetLODControl(0x0); fglEnablePerFragUnit(FGL_PF_DEPTH, FGL_FALSE); //INTC_Disable(NUM_PENDNUP); return NO_ERROR; }