Esempio n. 1
0
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;
}