From dd69a5ca3b55ce6bf49b7569f1df3b62618d6760 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 18 Nov 2023 15:28:18 +0200 Subject: [PATCH] Randomize seed if hard reset --- include/uae.h | 1 + main.cpp | 17 +++++++++++------ newcpu.cpp | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/uae.h b/include/uae.h index 2fd0982f..e87dd55e 100644 --- a/include/uae.h +++ b/include/uae.h @@ -94,6 +94,7 @@ extern void fetch_videopath(TCHAR *out, int size); extern uae_u32 uaerand(void); extern uae_u32 uaesetrandseed(uae_u32 seed); extern uae_u32 uaerandgetseed(void); +extern void uaerandomizeseed(void); /* the following prototypes should probably be moved somewhere else */ diff --git a/main.cpp b/main.cpp index 90e98092..92a8e4e9 100644 --- a/main.cpp +++ b/main.cpp @@ -105,6 +105,16 @@ uae_u32 uaerandgetseed(void) return randseed; } +void uaerandomizeseed(void) +{ + if (currprefs.seed == 0) { + uae_u32 t = getlocaltime(); + uaesetrandseed(t); + } else { + uaesetrandseed(currprefs.seed); + } +} + uae_u32 uaesetrandseed(uae_u32 seed) { if (!seed) { @@ -1208,12 +1218,7 @@ static int real_main2 (int argc, TCHAR **argv) #ifdef RETROPLATFORM rp_fixup_options (&currprefs); #endif - if (currprefs.seed == 0) { - uae_u32 t = getlocaltime(); - uaesetrandseed(t); - } else { - uaesetrandseed(currprefs.seed); - } + uaerandomizeseed(); copy_prefs(&currprefs, &changed_prefs); target_run (); /* force sound settings change */ diff --git a/newcpu.cpp b/newcpu.cpp index 80d51b38..75b9a0bb 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -6633,6 +6633,7 @@ void m68k_go (int may_quit) unset_special(SPCFLAG_MODE_CHANGE); if (!restored && hardboot) { + uaerandomizeseed(); uae_u32 s = uaerandgetseed(); uaesetrandseed(s); write_log("rndseed = %08x (%u)\n", s, s); -- 2.47.3