int RunSettingsMenu() { static int index = 0; static int spy = 72; int done = 0, y, i; g_dirty = 1; while (!done) { // Parse input readkey(); if (parsekey(DINGOO_B)) done = 1; if (parsekey(DINGOO_UP, 1)) { if (index > 0) { index--; spy -= 16; } else { index = 3; spy = 72 + 16*index; } } if (parsekey(DINGOO_DOWN, 1)) { if (index < 3) { index++; spy += 16; } else { index = 0; spy = 72; } } if (parsekey(DINGOO_A)) { done = settings_menu[index].command(); } // Must draw bg only when needed // Draw stuff if (g_dirty) { draw_bg(g_bg); //Draw Top and Bottom Bars DrawChar(gui_screen, SP_SELECTOR, 0, 37); DrawChar(gui_screen, SP_SELECTOR, 81, 37); DrawChar(gui_screen, SP_SELECTOR, 0, 225); DrawChar(gui_screen, SP_SELECTOR, 81, 225); DrawText(gui_screen, "B - Go Back", 235, 225); DrawChar(gui_screen, SP_LOGO, 12, 9); // Draw selector DrawChar(gui_screen, SP_SELECTOR, 56, spy); DrawChar(gui_screen, SP_SELECTOR, 77, spy); DrawText(gui_screen, "Settings", 8, 37); // Draw menu for (i = 0, y = 72; i < 4; i++, y += 16) { DrawText(gui_screen, settings_menu[i].name, 60, y); } // Draw info DrawText(gui_screen, settings_menu[index].info, 8, 225); g_dirty = 0; } SDL_Delay(16); // Update real screen FCEUGUI_Flip(); } // Must update emulation core and drivers UpdateEMUCore(g_config); FCEUD_DriverReset(); // Clear screen dingoo_clear_video(); g_dirty = 1; }
int RunSettingsMenu() { static int index = 0; static int spy = 80; int done = 0, y, i; g_dirty = 1; while (!done) { // Get time and battery every second if (update_time()) { update_battery(); g_dirty = 1; } // Parse input readkey(); if (parsekey(DINGOO_B)) done = 1; if (parsekey(DINGOO_UP, 1)) { if (index > 0) { index--; spy -= 16; } } if (parsekey(DINGOO_DOWN, 1)) { if (index < 3) { index++; spy += 16; } } if (parsekey(DINGOO_A)) { done = settings_menu[index].command(); } // Must draw bg only when needed // Draw stuff if( g_dirty ) { draw_bg(vbuffer, g_bg); // Draw time and battery every minute DrawText(vbuffer, g_time, 148, 5); DrawText(vbuffer, g_battery, 214, 5); DrawChar(vbuffer, SP_SETTINGS, 40, 38); // Draw menu for(i=0,y=76;i < 4;i++,y+=16) { DrawText(vbuffer, settings_menu[i].name, 50, y); } // Draw info DrawText(vbuffer, settings_menu[index].info, 16, 225); // Draw selector DrawChar(vbuffer, SP_SELECTOR, 34, spy); g_dirty = 0; } dingoo_timer_delay(16); // Update real screen memcpy(dingoo_screen15, vbuffer, 320*240*sizeof(unsigned short)); } // Must update emulation core and drivers UpdateEMUCore(g_config); FCEUD_DriverReset(); g_dirty = 1; }