notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge from libretro fork
[pcsx_rearmed.git]
/
frontend
/
main.c
diff --git
a/frontend/main.c
b/frontend/main.c
index
4631618
..
dcac1d9
100644
(file)
--- a/
frontend/main.c
+++ b/
frontend/main.c
@@
-11,7
+11,7
@@
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
-#if
ndef _WIN32
+#if
!defined(_WIN32) && !defined(NO_DYLIB)
#include <dlfcn.h>
#endif
#include <dlfcn.h>
#endif
@@
-29,6
+29,14
@@
#include "arm_features.h"
#include "revision.h"
#include "arm_features.h"
#include "revision.h"
+#if defined(__has_builtin)
+#define DO_CPU_CHECKS __has_builtin(__builtin_cpu_init)
+#elif defined(__x86_64__) || defined(__i386__)
+#define DO_CPU_CHECKS 1
+#else
+#define DO_CPU_CHECKS 0
+#endif
+
#ifndef NO_FRONTEND
#include "libpicofe/input.h"
#include "libpicofe/plat.h"
#ifndef NO_FRONTEND
#include "libpicofe/input.h"
#include "libpicofe/plat.h"
@@
-43,8
+51,8
@@
static void check_memcards(void);
#endif
// don't include debug.h - it breaks ARM build (R1 redefined)
#endif
// don't include debug.h - it breaks ARM build (R1 redefined)
-void StartDebugger();
-void StopDebugger();
+static void StartDebugger() {}
+static void StopDebugger() {}
int ready_to_go, g_emu_want_quit, g_emu_resetting;
unsigned long gpuDisp;
int ready_to_go, g_emu_want_quit, g_emu_resetting;
unsigned long gpuDisp;
@@
-121,9
+129,10
@@
static void set_default_paths(void)
void emu_set_default_config(void)
{
// try to set sane config on which most games work
void emu_set_default_config(void)
{
// try to set sane config on which most games work
- Config.Xa = Config.Cdda =
Config.Sio =
- Config.icache_emulation =
Config.SpuIrq = Config.RCntFix = Config.VSyncWA =
0;
+ Config.Xa = Config.Cdda =
0;
+ Config.icache_emulation = 0;
Config.PsxAuto = 1;
Config.PsxAuto = 1;
+ Config.cycle_multiplier = CYCLE_MULT_DEFAULT;
pl_rearmed_cbs.gpu_neon.allow_interlace = 2; // auto
pl_rearmed_cbs.gpu_neon.enhancement_enable =
pl_rearmed_cbs.gpu_neon.allow_interlace = 2; // auto
pl_rearmed_cbs.gpu_neon.enhancement_enable =
@@
-149,16
+158,17
@@
void emu_set_default_config(void)
spu_config.iVolume = 768;
spu_config.iTempo = 0;
spu_config.iUseThread = 1; // no effect if only 1 core is detected
spu_config.iVolume = 768;
spu_config.iTempo = 0;
spu_config.iUseThread = 1; // no effect if only 1 core is detected
-#if
def HAVE_PRE_ARMV7
/* XXX GPH hack */
+#if
defined(HAVE_PRE_ARMV7) && !defined(_3DS)
/* XXX GPH hack */
spu_config.iUseReverb = 0;
spu_config.iUseInterpolation = 0;
spu_config.iUseReverb = 0;
spu_config.iUseInterpolation = 0;
+#ifndef HAVE_LIBRETRO
spu_config.iTempo = 1;
spu_config.iTempo = 1;
+#endif
#endif
new_dynarec_hacks = 0;
#endif
new_dynarec_hacks = 0;
- cycle_multiplier = 200;
- in_type
1
= PSE_PAD_TYPE_STANDARD;
- in_type
2
= PSE_PAD_TYPE_STANDARD;
+ in_type
[0]
= PSE_PAD_TYPE_STANDARD;
+ in_type
[1]
= PSE_PAD_TYPE_STANDARD;
}
void do_emu_action(void)
}
void do_emu_action(void)
@@
-305,7
+315,7
@@
static int cdidcmp(const char *id1, const char *id2)
static void parse_cwcheat(void)
{
static void parse_cwcheat(void)
{
- char line[256], buf[
64], name[64
], *p;
+ char line[256], buf[
256], name[256
], *p;
int newcheat = 1;
u32 a, v;
FILE *f;
int newcheat = 1;
u32 a, v;
FILE *f;
@@
-405,6
+415,24
@@
void emu_on_new_cd(int show_hud_msg)
}
}
}
}
+static void log_wrong_cpu(void)
+{
+#if DO_CPU_CHECKS
+ __builtin_cpu_init();
+ #define CHECK_CPU(name) if (!__builtin_cpu_supports(name)) \
+ SysPrintf("ERROR: compiled for " name ", which is unsupported by the CPU\n")
+#ifdef __SSE2__
+ CHECK_CPU("sse2");
+#endif
+#ifdef __SSSE3__
+ CHECK_CPU("ssse3");
+#endif
+#ifdef __SSE4_1__
+ CHECK_CPU("sse4.1");
+#endif
+#endif // DO_CPU_CHECKS
+}
+
int emu_core_preinit(void)
{
// what is the name of the config file?
int emu_core_preinit(void)
{
// what is the name of the config file?
@@
-419,6
+447,8
@@
int emu_core_preinit(void)
#endif
emuLog = stdout;
#endif
emuLog = stdout;
+ log_wrong_cpu();
+
SetIsoFile(NULL);
memset(&Config, 0, sizeof(Config));
SetIsoFile(NULL);
memset(&Config, 0, sizeof(Config));
@@
-712,7
+742,7
@@
void SysRunGui() {
printf("SysRunGui\n");
}
printf("SysRunGui\n");
}
-static void dummy_lace()
+static void
CALLBACK
dummy_lace()
{
}
{
}
@@
-727,10
+757,10
@@
void SysReset() {
// reset can run code, timing must be set
pl_timing_prepare(Config.PsxType);
// reset can run code, timing must be set
pl_timing_prepare(Config.PsxType);
- EmuReset();
-
// hmh core forgets this
CDR_stop();
// hmh core forgets this
CDR_stop();
+
+ EmuReset();
GPU_updateLace = real_lace;
g_emu_resetting = 0;
GPU_updateLace = real_lace;
g_emu_resetting = 0;
@@
-778,7
+808,7
@@
int emu_save_state(int slot)
return ret;
ret = SaveState(fname);
return ret;
ret = SaveState(fname);
-#if
def HAVE_PRE_ARMV7
/* XXX GPH hack */
+#if
defined(HAVE_PRE_ARMV7) && !defined(_3DS) && !defined(__SWITCH__)
/* XXX GPH hack */
sync();
#endif
SysPrintf("* %s \"%s\" [%d]\n",
sync();
#endif
SysPrintf("* %s \"%s\" [%d]\n",
@@
-800,6
+830,7
@@
int emu_load_state(int slot)
return LoadState(fname);
}
return LoadState(fname);
}
+#ifndef HAVE_LIBRETRO
#ifndef ANDROID
void SysPrintf(const char *fmt, ...) {
#ifndef ANDROID
void SysPrintf(const char *fmt, ...) {
@@
-824,6
+855,7
@@
void SysPrintf(const char *fmt, ...) {
}
#endif
}
#endif
+#endif /* HAVE_LIBRETRO */
void SysMessage(const char *fmt, ...) {
va_list list;
void SysMessage(const char *fmt, ...) {
va_list list;
@@
-873,14
+905,15
@@
static int _OpenPlugins(void) {
if (Config.UseNet && !NetOpened) {
netInfo info;
if (Config.UseNet && !NetOpened) {
netInfo info;
- char path[MAXPATHLEN];
+ char path[MAXPATHLEN
* 2
];
char dotdir[MAXPATHLEN];
MAKE_PATH(dotdir, "/.pcsx/plugins/", NULL);
strcpy(info.EmuName, "PCSX");
char dotdir[MAXPATHLEN];
MAKE_PATH(dotdir, "/.pcsx/plugins/", NULL);
strcpy(info.EmuName, "PCSX");
- strncpy(info.CdromID, CdromId, 9);
- strncpy(info.CdromLabel, CdromLabel, 9);
+ memcpy(info.CdromID, CdromId, 9); /* no \0 trailing character? */
+ memcpy(info.CdromLabel, CdromLabel, 9);
+ info.CdromLabel[9] = '\0';
info.psxMem = psxM;
info.GPU_showScreenPic = GPU_showScreenPic;
info.GPU_displayText = GPU_displayText;
info.psxMem = psxM;
info.GPU_showScreenPic = GPU_showScreenPic;
info.GPU_displayText = GPU_displayText;
@@
-989,10
+1022,10
@@
void *SysLoadLibrary(const char *lib) {
tmp++;
for (i = 0; i < ARRAY_SIZE(builtin_plugins); i++)
if (strcmp(tmp, builtin_plugins[i]) == 0)
tmp++;
for (i = 0; i < ARRAY_SIZE(builtin_plugins); i++)
if (strcmp(tmp, builtin_plugins[i]) == 0)
- return (void *)(
long
)(PLUGIN_DL_BASE + builtin_plugin_ids[i]);
+ return (void *)(
uintptr_t
)(PLUGIN_DL_BASE + builtin_plugin_ids[i]);
}
}
-#if
ndef _WIN32
+#if
!defined(_WIN32) && !defined(NO_DYLIB)
ret = dlopen(lib, RTLD_NOW);
if (ret == NULL)
SysMessage("dlopen: %s", dlerror());
ret = dlopen(lib, RTLD_NOW);
if (ret == NULL)
SysMessage("dlopen: %s", dlerror());
@@
-1004,12
+1037,12
@@
void *SysLoadLibrary(const char *lib) {
}
void *SysLoadSym(void *lib, const char *sym) {
}
void *SysLoadSym(void *lib, const char *sym) {
- unsigned int plugid = (unsigned int)(
long
)lib;
+ unsigned int plugid = (unsigned int)(
uintptr_t
)lib;
if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
return plugin_link(plugid - PLUGIN_DL_BASE, sym);
if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
return plugin_link(plugid - PLUGIN_DL_BASE, sym);
-#if
ndef _WIN32
+#if
!defined(_WIN32) && !defined(NO_DYLIB)
return dlsym(lib, sym);
#else
return NULL;
return dlsym(lib, sym);
#else
return NULL;
@@
-1017,7
+1050,9
@@
void *SysLoadSym(void *lib, const char *sym) {
}
const char *SysLibError() {
}
const char *SysLibError() {
-#ifndef _WIN32
+#if defined(NO_DYLIB)
+ return NULL;
+#elif !defined(_WIN32)
return dlerror();
#else
return "not supported";
return dlerror();
#else
return "not supported";
@@
-1025,13
+1060,12
@@
const char *SysLibError() {
}
void SysCloseLibrary(void *lib) {
}
void SysCloseLibrary(void *lib) {
- unsigned int plugid = (unsigned int)(
long
)lib;
+ unsigned int plugid = (unsigned int)(
uintptr_t
)lib;
if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
return;
if (PLUGIN_DL_BASE <= plugid && plugid < PLUGIN_DL_BASE + ARRAY_SIZE(builtin_plugins))
return;
-#if
ndef _WIN32
+#if
!defined(_WIN32) && !defined(NO_DYLIB)
dlclose(lib);
#endif
}
dlclose(lib);
#endif
}
-