Document spl random

This commit is contained in:
Fexty12573 2024-07-30 12:05:19 +02:00
parent 1512ec7314
commit 01b8ee77aa
4 changed files with 17 additions and 16 deletions

View File

@ -1,9 +1,12 @@
#ifndef SPL_RANDOM_H #ifndef SPL_RANDOM_H
#define SPL_RANDOM_H #define SPL_RANDOM_H
#include <nitro/types.h>
#include <nitro/fx/fx_vec.h>
extern u32 gSPLRandomState; extern u32 gSPLRandomState;
void sub_020A2354(VecFx32 *vec); void SPLRandom_VecFx32(VecFx32 *vec);
void sub_020A23B0(VecFx32 *vec); void SPLRandom_VecFx32_XY(VecFx32 *vec);
#endif // SPL_RANDOM_H #endif // SPL_RANDOM_H

View File

@ -22,7 +22,7 @@ libspl_srcs = files(
'src/unk_020A19F0.c', 'src/unk_020A19F0.c',
'src/unk_020A1E30.c', 'src/unk_020A1E30.c',
'src/spl_list.c', 'src/spl_list.c',
'src/unk_020A2354.c' 'src/spl_random.c'
) )
libspl = static_library('spl', libspl = static_library('spl',

View File

@ -1,10 +1,8 @@
#include "spl.h" #include "spl.h"
#include <nitro/fx/fx.h>
u32 gSPLRandomState; u32 gSPLRandomState;
void sub_020A23B0(VecFx32 *vec) void SPLRandom_VecFx32(VecFx32 *vec)
{ {
vec->x = rng_next_fx32(8); vec->x = rng_next_fx32(8);
vec->y = rng_next_fx32(8); vec->y = rng_next_fx32(8);
@ -12,7 +10,7 @@ void sub_020A23B0(VecFx32 *vec)
VEC_Normalize(vec, vec); VEC_Normalize(vec, vec);
} }
void sub_020A2354(VecFx32 *vec) void SPLRandom_VecFx32_XY(VecFx32 *vec)
{ {
vec->x = rng_next_fx32(8); vec->x = rng_next_fx32(8);
vec->y = rng_next_fx32(8); vec->y = rng_next_fx32(8);

View File

@ -104,7 +104,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
break; break;
case 1: case 1:
sub_020A23B0(&ptcl->unk_08); SPLRandom_VecFx32(&ptcl->unk_08);
ptcl->unk_08.x = FX_MUL(ptcl->unk_08.x, emtr->unk_CC); ptcl->unk_08.x = FX_MUL(ptcl->unk_08.x, emtr->unk_CC);
ptcl->unk_08.y = FX_MUL(ptcl->unk_08.y, emtr->unk_CC); ptcl->unk_08.y = FX_MUL(ptcl->unk_08.y, emtr->unk_CC);
ptcl->unk_08.z = FX_MUL(ptcl->unk_08.z, emtr->unk_CC); ptcl->unk_08.z = FX_MUL(ptcl->unk_08.z, emtr->unk_CC);
@ -112,7 +112,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 2: { case 2: {
VecFx32 pos; VecFx32 pos;
sub_020A2354(&pos); SPLRandom_VecFx32_XY(&pos);
pos.x = FX_MUL(pos.x, emtr->unk_CC); pos.x = FX_MUL(pos.x, emtr->unk_CC);
pos.y = FX_MUL(pos.y, emtr->unk_CC); pos.y = FX_MUL(pos.y, emtr->unk_CC);
pos.z = 0; pos.z = 0;
@ -132,7 +132,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
} break; } break;
case 4: case 4:
sub_020A23B0(&ptcl->unk_08); SPLRandom_VecFx32(&ptcl->unk_08);
ptcl->unk_08.x = FX_MUL(FX_MUL(ptcl->unk_08.x, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); ptcl->unk_08.x = FX_MUL(FX_MUL(ptcl->unk_08.x, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
ptcl->unk_08.y = FX_MUL(FX_MUL(ptcl->unk_08.y, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); ptcl->unk_08.y = FX_MUL(FX_MUL(ptcl->unk_08.y, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
ptcl->unk_08.z = FX_MUL(FX_MUL(ptcl->unk_08.z, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); ptcl->unk_08.z = FX_MUL(FX_MUL(ptcl->unk_08.z, emtr->unk_CC), (rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
@ -140,7 +140,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 5: { case 5: {
VecFx32 pos; VecFx32 pos;
sub_020A2354(&pos); SPLRandom_VecFx32_XY(&pos);
pos.x = FX_MUL(FX_MUL(pos.x, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); pos.x = FX_MUL(FX_MUL(pos.x, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
pos.y = FX_MUL(FX_MUL(pos.y, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); pos.y = FX_MUL(FX_MUL(pos.y, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
sub_020A1608(&ptcl->unk_08, &pos, emtr); sub_020A1608(&ptcl->unk_08, &pos, emtr);
@ -149,7 +149,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 8: { case 8: {
VecFx32 pos; VecFx32 pos;
VecFx16 tmpUnitVec; VecFx16 tmpUnitVec;
sub_020A23B0(&ptcl->unk_08); SPLRandom_VecFx32(&ptcl->unk_08);
VEC_Fx16CrossProduct(&emtr->unk_F4, &emtr->unk_FA, &tmpUnitVec); VEC_Fx16CrossProduct(&emtr->unk_F4, &emtr->unk_FA, &tmpUnitVec);
pos.x = tmpUnitVec.x; pos.x = tmpUnitVec.x;
pos.y = tmpUnitVec.y; pos.y = tmpUnitVec.y;
@ -168,7 +168,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 9: { case 9: {
VecFx32 pos; VecFx32 pos;
VecFx16 tmpUnitVec; VecFx16 tmpUnitVec;
sub_020A23B0(&ptcl->unk_08); SPLRandom_VecFx32(&ptcl->unk_08);
VEC_Fx16CrossProduct(&emtr->unk_F4, &emtr->unk_FA, &tmpUnitVec); VEC_Fx16CrossProduct(&emtr->unk_F4, &emtr->unk_FA, &tmpUnitVec);
pos.x = tmpUnitVec.x; pos.x = tmpUnitVec.x;
pos.y = tmpUnitVec.y; pos.y = tmpUnitVec.y;
@ -186,7 +186,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 6: { case 6: {
VecFx32 pos; VecFx32 pos;
sub_020A2354(&ptcl->unk_14); SPLRandom_VecFx32_XY(&ptcl->unk_14);
pos.x = FX_MUL(ptcl->unk_14.x, emtr->unk_CC); pos.x = FX_MUL(ptcl->unk_14.x, emtr->unk_CC);
pos.y = FX_MUL(ptcl->unk_14.y, emtr->unk_CC); pos.y = FX_MUL(ptcl->unk_14.y, emtr->unk_CC);
pos.z = (emtr->unk_D0 * rng_next_s32(0x17) - emtr->unk_D0 * 256) >> 8; pos.z = (emtr->unk_D0 * rng_next_s32(0x17) - emtr->unk_D0 * 256) >> 8;
@ -195,7 +195,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
case 7: { case 7: {
VecFx32 pos; VecFx32 pos;
sub_020A2354(&ptcl->unk_14); SPLRandom_VecFx32_XY(&ptcl->unk_14);
pos.x = FX_MUL(FX_MUL(ptcl->unk_14.x, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); pos.x = FX_MUL(FX_MUL(ptcl->unk_14.x, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
pos.y = FX_MUL(FX_MUL(ptcl->unk_14.y, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8); pos.y = FX_MUL(FX_MUL(ptcl->unk_14.y, emtr->unk_CC), ((fx32)rng_next_s32(0x17) * FX32_ONE - 0x100000) >> 8);
pos.z = (emtr->unk_D0 * (fx32)rng_next_s32(0x17) - emtr->unk_D0 * 256) >> 8; pos.z = (emtr->unk_D0 * (fx32)rng_next_s32(0x17) - emtr->unk_D0 * 256) >> 8;
@ -215,7 +215,7 @@ void sub_020A08DC(SPLEmitter *emtr, SPLList *list)
VEC_Normalize(&tmp, &posNorm); VEC_Normalize(&tmp, &posNorm);
} else if (ptcl->unk_08.x == 0 && ptcl->unk_08.y == 0 && ptcl->unk_08.z == 0) { } else if (ptcl->unk_08.x == 0 && ptcl->unk_08.y == 0 && ptcl->unk_08.z == 0) {
sub_020A23B0(&posNorm); SPLRandom_VecFx32(&posNorm);
} else { } else {
VEC_Normalize(&ptcl->unk_08, &posNorm); VEC_Normalize(&ptcl->unk_08, &posNorm);
} }