#include #include #include #include #include #include "lang.h" #include "ezkernel.h" #include "RTC.h" #include "draw.h" #include "Ezcard_OP.h" extern const unsigned char __attribute__((aligned(4)))gImage_SET[76800]; extern u16 gl_select_lang; extern u16 gl_engine_sel; extern u16 gl_quickboot_sel; extern u16 gl_show_Thumbnail; extern u16 gl_ingame_RTC_open_status; u16 SET_info_buffer [0x200]EWRAM_BSS; #define K_A (0) #define K_B (1) #define K_SELECT (2) #define K_START (3) #define K_RIGHT (4) #define K_LEFT (5) #define K_UP (6) #define K_DOWN (7) #define K_R (8) #define K_L (9) u8* str_A = (u8*)" A "; u8* str_B = (u8*)" B "; u8* str_SELECT = (u8*)"SELECT"; u8* str_START = (u8*)"START "; u8* str_RIGHT = (u8*)"RIGHT "; u8* str_LEFT = (u8*)" LEFT "; u8* str_UP = (u8*)" UP "; u8* str_DOWN = (u8*)" DOWN "; u8* str_R = (u8*)" R "; u8* str_L = (u8*)" L "; u16 v_reset; u16 v_rts; u16 v_sleep; u16 v_cheat; u16 language_sel; u16 gl_ingame_NOR_quickboot_status; u16 engine_sel; u16 currPage = 0; u8 edit_sleephotkey[3]={0}; u8 edit_rtshotkey[3]={0}; //--------------------------------------------------------------------------------- void Show_ver(void) { char msg[20]; char *ver="K:1.10"; u16 FPGAver = Read_FPGA_ver(); sprintf(msg,"FW:%d %s",FPGAver&0xFF,ver); DrawHZText12(msg,0,160,3, gl_color_text,1); } //--------------------------------------------------------------------------------- void Draw_select_icon(u32 X,u32 Y,u32 mode) { Clear(X+2, Y+2, 8, 8, gl_color_text, 1); Clear(X+3, Y+3, 6, 6, RGB(4,8,12), 1); if(mode) Clear(X+4, Y+4, 4, 4, gl_color_selected, 1); } //--------------------------------------------------------------------------------- u32 Setting_window(void) { u16 keys; u32 line; u32 select; u32 Set_OK=0; u32 Set_OK_line=0; u8 edit_pos=0; //u32 i; u32 currstate=0; char msg[128]; u16 clean_color; u16 clean_pos; u16 clean_w; u32 re_show=1; u32 addon_sel=2; u8 sleep_pos=0; u8 rtshotkey_pos=0; u8 engine_pos = 1; u8 quickboot_pos = 1; u8 datetime[7]; u8 edit_datetime[7]={0}; u8 RTC_pos = 1; u8 *str0; u8 *str1; u8 *str2; Show_ver(); select = 0; u32 y_offset = 24; u32 set_offset = 1; u32 x_offset = set_offset+9*6+3; u32 line_x = 17; if(gl_select_lang == 0xE1E1) { language_sel = 0; } else { language_sel = 1; } v_reset = Read_SET_info(1); v_rts = Read_SET_info(2); v_sleep = Read_SET_info(3); v_cheat = Read_SET_info(4); if( (v_reset != 0x0) && (v_reset != 0x1)) { v_reset = 0x0; } if( (v_rts != 0x0) && (v_rts != 0x1)) { v_rts = 0x0; } if( (v_sleep != 0x0) && (v_sleep != 0x1)) { v_sleep = 0x0; } if( (v_cheat != 0x0) && (v_cheat != 0x1)) { v_cheat = 0x0; } engine_sel = gl_engine_sel; gl_ingame_NOR_quickboot_status = gl_quickboot_sel; while(1) { VBlankIntrWait(); if(re_show) { if(currPage == 0){ // sprintf(msg,"%s",gl_time); DrawHZText12(msg,0,set_offset,y_offset,gl_color_selected,1); // sprintf(msg,"%s",gl_addon); DrawHZText12(msg,0,set_offset,y_offset+line_x,gl_color_selected,1); Draw_select_icon(x_offset,y_offset+line_x,v_reset); sprintf(msg,"%s",gl_reset); DrawHZText12(msg,0,x_offset+15,y_offset+line_x,(addon_sel==0)?gl_color_selected:gl_color_text,1); Draw_select_icon(x_offset+12*6,y_offset+line_x,v_rts); sprintf(msg,"%s",gl_rts); DrawHZText12(msg,0,x_offset+12*6+15,y_offset+line_x,(addon_sel==1)?gl_color_selected:gl_color_text,1); VBlankIntrWait(); Draw_select_icon(x_offset,y_offset+line_x*2,v_sleep); sprintf(msg,"%s",gl_sleep); DrawHZText12(msg,0,x_offset+15,y_offset+line_x*2,(addon_sel==3)?gl_color_selected:gl_color_text,1); VBlankIntrWait(); Draw_select_icon(x_offset+12*6,y_offset+line_x*2,v_cheat); sprintf(msg,"%s",gl_cheat); DrawHZText12(msg,0,x_offset+12*6+15,y_offset+line_x*2,(addon_sel==4)?gl_color_selected:gl_color_text,1); // sprintf(msg,"%s",gl_language); DrawHZText12(msg,0,set_offset,y_offset+line_x*3,gl_color_selected,1); Draw_select_icon(x_offset,y_offset+line_x*3,(language_sel == 0x0)); Draw_select_icon(x_offset+12*6,y_offset+line_x*3,(language_sel == 0x1)); sprintf(msg,"%s",gl_en_lang); DrawHZText12(msg,0,x_offset+15,y_offset+line_x*3,((language_sel==0)&&currstate&& (2== select))?gl_color_selected:gl_color_text,1); sprintf(msg,"%s",gl_zh_lang); DrawHZText12(msg,0,x_offset+12*6+15,y_offset+line_x*3,((language_sel==1)&&currstate&& (2== select))?gl_color_selected:gl_color_text,1); // // VBlankIntrWait(); sprintf(msg,"%s",gl_engine); DrawHZText12(msg,0,set_offset,y_offset+line_x*4,gl_color_selected,1); Draw_select_icon(x_offset,y_offset+line_x*4,(engine_sel == 0x1)); sprintf(msg,"%s",gl_use_engine); DrawHZText12(msg,0,x_offset+15,y_offset+line_x*4,(engine_pos==0)?gl_color_selected:gl_color_text,1); // ClearWithBG((u16*)gImage_SET,set_offset, y_offset+line_x*5, 9*6, 13, 1); ClearWithBG((u16*)gImage_SET,set_offset, y_offset+line_x*6, 9*6, 13, 1); if( (v_rts==1) && (v_cheat == 0) && (v_reset == 0) && (v_sleep == 0) ) { sprintf(msg,"%s"," SAVE KEY"); DrawHZText12(msg,0,set_offset,y_offset+line_x*5,gl_color_selected,1); sprintf(msg,"%s"," LOAD KEY"); DrawHZText12(msg,0,set_offset,y_offset+line_x*6,gl_color_selected,1); } else{ sprintf(msg,"%s",gl_hot_key); DrawHZText12(msg,0,set_offset,y_offset+line_x*5,gl_color_selected,1); sprintf(msg,"%s",gl_hot_key2); DrawHZText12(msg,0,set_offset,y_offset+line_x*6,gl_color_selected,1); } //RTC sprintf(msg,"%s",gl_ingameRTC); DrawHZText12(msg,0,set_offset,y_offset+line_x*7,gl_color_selected,1); Draw_select_icon(x_offset,y_offset+line_x*7,(gl_ingame_RTC_open_status == 0x1)); //sprintf(msg,"%s",gl_offRTC_powersave); ClearWithBG((u16*)gImage_SET,x_offset+15, y_offset+line_x*7, 6*6, 13, 1); if(gl_ingame_RTC_open_status){ sprintf(msg,"%s",gl_ingameRTC_open); } else { sprintf(msg,"%s",gl_ingameRTC_close); } DrawHZText12(msg,0,x_offset+15,y_offset+line_x*7,(RTC_pos==0)?gl_color_selected:gl_color_text,1); u32 offsety; for(line=0;line<7;line++) { if(Set_OK==1) { if((line== select) && (0== select)&& (edit_pos==7)) clean_color = gl_color_btn_clean; else if((line== select) && (1== select) && (addon_sel==2)) clean_color = gl_color_btn_clean; else if((line== select) && (3== select) && (engine_pos==1)) clean_color = gl_color_btn_clean; else if((line== select) && (4== select) && (sleep_pos==3)) clean_color = gl_color_btn_clean; else if((line== select) && (5== select) && (rtshotkey_pos==3)) clean_color = gl_color_btn_clean; else if((line== select) && (6== select) && (RTC_pos==1)) clean_color = gl_color_btn_clean; else clean_color = gl_color_MENU_btn; } else { if(line== select) clean_color = gl_color_btn_clean; else clean_color = gl_color_MENU_btn; } offsety = y_offset + line*line_x; if(line>1) offsety += line_x; Clear(202,offsety-2 ,30,14,clean_color,1); if(Set_OK && (line == Set_OK_line)){ sprintf(msg,"%s",gl_ok_btn); } else { sprintf(msg,"%s",gl_set_btn); } DrawHZText12(msg,0,200+5,offsety,gl_color_text,1); VBlankIntrWait(); } }else if (currPage == 1){ // Inside the Setting_window() function, within the part handling NOR Quickboot VBlankIntrWait(); sprintf(msg,"%s",gl_NOR_quickboot); DrawHZText12(msg,0,set_offset,y_offset+line_x*0,gl_color_selected,1); Draw_select_icon(x_offset,y_offset+line_x*0,(gl_ingame_NOR_quickboot_status == 0x1)); //sprintf(msg,"%s",gl_offRTC_powersave); ClearWithBG((u16*)gImage_SET,x_offset+15, y_offset+line_x*0, 6*6, 13, 1); if(gl_ingame_NOR_quickboot_status == 0x1){ sprintf(msg,"%s",gl_NOR_quickboot_on); } else { sprintf(msg,"%s",gl_NOR_quickboot_off); } DrawHZText12(msg,0,x_offset+15,y_offset+line_x*0,(quickboot_pos==0)?gl_color_selected:gl_color_text,1); u32 offsety; for(line=0;line<1;line++) { if(Set_OK==1) { if((line== select) && (0== select) && (quickboot_pos==1)) clean_color = gl_color_btn_clean; else clean_color = gl_color_MENU_btn; } else { if(line== select) clean_color = gl_color_btn_clean; else clean_color = gl_color_MENU_btn; } offsety = y_offset + line*line_x; if(line>1) offsety += line_x; Clear(202,offsety-2 ,30,14,clean_color,1); if(Set_OK && (line == Set_OK_line)){ sprintf(msg,"%s",gl_ok_btn); } else { sprintf(msg,"%s",gl_set_btn); } DrawHZText12(msg,0,200+5,offsety,gl_color_text,1); VBlankIntrWait(); } } } currstate=Set_OK; switch(currstate) { case 0: { //initial state //get date and time u16 read5 = Read_SET_info(5); u16 read6 = Read_SET_info(6); u16 read7 = Read_SET_info(7); u16 read8 = Read_SET_info(8); u16 read9 = Read_SET_info(9); u16 read10 = Read_SET_info(10); u8 HH = UNBCD(datetime[4]&0x3F); u8 MM = UNBCD(datetime[5]&0x7F); u8 SS = UNBCD(datetime[6]&0x7F); if(currPage == 0) { rtc_enable(); rtc_get(datetime); rtc_disenable(); char* wkday; switch(UNBCD(datetime[3]&0x7)) { case 0:wkday = gl_Sun;break; case 1:wkday = gl_Mon;break; case 2:wkday = gl_Tues;break; case 3:wkday = gl_Wed;break; case 4:wkday = gl_Thur;break; case 5:wkday = gl_Fri;break; case 6:wkday = gl_Sat;break; default:wkday = gl_Sun;break; } // u8 HH = UNBCD(datetime[4]&0x3F); // u8 MM = UNBCD(datetime[5]&0x7F); // u8 SS = UNBCD(datetime[6]&0x7F); if(HH >23)HH=0; if(MM >59)MM=0; if(SS >59)SS=0; sprintf(msg,"%u/%02u/%02u %02d:%02d:%02d %s",UNBCD(datetime[0])+2000,UNBCD(datetime[1]&0x1F),UNBCD(datetime[2]&0x3F),HH,MM,SS, wkday); ClearWithBG((u16*)gImage_SET,x_offset, y_offset, 22*6, 13, 1); DrawHZText12(msg,0,x_offset,y_offset,gl_color_text,1); VBlankIntrWait(); // u16 read5 = Read_SET_info(5); // u16 read6 = Read_SET_info(6); // u16 read7 = Read_SET_info(7); switch(read5) { case 0:str0 = str_A;break; case 1:str0 = str_B;break; case 2:str0 = str_SELECT;break; case 3:str0 = str_START;break; case 4:str0 = str_RIGHT;break; case 5:str0 = str_LEFT;break; case 6:str0 = str_UP;break; case 7:str0 = str_DOWN;break; case 8:str0 = str_R;break; case 9:str0 = str_L;break; default:str0 = str_L;break; } switch(read6) { case 0:str1 = str_A;break; case 1:str1 = str_B;break; case 2:str1 = str_SELECT;break; case 3:str1 = str_START;break; case 4:str1 = str_RIGHT;break; case 5:str1 = str_LEFT;break; case 6:str1 = str_UP;break; case 7:str1 = str_DOWN;break; case 8:str1 = str_R;break; case 9:str1 = str_L;break; default:str1 = str_R;break; } switch(read7) { case 0:str2 = str_A;break; case 1:str2 = str_B;break; case 2:str2 = str_SELECT;break; case 3:str2 = str_START;break; case 4:str2 = str_RIGHT;break; case 5:str2 = str_LEFT;break; case 6:str2 = str_UP;break; case 7:str2 = str_DOWN;break; case 8:str2 = str_R;break; case 9:str2 = str_L;break; default:str2 = str_SELECT;break; } sprintf(msg,"%s %s %s",str0,str1,str2);//read from flash DrawHZText12(msg,0,x_offset+10,y_offset+line_x*5,gl_color_text,1); // u16 read8 = Read_SET_info(8); // u16 read9 = Read_SET_info(9); // u16 read10 = Read_SET_info(10); switch(read8) { case 0:str0 = str_A;break; case 1:str0 = str_B;break; case 2:str0 = str_SELECT;break; case 3:str0 = str_START;break; case 4:str0 = str_RIGHT;break; case 5:str0 = str_LEFT;break; case 6:str0 = str_UP;break; case 7:str0 = str_DOWN;break; case 8:str0 = str_R;break; case 9:str0 = str_L;break; default:str0 = str_L;break; } switch(read9) { case 0:str1 = str_A;break; case 1:str1 = str_B;break; case 2:str1 = str_SELECT;break; case 3:str1 = str_START;break; case 4:str1 = str_RIGHT;break; case 5:str1 = str_LEFT;break; case 6:str1 = str_UP;break; case 7:str1 = str_DOWN;break; case 8:str1 = str_R;break; case 9:str1 = str_L;break; default:str1 = str_R;break; } switch(read10) { case 0:str2 = str_A;break; case 1:str2 = str_B;break; case 2:str2 = str_SELECT;break; case 3:str2 = str_START;break; case 4:str2 = str_RIGHT;break; case 5:str2 = str_LEFT;break; case 6:str2 = str_UP;break; case 7:str2 = str_DOWN;break; case 8:str2 = str_R;break; case 9:str2 = str_L;break; default:str2 = str_START;break; } sprintf(msg,"%s %s %s",str0,str1,str2); DrawHZText12(msg,0,x_offset+10,y_offset+line_x*6,gl_color_text,1); } re_show = 0; scanKeys(); keys = keysDown(); if (keys & KEY_A) {//set Set_OK_line = select; Set_OK = 1;//!Set_OK; re_show=1; if(currPage == 0){ edit_datetime[_HOUR] = HH;//UNBCD(datetime[_HOUR]&0x3F); edit_datetime[_MIN] = MM;//UNBCD(datetime[_MIN]&0x7F); edit_datetime[_SEC] = SS;//UNBCD(datetime[_SEC]&0x7F); edit_datetime[_DAY] = UNBCD(datetime[_DAY]&0x3F); edit_datetime[_MONTH] = UNBCD(datetime[_MONTH]&0x1F); edit_datetime[_YEAR] = UNBCD(datetime[_YEAR]); edit_datetime[_WKD] = UNBCD(datetime[_WKD]&0x7); if(select==1) { addon_sel = 0; } else if(select==3) { engine_pos = 0; } else if(select==6) { RTC_pos = 0; } else if(select==2) { quickboot_pos = 0; } edit_sleephotkey[0] = (read5>10)?K_L:read5; edit_sleephotkey[1] = (read6>10)?K_R:read6; edit_sleephotkey[2] = (read7>10)?K_SELECT:read7; edit_rtshotkey[0] = (read8>10)?K_L:read8; edit_rtshotkey[1] = (read9>10)?K_R:read9; edit_rtshotkey[2] = (read10>10)?K_START:read10; } else if (currPage == 1){ if(select==0) { quickboot_pos = 0; } } } else if (keys & KEY_DOWN){ if(currPage == 0) { if(select < 6){ select++; re_show=1; } }else if (currPage == 1) { if(select < 0){ select++; re_show=1; } } } else if(keys & KEY_UP){ if(select){ select--; re_show=1; } } else if(keys & KEY_L) { return 0; } else if(keys & KEY_R) { return 1; } else if(keys & KEY_RIGHT) { if(currPage == 0){ currPage = 1; select = 0; }else if (currPage == 1){ currPage = 0; select = 0; } DrawPic((u16*)gImage_SD, 0, 0, 240, 160, 0, 0, 1); re_show = 1; } else if(keys & KEY_LEFT) { if(currPage == 0){ currPage = 1; }else if (currPage == 1){ currPage = 0; } DrawPic((u16*)gImage_SD, 0, 0, 240, 160, 0, 0, 1); re_show = 1; } } break; case 1: //edit state //if(Set_OK_line==0) { if(re_show) { if(currPage == 0) { if(select ==0){ ClearWithBG((u16*)gImage_SET,x_offset, y_offset, 23*6, 13, 1); switch(edit_pos) { case 0:clean_pos = x_offset; clean_w = 24; break; case 1:clean_pos = x_offset+6*5; clean_w = 12; break; case 2:clean_pos = x_offset+6*8; clean_w = 12; break; case 3:clean_pos = x_offset+6*11; clean_w = 12; break; case 4:clean_pos = x_offset+6*14; clean_w = 12; break; case 5:clean_pos = x_offset+6*17; clean_w = 12; break; case 6:clean_pos = x_offset+6*20; clean_w = 18; break; } if( edit_pos < 7) Clear(clean_pos,y_offset ,clean_w,13,gl_color_btn_clean,1); char* wkday; switch(edit_datetime[_WKD]) { case 0:wkday = gl_Sun;break; case 1:wkday = gl_Mon;break; case 2:wkday = gl_Tues;break; case 3:wkday = gl_Wed;break; case 4:wkday = gl_Thur;break; case 5:wkday = gl_Fri;break; case 6:wkday = gl_Sat;break; default:wkday = gl_Sun;break; } sprintf(msg,"20%02d/%02d/%02d %02d:%02d:%02d %s",edit_datetime[_YEAR],edit_datetime[_MONTH],edit_datetime[_DAY],edit_datetime[_HOUR],edit_datetime[_MIN],edit_datetime[_SEC] ,wkday); DrawHZText12(msg,0,x_offset,y_offset,gl_color_text,1); } else if(select ==4) { ClearWithBG((u16*)gImage_SET,x_offset, y_offset+line_x*5, 23*6, 13, 1); switch(sleep_pos) { case 0:clean_pos = x_offset+10; break; case 1:clean_pos = x_offset+10+6*6+6; break; case 2:clean_pos = x_offset+10+6*12+18; break; } if( sleep_pos < 3) Clear(clean_pos,y_offset+line_x*5 ,36,13,gl_color_btn_clean,1); //DEBUG_printf("%x %x %x", edit_sleephotkey[0],edit_sleephotkey[1],edit_sleephotkey[2]); switch(edit_sleephotkey[0]) { case 0:str0 = str_A;break; case 1:str0 = str_B;break; case 2:str0 = str_SELECT;break; case 3:str0 = str_START;break; case 4:str0 = str_RIGHT;break; case 5:str0 = str_LEFT;break; case 6:str0 = str_UP;break; case 7:str0 = str_DOWN;break; case 8:str0 = str_R;break; case 9:str0 = str_L;break; } switch(edit_sleephotkey[1]) { case 0:str1 = str_A;break; case 1:str1 = str_B;break; case 2:str1 = str_SELECT;break; case 3:str1 = str_START;break; case 4:str1 = str_RIGHT;break; case 5:str1 = str_LEFT;break; case 6:str1 = str_UP;break; case 7:str1 = str_DOWN;break; case 8:str1 = str_R;break; case 9:str1 = str_L;break; } switch(edit_sleephotkey[2]) { case 0:str2 = str_A;break; case 1:str2 = str_B;break; case 2:str2 = str_SELECT;break; case 3:str2 = str_START;break; case 4:str2 = str_RIGHT;break; case 5:str2 = str_LEFT;break; case 6:str2 = str_UP;break; case 7:str2 = str_DOWN;break; case 8:str2 = str_R;break; case 9:str2 = str_L;break; } sprintf(msg,"%s %s %s",str0,str1,str2); DrawHZText12(msg,0,x_offset+10,y_offset+line_x*5,gl_color_text,1); } else if(select ==5) { ClearWithBG((u16*)gImage_SET,x_offset, y_offset+line_x*6, 23*6, 13, 1); switch(rtshotkey_pos) { case 0:clean_pos = x_offset+10; break; case 1:clean_pos = x_offset+10+6*6+6; break; case 2:clean_pos = x_offset+10+6*12+18; break; } if( rtshotkey_pos < 3) Clear(clean_pos,y_offset+line_x*6 ,36,13,gl_color_btn_clean,1); //DEBUG_printf("%x %x %x", edit_rtshotkey[0],edit_rtshotkey[1],edit_rtshotkey[2]); switch(edit_rtshotkey[0]) { case 0:str0 = str_A;break; case 1:str0 = str_B;break; case 2:str0 = str_SELECT;break; case 3:str0 = str_START;break; case 4:str0 = str_RIGHT;break; case 5:str0 = str_LEFT;break; case 6:str0 = str_UP;break; case 7:str0 = str_DOWN;break; case 8:str0 = str_R;break; case 9:str0 = str_L;break; } switch(edit_rtshotkey[1]) { case 0:str1 = str_A;break; case 1:str1 = str_B;break; case 2:str1 = str_SELECT;break; case 3:str1 = str_START;break; case 4:str1 = str_RIGHT;break; case 5:str1 = str_LEFT;break; case 6:str1 = str_UP;break; case 7:str1 = str_DOWN;break; case 8:str1 = str_R;break; case 9:str1 = str_L;break; } switch(edit_rtshotkey[2]) { case 0:str2 = str_A;break; case 1:str2 = str_B;break; case 2:str2 = str_SELECT;break; case 3:str2 = str_START;break; case 4:str2 = str_RIGHT;break; case 5:str2 = str_LEFT;break; case 6:str2 = str_UP;break; case 7:str2 = str_DOWN;break; case 8:str2 = str_R;break; case 9:str2 = str_L;break; } sprintf(msg,"%s %s %s",str0,str1,str2); DrawHZText12(msg,0,x_offset+10,y_offset+line_x*6,gl_color_text,1); } } } re_show = 0; scanKeys(); keys = keysDown(); u16 keysrepeat = keysDownRepeat(); if(currPage == 0){ if(keysrepeat & KEY_UP) { if(select ==0){ switch(edit_pos) { case 2: //day switch(edit_datetime[_MONTH]) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(edit_datetime[_DAY]==31) {edit_datetime[_DAY]=1;} else {edit_datetime[_DAY]++;} break; case 4: case 6: case 9: case 11: if(edit_datetime[_DAY]==30) {edit_datetime[_DAY]=1;} else {edit_datetime[_DAY]++;} break; case 2: if((edit_datetime[_YEAR]%4==0 && edit_datetime[_DAY]==9) || (edit_datetime[_YEAR]%4>0 && edit_datetime[_DAY]==28)) {edit_datetime[_DAY]=1;} else {edit_datetime[_DAY]++;} break; } break; case 1: //month if(edit_datetime[_MONTH]==12) {edit_datetime[_MONTH]=1;} else {edit_datetime[_MONTH]++;} break; case 0: //year if(edit_datetime[_YEAR]==99) {edit_datetime[_YEAR]=0;} else {edit_datetime[_YEAR]++;} break; case 6: //week day if(edit_datetime[_WKD]==6) {edit_datetime[_WKD]=0;} else {edit_datetime[_WKD]++;} break; case 3: //hour if(edit_datetime[_HOUR]==23) {edit_datetime[_HOUR]=0;} else {edit_datetime[_HOUR]++;} break; case 4: //minute if(edit_datetime[_MIN]==59) {edit_datetime[_MIN]=0;} else {edit_datetime[_MIN]++;} break; case 5: //second if(edit_datetime[_SEC]==59) {edit_datetime[_SEC]=0;} else {edit_datetime[_SEC]++;} break; } } else if(select == 1){ if(addon_sel>2){ addon_sel -= 3; } } else if(select ==4){ switch(sleep_pos) { case 0: if(edit_sleephotkey[0]==9) {edit_sleephotkey[0]=0;} else{edit_sleephotkey[0]++;} if(edit_sleephotkey[0]==edit_sleephotkey[1]) { edit_sleephotkey[0]++; if(edit_sleephotkey[0]==edit_sleephotkey[2]) edit_sleephotkey[0]++; } else if(edit_sleephotkey[0]==edit_sleephotkey[2]) { edit_sleephotkey[0]++; if(edit_sleephotkey[0]==edit_sleephotkey[1]) edit_sleephotkey[0]++; } break; case 1: if(edit_sleephotkey[1]==9) {edit_sleephotkey[1]=0;} else {edit_sleephotkey[1]++;} if(edit_sleephotkey[1]==edit_sleephotkey[0]) { edit_sleephotkey[1]++; if(edit_sleephotkey[1]==edit_sleephotkey[2]) edit_sleephotkey[1]++; } else if(edit_sleephotkey[1]==edit_sleephotkey[2]) { edit_sleephotkey[1]++; if(edit_sleephotkey[1]==edit_sleephotkey[0]) edit_sleephotkey[1]++; } break; case 2: if(edit_sleephotkey[2]==9) {edit_sleephotkey[2]=0;} else {edit_sleephotkey[2]++;} if(edit_sleephotkey[2]==edit_sleephotkey[0]) { edit_sleephotkey[2]++; if(edit_sleephotkey[2]==edit_sleephotkey[1]) edit_sleephotkey[2]++; } else if(edit_sleephotkey[2]==edit_sleephotkey[1]) { edit_sleephotkey[2]++; if(edit_sleephotkey[2]==edit_sleephotkey[0]) edit_sleephotkey[2]++; } break; } } else if(select ==5){ switch(rtshotkey_pos) { case 0: if(edit_rtshotkey[0]==9) {edit_rtshotkey[0]=0;} else {edit_rtshotkey[0]++;} if(edit_rtshotkey[0]==edit_rtshotkey[1]) { edit_rtshotkey[0]++; if(edit_rtshotkey[0]==edit_rtshotkey[2]) edit_rtshotkey[0]++; } else if(edit_rtshotkey[0]==edit_rtshotkey[2]) { edit_rtshotkey[0]++; if(edit_rtshotkey[0]==edit_rtshotkey[1]) edit_rtshotkey[0]++; } break; case 1: if(edit_rtshotkey[1]==9) {edit_rtshotkey[1]=0;} else {edit_rtshotkey[1]++;} if(edit_rtshotkey[1]==edit_rtshotkey[0]) { edit_rtshotkey[1]++; if(edit_rtshotkey[1]==edit_rtshotkey[2]) edit_rtshotkey[1]++; } else if(edit_rtshotkey[1]==edit_rtshotkey[2]) { edit_rtshotkey[1]++; if(edit_rtshotkey[1]==edit_rtshotkey[0]) edit_rtshotkey[1]++; } break; case 2: if(edit_rtshotkey[2]==9) {edit_rtshotkey[2]=0;} else {edit_rtshotkey[2]++;} if(edit_rtshotkey[2]==edit_rtshotkey[0]) { edit_rtshotkey[2]++; if(edit_rtshotkey[2]==edit_rtshotkey[1]) edit_rtshotkey[2]++; } else if(edit_rtshotkey[2]==edit_rtshotkey[1]) { edit_rtshotkey[2]++; if(edit_rtshotkey[2]==edit_rtshotkey[0]) edit_rtshotkey[2]++; } break; } } re_show = 1; } else if(keysrepeat & KEY_DOWN) { if(select ==0){ switch(edit_pos) { case 2: switch(edit_datetime[_MONTH]) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(edit_datetime[_DAY]==1) { edit_datetime[_DAY]=31; } else { //if(edit_datetime[_DAY] > 1) edit_datetime[_DAY]--; } break; case 4: case 6: case 9: case 11: if(edit_datetime[_DAY]==1) { edit_datetime[_DAY]=30; } else { //if(edit_datetime[_DAY] > 1) edit_datetime[_DAY]--; } break; case 2: if(edit_datetime[_DAY]==1) { if(edit_datetime[_YEAR]%4==0) { edit_datetime[_DAY]=29; } else { edit_datetime[_DAY]=28; } } else { edit_datetime[_DAY]--; } break; } break; case 1: if(edit_datetime[_MONTH]==1) {edit_datetime[_MONTH]=12;} else {edit_datetime[_MONTH]--;} break; case 0: if(edit_datetime[_YEAR]==0) {edit_datetime[_YEAR]=99;} else {edit_datetime[_YEAR]--;} break; case 6: //week day if(edit_datetime[_WKD]==0) {edit_datetime[_WKD]=6;} else {edit_datetime[_WKD]--;} break; case 3: //hour if(edit_datetime[_HOUR]==0) {edit_datetime[_HOUR]=23;} else {edit_datetime[_HOUR]--;} break; case 4: //minute if(edit_datetime[_MIN]==0) {edit_datetime[_MIN]=59;} else {edit_datetime[_MIN]--;} break; case 5: //second if(edit_datetime[_SEC]==0) {edit_datetime[_SEC]=59;} else {edit_datetime[_SEC]--;} break; } } else if(select == 1){ if(addon_sel<2){ addon_sel += 3; } } else if(select == 4){ switch(sleep_pos) { case 0: if(edit_sleephotkey[0]==0) {edit_sleephotkey[0]=9;} else{ edit_sleephotkey[0]--;} if(edit_sleephotkey[0]==edit_sleephotkey[1]) { if(edit_sleephotkey[0]==0) {edit_sleephotkey[0]=9;} else{ edit_sleephotkey[0]--;} if(edit_sleephotkey[0]==edit_sleephotkey[2]) edit_sleephotkey[0]--; } else if(edit_sleephotkey[0]==edit_sleephotkey[2]) { if(edit_sleephotkey[0]==0) {edit_sleephotkey[0]=9;} else{ edit_sleephotkey[0]--;} if(edit_sleephotkey[0]==edit_sleephotkey[1]) edit_sleephotkey[0]--; } break; case 1: if(edit_sleephotkey[1]==0) {edit_sleephotkey[1]=9;} else {edit_sleephotkey[1]--;} if(edit_sleephotkey[1]==edit_sleephotkey[0]) { if(edit_sleephotkey[1]==0) {edit_sleephotkey[1]=9;} else{ edit_sleephotkey[1]--;} if(edit_sleephotkey[1]==edit_sleephotkey[2]) edit_sleephotkey[1]--; } else if(edit_sleephotkey[1]==edit_sleephotkey[2]) { if(edit_sleephotkey[1]==0) {edit_sleephotkey[1]=9;} else{ edit_sleephotkey[1]--;} if(edit_sleephotkey[1]==edit_sleephotkey[0]) edit_sleephotkey[1]--; } break; case 2: if(edit_sleephotkey[2]==0) {edit_sleephotkey[2]=9;} else{edit_sleephotkey[2]--;} if(edit_sleephotkey[2]==edit_sleephotkey[0]) { if(edit_sleephotkey[2]==0) {edit_sleephotkey[2]=9;} else{ edit_sleephotkey[2]--;} if(edit_sleephotkey[2]==edit_sleephotkey[1]) edit_sleephotkey[2]--; } else if(edit_sleephotkey[2]==edit_sleephotkey[1]) { if(edit_sleephotkey[2]==0) {edit_sleephotkey[2]=9;} else{ edit_sleephotkey[2]--;} if(edit_sleephotkey[2]==edit_sleephotkey[0]) edit_sleephotkey[2]--; } break; } } else if(select == 5){ switch(rtshotkey_pos) { case 0: if(edit_rtshotkey[0]==0) {edit_rtshotkey[0]=9;} else{edit_rtshotkey[0]--;} if(edit_rtshotkey[0]==edit_rtshotkey[1]) { if(edit_rtshotkey[0]==0) {edit_rtshotkey[0]=9;} else{ edit_rtshotkey[0]--;} if(edit_rtshotkey[0]==edit_rtshotkey[2]) edit_rtshotkey[0]--; } else if(edit_rtshotkey[0]==edit_rtshotkey[2]) { if(edit_rtshotkey[0]==0) {edit_rtshotkey[0]=9;} else{ edit_rtshotkey[0]--;} if(edit_rtshotkey[0]==edit_rtshotkey[1]) edit_rtshotkey[0]--; } break; case 1: if(edit_rtshotkey[1]==0) {edit_rtshotkey[1]=9;} else {edit_rtshotkey[1]--;} if(edit_rtshotkey[1]==edit_rtshotkey[0]) { if(edit_rtshotkey[1]==0) {edit_rtshotkey[1]=9;} else{ edit_rtshotkey[1]--;} if(edit_rtshotkey[1]==edit_rtshotkey[2]) edit_rtshotkey[1]--; } else if(edit_rtshotkey[1]==edit_rtshotkey[2]) { if(edit_rtshotkey[1]==0) {edit_rtshotkey[1]=9;} else{ edit_rtshotkey[1]--;} if(edit_rtshotkey[1]==edit_rtshotkey[0]) edit_rtshotkey[1]--; } break; case 2: if(edit_rtshotkey[2]==0) {edit_rtshotkey[2]=9;} else{edit_rtshotkey[2]--;} if(edit_rtshotkey[2]==edit_rtshotkey[0]) { if(edit_rtshotkey[2]==0) {edit_rtshotkey[2]=9;} else{ edit_rtshotkey[2]--;} if(edit_rtshotkey[2]==edit_rtshotkey[1]) edit_rtshotkey[2]--; } else if(edit_rtshotkey[2]==edit_rtshotkey[1]) { if(edit_rtshotkey[2]==0) {edit_rtshotkey[2]=9;} else{ edit_rtshotkey[2]--;} if(edit_rtshotkey[2]==edit_rtshotkey[0]) edit_rtshotkey[2]--; } break; } } re_show = 1; } else if(keys & KEY_RIGHT) { if(select ==0){ if(edit_pos==7) { edit_pos=0; } else { edit_pos++; } } else if(select ==1) { if(addon_sel==3){ addon_sel ++; } else if(addon_sel<2){ addon_sel ++; } } else if(select ==2) //lang { language_sel = 1; } else if(select ==3) { engine_pos = 1; } else if (select ==4) { if(sleep_pos<3){ sleep_pos ++; } } else if (select ==5) { if(rtshotkey_pos<3){ rtshotkey_pos ++; } } else if(select ==6) { RTC_pos = 1; } re_show = 1; } else if(keys & KEY_LEFT) { if(select ==0){ if(edit_pos==0) { edit_pos=7; } else { edit_pos--; } } else if(select ==1) { if(addon_sel==4){ addon_sel --; } else if((addon_sel>0)&&(addon_sel<3)){ addon_sel --; } } else if(select ==2) //lang { language_sel = 0; } else if(select ==3) { engine_pos = 0; } else if(select ==4) { if(sleep_pos){ sleep_pos--; } } else if(select ==5) { if(rtshotkey_pos){ rtshotkey_pos--; } } else if(select ==6) { RTC_pos = 0; } re_show = 1; } else if(keys & KEY_A) { if((0== select) && (edit_pos==7)){ rtc_enable(); rtc_set(edit_datetime); rtc_disenable(); delay(0x200); Set_OK = 0;//!Set_OK; } else if(select == 1) { switch(addon_sel) { case 0:v_reset = !v_reset;break; case 1:v_rts = !v_rts;break; case 3:v_sleep = !v_sleep;break; case 4:v_cheat = !v_cheat;break; case 2: { save_set_info(); CheckSwitch(); //read again Set_OK = 0; break; } } } else if(select == 2) { save_set_info(); CheckLanguage(); //read again ClearWithBG((u16*)gImage_SET,0, 20, 240, 160-20, 1); Set_OK = 0; } else if(select == 3) { switch(engine_pos) { case 0:engine_sel = !engine_sel;break; case 1: { save_set_info(); Set_OK = 0; gl_engine_sel = Read_SET_info(11); if( (gl_engine_sel != 0x0) && (gl_engine_sel != 0x1)) { gl_engine_sel = 0x1; } break; } } } else if((select == 4) && (sleep_pos==3)) { save_set_info(); Set_OK = 0; } else if((select == 5) && (rtshotkey_pos==3)) { save_set_info(); Set_OK = 0; } else if(select == 6) { switch(RTC_pos) { case 0:gl_ingame_RTC_open_status = !gl_ingame_RTC_open_status;break; case 1: { save_set_info(); Set_OK = 0; gl_ingame_RTC_open_status = Read_SET_info(13); if( (gl_ingame_RTC_open_status != 0x0) && (gl_ingame_RTC_open_status != 0x1)) { gl_ingame_RTC_open_status = 0x1; } break; } } } re_show = 1; } } if(currPage == 1){ if(keys & KEY_RIGHT) { if(select ==0) { quickboot_pos = 1; } re_show = 1; } else if(keys & KEY_LEFT) { if(select ==0) { quickboot_pos = 0; } re_show = 1; } else if(keys & KEY_A) { if(select == 0) { switch(quickboot_pos) { case 0:gl_ingame_NOR_quickboot_status = !gl_ingame_NOR_quickboot_status;break; case 1: { save_set_info(); CheckSwitch(); //read again Set_OK = 0; gl_ingame_NOR_quickboot_status = Read_SET_info(14); if( (gl_ingame_NOR_quickboot_status != 0x0) && (gl_ingame_NOR_quickboot_status != 0x1)) { gl_ingame_NOR_quickboot_status = 0x1; } break; } } } re_show = 1; } } break ; }//end switch }//end while(1) } //--------------------------------------------------------------------------------- void save_set_info(void) { if(language_sel == 0x0){//english SET_info_buffer[0] = 0xE1E1; } else{ SET_info_buffer[0] = 0xE2E2; } if(currPage == 0) { SET_info_buffer[1] = v_reset; SET_info_buffer[2] = v_rts; SET_info_buffer[3] = v_sleep; SET_info_buffer[4] = v_cheat; SET_info_buffer[5] = edit_sleephotkey[0]; SET_info_buffer[6] = edit_sleephotkey[1]; SET_info_buffer[7] = edit_sleephotkey[2]; SET_info_buffer[8] = edit_rtshotkey[0]; SET_info_buffer[9] = edit_rtshotkey[1]; SET_info_buffer[10] = edit_rtshotkey[2]; SET_info_buffer[11] = engine_sel; SET_info_buffer[12] = gl_show_Thumbnail; SET_info_buffer[13] = gl_ingame_RTC_open_status; //save to nor } else if (currPage == 1){ SET_info_buffer[1] = Read_SET_info(1); SET_info_buffer[2] = Read_SET_info(2); SET_info_buffer[3] = Read_SET_info(3); SET_info_buffer[4] = Read_SET_info(4); SET_info_buffer[5] = Read_SET_info(5); SET_info_buffer[6] = Read_SET_info(6); SET_info_buffer[7] = Read_SET_info(7); SET_info_buffer[8] = Read_SET_info(8); SET_info_buffer[9] = Read_SET_info(9); SET_info_buffer[10] = Read_SET_info(10); SET_info_buffer[11] = Read_SET_info(11); SET_info_buffer[12] = Read_SET_info(12); SET_info_buffer[13] = Read_SET_info(13); SET_info_buffer[14] = gl_ingame_NOR_quickboot_status; } Save_SET_info(SET_info_buffer,0x200); }