Files
st/include/System/Random.hpp
T
Yanis 72aa60b96f Decompile overlay 112 (PlayerSceneChange) (#38)
* fix scratch upload?

* start overlay 112

* comment format thing

* build fixes 1

* name cs index

* started vfunc_0c and vfunc_10

* added scratch links

* config changes

* fix build issues

* first wave of broken matches

* second wave of broken matches

* fix build issue

* third wave of broken matches

* forth wave of broken matches
2026-04-01 02:20:31 +02:00

59 lines
1.2 KiB
C++

#pragma once
#include "global.h"
#include "nitro/math.h"
#include "types.h"
struct Random {
/* 00 */ u16 mRandomValue[4];
/* 08 */ u64 mFactor;
/* 10 */ u64 mAddend;
/* 18 */
/**
* @brief Gets the seed's value
*/
u64 GetRandomValue() {
return *(u64 *) this->mRandomValue;
}
/**
* @brief Updates the seed's value
*/
void UpdateRandomValue() {
*(u64 *) this->mRandomValue = this->mAddend + (this->mFactor * this->GetRandomValue());
}
/**
* @brief Generates a random number as a u16
*/
u16 Next16() {
this->UpdateRandomValue();
return this->GetRandomValue() >> 48;
}
/**
* @brief Generates a random number from 0 (inclusive) to `max` (exclusive) as a u32
*/
u32 Next32(u64 min, u64 max) {
this->UpdateRandomValue();
return (((this->GetRandomValue() >> 32) * (max - min)) >> 32) + min;
}
u32 ConditionalNext32(u32 value) {
this->UpdateRandomValue();
u64 result = this->GetRandomValue() >> 32;
if (value != 0) {
result = (result * value) >> 32;
}
return result;
}
void Init();
};
extern Random gRandom;