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

Function MIXInitChannel

src/SB/Core/gc/iMix.c:301–482  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

299}
300
301void MIXInitChannel(AXVPB* p, u32 mode, int input, int auxA, int auxB, int pan,
302 int span, int fader)
303{
304 MIXChannel* chan = &__MIXChannel[p->index];
305
306 u16 mixerCtrl;
307
308 chan->axvpb = p;
309 chan->mode = mode & 7;
310 chan->input = input;
311 chan->auxA = auxA;
312 chan->auxB = auxB;
313 chan->pan = pan;
314 chan->span = span;
315 chan->fader = fader;
316
317 __MIXSetPan(chan);
318
319 if (chan->mode & 4)
320 {
321 chan->v = 0;
322 }
323 else
324 {
325 chan->v = __MIXGetVolume(input);
326 }
327
328 mixerCtrl = 0;
329
330 switch (__MIXSoundMode)
331 {
332 case 0:
333 chan->vL = __MIXGetVolume(chan->fader + chan->f);
334 chan->vR = __MIXGetVolume(chan->fader + chan->f);
335 chan->vS = __MIXGetVolume(chan->fader + chan->b);
336 if (chan->mode & 1)
337 {
338 chan->vAL = __MIXGetVolume(chan->auxA + chan->f);
339 chan->vAR = __MIXGetVolume(chan->auxA + chan->f);
340 chan->vAS = __MIXGetVolume(chan->auxA + chan->b - 0x3c);
341 }
342 else
343 {
344 chan->vAL = __MIXGetVolume(chan->fader + chan->auxA + chan->f);
345 chan->vAR = __MIXGetVolume(chan->fader + chan->auxA + chan->f);
346 chan->vAS = __MIXGetVolume(chan->fader + chan->auxA + chan->b - 0x3c);
347 }
348
349 if (chan->mode & 2)
350 {
351 chan->vBL = __MIXGetVolume(chan->auxB + chan->f);
352 chan->vBR = __MIXGetVolume(chan->auxB + chan->f);
353 chan->vBS = __MIXGetVolume(chan->auxB + chan->b - 0x3c);
354 }
355 else
356 {
357 chan->vBL = __MIXGetVolume(chan->fader + chan->auxB + chan->f);
358 chan->vBR = __MIXGetVolume(chan->fader + chan->auxB + chan->f);

Callers 1

fcbFunction · 0.85

Calls 3

__MIXSetPanFunction · 0.85
__MIXGetVolumeFunction · 0.85
OSDisableInterruptsFunction · 0.85

Tested by

no test coverage detected