mirror of https://github.com/zeldaret/tp.git
105 lines
2.4 KiB
C++
105 lines
2.4 KiB
C++
#include "Z2AudioLib/Z2Calc/Z2calc.h"
|
|
#include "JSystem/JMath/random.h"
|
|
|
|
// 1 instruction off
|
|
#ifdef NONMATCHING
|
|
float Z2Calc::linearTransform(float param1, float param2, float param3, float param4, float param5,
|
|
bool param6) {
|
|
float temp;
|
|
|
|
temp = param4 + (param1 - param2) * ((param5 - param4) / (param3 - param2));
|
|
|
|
if (param6) {
|
|
return temp;
|
|
} else if (param4 < param5) {
|
|
if (temp > param5) {
|
|
return param5;
|
|
} else if (temp >= param4) { // something wrong here idk
|
|
return temp;
|
|
} else {
|
|
return param4;
|
|
}
|
|
} else if (temp > param4) {
|
|
return param4;
|
|
} else if (temp < param5) {
|
|
return param5;
|
|
} else {
|
|
return temp;
|
|
}
|
|
}
|
|
#else
|
|
asm float Z2Calc::linearTransform(float param1, float param2, float param3, float param4,
|
|
float param5, bool param6) {
|
|
nofralloc
|
|
#include "Z2AudioLib/Z2Calc/asm/func_802A968C.s"
|
|
}
|
|
#endif
|
|
|
|
asm float Z2Calc::getParamByExp(float, float, float, float, float, float, Z2Calc::CurveSign) {
|
|
nofralloc
|
|
#include "Z2AudioLib/Z2Calc/asm/func_802A96F4.s"
|
|
}
|
|
|
|
asm float Z2Calc::getRandom(float, float, float) {
|
|
nofralloc
|
|
#include "Z2AudioLib/Z2Calc/asm/func_802A9814.s"
|
|
}
|
|
|
|
asm float Z2Calc::getRandom_0_1(void) {
|
|
nofralloc
|
|
#include "Z2AudioLib/Z2Calc/asm/func_802A98D4.s"
|
|
}
|
|
|
|
void Z2Calc::FNoise1f::setParam(float param1, float param2, float param3) {
|
|
this->unk0 = param1;
|
|
this->unk4 = param1;
|
|
this->unk12 = param2;
|
|
this->unk8 = param3;
|
|
}
|
|
|
|
float Z2Calc::FNoise1f::tau(float param1) {
|
|
float temp1;
|
|
float temp2;
|
|
|
|
temp1 = param1;
|
|
temp2 = temp1 + (temp1 * temp1);
|
|
|
|
if (temp2 > lbl_8045582C) {
|
|
temp2 = temp2 - lbl_8045582C;
|
|
|
|
if (temp1 < this->unk12) {
|
|
temp2 = temp2 + this->unk12;
|
|
}
|
|
|
|
return temp2;
|
|
} else if (temp1 < this->unk12) {
|
|
temp2 = temp2 + this->unk12;
|
|
}
|
|
return temp2;
|
|
}
|
|
|
|
float Z2Calc::FNoise1f::calcNoise1f(void) {
|
|
float temp1;
|
|
float temp2;
|
|
|
|
temp1 = this->unk0;
|
|
|
|
if (this->unk0 < this->unk4) {
|
|
this->unk0 = temp1 + this->unk8;
|
|
|
|
if (this->unk0 < this->unk4) {
|
|
return this->unk0;
|
|
}
|
|
} else {
|
|
this->unk0 = temp1 - this->unk8;
|
|
|
|
if (this->unk0 > this->unk4) {
|
|
return this->unk0;
|
|
}
|
|
}
|
|
this->unk0 = this->unk4;
|
|
temp2 = tau(this->unk0);
|
|
this->unk4 = temp2;
|
|
|
|
return this->unk0;
|
|
} |