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

Function xCutscene_Create

src/SB/Core/x/xCutscene.cpp:54–92  ·  view source on GitHub ↗

Damn RwEngineInstance ruining this (as well as the members being accessed incorrectly by Ghidra)

Source from the content-addressed store, hash-verified

52
53// Damn RwEngineInstance ruining this (as well as the members being accessed incorrectly by Ghidra)
54xCutscene* xCutscene_Create(U32 id)
55{
56 xCutscene* csn;
57 xCutsceneInfo* cnfo;
58 U32 maxload;
59
60 xSndPauseAll(1, 1);
61 memset(&sActiveCutscene, 0, 0x198);
62 sActiveCutscene.PlaybackSpeed = 1.0f;
63
64 for (int i = 0; i < sCutTocCount; i++)
65 {
66 cnfo = &sCutTocInfo[i];
67 if (sCutTocInfo[i].AssetID == id)
68 {
69 break;
70 }
71 }
72 maxload = cnfo->MaxBufEven + cnfo->MaxBufOdd;
73 if (cnfo->MaxModel > maxload)
74 {
75 maxload = cnfo->MaxModel;
76 }
77 // sActiveCutscene.RawBuf = RwFree(maxload + 0x3c);
78 sActiveCutscene.AlignBuf = sActiveCutscene.RawBuf;
79 while ((int)sActiveCutscene.AlignBuf & 0x3f != 0)
80 {
81 sActiveCutscene.AlignBuf = (void*)((int)sActiveCutscene.AlignBuf + 4);
82 }
83 sActiveCutscene.TimeChunkOffs = (U32*)(cnfo[1].SoundLeft + cnfo->NumData * 0x10 + -0x30);
84 sActiveCutscene.Info = cnfo;
85 sActiveCutscene.Data = (xCutsceneData*)(cnfo + 1);
86 sActiveCutscene.Visibility = sActiveCutscene.TimeChunkOffs + cnfo->NumTime + 1;
87 sActiveCutscene.BreakList =
88 (xCutsceneBreak*)(sActiveCutscene.TimeChunkOffs + cnfo->NumTime + 1 + cnfo->VisSize);
89 sActiveCutscene.Play = (xCutsceneTime*)sActiveCutscene.AlignBuf;
90 sActiveCutscene.Stream = (xCutsceneTime*)((int)sActiveCutscene.AlignBuf + cnfo->MaxBufEven);
91 return &sActiveCutscene;
92}
93
94S32 xCutscene_Destroy(xCutscene* csn)
95{

Callers 1

zCutsceneMgrEventCBFunction · 0.50

Calls 2

memsetFunction · 0.85
xSndPauseAllFunction · 0.70

Tested by

no test coverage detected