frontend: save gpu-gles settings too
[pcsx_rearmed.git] / frontend / main.c
index aaf1bb0..d3df714 100644 (file)
 void StartDebugger();
 void StopDebugger();
 
+// sound plugin
+extern int iUseReverb;
+extern int iUseInterpolation;
+extern int iXAPitch;
+extern int iSPUIRQWait;
+extern int iUseTimer;
+extern int iVolume;
+
 int ready_to_go;
 unsigned long gpuDisp;
 char cfgfile_basename[MAXPATHLEN];
@@ -125,11 +133,45 @@ static void set_default_paths(void)
 #if defined(__arm__) && !defined(__ARM_ARCH_7A__) /* XXX */
        strcpy(Config.Gpu, "gpuPCSX4ALL.so");
 #endif
-       Config.PsxAuto = 1;
 
        snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "." PATCHES_DIR);
 }
 
+void emu_set_default_config(void)
+{
+       // try to set sane config on which most games work
+       Config.Xa = Config.Cdda = Config.Sio =
+       Config.SpuIrq = Config.RCntFix = Config.VSyncWA = 0;
+       Config.CdrReschedule = 0;
+       Config.PsxAuto = 1;
+
+       pl_rearmed_cbs.gpu_neon.allow_interlace = 2; // auto
+       pl_rearmed_cbs.gpu_peops.iUseDither = 0;
+       pl_rearmed_cbs.gpu_peops.dwActFixes = 1<<7;
+       pl_rearmed_cbs.gpu_unai.abe_hack =
+       pl_rearmed_cbs.gpu_unai.no_light =
+       pl_rearmed_cbs.gpu_unai.no_blend = 0;
+       memset(&pl_rearmed_cbs.gpu_peopsgl, 0, sizeof(pl_rearmed_cbs.gpu_peopsgl));
+       pl_rearmed_cbs.gpu_peopsgl.iVRamSize = 64;
+       pl_rearmed_cbs.gpu_peopsgl.iTexGarbageCollection = 1;
+
+       iUseReverb = 2;
+       iUseInterpolation = 1;
+       iXAPitch = 0;
+       iSPUIRQWait = 1;
+       iUseTimer = 2;
+       iVolume = 768;
+#ifndef __ARM_ARCH_7A__ /* XXX */
+       iUseReverb = 0;
+       iUseInterpolation = 0;
+#endif
+       new_dynarec_hacks = 0;
+       cycle_multiplier = 200;
+
+       in_type1 = PSE_PAD_TYPE_STANDARD;
+       in_type2 = PSE_PAD_TYPE_STANDARD;
+}
+
 static void check_memcards(void)
 {
        char buf[MAXPATHLEN];
@@ -207,6 +249,13 @@ void do_emu_action(void)
                                snprintf(hud_msg, sizeof(hud_msg), "SCREENSHOT TAKEN");
                        break;
                }
+       case SACTION_VOLUME_UP:
+       case SACTION_VOLUME_DOWN:
+               plat_step_volume(emu_action == SACTION_VOLUME_UP);
+               return;
+       case SACTION_MINIMIZE:
+               plat_minimize();
+               return;
        default:
                return;
        }
@@ -233,6 +282,7 @@ int main(int argc, char *argv[])
 
        CheckSubDir();
        set_default_paths();
+       emu_set_default_config();
        check_memcards();
        strcpy(Config.Bios, "HLE");
 
@@ -317,10 +367,9 @@ int main(int argc, char *argv[])
        in_init();
        in_evdev_init();
        //in_probe();
+       pl_init();
        plat_init();
        menu_init(); // loads config
-       pl_init();
-       plat_rescan_inputs();
 
        if (psxout)
                Config.PsxOut = 1;
@@ -424,6 +473,9 @@ void SysReset() {
        void *real_lace = GPU_updateLace;
        GPU_updateLace = dummy_lace;
 
+       // reset can run code, timing must be set
+       pl_timing_prepare(Config.PsxType);
+
        EmuReset();
 
        // hmh core forgets this
@@ -481,6 +533,9 @@ int emu_save_state(int slot)
                return ret;
 
        ret = SaveState(fname);
+#ifndef __ARM_ARCH_7A__ /* XXX */
+       sync();
+#endif
        printf("* %s \"%s\" [%d]\n", ret == 0 ? "saved" : "failed to save", fname, slot);
        return ret;
 }