Files
banjo-kazooie/src/core2/babuzz.c
Moses Troyer c2dd933d22 All Changes
2025-08-16 17:15:49 +00:00

80 lines
2.0 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
/* .bss */
u8 baBuzzSfxSource;
struct {
f32 volume;
s32 sample_rate;
}D_8037C048;
struct{
f32 volume;
s32 sample_rate;
} D_8037C050;
f32 D_8037C058;
/* .code */
f32 babuzz_80290890(f32 arg0){
f64 temp_f2;
temp_f2 = func_80257A44(arg0, 0.7f);
arg0 = temp_f2 + temp_f2;
if(1.0 <= arg0){
arg0 = 2.0 - arg0;
}
arg0 = arg0 - 0.5;
return (f64)arg0 * 0.04;
}
f32 babuzz_80290920(f32 arg0, f32 arg1, f32 arg2){
f32 tick = time_getDelta();
if(arg0 < arg1){
arg0 += tick*arg2;
if(arg1 < arg0){
arg0 = arg1;
}
}
else{
arg0-= tick*arg2;
if(arg0 < arg1){
arg0 = arg1;
}
}
return arg0;
}
void babuzz_release(void){
sfxsource_freeSfxsourceByIndex(baBuzzSfxSource);
baBuzzSfxSource = 0;
}
void babuzz_reset(void){
baBuzzSfxSource = sfxsource_createSfxsourceAndReturnIndex();
D_8037C050.volume = 1.0f;
D_8037C048.sample_rate = D_8037C050.sample_rate = 13000;
D_8037C048.volume = D_8037C050.volume;
sfxsource_setSfxId(baBuzzSfxSource, 0x3fa);
sfxSource_setunk43_7ByIndex(baBuzzSfxSource, 2);
sfxsource_playSfxAtVolume(baBuzzSfxSource, D_8037C048.volume);
sfxsource_setSampleRate(baBuzzSfxSource, D_8037C048.sample_rate);
D_8037C058 = 0.0f;
}
void babuzz_update(void){
D_8037C058 += time_getDelta();
D_8037C048.volume = babuzz_80290920(D_8037C048.volume, D_8037C050.volume, 0.3f);
D_8037C048.sample_rate = babuzz_80290920((f32)D_8037C048.sample_rate, (f32)D_8037C050.sample_rate, 100.0f);
sfxsource_playSfxAtVolume(baBuzzSfxSource, babuzz_80290890(D_8037C058) + D_8037C048.volume);
sfxsource_setSampleRate(baBuzzSfxSource, D_8037C048.sample_rate);
sfxSource_func_8030E2C4(baBuzzSfxSource);
}
void babuzz_setVolume(f32 arg0){
D_8037C050.volume = arg0;
}
void babuzz_setSampleRate(s32 arg0){
D_8037C050.sample_rate = arg0;
}