void emu_WriteConfig(void) { FILE *f; getcwd(currentConfig.lastRomDir, MAXPATHLEN); printf("currentDir -> %s\n", currentConfig.lastRomDir); chdir(runPath); //change to dir where you launched app f = fopen("Potator2x.cfg", "wb"); if (f) { fwrite(¤tConfig, 1, sizeof(currentConfig), f); fflush(f); fclose(f); sync(); } chdir(currentConfig.lastRomDir); // change back to last dir (where you loaded the rom from) if(currentConfig.videoMode==2) gp2x_video_RGB_setscaling(160, 160); else gp2x_video_RGB_setscaling(320, 240); CPUSetting(clocklist[currentConfig.CPUclock]); //gp2x_sound_rate(currentConfig.SoundRate); gp2x_sound_volume(currentConfig.volume,currentConfig.volume); gp2x_sound_pause(1^currentConfig.enable_sound); }
void emu_ReadConfig(void) { FILE *f; getcwd(currentConfig.lastRomDir, MAXPATHLEN); printf("currentDir -> %s\n", currentConfig.lastRomDir); chdir(runPath); //change to dir where you launched app // set default config memset(¤tConfig, 0, sizeof(currentConfig)); //currentConfig.lastRomDir[0] = 0; currentConfig.videoMode = 0; currentConfig.show_fps = 0; currentConfig.enable_sound = 0; currentConfig.SoundRate = 11025; currentConfig.Frameskip = 0; // auto currentConfig.CPUclock = 1; currentConfig.volume = 255; gp2x_sound_volume(currentConfig.volume,currentConfig.volume); f = fopen("Potator2x.cfg", "rb"); if (f) { fread(¤tConfig, 1, sizeof(currentConfig), f); fclose(f); } chdir(currentConfig.lastRomDir); // change back to last dir (where you loaded the rom from) if(currentConfig.videoMode==2) gp2x_video_RGB_setscaling(160, 160); else gp2x_video_RGB_setscaling(320, 240); CPUSetting(clocklist[currentConfig.CPUclock]); //gp2x_sound_rate(currentConfig.SoundRate); gp2x_sound_volume(currentConfig.volume,currentConfig.volume); gp2x_sound_pause(1^currentConfig.enable_sound); }
void emu_video_mode_change(int start_line, int line_count, int is_32cols) { int scalex = 320, scaley = 240; int ln_offs = 0; if (doing_bg_frame) return; osd_fps_x = OSD_FPS_X; osd_y = 232; /* set up hwscaling here */ PicoOpt &= ~POPT_DIS_32C_BORDER; if (is_32cols && currentConfig.scaling == EOPT_SCALE_HW) { scalex = 256; PicoOpt |= POPT_DIS_32C_BORDER; osd_fps_x = OSD_FPS_X - 64; } if (currentConfig.vscaling == EOPT_SCALE_HW) { ln_offs = start_line; scaley = line_count; osd_y = start_line + line_count - 8; } gp2x_video_RGB_setscaling(ln_offs, scalex, scaley); /* line doubling */ if (currentConfig.vscaling == EOPT_SCALE_SW && line_count < 240) { ld_lines = ld_left = line_count / (240 - line_count); PicoDrawSetCallbacks(EmuScanBegin16_ld, EmuScanEnd16_ld); } // clear whole screen in all buffers if (!is_16bit_mode()) gp2x_memset_all_buffers(0, 0xe0, 320*240); else gp2x_memset_all_buffers(0, 0, 320*240*2); }
void handleMainMenu(void) { BOOL isSelected = FALSE; int menuOption = 0; textClear(); gp2x_video_RGB_setscaling(320, 240); while(!isSelected) { unsigned long pad = gp2x_joystick_read(0); printMenuOptions(); gp2x_printf(0, 170, 1, "MenuOption = %d",menuOption); gp2x_printf(0, 0, (31 + (menuOption*8)), "->"); gp2x_video_RGB_flip(0); if(pad & GP2X_RIGHT) { if((menuOption == MMOPTION_SAVESTATE) || (menuOption == MMOPTION_LOADSTATE)) saveSlot++; } if(pad & GP2X_LEFT) { if((menuOption == MMOPTION_SAVESTATE) || (menuOption == MMOPTION_LOADSTATE)) saveSlot--; } if(pad & GP2X_DOWN) { menuOption++; textClear(); } if(pad & GP2X_UP) { menuOption--; textClear(); } if(pad & GP2X_VOL_DOWN) if(pad & GP2X_START) exitMenu(); if(pad & GP2X_X) { switch(menuOption){ case MMOPTION_CONTINUE: RESIZE(); textClear(); return; case MMOPTION_RESTART: RESIZE(); supervision_reset(); textClear(); return; case MMOPTION_SELECTOR: handleFileMenu(); return; case MMOPTION_OPTIONS: handleOptionsMenu(); textClear(); return; case MMOPTION_SAVESTATE: sv_saveState(romname,saveSlot); textClear();return; case MMOPTION_LOADSTATE: sv_loadState(romname,saveSlot); textClear();return; case MMOPTION_EXIT: exitMenu(); break; default: return; } } /*if(pad & GP2X_B) { textClear(); return; }*/ if(menuOption < 0) menuOption = 0; if(menuOption > 6) menuOption = 6; if(saveSlot < 0) saveSlot = 0; if(saveSlot > 9) saveSlot = 9; while(pad == gp2x_joystick_read(0)); pad = gp2x_joystick_read(0); textClear(); } }
void handleOptionsMenu(void) { BOOL isSelected = FALSE; int menuOption = 0; emu_ReadConfig(); gp2x_video_RGB_setscaling(320, 240); textClear(); while(!isSelected) { int clock = currentConfig.CPUclock; int frameskip = currentConfig.Frameskip; int videomode = currentConfig.videoMode; int vol = currentConfig.volume; unsigned long pad = gp2x_joystick_read(0); gp2x_printf(0, 1, 1, "Potator2x 1.0 by Normmatt\n\n"); gp2x_printf(0, 15, 15 + 2*8, "videoMode %s",videoMode); gp2x_printf(0, 15, 15 + 3*8, "show_fps %d",currentConfig.show_fps); gp2x_printf(0, 15, 15 + 4*8, "enable_sound %d",currentConfig.enable_sound); gp2x_printf(0, 15, 15 + 5*8, "SoundRate %d",currentConfig.SoundRate); gp2x_printf(0, 15, 15 + 6*8, "Frameskip %d",currentConfig.Frameskip); gp2x_printf(0, 15, 15 + 7*8, "CPUclock %d",clocklist[currentConfig.CPUclock]); gp2x_printf(0, 15, 15 + 8*8, "volume %d",currentConfig.volume); gp2x_printf(0, 15, 15 + 9*8, "Save and Exit"); gp2x_printf(0, 15, 15 + 10*8, "Exit"); gp2x_printf(0, 170, 1, "MenuOption = %d",menuOption); gp2x_printf(0, 0, (31 + (menuOption*8)), "->"); gp2x_video_RGB_flip(0); if(pad & GP2X_RIGHT) { if(menuOption == OPTION_VIDEOMODE) if(videomode < 2) currentConfig.videoMode++; if(menuOption == OPTION_SHOWFPS) if(currentConfig.show_fps==0) currentConfig.show_fps=1; else currentConfig.show_fps=0; if(menuOption == OPTION_ENABLESOUND) if(currentConfig.enable_sound==0) currentConfig.enable_sound=1; else currentConfig.enable_sound=0; if(menuOption == OPTION_SOUNDRATE) currentConfig.SoundRate*=2; if(menuOption == OPTION_FRAMESKIP) if (frameskip < 9) frameskip++; if(menuOption == OPTION_CPUCLOCK) if(clock < sizeof(clocklist)) clock++; if(menuOption == OPTION_VOLUME) if (vol < 255) vol+= (pad & GP2X_RIGHT) ? 1 : 0; } if(pad & GP2X_LEFT) { if(menuOption == OPTION_VIDEOMODE) if(videomode > 0) currentConfig.videoMode--; if(menuOption == OPTION_SHOWFPS) if(currentConfig.show_fps==0) currentConfig.show_fps=1; else currentConfig.show_fps=0; if(menuOption == OPTION_ENABLESOUND) if(currentConfig.enable_sound==0) currentConfig.enable_sound=1; else currentConfig.enable_sound=0; if(menuOption == OPTION_SOUNDRATE) currentConfig.SoundRate/=2; if(menuOption == OPTION_FRAMESKIP) if (frameskip > 0) frameskip--; if(menuOption == OPTION_CPUCLOCK) if(clock > 0) clock--; if(menuOption == OPTION_VOLUME) if (vol > 0) vol-= (pad & GP2X_LEFT) ? 1 : 0; } if(pad & GP2X_DOWN) { menuOption++; textClear(); } if(pad & GP2X_UP) { menuOption--; textClear(); } if(pad & GP2X_VOL_DOWN) if(pad & GP2X_START) exitMenu(); if(pad & GP2X_X) { switch(menuOption){ case OPTION_SAVEEXIT: emu_WriteConfig(); return; case OPTION_EXIT: //gp2x_sound_rate(currentConfig.SoundRate); return; default: break; } } switch(currentConfig.videoMode) { case 0: sprintf(videoMode,"Slow"); break; case 1: sprintf(videoMode,"Quick"); break; case 2: sprintf(videoMode,"Full Screen"); break; default: sprintf(videoMode,""); break; } if(currentConfig.SoundRate <= 11025) currentConfig.SoundRate = 11025; if(currentConfig.SoundRate >= 44100) currentConfig.SoundRate = 44100; currentConfig.Frameskip = frameskip; currentConfig.CPUclock = clock; currentConfig.volume = vol; if(menuOption < 0) menuOption = 0; if(menuOption > 8) menuOption = 8; while(pad == gp2x_joystick_read(0)); pad = gp2x_joystick_read(0); textClear(); } }