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

Function iCSSoundGetData

src/SB/Core/gc/iCutscene.cpp:40–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38}
39
40void* iCSSoundGetData(xSndVoiceInfo* vp, U32* size)
41{
42 U32 channelIndex;
43 U32 dataIndex;
44 xCutscene* csn;
45 void* retdata;
46 xCutsceneData* data;
47 U32 numChannel;
48 U32 numData;
49 S32 sndChannelIndex;
50 U32 r4;
51 U32 sndChannelReq;
52
53 csn = xCutscene_CurrentCutscene();
54
55 numChannel = csn->SndNumChannel;
56 retdata = NULL;
57 sndChannelIndex = -1;
58
59 for (channelIndex = 0; channelIndex < numChannel; channelIndex++)
60 {
61 if (csn->SndAssetID[channelIndex] == vp->assetID)
62 {
63 sndChannelIndex = channelIndex;
64 sndChannelReq = csn->SndChannelReq[channelIndex];
65 }
66 }
67
68 if (sndChannelIndex == -1)
69 {
70 return NULL;
71 }
72
73 if (!csn->Waiting && csn->Stream->ChunkIndex == sndChannelReq)
74 {
75 numData = csn->Stream->NumData;
76 data = (xCutsceneData*)(csn->Stream + 1);
77 }
78 else
79 {
80 numData = csn->Play->NumData;
81 data = (xCutsceneData*)(csn->Play + 1);
82
83 if (csn->SndChannelReq[sndChannelIndex] != csn->Play->ChunkIndex)
84 {
85 csn->SndChannelReq[sndChannelIndex] = csn->Play->ChunkIndex;
86 }
87 }
88
89 r4 = 0;
90
91 for (dataIndex = 0; dataIndex < numData; dataIndex++)
92 {
93 if (data->DataType == XCUTSCENEDATA_TYPE_SOUND)
94 {
95 if (!retdata)
96 {
97 retdata = (void*)(data + 1);

Callers

nothing calls this directly

Calls 1

Tested by

no test coverage detected