Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MIPS > MATHS/LUA CONVERSION
- RNGSomething()
- var_C = -0xC
- var_8 = -8
- var_4 = -4
- [lui $t6, 0x8074] $t6 = 0x80740000
- [lw $a1, RNG] $a1 = RNG Value
- [addiu $sp, -0x20] $sp = $sp - 0x20
- [sw $ra 0x20+var_C($sp)] mainmemory.write_u32_be($sp + 0x20 + var_C, $ra)
- [li $a0,0] $a0 = 0x0
- [lui $a3, 0x1DF] $a3 = 0x01DF0000
- [sw $a0, 0x20+var_8($sp)] mainmemory.write_u32_be($sp + 0x20 + var_8, $a0)
- [li $a3, 0x1DF5E0D] $a3 = 0x01DF5E0D
- [li $a2, 0] $a2 = 0x0
- [jal CycleRNG] CycleRNG()
- [sw $a1, 0x20+var_4($sp)] mainmemory.write_u32_be($sp + 0x20 + var_4, $a1)
- [lw $ra, 0x20+var_C($sp)] $ra = mainmemory.read_u32_be($sp + 0x20 + var_C)
- [lui $a0, 0x8074] $a0 = 0x80740000
- [addiu $t1, $v1, 1] $t1 = $v1 + 1
- [li $at, 0xFFFFFFFF] $at = 0xFFFFFFFF
- [la $a0, RNG] $a0 = RNG
- [and $v0, $t1, $at] $v0 = $t1 and $at
- [sw $v0, (RNG-RNG)($a0)] mainmemory.write_u32_be($a0 + (RNG - RNG), $v0)
- [jr $ra] jr $ra
- [addiu $sp, 0x20] $sp = $sp + 0x20
- end
- CycleRNG()
- arg_0 = 0
- arg_8 = 8
- [sw $a0, arg_0($sp)] mainmemory.write_u32_be($sp + arg_0, $a0)
- [sw $a1, arg_0+4($sp)] mainmemory.write_u32_be($sp + arg_0 + 4, $a1)
- [sw $a2, arg_8($sp)] mainmemory.write_u32_be($sp + arg_8, $a2)
- [sw $a3, arg_8+4($sp)] mainmemory.write_u32_be($sp + arg_8 + 4, $a3)
- [ld $t7, arg_8($sp)] $t7 = mainmemory.read_u64_be($sp + arg_8)
- [ld $t6, arg_0($sp)] $t6 = mainmemory.read_u64_be($sp + arg_0)
- [dmultu $t6, $t7] LO = [$t6 x $t7](0 > 63) -- Lower 64 bits get placed into LO
- [dmultu $t6, $t7] HI = [$t6 x $t7](64 > 127) -- Upper 64 bits get placed into HI
- [mflo $v0] $v0 = LO
- [dsll32 $v1, $v0, 0] $v1 = $v0 * 2^(32 + 0) -- Bitshift left 32 bits
- [dsra32 $v1, 0] $v1 = $v1 / 2^(32 + 0) -- Bitshift right 32 bits
- [jr $ra] jr $ra
- [dsra32 $v0, 0] $v0 = $v0 / 2^(32 + 0) -- Bitshift right 32 bits
- end
- SIMPLIFIED
- a0 = 0
- a1 = rng_value
- a2 = 0
- a3 = 0x01DF5E0D
- sp = sp - 32
- t6 = (a0 * (256 ^ 4)) + a1
- t7 = (a2 * (256 ^ 4)) + a3
- hi = math.floor(t6 * t7 / (256 ^ 8))
- lo = (t6 * t7) - (256 ^ 8)(hi)
- v0 = lo
- v1 = v0
- a0 = 0x80740000
- t1 = v1 + 1
- at = 0xFFFFFFFF
- a0 = rng_address
- v0 = t1
- rng_value = v0
- sp = sp + 32
- sp = sp - 32
- t6 = rng_value
- t7 = 0x01DF5E0D
- hi = math.floor(t6 * t7 / (256 ^ 4))
- lo = (t6 * t7) % (256 ^ 8)
- v1 = lo
- t1 = v1 + 1
- v0 = t1 % (16 ^ 8)
- rng_value = v0
- sp = sp + 32
- rng_value = (((rng_value * 0x01DF5E0D) % (256 ^ 8)) + 1) % (256 ^ 4)
Advertisement
Add Comment
Please, Sign In to add comment