aboutsummaryrefslogtreecommitdiff
path: root/patches/fake-08
diff options
context:
space:
mode:
authorneonloop2023-01-30 15:56:43 +0000
committerneonloop2023-01-30 15:56:43 +0000
commit3fc837c6eb2d087f303b60f155ce00b0e8f3998f (patch)
tree90dc8b718f59de7c04edfb0fa4bf91f188831595 /patches/fake-08
parent436f55f7975cf6ab5c8308c5071086047b46201e (diff)
downloadpicoarch-3fc837c6eb2d087f303b60f155ce00b0e8f3998f.tar.gz
picoarch-3fc837c6eb2d087f303b60f155ce00b0e8f3998f.tar.bz2
picoarch-3fc837c6eb2d087f303b60f155ce00b0e8f3998f.zip
Adds override for deferring load state by number of frames
Fixes instant play for fake-08 and pcsx_rearmmed with bios intro
Diffstat (limited to 'patches/fake-08')
-rw-r--r--patches/fake-08/0001-fix-resume-state.patch81
1 files changed, 0 insertions, 81 deletions
diff --git a/patches/fake-08/0001-fix-resume-state.patch b/patches/fake-08/0001-fix-resume-state.patch
deleted file mode 100644
index b3d73bc..0000000
--- a/patches/fake-08/0001-fix-resume-state.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-diff --git a/platform/libretro/libretro.cpp b/platform/libretro/libretro.cpp
-index 927ea8d4b8d1658a1d7521fe7e9abcbdede0ba5f..63a43f3f065344cdf45e0b10e5c9c089736695f2 100644
---- a/platform/libretro/libretro.cpp
-+++ b/platform/libretro/libretro.cpp
-@@ -82,6 +82,46 @@ EXPORT void retro_set_audio_sample_batch(retro_audio_sample_batch_t cb) { audio_
- EXPORT void retro_set_input_poll(retro_input_poll_t cb) { input_poll_cb = cb; }
- EXPORT void retro_set_input_state(retro_input_state_t cb) { input_state_cb = cb; }
-
-+
-+static int frames = 0;
-+static int defer_frames = 2;
-+static void* deferred_data = NULL;
-+static size_t deferred_size = 0;
-+
-+static void free_deferred_data(void) {
-+ if (deferred_size) {
-+ if (log_cb) log_cb(RETRO_LOG_INFO, "Freed deferred save state.\n");
-+ free(deferred_data);
-+ deferred_data = NULL;
-+ deferred_size = 0;
-+ }
-+}
-+
-+static void defer_unserialize(const void *data, size_t size) {
-+ free_deferred_data();
-+
-+ if (data==NULL || size<=0) return;
-+
-+ if (log_cb) log_cb(RETRO_LOG_INFO, "Deferred save state load.\n");
-+
-+ deferred_data = malloc(size);
-+ memcpy(deferred_data, data, size);
-+ deferred_size = size;
-+}
-+static void update_deferred(void) {
-+ frames += 1;
-+
-+ if (frames<defer_frames) return;
-+
-+ if (deferred_size==0) return;
-+
-+ retro_unserialize(deferred_data, deferred_size);
-+
-+ if (log_cb) log_cb(RETRO_LOG_INFO, "Loaded deferred save state.\n");
-+
-+ free_deferred_data();
-+}
-+
- EXPORT void retro_init()
- {
- retro_log_callback log;
-@@ -132,6 +172,8 @@ EXPORT void retro_deinit()
- if (log_cb) {
- log_cb(RETRO_LOG_INFO, "Retro deinit called. tearing down\n");
- }
-+ free_deferred_data();
-+
- //delete things created in init
- _vm->CloseCart();
- _host->oneTimeCleanup();
-@@ -205,6 +247,8 @@ int flip = 0;
-
- EXPORT void retro_run()
- {
-+ if (frames<defer_frames) update_deferred();
-+
- //TODO: improve this so slower hardware can play 30fps games at full speed
- if (_vm->getTargetFps() == 60 || frame % 2 == 0)
- {
-@@ -396,6 +440,11 @@ EXPORT bool retro_serialize(void *data, size_t size)
-
- EXPORT bool retro_unserialize(const void *data, size_t size)
- {
-+ if (frames<defer_frames) {
-+ defer_unserialize(data,size);
-+ return true;
-+ }
-+
- if (log_cb) {
- log_cb(RETRO_LOG_INFO, "lua deserialize\n");
- }