|
12 | 12 | #include "port/Game.h" |
13 | 13 | #include <port/interpolation/FrameInterpolation.h> |
14 | 14 | #include <port/interpolation/matrix.h> |
| 15 | +#include <stdlib.h> |
15 | 16 | #pragma intrinsic(sqrtf, fabs) |
16 | 17 |
|
17 | 18 | s32 D_802B91C0[2] = { 13, 13 }; |
@@ -990,35 +991,45 @@ UNUSED s16 func_802B7D28(f32 arg0) { |
990 | 991 | } |
991 | 992 |
|
992 | 993 | u16 random_u16(void) { |
993 | | - u16 temp1, temp2; |
| 994 | + if (CVarGetInteger("gModernPRNG", false) == false) |
| 995 | + { |
| 996 | + u16 temp1, temp2; |
994 | 997 |
|
995 | | - if (gRandomSeed16 == 22026) { |
996 | | - gRandomSeed16 = 0; |
997 | | - } |
| 998 | + if (gRandomSeed16 == 22026) { |
| 999 | + gRandomSeed16 = 0; |
| 1000 | + } |
998 | 1001 |
|
999 | | - temp1 = (gRandomSeed16 & 0x00FF) << 8; |
1000 | | - temp1 = temp1 ^ gRandomSeed16; |
| 1002 | + temp1 = (gRandomSeed16 & 0x00FF) << 8; |
| 1003 | + temp1 = temp1 ^ gRandomSeed16; |
1001 | 1004 |
|
1002 | | - gRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); |
| 1005 | + gRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8); |
1003 | 1006 |
|
1004 | | - temp1 = ((temp1 & 0x00FF) << 1) ^ gRandomSeed16; |
1005 | | - temp2 = (temp1 >> 1) ^ 0xFF80; |
| 1007 | + temp1 = ((temp1 & 0x00FF) << 1) ^ gRandomSeed16; |
| 1008 | + temp2 = (temp1 >> 1) ^ 0xFF80; |
1006 | 1009 |
|
1007 | | - if ((temp1 & 1) == 0) { |
1008 | | - if (temp2 == 43605) { |
1009 | | - gRandomSeed16 = 0; |
| 1010 | + if ((temp1 & 1) == 0) { |
| 1011 | + if (temp2 == 43605) { |
| 1012 | + gRandomSeed16 = 0; |
| 1013 | + } else { |
| 1014 | + gRandomSeed16 = temp2 ^ 0x1FF4; |
| 1015 | + } |
1010 | 1016 | } else { |
1011 | | - gRandomSeed16 = temp2 ^ 0x1FF4; |
| 1017 | + gRandomSeed16 = temp2 ^ 0x8180; |
1012 | 1018 | } |
1013 | | - } else { |
1014 | | - gRandomSeed16 = temp2 ^ 0x8180; |
| 1019 | + |
| 1020 | + return gRandomSeed16; |
1015 | 1021 | } |
1016 | 1022 |
|
1017 | | - return gRandomSeed16; |
| 1023 | + return (rand() % (UINT16_MAX + 1)); |
1018 | 1024 | } |
1019 | 1025 |
|
1020 | 1026 | u16 random_int(u16 arg0) { |
1021 | | - return arg0 * (((f32) random_u16()) / 65535.0); |
| 1027 | + if (CVarGetInteger("gModernPRNG", false) == false) |
| 1028 | + { |
| 1029 | + return arg0 * (((f32) random_u16()) / 65535.0); |
| 1030 | + } |
| 1031 | + |
| 1032 | + return (rand() % (arg0 + 1)); |
1022 | 1033 | } |
1023 | 1034 |
|
1024 | 1035 | s16 func_802B7F34(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { |
|
0 commit comments