X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmain.c;h=dc5be3cfeb8232e2f208f6008817b5181890d0e2;hp=70355dd2e45e93b180f88c06cab82105f28a6021;hb=b07c18e8645a17be916266820ae564e0d320cc1a;hpb=f2de172b46a4948242a53b4b7c24f9fc151c19b5 diff --git a/frontend/main.c b/frontend/main.c index 70355dd2..dc5be3cf 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -20,6 +20,7 @@ #include "plugin_lib.h" #include "pcnt.h" #include "menu.h" +#include "plat.h" #include "../libpcsxcore/misc.h" #include "../libpcsxcore/new_dynarec/new_dynarec.h" #include "../plugins/cdrcimg/cdrcimg.h" @@ -32,6 +33,14 @@ 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]; @@ -124,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]; @@ -206,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; } @@ -232,6 +282,7 @@ int main(int argc, char *argv[]) CheckSubDir(); set_default_paths(); + emu_set_default_config(); check_memcards(); strcpy(Config.Bios, "HLE"); @@ -313,12 +364,12 @@ int main(int argc, char *argv[]) return 1; // frontend stuff + // init input but leave probing to platform code, + // they add input drivers and may need to modify them after probe in_init(); - in_evdev_init(); - //in_probe(); + pl_init(); plat_init(); menu_init(); // loads config - pl_init(); if (psxout) Config.PsxOut = 1; @@ -422,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 @@ -479,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; }