mirror of https://github.com/zeldaret/tp.git
111 lines
2.4 KiB
C++
111 lines
2.4 KiB
C++
#include "Z2AudioLib/Z2Calc/Z2calc.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;
|
|
} |