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

Function __AXOutNewFrame

src/dolphin/src/ax/AXOut.c:30–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28static void __AXDSPDoneCallback(void* task);
29
30void __AXOutNewFrame(u32 lessDspCycles)
31{
32 u32 cl;
33 AXPROFILE* profile;
34 u8* src;
35 u8* dest;
36 u32 i;
37
38 __AXLocalProfile.axFrameStart = OSGetTime();
39 __AXSyncPBs(lessDspCycles);
40 __AXPrintStudio();
41 cl = __AXGetCommandListAddress();
42
43 DSPSendMailToDSP(0xBABE0180);
44 do
45 {
46 } while (DSPCheckMailToDSP() != 0);
47
48 DSPSendMailToDSP(cl);
49 do
50 {
51 } while (DSPCheckMailToDSP() != 0);
52
53 __AXServiceCallbackStack();
54 __AXLocalProfile.auxProcessingStart = OSGetTime();
55 __AXProcessAux();
56 __AXLocalProfile.auxProcessingEnd = OSGetTime();
57 __AXLocalProfile.userCallbackStart = OSGetTime();
58
59 if (__AXUserFrameCallback)
60 {
61 __AXUserFrameCallback();
62 }
63
64 __AXLocalProfile.userCallbackEnd = OSGetTime();
65 __AXNextFrame(__AXOutSBuffer, &__AXOutBuffer[__AXOutFrame][0]);
66 __AXOutFrame += 1;
67
68 if (__AXOutputBufferMode == 1)
69 {
70 __AXOutFrame %= 3;
71 }
72 else
73 {
74 __AXOutFrame &= 1;
75 AIInitDMA((u32)&__AXOutBuffer[__AXOutFrame][0], 0x280);
76 }
77
78 __AXLocalProfile.axFrameEnd = OSGetTime();
79 __AXLocalProfile.axNumVoices = __AXGetNumVoices();
80 profile = (void*)__AXGetCurrentProfile();
81
82 if (profile)
83 {
84 i = 56;
85 dest = (u8*)profile;
86 src = (u8*)&__AXLocalProfile;
87

Callers 2

__AXOutAiCallbackFunction · 0.85
__AXDSPResumeCallbackFunction · 0.85

Calls 12

OSGetTimeFunction · 0.85
__AXSyncPBsFunction · 0.85
__AXPrintStudioFunction · 0.85
DSPSendMailToDSPFunction · 0.85
DSPCheckMailToDSPFunction · 0.85
__AXServiceCallbackStackFunction · 0.85
__AXProcessAuxFunction · 0.85
__AXNextFrameFunction · 0.85
AIInitDMAFunction · 0.85
__AXGetNumVoicesFunction · 0.85
__AXGetCurrentProfileFunction · 0.85

Tested by

no test coverage detected