SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
AudBgmTempoAdjuster.cpp
1#include "Game/RhythmLib/AudBgmTempoAdjuster.hpp"
2#include "Game/AudioLib/AudParams.hpp"
3
4AudBgmTempoAdjuster::AudBgmTempoAdjuster() {
5 mStream = nullptr;
6 _4 = 1.0f;
7 _8 = 0;
8 _C = 0;
9 _10 = 0;
10 _14 = 0;
11 _18 = 0.0f;
12 init();
13}
14
15void AudBgmTempoAdjuster::init() {
16 _1C = 0;
17 _20 = 0;
18 _24 = false;
19 _25 = false;
20}
21
22void AudBgmTempoAdjuster::setStream(JAIStream *pStream) {
23 BOOL inter = OSDisableInterrupts();
24 init();
25 mStream = pStream;
26 OSRestoreInterrupts(inter);
27}
28
29void AudBgmTempoAdjuster::reject() {
30 BOOL inter = OSDisableInterrupts();
31 mStream = nullptr;
32 init();
33 OSRestoreInterrupts(inter);
34}
35
36// AudBgmTempoAdjuster::beatProc
37
38f32 AudBgmTempoAdjuster::calcAdjustRate(f32 a1, f32 a2) {
39 bool val = false;
40 f32 v4 = ((a1 - 500.0f) / (_4 * ((60.0f * AudParams::streamSampleRate) / a2)));
41
42 if (v4 < 0.0f) {
43 val = true;
44 }
45
46 f32 v5 = (v4 * v4);
47
48 if (v5 > 1.0f) {
49 v5 = 1.0f;
50 }
51
52 if (val) {
53 return (1.0f / (1.0f + v5));
54 }
55
56 return v5 + 1.0f;
57}