Decompile `nuScEventHandler`

This commit is contained in:
gijs 2023-10-20 12:30:13 +02:00
parent 05b93a6faa
commit 0f740013fc
1 changed files with 45 additions and 1 deletions

View File

@ -2,6 +2,8 @@
#include "nu/nusys.h" #include "nu/nusys.h"
void nuScEventBroadcast(NUScMsg* msg);
INCLUDE_ASM(const s32, "_ob_past_brick", nuScCreateScheduler); INCLUDE_ASM(const s32, "_ob_past_brick", nuScCreateScheduler);
OSMesgQueue* nuScGetAudioMQ() { OSMesgQueue* nuScGetAudioMQ() {
@ -12,7 +14,49 @@ OSMesgQueue* nuScGetGfxMQ() {
return &nusched.graphicsRequestMQ; return &nusched.graphicsRequestMQ;
} }
INCLUDE_ASM(const s32, "_ob_past_brick", nuScEventHandler); void nuScEventHandler(void) {
OSMesg msg;
s32 beforeResetFrame;
nuScRetraceCounter = 0;
while (TRUE) {
osRecvMesg(&nusched.retraceMQ, &msg, OS_MESG_BLOCK);
switch ((s32) msg) {
case 666:
nuScRetraceCounter++;
nuScEventBroadcast(&nusched.retraceMsg);
if (nuScPreNMIFlag){
if (beforeResetFrame){
beforeResetFrame--;
} else {
nuScPreNMIFlag |= NU_SC_BEFORE_RESET;
osAfterPreNMI();
osViSetYScale(1.0);
__calls_osViBlack(TRUE);
}
}
break;
case 669:
nuScPreNMIFlag = NU_SC_PRENMI_GET;
nuScEventBroadcast(&nusched.prenmiMsg);
if (nuScPreNMIFunc != NULL){
(*nuScPreNMIFunc)();
}
beforeResetFrame = (nusched.frameRate / 2) / nusched.retraceCount - 3;
break;
default:
break;
}
}
}
void nuScAddClient(NUScClient* client, OSMesgQueue* queue, NUScMsg type) { void nuScAddClient(NUScClient* client, OSMesgQueue* queue, NUScMsg type) {
s32 mask; s32 mask;