⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 our_main.c

📁 这是一个简单的3d动画mmi,这是模拟器上的
💻 C
📖 第 1 页 / 共 4 页
字号:
                }
                if(3==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin+=KEY_STEP_NUM;
                }
                
                xin-=KEY_STEP_NUM;
            }

            else if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.top_state=OUR_MMI_OPT;
                //--------------------------------
                for(i=1;i<6;i++)
                {
                    x2[i]=0;
                }
                x2[0]=170;
                mmi_state.opt_select=0;
                //--------------------------------
                z=0;
                x=0;
                //y=0;
                y+=(0x1<<20);
                y=y&(0x1ffff);
                //if(y==0){}
                if(1==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin+=KEY_STEP_NUM;                    
                }
                else if(2==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=2*KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                else if(3==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                xin-=KEY_STEP_NUM;
            }
        }

        else if(key==98)//out
        {
            if(OUR_MMI_OPT==mmi_state.top_state)
            {
                mmi_state.top_state=OUR_MMI_SUB;
                z=0;
                x=128<<8;
                y=0;
                if(1==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                if(2==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=2*KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                if(3==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin+=KEY_STEP_NUM;
                }
                xin+=KEY_STEP_NUM;
            }
            else  if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.top_state=OUR_MMI_TOP;
                z=0;
                x=0;
                //y=0;
                y+=(0x1<<20);
                y=y&(0x1ffff);
                //if(y==0){}
                if(1==(mmi_state.sub_state_line>>1))
                {
                    
                    KEY_STEP_y=KEY_STEP;
                    yin+=KEY_STEP_NUM;                    
                }
                else if(2==(mmi_state.sub_state_line>>1))
                {
                    
                    KEY_STEP_y=2*KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                else if(3==(mmi_state.sub_state_line>>1))
                {
                    KEY_STEP_y=KEY_STEP;
                    yin-=KEY_STEP_NUM;
                }
                xin+=KEY_STEP_NUM;
            }
        }
        //==============================================
        else if(key==39)//right
        {            
            if(OUR_MMI_SUB==mmi_state.top_state)
            {
                //OUR_draw_bmp_SB(&global.obj, video_buffer, LCD_W);
            
                mmi_state.sub_state_line+=1;
                if(mmi_state.sub_state_line>=8)
                {
                    mmi_state.sub_state_line=0;
                }
                if(!(mmi_state.sub_state_line &1))
                {
                    KEY_STEP_y=KEY_STEP;
                    mmi_state.sub_state_line+=1;
                    if(yin<0)
                    {
                        y+=128<<8;
                    }
                    else
                    {
                        y=(((mmi_state.sub_state_line>>1))*128-128)<<8;
                        yin=-KEY_STEP_NUM;
                    }
                }
                //return 1;
            }
        }
        else if(key==37)//left
        {
            if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.sub_state_line-=1;
                if(mmi_state.sub_state_line<0)
                {
                    mmi_state.sub_state_line=7;
                }
                if((mmi_state.sub_state_line &1))
                { 
                    mmi_state.sub_state_line-=1;
                    KEY_STEP_y=KEY_STEP;
                    if(yin>0)
                    {
                        y-=128<<8;
                    }
                    else
                    {
                        y=(((mmi_state.sub_state_line>>1))*128+128)<<8;
                        yin=KEY_STEP_NUM;
                    }
                }
            }
        }
        else if(key==38)//up
        {
            if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.sub_state_raw-=1;
                if(mmi_state.sub_state_raw<0)
                {
                    mmi_state.sub_state_raw=2;
                }
            }
            else if(OUR_MMI_OPT==mmi_state.top_state)
            {                       
               // return OUR_THIRD_mmi(video_buffer,38,0);
            }
        }
        else if(key==40)//down
        {
            if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.sub_state_raw+=1;
                if(mmi_state.sub_state_raw>2)
                {
                    mmi_state.sub_state_raw=0;
                }
            }
            else if(OUR_MMI_OPT==mmi_state.top_state)
            {                       
              //  return OUR_THIRD_mmi(video_buffer,40,0);
            }
        }
        //------------------------
        //just change the xyz
        if(xin>0)//90
        {
            xin--; x-=KEY_STEP;
        }
        else if(xin<0)//90
        {
            xin++; x+=KEY_STEP;
        }
        else
        {
            x+=0x3fff; x&=~0x7fff;
        }
        if(yin>0)//90
        {
            yin--;  y-=KEY_STEP_y;
        }
        else if(yin<0)//90
        {
            yin++;  y+=KEY_STEP_y;
        }
        else
        {
            y+=0x3fff;y&=~0x7fff;
        }
        if(zin>0)//90
        {
            zin--;  z-=KEY_STEP;
        }
        else if(zin<0)//90
        {
            zin++;  z+=KEY_STEP;
        }
        else
        {
            z+=0x3fff; z&=~0x7fff;
        }
        //=================================================================================================       
        if((!(xin|yin|zin)))// || (yin==KEY_STEP_NUM)|| (yin==-KEY_STEP_NUM))
        {
#if 1
            if(OUR_MMI_TOP==mmi_state.top_state)
            {/**/
                OUR_Draw_bmp16_SBLT( 0,0,LCD_W,LCD_H,
                                    1,1,255,399,
                                    video_buffer, LCD_W,
                                    BMP_IFO[21]);
                /*           
                a[0]=x; a[1]=y;   a[2]=mmi_state.sub_state_line;
                OUR_sprintf(work_string,"%x %x %x", a);	 
                OUR_Draw_Text16(00,5,OUR_RGB16(255,255,255),work_string,video_buffer, LCD_W*2);*/ 
                return yin;
            }
            else if(OUR_MMI_OPT==mmi_state.top_state)
            {          
                if( mmi_state.opt_state==0)
                {
                    mmi_state.opt_state=1;
                    return OUR_THIRD_mmi(video_buffer,97,0);
                }
                return OUR_THIRD_mmi(video_buffer,key,0);              
            }
            else if(OUR_MMI_SUB==mmi_state.top_state)
            {
                mmi_state.opt_state=0;
                OUR_draw_bmp_SB(&global.obj, video_buffer, LCD_W);
                /*
                a[0]=FPS; a[1]=y;a[2]=mmi_state.sub_state_line;
                OUR_sprintf(work_string,"%x %x %x", a);	
                OUR_Draw_Text16(00,5,OUR_RGB16(255,255,255),work_string,video_buffer, LCD_W*2);*/
                return yin;/**/
            }

#endif
    }
        OUR_3Dengin_SET_LCD_B(LCD_W,LCD_H);
        if(x)//pull the cam farer
        {
            global.cam_work.pos.MM.z=-8000-(790*OUR_Fast_Sin((x>>8)&0xff)>>15)-(10000*OUR_Fast_Sin((x>>7)&0xff)>>15);
            scal=SCAN+(SCAN*160/240 *OUR_Fast_Sin((x>>8)&0xff)>>15);
            OUR_OBJ_SET_SCALE_Y(&global.obj,scal);
            
            OUR_BOX_OUT_clear16(80,140,
                        OPT_BACK_CLR,
                        video_buffer, LCD_W
                        );  
        }
        else
        {
            OUR_OBJ_SET_SCALE_Y(&global.obj,SCAN-(1<<7));
            global.cam_work.pos.MM.z=-8000-(2000*OUR_Fast_Sin((y>>7)&0xff)>>15);
            
            OUR_BOX_OUT_clear16(25,80,
                        OPT_BACK_CLR,
                        video_buffer, LCD_W
                        );  /**/
        }
        global.cam_work.pos.MM.x=0;
        global.cam_work.pos.MM.y=0;
        
        //OUR_Build_CAM_Rotation_MATRIX3X3(&global.cam_work);//1550t
        //--------------------------------------------------------------------
        //global.cam_work2.pos.MM.x=0;
        //global.cam_work2.pos.MM.y=0;
        //global.cam_work2.pos.MM.z=-10000;
        
        //OUR_Build_CAM_Rotation_MATRIX3X3(&global.cam_work2);//1550t
        
        //=================================================================================================
        //========obj 1  ========================================================================
     
       //  if((xin|yin|zin))      
         {
            OUR_XYZ_Rotation_OBJ(x>>8, y>>8, z>>8,&global.obj,OBJ_R_XYZ); 	
            
            OUR_BACHFACE_OBJ_LIT32(&global.obj,&global.cam_work,lit_list);
            
            OUR_POINT_CHANGE_OBJ(&global.obj,&global.cam_work);
            OUR_Draw_OBJ( &global.obj, video_buffer, LCD_W,CLOR_MOD);      
         }

        //=================================================================================================
        //========== ===================================================================================
#if 1
        if(2==mmi_state.sub_state_raw)
        {
            static UINT xxx=0;
            static UINT t=0;
            xxx++;
            if(xxx>200)     xxx=0;
    	      t++;
            OUR_Draw_bmp16_SBLT_T(xxx,xxx,LCD_W/2,LCD_W/2,
                                        1,1,62,62,
                                        (t/4)&0x1f,
                                        video_buffer, LCD_W,
                                        BMP_IFO[5]);
        }
        //=================================================================================================
        //=================================================================================================
        a[0]=FPS;a[1]=y;a[2]=mmi_state.sub_state_line;
        OUR_sprintf(work_string,"%x %x %x", a);	    
        //OUR_Draw_BigText32(00,580,OUR_RGB32(255,255,0),work_string,video_buffer, LCD_W*2);
        OUR_Draw_Text16(00,15,OUR_RGB16(255,255,255),work_string,video_buffer, LCD_W*2);
        
        OUR_sprintf(work_string,"OUR_3D_ENGINE", a);
        //OUR_Draw_BigText32(00,580,OUR_RGB32(0,255,255,0),work_string,video_buffer, LCD_W*2);
        OUR_Draw_Text16(00,LCD_H-10,OUR_RGB16(255,255,255),work_string,video_buffer, LCD_W*2);
        //================================================================
        //================================================================
    
#endif 
    } 
    return xin|yin|zin;

} // end Game_Main


const int bmp_inde[4][6]={
                                {0,1,4,5,8,9},
                                {1,2,5,6,9,10},
                                {2,3,6,7,10,11},
                                {3,0,7,4,11,8},
};

void OUR_draw_bmp_SB( OUR_3D_OBJ_PTR	obj,UCHAR *video_buffer, int lpitch)
{
        UINT i1=0,i2=0,i3=0;

        for (i2=0; i2 <3; i2++)
        { 
            for (i1=0; i1 <2; i1++)
            {
                OUR_Draw_bmp16_SBLT( i1*LCD_W/2,20*LCD_H/400+i2*120*LCD_H/400,LCD_W/2,120*LCD_H/400,
                                    1,1,62,62,
                                    video_buffer, LCD_W,
                                    BMP_IFO[bmp_inde[mmi_state.sub_state_line>>1][i2*2+i1]+4]);
            }
        } 
       // for (i1=0; i1 <2; i1++)
        {
            OUR_Draw_bmp16_SBLT(0,0,LCD_W,20*LCD_H/400,
                                1,1,31,15,
                                video_buffer, LCD_W,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -