//random generator int RandomNumber(int low, int high) { SceKernelUtilsMt19937Context ctx; sceKernelUtilsMt19937Init(&ctx, time(NULL)); u32 rand_val = sceKernelUtilsMt19937UInt(&ctx); rand_val = low + rand_val % high; return (int)rand_val; }
int SRand(int seed) { switch(dxpGeneralData.randmode) { case DXP_RANDMODE_MT: if(!dxpGeneralData.mt19937context) { ChangeRandMode(DXP_RANDMODE_MT); return SRand(seed); } sceKernelUtilsMt19937Init(dxpGeneralData.mt19937context,(u32)seed); return 0; case DXP_RANDMODE_HW: __asm__ volatile ( "mtv %0, S000\n" "vrnds.s S000 \n" :: "r"(seed) ); return 0; default: ChangeRandMode(DXP_RANDMODE_MT); return SRand(seed); } }
Randgenerator::Randgenerator() { sceKernelUtilsMt19937Init(&ctx_, time(NULL)); }