Advertisement
rossy__

FFX PC RNG Shuffle Raw Disassembly

Jul 16th, 2021
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. DISASSEMBLED FUNCTION
  2.  
  3. uint ShuffleRNGSeed_FUN_00798900(int ArrIndex)
  4.  
  5. {
  6. uint uVar1;
  7.  
  8. uVar1 = *(int *)(&LAB_00c421f8 + ArrIndex * 4) * (&DAT_01135ed8)[ArrIndex] ^
  9. (uint)*(ushort *)(&LAB_00c42308 + ArrIndex * 2);
  10. uVar1 = ((int)uVar1 >> 0x10) + uVar1 * 0x10000;
  11. (&DAT_01135ed8)[ArrIndex] = uVar1;
  12. return uVar1 & 0x7fffffff;
  13. }
  14.  
  15. MY PYTHON IMPLEMENTATION
  16.  
  17. seedsbase1 = [2100005341, 1700015771, 247163863, 891644838, 1352476256, 1563244181, 1528068162, 511705468, 1739927914, 398147329, 1278224951, 20980264, 1178761637, 802909981, 1130639188, 1599606659, 952700148, -898770777, -1097979074, -2013480859, -338768120, -625456464, -2049746478, -550389733, -5384772, -128808769, -1756029551, 1379661854, 904938180, -1209494558, -1676357703, -1287910319, 1653802906, 393811311, -824919740, 1837641861, 946029195, 1248183957, -1684075875, -2108396259, -681826312, 1003979812, 1607786269, -585334321, 1285195346, 1997056081, -106688232, 1881479866, 476193932, 307456100, 1290745818, 162507240, -213809065, -1135977230, -1272305475, 1484222417, -1559875058, 1407627502, 1206176750, -1537348094, 638891383, 581678511, 1164589165, -1436620514, 1412081670, -1538191350, -284976976, 706005400]
  18. seedsbase2 = [10259, 24563, 11177, 56952, 46197, 49826, 27077, 1257, 44164, 56565, 31009, 46618, 64397, 46089, 58119, 13090, 19496, 47700, 21163, 16247, 574, 18658, 60495, 42058, 40532, 13649, 8049, 25369, 9373, 48949, 23157, 32735, 29605, 44013, 16623, 15090, 43767, 51346, 28485, 39192, 40085, 32893, 41400, 1267, 15436, 33645, 37189, 58137, 16264, 59665, 53663, 11528, 37584, 18427, 59827, 49457, 22922, 24212, 62787, 56241, 55318, 9625, 57622, 7580, 56469, 49208, 41671, 36458]
  19.  
  20. def s32(n):
  21. n = n & 0xffffffff
  22. return (n ^ 0x80000000) - 0x80000000
  23.  
  24. def rngroll(index):
  25. temp = s32(s32(seeds[index]) * s32(seedsbase1[index]) ^ seedsbase2[index])
  26. temp = temp
  27. temp = s32((temp >> 0x10) + (temp << 0x10))
  28. seeds[index] = temp
  29. temp = temp & 0x7fffffff
  30. return temp
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement