X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmain.c;h=c512175a39a9f48ef866df9b6f911dd8a9a0288f;hp=175083e58cf785a846cecc560e457214498783cc;hb=cbb260483b3b51839805cc5b8cd95720784118c0;hpb=ce5f8f353568e075c4ef419731f3ca4a8f93be7b diff --git a/frontend/main.c b/frontend/main.c index 175083e5..c512175a 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -20,17 +20,27 @@ #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" #include "common/plat.h" -#include "common/input.h" #include "common/readpng.h" +#include "common/input.h" +#include "linux/in_evdev.h" // don't include debug.h - it breaks ARM build (R1 redefined) 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]; @@ -123,11 +133,44 @@ 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; + 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]; @@ -205,6 +248,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; } @@ -231,6 +281,7 @@ int main(int argc, char *argv[]) CheckSubDir(); set_default_paths(); + emu_set_default_config(); check_memcards(); strcpy(Config.Bios, "HLE"); @@ -313,10 +364,11 @@ int main(int argc, char *argv[]) // frontend stuff in_init(); + in_evdev_init(); //in_probe(); + pl_init(); plat_init(); menu_init(); // loads config - pl_init(); if (psxout) Config.PsxOut = 1; @@ -420,6 +472,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 @@ -477,6 +532,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; }