revive standalone build
authornotaz <notasas@gmail.com>
Fri, 11 Feb 2022 20:55:07 +0000 (22:55 +0200)
committernotaz <notasas@gmail.com>
Sat, 12 Feb 2022 00:13:36 +0000 (02:13 +0200)
Otherwise it's hard to figure out what's wrong when upstream works
but libretro fork doesn't for some game.

The submodule is not needed for libretro build and should do no harm
(maybe?).

.gitmodules [new file with mode: 0644]
configure
frontend/libpicofe [new submodule]
frontend/menu.c
frontend/plat_omap.c
frontend/plat_pollux.c
frontend/plugin_lib.c

diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..b9afb32
--- /dev/null
@@ -0,0 +1,3 @@
+[submodule "frontend/libpicofe"]
+       path = frontend/libpicofe
+       url = https://github.com/notaz/libpicofe.git
index a618231..4d36f4b 100755 (executable)
--- a/configure
+++ b/configure
@@ -563,7 +563,7 @@ if [ "$have_gles" = "yes" ]; then
   echo "LDLIBS_GLES = $LDLIBS_GLES" >> $config_mak
 fi
 if [ "$enable_dynarec" = "yes" ]; then
-  echo "USE_DYNAREC = 1" >> $config_mak
+  echo "DYNAREC = ari64" >> $config_mak
 fi
 if [ "$drc_cache_base" = "yes" ]; then
   echo "BASE_ADDR_DYNAMIC = 1" >> $config_mak
diff --git a/frontend/libpicofe b/frontend/libpicofe
new file mode 160000 (submodule)
index 0000000..a8b4c53
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a8b4c53d7795e4d448d88b0b8222549ede78622a
index d8c3a31..38683a2 100644 (file)
@@ -101,10 +101,13 @@ int scanlines, scanline_level = 20;
 int soft_scaling, analog_deadzone; // for Caanoo
 int soft_filter;
 
-// Default to 100% CPU speed as most hardware can handle it nowadays using the dynamic recompiler.
-// If not, the option is in the advanced speed hacks menu, so in a logical place.
-#define DEFAULT_PSX_CLOCK 100
-#define DEFAULT_PSX_CLOCK_S "100"
+#ifndef HAVE_PRE_ARMV7
+#define DEFAULT_PSX_CLOCK (10000 / CYCLE_MULT_DEFAULT)
+#define DEFAULT_PSX_CLOCK_S "57"
+#else
+#define DEFAULT_PSX_CLOCK 50
+#define DEFAULT_PSX_CLOCK_S "50"
+#endif
 
 static const char *bioses[24];
 static const char *gpu_plugins[16];
@@ -395,6 +398,7 @@ static const struct {
        CE_CONFIG_VAL(RCntFix),
        CE_CONFIG_VAL(VSyncWA),
        CE_CONFIG_VAL(icache_emulation),
+       CE_CONFIG_VAL(DisableStalls),
        CE_CONFIG_VAL(Cpu),
        CE_INTVAL(region),
        CE_INTVAL_V(g_scaler, 3),
@@ -712,6 +716,9 @@ fail:
 
 static const char *filter_exts[] = {
        "bin", "img", "mdf", "iso", "cue", "z",
+       #ifdef HAVE_CHD
+       "chd",
+       #endif
        "bz",  "znx", "pbp", "cbn", NULL
 };
 
@@ -1251,10 +1258,11 @@ static const char h_scaler[]    = "int. 2x  - scales w. or h. 2x if it fits on s
                                  "int. 4:3 - uses integer if possible, else fractional";
 static const char h_cscaler[]   = "Displays the scaler layer, you can resize it\n"
                                  "using d-pad or move it using R+d-pad";
-static const char h_overlay[]   = "Overlay provides hardware accelerated scaling";
 static const char h_soft_filter[] = "Works only if game uses low resolution modes";
-static const char h_scanline_l[]  = "Scanline brightness, 0-100%";
 static const char h_gamma[]     = "Gamma/brightness adjustment (default 100)";
+#ifdef __ARM_NEON__
+static const char h_scanline_l[]  = "Scanline brightness, 0-100%";
+#endif
 
 static int menu_loop_cscaler(int id, int keys)
 {
@@ -1529,18 +1537,26 @@ static int menu_loop_plugin_options(int id, int keys)
 
 // ------------ adv options menu ------------
 
+#ifndef DRC_DISABLE
 static const char h_cfg_psxclk[]  = "Over/under-clock the PSX, default is " DEFAULT_PSX_CLOCK_S "\n"
                                    "(lower value - less work for the emu, may be faster)";
+static const char h_cfg_noch[]    = "Disables game-specific compatibility hacks";
 static const char h_cfg_nosmc[]   = "Will cause crashes when loading, break memcards";
 static const char h_cfg_gteunn[]  = "May cause graphical glitches";
 static const char h_cfg_gteflgs[] = "Will cause graphical glitches";
+#endif
+static const char h_cfg_stalls[]  = "Will cause some games to run too fast";
 
 static menu_entry e_menu_speed_hacks[] =
 {
+#ifndef DRC_DISABLE
        mee_range_h   ("PSX CPU clock, %%",        0, psx_clock, 1, 500, h_cfg_psxclk),
+       mee_onoff_h   ("Disable compat hacks",     0, new_dynarec_hacks, NDHACK_NO_COMPAT_HACKS, h_cfg_noch),
        mee_onoff_h   ("Disable SMC checks",       0, new_dynarec_hacks, NDHACK_NO_SMC_CHECK, h_cfg_nosmc),
        mee_onoff_h   ("Assume GTE regs unneeded", 0, new_dynarec_hacks, NDHACK_GTE_UNNEEDED, h_cfg_gteunn),
        mee_onoff_h   ("Disable GTE flags",        0, new_dynarec_hacks, NDHACK_GTE_NO_FLAGS, h_cfg_gteflgs),
+#endif
+       mee_onoff_h   ("Disable CPU/GTE stalls",   0, Config.DisableStalls, 1, h_cfg_stalls),
        mee_end,
 };
 
@@ -1558,18 +1574,19 @@ static const char h_cfg_fl[]     = "Frame Limiter keeps the game from running to
 static const char h_cfg_xa[]     = "Disables XA sound, which can sometimes improve performance";
 static const char h_cfg_cdda[]   = "Disable CD Audio for a performance boost\n"
                                   "(proper .cue/.bin dump is needed otherwise)";
-static const char h_cfg_sio[]    = "You should not need this, breaks games";
+//static const char h_cfg_sio[]    = "You should not need this, breaks games";
 static const char h_cfg_spuirq[] = "Compatibility tweak; should be left off";
-static const char h_cfg_rcnt1[]  = "Parasite Eve 2, Vandal Hearts 1/2 Fix\n"
-                                  "(timing hack, breaks other games)";
 static const char h_cfg_rcnt2[]  = "InuYasha Sengoku Battle Fix\n"
                                   "(timing hack, breaks other games)";
+#ifdef DRC_DISABLE
+static const char h_cfg_rcnt1[]  = "Parasite Eve 2, Vandal Hearts 1/2 Fix\n"
+                                  "(timing hack, breaks other games)";
+#else
 static const char h_cfg_nodrc[]  = "Disable dynamic recompiler and use interpreter\n"
                                   "Might be useful to overcome some dynarec bugs";
-static const char h_cfg_shacks[] = "Breaks games but may give better performance\n"
-                                  "must reload game for any change to take effect";
-static const char h_cfg_icache[] = "Allows you to play the F1 games.\n"
-                                  "Note: This breaks the PAL version of Spyro 2.";
+#endif
+static const char h_cfg_shacks[] = "Breaks games but may give better performance";
+static const char h_cfg_icache[] = "Support F1 games (only when dynarec is off)";
 
 static menu_entry e_menu_adv_options[] =
 {
@@ -1580,12 +1597,14 @@ static menu_entry e_menu_adv_options[] =
        mee_onoff_h   ("Disable CD Audio",       0, Config.Cdda, 1, h_cfg_cdda),
        //mee_onoff_h   ("SIO IRQ Always Enabled", 0, Config.Sio, 1, h_cfg_sio),
        mee_onoff_h   ("SPU IRQ Always Enabled", 0, Config.SpuIrq, 1, h_cfg_spuirq),
-#ifdef ICACHE_EMULATION
        mee_onoff_h   ("ICache emulation",       0, Config.icache_emulation, 1, h_cfg_icache),
+#ifdef DRC_DISABLE
+       mee_onoff_h   ("Rootcounter hack",       0, Config.RCntFix, 1, h_cfg_rcnt1),
 #endif
-       //mee_onoff_h   ("Rootcounter hack",       0, Config.RCntFix, 1, h_cfg_rcnt1),
        mee_onoff_h   ("Rootcounter hack 2",     0, Config.VSyncWA, 1, h_cfg_rcnt2),
+#ifndef DRC_DISABLE
        mee_onoff_h   ("Disable dynarec (slow!)",0, Config.Cpu, 1, h_cfg_nodrc),
+#endif
        mee_handler_h ("[Speed hacks]",             menu_loop_speed_hacks, h_cfg_shacks),
        mee_end,
 };
@@ -2599,7 +2618,11 @@ void menu_prepare_emu(void)
 
        plat_video_menu_leave();
 
+       #ifndef DRC_DISABLE
        psxCpu = (Config.Cpu == CPU_INTERPRETER) ? &psxInt : &psxRec;
+       #else
+       psxCpu = &psxInt;
+       #endif
        if (psxCpu != prev_cpu) {
                prev_cpu->Shutdown();
                psxCpu->Init();
@@ -2607,6 +2630,8 @@ void menu_prepare_emu(void)
                psxCpu->Reset();
        }
 
+       psxCpu->ApplyConfig();
+
        // core doesn't care about Config.Cdda changes,
        // so handle them manually here
        if (Config.Cdda)
index f25f31c..c4bff31 100644 (file)
@@ -223,7 +223,7 @@ void plat_omap_init(void)
                exit(1);
        }
 
-       g_menuscreen_w = w;
+       g_menuscreen_w = g_menuscreen_pp = w;
        g_menuscreen_h = h;
        g_menuscreen_ptr = vout_fbdev_flip(main_fb);
        pl_rearmed_cbs.screen_w = w;
index 33e9417..326a40f 100644 (file)
@@ -309,6 +309,7 @@ static void name(int doffs, const void *vram_, int w, int h, int sstride, int bg
         int i;                                                                          \
                                                                                         \
         vram += psx_offset_y * 1024 + psx_offset_x;                                     \
+        vram = (void *)((long)vram & ~3);                                               \
         for (i = psx_src_height; i > 0; i--, vram += psx_step * 1024, dst += dst_stride)\
                 blitfunc(dst, vram, len);                                               \
 }
@@ -555,7 +556,7 @@ void plat_init(void)
        memset(fb_vaddrs[0], 0, FB_VRAM_SIZE);
 
        pollux_changemode(16, 0);
-       g_menuscreen_w = 320;
+       g_menuscreen_w = g_menuscreen_pp = 320;
        g_menuscreen_h = 240;
        g_menuscreen_ptr = fb_flip();
 
index eb9d48e..5ee8604 100644 (file)
@@ -44,6 +44,7 @@ int in_analog_right[8][2] = {{ 127, 127 },{ 127, 127 },{ 127, 127 },{ 127, 127 }
 int in_adev[2] = { -1, -1 }, in_adev_axis[2][2] = {{ 0, 1 }, { 0, 1 }};
 int in_adev_is_nublike[2];
 unsigned short in_keystate[8];
+int in_mouse[8][2];
 int in_state_gun;
 int in_enable_vibration;
 void *tsdev;