From e9bd8979b03cc5f71fff21d9bcdcdf4f6786add1 Mon Sep 17 00:00:00 2001 From: Martin Griffin Date: Wed, 12 Jul 2023 20:07:39 +0100 Subject: [PATCH] More efficient Random calls in Shuffle --- src/random.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/random.c b/src/random.c index 345d585c2a..dded1ec6f9 100644 --- a/src/random.c +++ b/src/random.c @@ -1,5 +1,8 @@ #include "global.h" #include "random.h" +#if MODERN +#include +#endif EWRAM_DATA static u8 sUnknown = 0; EWRAM_DATA static u32 sRandCount = 0; @@ -37,7 +40,7 @@ u16 Random2(void) --n; \ while (n > 1) \ { \ - int j = Random() % (n+1); \ + int j = (Random() * (n+1)) >> 16; \ SWAP(data[n], data[j], tmp); \ --n; \ } @@ -66,7 +69,7 @@ void ShuffleN(void *data, size_t n, size_t size) --n; while (n > 1) { - int j = Random() % (n+1); + int j = (Random() * (n+1)) >> 16; memcpy(tmp, (u8 *)data + n*size, size); // tmp = data[n]; memcpy((u8 *)data + n*size, (u8 *)data + j*size, size); // data[n] = data[j]; memcpy((u8 *)data + j*size, tmp, size); // data[j] = tmp;