aboutsummaryrefslogtreecommitdiff
path: root/patches/dosbox-pure
diff options
context:
space:
mode:
authorneonloop2023-01-29 07:37:02 +0000
committerneonloop2023-01-29 07:37:02 +0000
commit67740303f51ca3e5aa7edb19d1d2760990bf0b0c (patch)
tree856d1171457f816a5d3841567c72bc5cfa18ac97 /patches/dosbox-pure
parentacf64246dfbcb2cd9bd1e4c65fc11c409f892863 (diff)
downloadpicoarch-67740303f51ca3e5aa7edb19d1d2760990bf0b0c.tar.gz
picoarch-67740303f51ca3e5aa7edb19d1d2760990bf0b0c.tar.bz2
picoarch-67740303f51ca3e5aa7edb19d1d2760990bf0b0c.zip
Adds dosbox-pure core
dosbox-pure does not support resume states, because it loads puremenu before loading game. Savestates can also glitch loaded game.
Diffstat (limited to 'patches/dosbox-pure')
-rw-r--r--patches/dosbox-pure/0001-add-auto-cycle-limit.patch35
-rw-r--r--patches/dosbox-pure/1000-funkey-s-support.patch4
2 files changed, 37 insertions, 2 deletions
diff --git a/patches/dosbox-pure/0001-add-auto-cycle-limit.patch b/patches/dosbox-pure/0001-add-auto-cycle-limit.patch
new file mode 100644
index 0000000..69baeb9
--- /dev/null
+++ b/patches/dosbox-pure/0001-add-auto-cycle-limit.patch
@@ -0,0 +1,35 @@
+diff --git a/dosbox_pure_libretro.cpp b/dosbox_pure_libretro.cpp
+index 6a03631..dc4f70d 100644
+--- a/dosbox_pure_libretro.cpp
++++ b/dosbox_pure_libretro.cpp
+@@ -451,15 +451,30 @@ void DBP_SetRealModeCycles()
+ (year > 1993 ? 60000 : // Pentium 90 MHz
+ Cycles1981to1993[year - 1981]))); // Matching speed for year
+
++#ifdef CYCLE_LIMIT
++ if (CPU_CycleMax > CYCLE_LIMIT)
++ {
++ CPU_CycleMax = CYCLE_LIMIT;
++ CPU_AutoDetermineMode &= ~(CPU_AUTODETERMINE_CYCLES|(CPU_AUTODETERMINE_CYCLES<<CPU_AUTODETERMINE_SHIFT));
++ CPU_CycleAutoAdjust = true;
++ // Switch to dynamic core
++ if (CPU_AutoDetermineMode & CPU_AUTODETERMINE_CORE)
++ {
++#else
++
+ // Switch to dynamic core for newer real mode games
+ if (CPU_CycleMax >= 8192 && (CPU_AutoDetermineMode & CPU_AUTODETERMINE_CORE))
+ {
++#endif
+ #if (C_DYNAMIC_X86)
+ if (cpudecoder != CPU_Core_Dyn_X86_Run) { void CPU_Core_Dyn_X86_Cache_Init(bool); CPU_Core_Dyn_X86_Cache_Init(true); cpudecoder = CPU_Core_Dyn_X86_Run; }
+ #elif (C_DYNREC)
+ if (cpudecoder != CPU_Core_Dynrec_Run) { void CPU_Core_Dynrec_Cache_Init(bool); CPU_Core_Dynrec_Cache_Init(true); cpudecoder = CPU_Core_Dynrec_Run; }
+ #endif
+ }
++#ifdef CYCLE_LIMIT
++ }
++#endif
+ }
+
+ static void DBP_UnlockSpeed(bool unlock, int start_frame_skip = 0, bool skip_once = false)
diff --git a/patches/dosbox-pure/1000-funkey-s-support.patch b/patches/dosbox-pure/1000-funkey-s-support.patch
index 27ef8f7..59f7888 100644
--- a/patches/dosbox-pure/1000-funkey-s-support.patch
+++ b/patches/dosbox-pure/1000-funkey-s-support.patch
@@ -1,5 +1,5 @@
diff --git a/Makefile b/Makefile
-index f0acd51..8ad5a68 100644
+index f0acd51..7b42e9b 100644
--- a/Makefile
+++ b/Makefile
@@ -104,6 +104,16 @@ else ifeq ($(platform),ctr)
@@ -10,7 +10,7 @@ index f0acd51..8ad5a68 100644
+ OUTNAME := dosbox_pure_libretro.so
+ CXX := $(CROSS_COMPILE)g++
+ LDFLAGS := -Wl,--gc-sections -fno-ident
-+ COMMONFLAGS += -pthread
++ COMMONFLAGS += -pthread -DCYCLE_LIMIT=8200
+ CPUFLAGS += -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7ve
+ STRIPCMD := $(CROSS_COMPILE)strip --strip-all
+ ifeq ($(DEBUG), 1)