mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-09 21:51:32 -04:00
z_nmi_buff OK, code_8010C1B0 split and OK (#334)
* nmi_buff OK, code_8010C1B0 split and OK * COLD_RESET * spec * Fix lifemeter bss * Rename variable
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
#include "global.h"
|
||||
|
||||
// Blocks the current thread until all currently queued scheduler tasks have been completed
|
||||
void func_8010C1B0(void) {
|
||||
OSScTask task;
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg;
|
||||
|
||||
task.next = NULL;
|
||||
task.flags = OS_SC_RCP_MASK;
|
||||
task.msgQ = &queue;
|
||||
task.msg = NULL;
|
||||
task.framebuffer = NULL;
|
||||
task.list.t.type = M_NULTASK;
|
||||
|
||||
osCreateMesgQueue(task.msgQ, &msg, 1);
|
||||
osSendMesg(&gSchedContext.cmdQ, &task, OS_MESG_BLOCK);
|
||||
Sched_SendEntryMsg(&gSchedContext);
|
||||
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
+8
-3
@@ -1,3 +1,8 @@
|
||||
/**
|
||||
* This file has unmigrated bss. It is not practical to migrate it until we have a better way of dealing with bss
|
||||
* reordering than just prevent_bss_reordering.h: there is too much of it to control, and it cannot be split into
|
||||
* separate files since most of it is at addresses ending in 8.
|
||||
*/
|
||||
#include "global.h"
|
||||
|
||||
void Main(void* arg) {
|
||||
@@ -29,18 +34,18 @@ void Main(void* arg) {
|
||||
osCreateMesgQueue(&mainIrqmgrCallbackQueue, mainIrqCallbackBuffer, ARRAY_COUNT(mainIrqCallbackBuffer));
|
||||
|
||||
StackCheck_Init(&schedStackEntry, schedStack, schedStack + sizeof(schedStack), 0, 0x100, "sched");
|
||||
Sched_Init(&schedContext, schedStack + sizeof(schedStack), Z_PRIORITY_SCHED, D_8009B290, 1, &gIrqMgr);
|
||||
Sched_Init(&gSchedContext, schedStack + sizeof(schedStack), Z_PRIORITY_SCHED, D_8009B290, 1, &gIrqMgr);
|
||||
|
||||
CIC6105_AddRomInfoFaultPage();
|
||||
|
||||
IrqMgr_AddClient(&gIrqMgr, &mainIrqmgrCallbackNode, &mainIrqmgrCallbackQueue);
|
||||
|
||||
StackCheck_Init(&audioStackEntry, audioStack, audioStack + sizeof(audioStack), 0, 0x100, "audio");
|
||||
AudioMgr_Init(&audioContext, audioStack + sizeof(audioStack), Z_PRIORITY_AUDIOMGR, 0xA, &schedContext, &gIrqMgr);
|
||||
AudioMgr_Init(&audioContext, audioStack + sizeof(audioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr);
|
||||
|
||||
StackCheck_Init(&padmgrStackEntry, padmgrStack, padmgrStack + sizeof(padmgrStack), 0, 0x100, "padmgr");
|
||||
Padmgr_Start(&siEventCallbackQueue, &gIrqMgr, 7, Z_PRIORITY_PADMGR, padmgrStack + sizeof(padmgrStack));
|
||||
|
||||
|
||||
AudioMgr_Unlock(&audioContext);
|
||||
|
||||
StackCheck_Init(&graphStackEntry, graphStack, graphStack + sizeof(graphStack), 0, 0x100, "graph");
|
||||
|
||||
+25
-4
@@ -1,9 +1,30 @@
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_nmi_buff/Nmi_Init.s")
|
||||
#define COLD_RESET 0
|
||||
#define NMI 1
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_nmi_buff/Nmi_SetPrenmiStart.s")
|
||||
NmiBuff* gNMIBuffer;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_nmi_buff/Nmi_GetPrenmiHasStarted.s")
|
||||
void Nmi_Init(void) {
|
||||
gNMIBuffer = (NmiBuff*)osAppNmiBuffer;
|
||||
gNMIBuffer->resetting = false;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_nmi_buff/func_8010C1B0.s")
|
||||
if (osResetType == COLD_RESET) {
|
||||
gNMIBuffer->resetCount = 0;
|
||||
gNMIBuffer->duration = 0;
|
||||
} else {
|
||||
gNMIBuffer->resetCount++;
|
||||
gNMIBuffer->duration += gNMIBuffer->resetTime;
|
||||
}
|
||||
|
||||
gNMIBuffer->resetTime = 0;
|
||||
}
|
||||
|
||||
void Nmi_SetPrenmiStart(void) {
|
||||
gNMIBuffer->resetting = true;
|
||||
gNMIBuffer->resetTime = osGetTime();
|
||||
}
|
||||
|
||||
u32 Nmi_GetPrenmiHasStarted(void) {
|
||||
return gNMIBuffer->resetting;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user