Update
[pcsx_rearmed.git] / frontend / main.c
index 426ef13..64be927 100644 (file)
@@ -8,12 +8,12 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdarg.h>
-#include <dlfcn.h>
-#include <sys/stat.h>
-#include <sys/types.h>
 #include <unistd.h>
 #include <signal.h>
 #include <time.h>
+#if !defined(_WIN32) && !defined(NO_DYLIB)
+#include <dlfcn.h>
+#endif
 
 #include "main.h"
 #include "plugin.h"
@@ -26,6 +26,7 @@
 #include "../libpcsxcore/new_dynarec/new_dynarec.h"
 #include "../plugins/cdrcimg/cdrcimg.h"
 #include "../plugins/dfsound/spu_config.h"
+#include "arm_features.h"
 #include "revision.h"
 
 #ifndef NO_FRONTEND
@@ -129,6 +130,13 @@ void emu_set_default_config(void)
        pl_rearmed_cbs.gpu_neon.enhancement_no_main = 0;
        pl_rearmed_cbs.gpu_peops.iUseDither = 0;
        pl_rearmed_cbs.gpu_peops.dwActFixes = 1<<7;
+       pl_rearmed_cbs.gpu_unai.ilace_force = 0;
+       pl_rearmed_cbs.gpu_unai.pixel_skip = 1;
+       pl_rearmed_cbs.gpu_unai.lighting = 1;
+       pl_rearmed_cbs.gpu_unai.fast_lighting = 1;
+       pl_rearmed_cbs.gpu_unai.blending = 1;
+       pl_rearmed_cbs.gpu_unai.dithering = 0;
+       // old gpu_unai config
        pl_rearmed_cbs.gpu_unai.abe_hack =
        pl_rearmed_cbs.gpu_unai.no_light =
        pl_rearmed_cbs.gpu_unai.no_blend = 0;
@@ -137,11 +145,13 @@ void emu_set_default_config(void)
        pl_rearmed_cbs.gpu_peopsgl.iTexGarbageCollection = 1;
 
        spu_config.iUseReverb = 1;
+       spu_config.idiablofix = 0;
        spu_config.iUseInterpolation = 1;
        spu_config.iXAPitch = 0;
        spu_config.iVolume = 768;
        spu_config.iTempo = 0;
-#if defined(__arm__) && !defined(__ARM_ARCH_7A__) /* XXX */
+       spu_config.iUseThread = 1; // no effect if only 1 core is detected
+#if defined(HAVE_PRE_ARMV7) && !defined(_3DS) /* XXX GPH hack */
        spu_config.iUseReverb = 0;
        spu_config.iUseInterpolation = 0;
        spu_config.iTempo = 1;
@@ -149,8 +159,8 @@ void emu_set_default_config(void)
        new_dynarec_hacks = 0;
        cycle_multiplier = 200;
 
-       in_type1 = PSE_PAD_TYPE_STANDARD;
-       in_type2 = PSE_PAD_TYPE_STANDARD;
+       in_type[0] = PSE_PAD_TYPE_STANDARD;
+       in_type[1] = PSE_PAD_TYPE_STANDARD;
 }
 
 void do_emu_action(void)
@@ -452,6 +462,10 @@ void emu_core_ask_exit(void)
 }
 
 #ifndef NO_FRONTEND
+
+#include <sys/stat.h>
+#include <sys/types.h>
+
 static void create_profile_dir(const char *directory) {
        char path[MAXPATHLEN];
 
@@ -715,10 +729,10 @@ void SysReset() {
        // reset can run code, timing must be set
        pl_timing_prepare(Config.PsxType);
 
-       EmuReset();
-
-       // hmh core forgets this
+   // hmh core forgets this
        CDR_stop();
+   
+       EmuReset();
 
        GPU_updateLace = real_lace;
        g_emu_resetting = 0;
@@ -766,7 +780,7 @@ int emu_save_state(int slot)
                return ret;
 
        ret = SaveState(fname);
-#ifndef __ARM_ARCH_7A__ /* XXX */
+#if defined(HAVE_PRE_ARMV7) && !defined(_3DS) && !defined(__SWITCH__) /* XXX GPH hack */
        sync();
 #endif
        SysPrintf("* %s \"%s\" [%d]\n",
@@ -788,6 +802,7 @@ int emu_load_state(int slot)
        return LoadState(fname);
 }
 
+#ifndef HAVE_LIBRETRO
 #ifndef ANDROID
 
 void SysPrintf(const char *fmt, ...) {
@@ -812,6 +827,7 @@ void SysPrintf(const char *fmt, ...) {
 }
 
 #endif
+#endif /* HAVE_LIBRETRO */
 
 void SysMessage(const char *fmt, ...) {
        va_list list;
@@ -861,7 +877,7 @@ static int _OpenPlugins(void) {
 
        if (Config.UseNet && !NetOpened) {
                netInfo info;
-               char path[MAXPATHLEN];
+               char path[MAXPATHLEN * 2];
                char dotdir[MAXPATHLEN];
 
                MAKE_PATH(dotdir, "/.pcsx/plugins/", NULL);
@@ -968,7 +984,7 @@ static const int builtin_plugin_ids[] = {
 
 void *SysLoadLibrary(const char *lib) {
        const char *tmp = strrchr(lib, '/');
-       void *ret;
+       void *ret = NULL;
        int i;
 
        SysPrintf("plugin: %s\n", lib);
@@ -980,9 +996,14 @@ void *SysLoadLibrary(const char *lib) {
                                return (void *)(long)(PLUGIN_DL_BASE + builtin_plugin_ids[i]);
        }
 
+#if !defined(_WIN32) && !defined(NO_DYLIB)
        ret = dlopen(lib, RTLD_NOW);
        if (ret == NULL)
                SysMessage("dlopen: %s", dlerror());
+#else
+       /* no external plugin support, abi is no longer
+        * compatible with psemu/pcsx anyway */
+#endif
        return ret;
 }
 
@@ -992,11 +1013,21 @@ void *SysLoadSym(void *lib, const char *sym) {
        if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
                return plugin_link(plugid - PLUGIN_DL_BASE, sym);
 
+#if !defined(_WIN32) && !defined(NO_DYLIB)
        return dlsym(lib, sym);
+#else
+       return NULL;
+#endif
 }
 
 const char *SysLibError() {
+#if defined(NO_DYLIB)
+   return NULL;
+#elif !defined(_WIN32)
        return dlerror();
+#else
+       return "not supported";
+#endif
 }
 
 void SysCloseLibrary(void *lib) {
@@ -1005,6 +1036,7 @@ void SysCloseLibrary(void *lib) {
        if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
                return;
 
+#if !defined(_WIN32) && !defined(NO_DYLIB)
        dlclose(lib);
+#endif
 }
-