MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / zMusicDo

Function zMusicDo

src/SB/Game/zMusic.cpp:197–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195}
196
197static S32 zMusicDo(S32 track)
198{
199 S32 snd_enum;
200 F32 vol;
201 F32 pitch;
202
203 vol = 1.0f;
204 if (globals.NoMusic != FALSE)
205 {
206 return 0;
207 }
208
209 snd_enum = xrand() % 0x18;
210 switch (sMusicQueueData[track]->situation)
211 {
212 case 3:
213 case 5:
214 snd_enum = sMusicQueueData[track]->music_enum;
215 break;
216 case 6:
217 snd_enum = sMusicQueueData[track]->music_enum;
218 break;
219 case 0:
220 snd_enum = getCurrLevelMusicEnum();
221 break;
222 case 7:
223 snd_enum = sMusicLastEnum[0];
224 break;
225 case 2:
226 snd_enum = 1;
227 break;
228 case 4:
229 break;
230 default:
231 snd_enum = xrand() % 0x18;
232 }
233
234 if (sMusicTrack[track].snd_id != 0)
235 {
236 xSndStop(sMusicTrack[track].snd_id);
237 sMusicTrack[track].snd_id = 0;
238 }
239
240 sMusicTrack[track].loop = sMusicSoundID[snd_enum][1];
241
242 pitch = 0.0f;
243 if (snd_enum == 9 && globals.scenePreload->sceneID == 'KF04')
244 {
245 pitch = -12.0f;
246 vol *= 0.7f;
247 }
248
249 // FIXME: loop operator
250 U32 snd_id = sMusicSoundID[snd_enum][track];
251 sMusicTrack[track].snd_id =
252 xSndPlay(snd_id, vol, pitch, 0xFF, sMusicTrack[track].loop, 0, SND_CAT_MUSIC, 0.0f);
253
254 // FIXME: This isn't quite right

Callers 1

zMusicUpdateFunction · 0.70

Calls 4

xrandFunction · 0.85
xSndStopFunction · 0.85
getCurrLevelMusicEnumFunction · 0.70
xSndPlayFunction · 0.50

Tested by

no test coverage detected