Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
Z2Audience.h
Go to the documentation of this file.
1#ifndef Z2AUDIENCE_H
2#define Z2AUDIENCE_H
3
4#include "JSystem/JAudio2/JAIAudience.h"
5#include "JSystem/JAudio2/JASGadget.h"
6#include "JSystem/JAudio2/JAIAudible.h"
7#include "JSystem/JAudio2/JASSoundParams.h"
8#include "JSystem/JAudio2/JASHeapCtrl.h"
9#include "JSystem/JAudio2/JAUAudibleParam.h"
10#include "JSystem/TPosition3.h"
11
12struct Z2Audible;
13
15 void calc(const JGeometry::TVec3<f32>& pos);
16 void init(JGeometry::TVec3<f32>*, const JGeometry::TVec3<f32>&,
17 const JGeometry::TVec3<f32>*);
18
19 /* 0x00 */ JGeometry::TVec3<f32> field_0x0;
20 /* 0x0C */ JGeometry::TVec3<f32> velocity_;
21};
22
25 void init();
26 void setCameraState(f32 (*)[4], Vec& pos, Vec&, f32, f32, bool, bool);
27 void setCameraState(f32 const (*)[4], Vec& pos, bool);
28 void convertAbsToRel(Z2Audible* audible, int channelNum);
29 bool convertAbsToRel(Vec& src, Vec* dst) const;
30 bool isInSight(Vec&) const;
31
32 const JGeometry::TVec3<f32>* getPos() const { return &mPos; }
33 f32 getVolCenterZ() const { return mVolCenterZ; }
34 void setMainCamera(bool param_0) { mSetMainCamera = param_0; }
35
36 void setTargetVolume(f32 vol) {
37 JUT_ASSERT(281, vol <= 1.f);
38 if (vol < 0.0f) {
39 vol = 0.0f;
40 }
41 mTargetVolume = vol;
42 }
43
44 f32 getDolbyCenterZ() const { return mDolbyCenterZ; }
45 f32 getFovySin() const { return mFovySin; }
46 const JGeometry::TVec3<f32>* getVel() const { return &mVel; }
47
48 f32 getTargetVolume() const { return mTargetVolume; }
49 f32 getCamDist() const { return mCamDist; }
50
51
52 /* 0x00 */ JGeometry::TPosition3f32 field_0x0;
53 /* 0x30 */ JGeometry::TVec3<f32> mVel;
54 /* 0x3C */ JGeometry::TVec3<f32> mPos;
55 /* 0x48 */ JGeometry::TVec3<f32> field_0x48;
56 /* 0x54 */ f32 mFovySin;
57 /* 0x58 */ f32 mVolCenterZ;
58 /* 0x5C */ f32 mTargetVolume;
59 /* 0x60 */ f32 mDolbyCenterZ;
60 /* 0x64 */ f32 mCamDist;
61 /* 0x68 */ f32 field_0x68;
62 /* 0x6C */ f32 field_0x6c;
63 /* 0x70 */ bool mSetMainCamera;
64}; // Size: 0x74
65
66struct Z2SpotMic {
67 Z2SpotMic();
68 void clearMicState(int camID);
69 void calcVolumeFactor(int camID);
70 void setMicState(Z2AudioCamera* camera, int camID);
71 f32 calcMicDist(Z2Audible* audible);
72 u32 calcMicPriority(f32);
73 f32 calcMicVolume(f32, int camID, f32);
74
76 void setIgnoreIfOut(bool value) { mIgnoreIfOut = value; }
77 void setMicOn(bool value) { mMicOn = value; }
78
79 void setPosPtr(Vec* posPtr) { mPosPtr = posPtr; }
80 bool isOn() { return mMicOn; }
81
82 /* 0x00 */ f32 field_0x0;
83 /* 0x04 */ f32 field_0x4;
84 /* 0x08 */ f32 field_0x8;
85 /* 0x0C */ f32 field_0xc;
86 /* 0x10 */ Z2AudioCamera* field_0x10[1];
87 /* 0x14 */ Vec* mPosPtr;
88 /* 0x18 */ f32 field_0x18[1];
89 /* 0x1C */ f32 field_0x1c;
90 /* 0x20 */ f32 field_0x20[1];
91 /* 0x24 */ bool mIgnoreIfOut;
92 /* 0x25 */ bool mMicOn;
93 /* 0x26 */ bool field_0x26[1];
94}; // Size: 0x28
95
98 void init();
99 void initVolumeDist();
100 void updateVolumeDist(f32);
101 void initDolbyDist();
102 void updateDolbyDist(f32, f32);
103
105 field_0x0[1] = 1.25f * field_0x0[0];
106 field_0x0[2] = 1.5f * field_0x0[0];
107 field_0x0[3] = 2.0f * field_0x0[0];
108 field_0x0[4] = 3.0f * field_0x0[0];
109 field_0x0[5] = 4.0f * field_0x0[0];
110 field_0x0[6] = 6.0f * field_0x0[0];
111 field_0x0[7] = 8.0f * field_0x0[0];
112 field_0x0[8] = 0.9f * field_0x0[0];
113 field_0x0[9] = 0.8f * field_0x0[0];
114 field_0x0[10] = 0.7f * field_0x0[0];
115 field_0x0[11] = 0.6f * field_0x0[0];
116 field_0x0[12] = 0.5f * field_0x0[0];
117 field_0x0[13] = 0.4f * field_0x0[0];
118 field_0x0[14] = 0.3f * field_0x0[0];
119 for (int i = 0; i < 15; i++) {
120 field_0x70[i] = (field_0x40 - 1.0f) / (field_0x0[i] - field_0x3c);
121 }
122 }
123
125 for (int i = 0; i < 15; i++) {
127 }
128 }
129
131 for (int i = 0; i < 15; i++) {
133 }
134 }
135
136 /* 0x000 */ f32 field_0x0[15];
137 /* 0x03C */ f32 field_0x3c;
138 /* 0x040 */ f32 field_0x40;
139 /* 0x044 */ f32 field_0x44;
140 /* 0x048 */ f32 field_0x48;
141 /* 0x04C */ f32 field_0x4c;
142 /* 0x050 */ f32 field_0x50;
143 /* 0x054 */ f32 field_0x54;
144 /* 0x058 */ f32 field_0x58;
145 /* 0x05C */ f32 field_0x5c;
146 /* 0x060 */ f32 field_0x60;
147 /* 0x064 */ u32 field_0x64;
148 /* 0x068 */ f32 field_0x68;
149 /* 0x06C */ f32 field_0x6c;
150 /* 0x070 */ f32 field_0x70[15];
151 /* 0x0AC */ f32 field_0xac[15];
152 /* 0x0E8 */ f32 field_0xe8[15];
153 /* 0x124 */ bool mVolumeDistInit;
154 /* 0x125 */ bool mDolbyDistInit;
155}; // Size: 0x128
156
158 /* 0x00 */ JGeometry::TVec3<f32> field_0x00;
159 /* 0x0C */ f32 field_0xC;
160 /* 0x10 */ f32 field_0x10;
161};
162
165 void init() {
166 mParams.init();
167 field_0x28 = -1.0f;
168 mPan = 0.5f;
169 mDolby = 0.0f;
170 field_0x34 = 1.0f;
171 }
172
173 /* 0x00 */ JASSoundParams mParams;
175 /* 0x28 */ f32 field_0x28;
176 /* 0x2c */ f32 mPan;
177 /* 0x30 */ f32 mDolby;
178 /* 0x34 */ f32 field_0x34;
179};
180
181struct Z2Audible : public JAIAudible, public JASPoolAllocObject<Z2Audible> {
182 Z2Audible(const JGeometry::TVec3<f32>& pos, const JGeometry::TVec3<f32>*, u32 channel, bool);
183 void calc();
184 JASSoundParams* getOuterParams(int index);
185 void setOuterParams(const JASSoundParams& outParams, const JASSoundParams& inParams, int index);
186 Z2AudibleChannel* getChannel(int index);
187 u32 getDistVolBit();
188 ~Z2Audible();
189
190 bool isDoppler() {
191 return ((*(u8*)&mParam.field_0x0) >> 4) & 0xf;
192 }
193
194 const JGeometry::TVec3<f32>& getPos() const { return mPos; }
195
196 JAUAudibleParam* getAudibleParam() { return &mParam; }
197 const JAUAudibleParam* getAudibleParam() const { return &mParam; }
198 void setAudibleParam(JAUAudibleParam param) { mParam.field_0x0.raw = param.field_0x0.raw; }
199 const JGeometry::TVec3<f32>* getVel() const { return &mAbsPos.velocity_; }
200
201 /* 0x10 */ JAUAudibleParam mParam;
204 /* 0x64 */ f32 field_0x64[1];
205};
206
207struct Z2Audience : public JAIAudience, public JASGlobalInstance<Z2Audience> {
208 Z2Audience();
209 void setAudioCamera(f32 (*)[4], Vec&, Vec&, f32, f32, bool, int camID, bool);
210 f32 calcOffMicSound(f32);
211 void setTargetVolume(f32 volume, int index);
212 bool convertAbsToRel(Vec& src, Vec* dst, int camID);
213 f32 calcRelPosVolume(const Vec&, f32, int camID);
214 f32 calcRelPosPan(const Vec&, int camID);
215 f32 calcRelPosDolby(const Vec&, int camID);
216 f32 calcVolume_(f32, int distVolBit) const;
217 u32 calcDeltaPriority_(f32, int distVolBit, bool) const;
218 f32 calcPitchDoppler_(const JGeometry::TVec3<f32>&,
219 const JGeometry::TVec3<f32>&,
220 const JGeometry::TVec3<f32>&, f32) const;
221 f32 calcFxMix_(f32, int distVolBit) const;
222 f32 calcPitch_(Z2AudibleChannel* channel, const Z2Audible* audible, const Z2AudioCamera* camera) const;
223
224 virtual ~Z2Audience();
225 virtual JAIAudible* newAudible(const JGeometry::TVec3<f32>& pos, JAISoundID soundID,
226 const JGeometry::TVec3<f32>*, u32);
227 virtual int getMaxChannels();
228 virtual void deleteAudible(JAIAudible* audible);
229 virtual u32 calcPriority(JAIAudible* audible);
230 virtual void mixChannelOut(const JASSoundParams& outParams, JAIAudible* audible, int channelNum);
231
232 bool isActive() const;
233
235 JGeometry::TVec3<f32> getAudioCamPos(int camID) {
236 return *mAudioCamera[camID].getPos();
237 }
239
240 const Z2AudioCamera* getAudioCamera(int camID) const { return &mAudioCamera[camID]; }
241
242 void setUsingOffMicVol(bool value) { mUsingOffMicVol = value; }
243
244 /* 0x004 */ f32 field_0x4;
245 /* 0x008 */ u8 field_0x8;
248 /* 0x1A8 */ Z2SpotMic mSpotMic[1];
249 /* 0x1D0 */ Z2SpotMic* mLinkMic;
250 /* 0x1D4 */ s32 mNumPlayers;
251 /* 0x1D8 */ u8 field_0x1d8[4];
252 /* 0x1DC */ bool mUsingOffMicVol;
253}; // Size: 0x1E0
254
256 return JASGlobalInstance<Z2Audience>::getInstance();
257}
258
259extern s8 data_80451358;
260extern s8 data_80451359;
261
262#endif /* Z2AUDIENCE_H */
s8 data_80451358
Definition Z2Creature.cpp:11
Z2Audience * Z2GetAudience()
Definition Z2Audience.h:255
s8 data_80451359
Definition Z2Creature.cpp:12
static initFunc init[]
Definition d_menu_collect.cpp:40
struct Vec Vec
Definition m_Do_lib.h:8
Definition Z2Audience.h:14
void calc(const JGeometry::TVec3< f32 > &pos)
Definition Z2Audience.cpp:11
JGeometry::TVec3< f32 > velocity_
Definition Z2Audience.h:20
JGeometry::TVec3< f32 > field_0x0
Definition Z2Audience.h:19
Definition Z2Audience.h:163
Z2AudibleChannel()
Definition Z2Audience.cpp:45
void init()
Definition Z2Audience.h:165
f32 field_0x34
Definition Z2Audience.h:178
f32 mPan
Definition Z2Audience.h:176
f32 mDolby
Definition Z2Audience.h:177
JASSoundParams mParams
Definition Z2Audience.h:173
f32 field_0x28
Definition Z2Audience.h:175
Z2AudibleRelPos field_0x14
Definition Z2Audience.h:174
Definition Z2Audience.h:157
JGeometry::TVec3< f32 > field_0x00
Definition Z2Audience.h:158
f32 field_0xC
Definition Z2Audience.h:159
f32 field_0x10
Definition Z2Audience.h:160
Definition Z2Audience.h:181
void setOuterParams(const JASSoundParams &outParams, const JASSoundParams &inParams, int index)
Definition Z2Audience.cpp:59
Z2Audible(const JGeometry::TVec3< f32 > &pos, const JGeometry::TVec3< f32 > *, u32 channel, bool)
Definition Z2Audience.cpp:29
u32 getDistVolBit()
Definition Z2Audience.cpp:143
JAUAudibleParam mParam
Definition Z2Audience.h:201
Z2AudibleAbsPos mAbsPos
Definition Z2Audience.h:202
JAUAudibleParam * getAudibleParam()
Definition Z2Audience.h:196
bool isDoppler()
Definition Z2Audience.h:190
const JGeometry::TVec3< f32 > & getPos() const
Definition Z2Audience.h:194
~Z2Audible()
Definition Z2Audience.cpp:558
void calc()
Definition Z2Audience.cpp:47
const JGeometry::TVec3< f32 > * getVel() const
Definition Z2Audience.h:199
Z2AudibleChannel mChannel[1]
Definition Z2Audience.h:203
JASSoundParams * getOuterParams(int index)
Definition Z2Audience.cpp:53
const JAUAudibleParam * getAudibleParam() const
Definition Z2Audience.h:197
void setAudibleParam(JAUAudibleParam param)
Definition Z2Audience.h:198
f32 field_0x64[1]
Definition Z2Audience.h:204
Z2AudibleChannel * getChannel(int index)
Definition Z2Audience.cpp:137
Definition Z2Audience.h:96
f32 field_0x3c
Definition Z2Audience.h:137
f32 field_0x44
Definition Z2Audience.h:139
f32 field_0x54
Definition Z2Audience.h:143
f32 field_0x5c
Definition Z2Audience.h:145
void initVolumeDist()
Definition Z2Audience.cpp:179
f32 field_0x6c
Definition Z2Audience.h:149
Z2Audience3DSetting()
Definition Z2Audience.cpp:157
f32 field_0x40
Definition Z2Audience.h:138
void updateDolbyDist(f32, f32)
Definition Z2Audience.cpp:220
void init()
Definition Z2Audience.cpp:163
f32 field_0xac[15]
Definition Z2Audience.h:151
f32 field_0x4c
Definition Z2Audience.h:141
f32 field_0x0[15]
Definition Z2Audience.h:136
f32 field_0x60
Definition Z2Audience.h:146
f32 field_0x58
Definition Z2Audience.h:144
void calcPriorityFactorAll()
Definition Z2Audience.h:124
f32 field_0x50
Definition Z2Audience.h:142
f32 field_0x70[15]
Definition Z2Audience.h:150
void updateVolumeDist(f32)
Definition Z2Audience.cpp:194
f32 field_0xe8[15]
Definition Z2Audience.h:152
void initDolbyDist()
Definition Z2Audience.cpp:210
bool mVolumeDistInit
Definition Z2Audience.h:153
bool mDolbyDistInit
Definition Z2Audience.h:154
void calcFxMixFactorAll()
Definition Z2Audience.h:130
void calcVolumeFactorAll()
Definition Z2Audience.h:104
f32 field_0x48
Definition Z2Audience.h:140
f32 field_0x68
Definition Z2Audience.h:148
u32 field_0x64
Definition Z2Audience.h:147
Definition Z2Audience.h:207
u8 field_0x8
Definition Z2Audience.h:245
void setUsingOffMicVol(bool value)
Definition Z2Audience.h:242
bool mUsingOffMicVol
Definition Z2Audience.h:252
u32 calcDeltaPriority_(f32, int distVolBit, bool) const
Definition Z2Audience.cpp:766
f32 calcRelPosVolume(const Vec &, f32, int camID)
Definition Z2Audience.cpp:676
void setAudioCamera(f32(*)[4], Vec &, Vec &, f32, f32, bool, int camID, bool)
Definition Z2Audience.cpp:510
bool isActive() const
Definition Z2Audience.cpp:506
virtual u32 calcPriority(JAIAudible *audible)
Definition Z2Audience.cpp:560
f32 field_0x4
Definition Z2Audience.h:244
virtual ~Z2Audience()
Definition Z2Audience.cpp:502
void setTargetVolume(f32 volume, int index)
Definition Z2Audience.cpp:666
const Z2AudioCamera * getAudioCamera(int camID) const
Definition Z2Audience.h:240
Z2Audience()
Definition Z2Audience.cpp:494
f32 calcRelPosPan(const Vec &, int camID)
Definition Z2Audience.cpp:697
f32 calcRelPosDolby(const Vec &, int camID)
Definition Z2Audience.cpp:731
Z2Audience3DSetting mSetting
Definition Z2Audience.h:246
Z2SpotMic mSpotMic[1]
Definition Z2Audience.h:248
f32 calcPitchDoppler_(const JGeometry::TVec3< f32 > &, const JGeometry::TVec3< f32 > &, const JGeometry::TVec3< f32 > &, f32) const
Definition Z2Audience.cpp:781
virtual JAIAudible * newAudible(const JGeometry::TVec3< f32 > &pos, JAISoundID soundID, const JGeometry::TVec3< f32 > *, u32)
Definition Z2Audience.cpp:518
Z2SpotMic * mLinkMic
Definition Z2Audience.h:249
JGeometry::TVec3< f32 > getAudioCamPos(int camID)
Definition Z2Audience.h:235
Z2Audience3DSetting * getSetting()
Definition Z2Audience.h:238
s32 mNumPlayers
Definition Z2Audience.h:250
f32 calcPitch_(Z2AudibleChannel *channel, const Z2Audible *audible, const Z2AudioCamera *camera) const
Definition Z2Audience.cpp:799
f32 calcVolume_(f32, int distVolBit) const
Definition Z2Audience.cpp:754
u8 field_0x1d8[4]
Definition Z2Audience.h:251
f32 calcOffMicSound(f32)
Definition Z2Audience.cpp:598
virtual int getMaxChannels()
Definition Z2Audience.cpp:831
Z2AudioCamera mAudioCamera[1]
Definition Z2Audience.h:247
bool convertAbsToRel(Vec &src, Vec *dst, int camID)
Definition Z2Audience.cpp:670
virtual void deleteAudible(JAIAudible *audible)
Definition Z2Audience.cpp:554
Z2SpotMic * getLinkMic()
Definition Z2Audience.h:234
virtual void mixChannelOut(const JASSoundParams &outParams, JAIAudible *audible, int channelNum)
Definition Z2Audience.cpp:606
f32 calcFxMix_(f32, int distVolBit) const
Definition Z2Audience.cpp:789
Definition Z2Audience.h:23
f32 getDolbyCenterZ() const
Definition Z2Audience.h:44
f32 getVolCenterZ() const
Definition Z2Audience.h:33
void convertAbsToRel(Z2Audible *audible, int channelNum)
Definition Z2Audience.cpp:325
f32 getFovySin() const
Definition Z2Audience.h:45
Z2AudioCamera()
Definition Z2Audience.cpp:240
void init()
Definition Z2Audience.cpp:251
f32 mVolCenterZ
Definition Z2Audience.h:57
void setMainCamera(bool param_0)
Definition Z2Audience.h:34
void setCameraState(f32(*)[4], Vec &pos, Vec &, f32, f32, bool, bool)
Definition Z2Audience.cpp:272
JGeometry::TVec3< f32 > field_0x48
Definition Z2Audience.h:55
const JGeometry::TVec3< f32 > * getVel() const
Definition Z2Audience.h:46
f32 mCamDist
Definition Z2Audience.h:60
f32 mTargetVolume
Definition Z2Audience.h:58
f32 field_0x68
Definition Z2Audience.h:61
f32 getCamDist() const
Definition Z2Audience.h:49
f32 mDolbyCenterZ
Definition Z2Audience.h:59
f32 mFovySin
Definition Z2Audience.h:56
f32 field_0x6c
Definition Z2Audience.h:62
JGeometry::TPosition3f32 field_0x0
Definition Z2Audience.h:52
f32 getTargetVolume() const
Definition Z2Audience.h:48
void setTargetVolume(f32 vol)
Definition Z2Audience.h:36
JGeometry::TVec3< f32 > mVel
Definition Z2Audience.h:53
JGeometry::TVec3< f32 > mPos
Definition Z2Audience.h:54
const JGeometry::TVec3< f32 > * getPos() const
Definition Z2Audience.h:32
bool isInSight(Vec &) const
Definition Z2Audience.cpp:349
bool mSetMainCamera
Definition Z2Audience.h:63
Definition Z2Audience.h:66
f32 field_0x18[1]
Definition Z2Audience.h:88
void setMicOn(bool value)
Definition Z2Audience.h:77
bool isOn()
Definition Z2Audience.h:80
void setIgnoreIfOut(bool value)
Definition Z2Audience.h:76
void calcVolumeFactor(int camID)
Definition Z2Audience.cpp:387
bool field_0x26[1]
Definition Z2Audience.h:93
f32 field_0x1c
Definition Z2Audience.h:89
bool mIgnoreIfOut
Definition Z2Audience.h:91
u32 calcMicPriority(f32)
Definition Z2Audience.cpp:441
void setMicState(Z2AudioCamera *camera, int camID)
Definition Z2Audience.cpp:391
f32 field_0x8
Definition Z2Audience.h:84
bool mMicOn
Definition Z2Audience.h:92
f32 field_0x4
Definition Z2Audience.h:83
Z2AudioCamera * field_0x10[1]
Definition Z2Audience.h:86
void clearMicState(int camID)
Definition Z2Audience.cpp:380
f32 field_0x20[1]
Definition Z2Audience.h:90
void setPosPtr(Vec *posPtr)
Definition Z2Audience.h:79
f32 calcMicVolume(f32, int camID, f32)
Definition Z2Audience.cpp:453
f32 field_0xc
Definition Z2Audience.h:85
f32 field_0x0
Definition Z2Audience.h:82
void calcPriorityFactor()
f32 calcMicDist(Z2Audible *audible)
Definition Z2Audience.cpp:423
Z2SpotMic()
Definition Z2Audience.cpp:365
Vec * mPosPtr
Definition Z2Audience.h:87