]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Randomize seed if hard reset
authorToni Wilen <twilen@winuae.net>
Sat, 18 Nov 2023 13:28:18 +0000 (15:28 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 18 Nov 2023 13:28:18 +0000 (15:28 +0200)
include/uae.h
main.cpp
newcpu.cpp

index 2fd0982fd480a420b5caf0f1e98c3df5df6ba743..e87dd55ea5d225930356c11888536338c2e911d0 100644 (file)
@@ -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 */
 
index 90e98092c998c019fafc75d08834234de7e793ac..92a8e4e995cb898f866700a6033284a517282c45 100644 (file)
--- 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 */
index 80d51b38b257ccb6869e16dcc7bae6a61c55aa8a..75b9a0bb10076fe8befa471e8ff0d4ab32c3c51f 100644 (file)
@@ -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);