summaryrefslogtreecommitdiff
path: root/src/boot_O2_g3
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot_O2_g3')
-rw-r--r--src/boot_O2_g3/boot_0x80080060.c14
-rw-r--r--src/boot_O2_g3/boot_0x800805E0.c61
-rw-r--r--src/boot_O2_g3/boot_main.c14
-rw-r--r--src/boot_O2_g3/idle.c38
-rw-r--r--src/boot_O2_g3/irqmgr.c72
-rw-r--r--src/boot_O2_g3/viconfig.c61
-rw-r--r--src/boot_O2_g3/z_std_dma.c52
7 files changed, 156 insertions, 156 deletions
diff --git a/src/boot_O2_g3/boot_0x80080060.c b/src/boot_O2_g3/boot_0x80080060.c
deleted file mode 100644
index 6989e3258..000000000
--- a/src/boot_O2_g3/boot_0x80080060.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <ultra64.h>
-#include <global.h>
-
-void start(void) {
- StackCheck_Init(&bootStackEntry, (u32)bootStack, (u32)&bootStack[1024], 0, -1, "boot");
- osMemSize = osGetMemSize();
- func_800818F4();
- osInitialize();
- osUnmapTLBAll();
- D_80096B40 = osCartRomInit();
- StackCheck_Init(&idleStackEntry, (u32)idleStack, (u32)&idleStack[1024], 0, 256, "idle");
- osCreateThread(&idleOSThread, 1, (osCreateThread_func)Idle_ThreadEntry, 0, &idleStack[1024], 12);
- osStartThread(&idleOSThread);
-}
diff --git a/src/boot_O2_g3/boot_0x800805E0.c b/src/boot_O2_g3/boot_0x800805E0.c
deleted file mode 100644
index 06d9036f0..000000000
--- a/src/boot_O2_g3/boot_0x800805E0.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <ultra64.h>
-#include <global.h>
-
-#ifdef NON_MATCHING
-UNK_RET func_800805E0(UNK_TYPE a0) {
- if (a0 != 0) {
- switch (osTvType) {
- case 2:
- osViSetMode(&osViModeMpalLan1);
- break;
- case 0:
- osViSetMode(&osViModePalLan1);
- break;
- case 1:
- default:
- osViSetMode(&osViModeNtscLan1);
- break;
- }
-
- // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
- if (viEnabledSpecialFeatures != 0) {
- osViSetSpecialFeatures(viEnabledSpecialFeatures);
- }
-
- if (screenYScale != 1) {
- osViSetYScale(1);
- }
- } else {
- osViSetMode(&D_8009B240);
-
- if (D_80096B28 != 0) {
- func_80087E00(D_80096B28);
- }
-
- // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
- if (viEnabledSpecialFeatures != 0) {
- osViSetSpecialFeatures(viEnabledSpecialFeatures);
- }
-
- if (screenXScale != 1) {
- osViSetXScale(screenXScale);
- }
-
- if (screenYScale != 1) {
- osViSetYScale(screenYScale);
- }
- }
-
- D_80096B24 = a0;
-}
-#else
-GLOBAL_ASM("./asm/non_matchings/boot_0x800805E0/func_800805E0.asm")
-#endif
-
-UNK_RET func_80080748(void) {
- if (D_80096B24 != 0) {
- osViRepeatLine(1);
- } else {
- osViRepeatLine(0);
- }
-}
diff --git a/src/boot_O2_g3/boot_main.c b/src/boot_O2_g3/boot_main.c
new file mode 100644
index 000000000..9bcdcca0c
--- /dev/null
+++ b/src/boot_O2_g3/boot_main.c
@@ -0,0 +1,14 @@
+#include <ultra64.h>
+#include <global.h>
+
+void bootproc(void) {
+ StackCheck_Init(&sBootThreadInfo, (u32)sBootThreadStack, (u32)&sBootThreadStack[1024], 0, -1, "boot");
+ osMemSize = osGetMemSize();
+ func_800818F4();
+ osInitialize();
+ osUnmapTLBAll();
+ gCartHandle = osCartRomInit();
+ StackCheck_Init(&sIdleThreadInfo, (u32)sIdleThreadStack, (u32)&sIdleThreadStack[1024], 0, 256, "idle");
+ osCreateThread(&sIdleThread, 1, (osCreateThread_func)Idle_ThreadEntry, 0, &sIdleThreadStack[1024], 12);
+ osStartThread(&sIdleThread);
+}
diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c
index fac5a2fa3..6202df871 100644
--- a/src/boot_O2_g3/idle.c
+++ b/src/boot_O2_g3/idle.c
@@ -2,11 +2,11 @@
#include <global.h>
u8 D_80096B20 = 1;
-vu8 D_80096B24 = 1;
-u8 D_80096B28 = 0;
-u32 viEnabledSpecialFeatures = 0x42;
-f32 screenXScale = 1.0f;
-f32 screenYScale = 1.0f;
+vu8 gViConfigUseDefault = 1;
+u8 gViConfigAdditionalScanLines = 0;
+u32 gViConfigFeatures = 0x42;
+f32 gViConfigXScale = 1.0f;
+f32 gViConfigYScale = 1.0f;
void Idle_ClearMemory(void* begin, void* end){
if (begin < end) {
@@ -28,9 +28,9 @@ GLOBAL_ASM("./asm/non_matchings/idle/Idle_InitFramebuffer.asm")
void Idle_InitScreen(void) {
Idle_InitFramebuffer((u32*)&D_80000500, 0x25800, 0x00010001);
- func_800805E0(0);
+ ViConfig_UpdateVi(0);
osViSwapBuffer(&D_80000500);
- osViRepeatLine(0);
+ osViBlack(0);
}
void Idle_InitMemory(void) {
@@ -43,7 +43,7 @@ void Idle_InitMemory(void) {
}
#ifdef NON_MATCHING
-// regalloc around Dmamgr_SendRequest
+// regalloc around DmaMgr_SendRequestImpl
void Idle_InitCodeAndMemory(void) {
DmaRequest dmaReq;
OSMesgQueue queue;
@@ -52,15 +52,15 @@ void Idle_InitCodeAndMemory(void) {
osCreateMesgQueue(&queue, &mesg, 1);
- oldSize = dmamgrChunkSize;
- dmamgrChunkSize = 0;
+ oldSize = sDmaMgrDmaBuffSize;
+ sDmaMgrDmaBuffSize = 0;
- Dmamgr_SendRequest(&dmaReq, (u32)&code_text_start, (u32)&code_vrom_start, (u32)&code_vrom_end - (u32)&code_vrom_start, 0, &queue, 0);
+ DmaMgr_SendRequestImpl(&dmaReq, (u32)&code_text_start, (u32)&code_vrom_start, (u32)&code_vrom_end - (u32)&code_vrom_start, 0, &queue, 0);
Idle_InitScreen();
Idle_InitMemory();
osRecvMesg(&queue, 0, 1);
- dmamgrChunkSize = oldSize;
+ sDmaMgrDmaBuffSize = oldSize;
Idle_ClearMemory(&code_bss_start, &code_bss_end);
}
@@ -68,9 +68,9 @@ void Idle_InitCodeAndMemory(void) {
GLOBAL_ASM("./asm/non_matchings/idle/Idle_InitCodeAndMemory.asm")
#endif
-void Idle_MainThreadEntry(void* arg) {
+void Main_ThreadEntry(void* arg) {
StackCheck_Init(&irqmgrStackEntry, (u32)&irqmgrStack, (u32)&irqmgrStack[1280], 0, 256, "irqmgr");
- IrqMgr_Start(&irqmgrContext, &irqmgrStackEntry, 18, 1);
+ IrqMgr_Create(&irqmgrContext, &irqmgrStackEntry, 18, 1);
Dmamgr_Start();
Idle_InitCodeAndMemory();
main(arg);
@@ -80,9 +80,9 @@ void Idle_MainThreadEntry(void* arg) {
void func_8008038C(void) {
osCreateViManager(254);
- viEnabledSpecialFeatures = 66;
- screenXScale = 1.0;
- screenYScale = 1.0;
+ gViConfigFeatures = 66;
+ gViConfigXScale = 1.0;
+ gViConfigYScale = 1.0;
switch (osTvType) {
case 1:
@@ -96,7 +96,7 @@ void func_8008038C(void) {
case 0:
D_8009B290 = 44;
D_8009B240 = D_800980E0;
- screenYScale = 0.833f;
+ gViConfigYScale = 0.833f;
break;
}
@@ -107,7 +107,7 @@ void Idle_ThreadEntry(void* arg) {
func_8008038C();
osCreatePiManager(150, &D_8009B228, D_8009B160, 50);
StackCheck_Init(&mainStackEntry, (u32)&mainStack, (u32)&mainStack[2304], 0, 1024, "main");
- osCreateThread(&mainOSThread, 3, (osCreateThread_func)Idle_MainThreadEntry, arg, &mainStack[2304], 12);
+ osCreateThread(&mainOSThread, 3, (osCreateThread_func)Main_ThreadEntry, arg, &mainStack[2304], 12);
osStartThread(&mainOSThread);
osSetThreadPri(NULL, 0);
diff --git a/src/boot_O2_g3/irqmgr.c b/src/boot_O2_g3/irqmgr.c
index 2558aacfe..14c3e9bd6 100644
--- a/src/boot_O2_g3/irqmgr.c
+++ b/src/boot_O2_g3/irqmgr.c
@@ -6,12 +6,12 @@
#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4)
#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))
-vs32 gPrenmiStage = 0;
-volatile OSTime sLastPrenmiTime = 0;
-vu64 gLastFrameDuration = 0;
-s32 sFrameCount = 0;
+vs32 gIrqMgrResetStatus = 0;
+volatile OSTime sIrqMgrResetTime = 0;
+volatile OSTime sIrqMgrRetraceTime = 0;
+s32 sIrqMgrRetraceCount = 0;
-void IrqMgr_AddCallback(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3) {
+void IrqMgr_AddClient(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3) {
u32 saveMask;
saveMask = osSetIntMask(1);
@@ -23,14 +23,14 @@ void IrqMgr_AddCallback(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueu
osSetIntMask(saveMask);
if (irqmgr->prenmiStage > 0) {
- osSendMesg(param_2->queue, &irqmgr->prenmi1Msg, 0);
+ osSendMesg(param_2->queue, &irqmgr->prenmiMsg.type, 0);
}
if (irqmgr->prenmiStage > 1) {
- osSendMesg(param_2->queue, &irqmgr->prenmi2Msg, 0);
+ osSendMesg(param_2->queue, &irqmgr->nmiMsg.type, 0);
}
}
-void IrqMgr_RemoveCallback(IrqMgr* irqmgr, OSMesgQueueListNode* remove) {
+void IrqMgr_RemoveClient(IrqMgr* irqmgr, OSMesgQueueListNode* remove) {
OSMesgQueueListNode* iter;
OSMesgQueueListNode* last;
u32 saveMask;
@@ -56,7 +56,7 @@ void IrqMgr_RemoveCallback(IrqMgr* irqmgr, OSMesgQueueListNode* remove) {
osSetIntMask(saveMask);
}
-void IrqMgr_NotifyAllCallbacks(IrqMgr* irqmgr, OSMesg msg) {
+void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg) {
OSMesgQueueListNode* iter = irqmgr->callbacks;
while (iter != NULL) {
@@ -65,7 +65,7 @@ void IrqMgr_NotifyAllCallbacks(IrqMgr* irqmgr, OSMesg msg) {
}
}
-void IrqMgr_NotifyAllCallbacksWithCapacity(IrqMgr* irqmgr, OSMesg msg) {
+void IrqMgr_JamMesgForClient(IrqMgr* irqmgr, OSMesg msg) {
OSMesgQueueListNode* iter = irqmgr->callbacks;
while (iter != NULL) {
@@ -76,53 +76,53 @@ void IrqMgr_NotifyAllCallbacksWithCapacity(IrqMgr* irqmgr, OSMesg msg) {
}
}
-void IrqMgr_HandlePrenmi1(IrqMgr* irqmgr) {
- gPrenmiStage = 1;
+void IrqMgr_HandlePreNMI(IrqMgr* irqmgr) {
+ gIrqMgrResetStatus = 1;
irqmgr->prenmiStage = 1;
- sLastPrenmiTime = irqmgr->lastPrenmiTime = osGetTime();
+ sIrqMgrResetTime = irqmgr->lastPrenmiTime = osGetTime();
// Wait .45 seconds then generate a stage 2 prenmi interrupt
osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(450000), 0, &irqmgr->irqQueue, (OSMesg)0x29F);
- IrqMgr_NotifyAllCallbacksWithCapacity(irqmgr, &irqmgr->prenmi1Msg);
+ IrqMgr_JamMesgForClient(irqmgr, &irqmgr->prenmiMsg.type);
}
-void IrqMgr_CheckThreadStatusImpl(void) {
+void IrqMgr_CheckStack(void) {
StackCheck_Check(NULL);
}
-void IrqMgr_HandlePrenmi2(IrqMgr* irqmgr) {
- gPrenmiStage = 2;
+void IrqMgr_HandlePRENMI450(IrqMgr* irqmgr) {
+ gIrqMgrResetStatus = 2;
irqmgr->prenmiStage = 2;
// Wait .03 seconds then generate a stage 3 prenmi interrupt
osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(30000), 0, &irqmgr->irqQueue, (OSMesg)0x2A0);
- IrqMgr_NotifyAllCallbacks(irqmgr, &irqmgr->prenmi2Msg);
+ IrqMgr_SendMesgForClient(irqmgr, &irqmgr->nmiMsg.type);
}
-void IrqMgr_HandlePrenmi3(IrqMgr* irqmgr) {
+void IrqMgr_HandlePRENMI480(IrqMgr* irqmgr) {
// Wait .52 seconds. After this we will have waited an entire second
osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(520000), 0, &irqmgr->irqQueue, (OSMesg)0x2A1);
- func_8008D710();
+ osAfterPreNMI();
}
-void IrqMgr_CheckThreadStatus(IrqMgr* irqmgr) {
- IrqMgr_CheckThreadStatusImpl();
+void IrqMgr_HandlePRENMI500(IrqMgr* irqmgr) {
+ IrqMgr_CheckStack();
}
-void IrqMgr_HandleFrame(IrqMgr* irqmgr) {
- if (gLastFrameDuration == 0) {
+void IrqMgr_HandleRetrace(IrqMgr* irqmgr) {
+ if (sIrqMgrRetraceTime == 0) {
if (irqmgr->lastFrameTime == 0) {
irqmgr->lastFrameTime = osGetTime();
} else {
- gLastFrameDuration = osGetTime() - irqmgr->lastFrameTime;
+ sIrqMgrRetraceTime = osGetTime() - irqmgr->lastFrameTime;
}
}
- sFrameCount += 1;
- IrqMgr_NotifyAllCallbacks(irqmgr,irqmgr);
+ sIrqMgrRetraceCount += 1;
+ IrqMgr_SendMesgForClient(irqmgr,irqmgr);
}
void IrqMgr_ThreadEntry(IrqMgr* irqmgr) {
@@ -137,29 +137,29 @@ void IrqMgr_ThreadEntry(IrqMgr* irqmgr) {
osRecvMesg(&irqmgr->irqQueue, (OSMesg*)&interrupt, 1);
switch (interrupt) {
case 0x29A:
- IrqMgr_HandleFrame(irqmgr);
+ IrqMgr_HandleRetrace(irqmgr);
break;
case 0x29D:
- IrqMgr_HandlePrenmi1(irqmgr);
+ IrqMgr_HandlePreNMI(irqmgr);
break;
case 0x29F:
- IrqMgr_HandlePrenmi2(irqmgr);
+ IrqMgr_HandlePRENMI450(irqmgr);
break;
case 0x2A0:
- IrqMgr_HandlePrenmi3(irqmgr);
+ IrqMgr_HandlePRENMI480(irqmgr);
break;
case 0x2A1:
- IrqMgr_CheckThreadStatus(irqmgr);
+ IrqMgr_HandlePRENMI500(irqmgr);
break;
}
}
}
-void IrqMgr_Start(IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount) {
+void IrqMgr_Create(IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount) {
irqmgr->callbacks = NULL;
- irqmgr->verticalRetraceMesg = 1;
- irqmgr->prenmi1Msg = 4;
- irqmgr->prenmi2Msg = 3;
+ irqmgr->verticalRetraceMesg.type = 1;
+ irqmgr->prenmiMsg.type = 4;
+ irqmgr->nmiMsg.type = 3;
irqmgr->prenmiStage = 0;
irqmgr->lastPrenmiTime = 0;
diff --git a/src/boot_O2_g3/viconfig.c b/src/boot_O2_g3/viconfig.c
new file mode 100644
index 000000000..b28362947
--- /dev/null
+++ b/src/boot_O2_g3/viconfig.c
@@ -0,0 +1,61 @@
+#include <ultra64.h>
+#include <global.h>
+
+#ifdef NON_MATCHING
+void ViConfig_UpdateVi(u32 arg0) {
+ if (arg0 != 0) {
+ switch (osTvType) {
+ case 2:
+ osViSetMode(&osViModeMpalLan1);
+ break;
+ case 0:
+ osViSetMode(&osViModePalLan1);
+ break;
+ case 1:
+ default:
+ osViSetMode(&osViModeNtscLan1);
+ break;
+ }
+
+ // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
+ if (gViConfigFeatures != 0) {
+ osViSetSpecialFeatures(gViConfigFeatures);
+ }
+
+ if (gViConfigYScale != 1) {
+ osViSetYScale(1);
+ }
+ } else {
+ osViSetMode(&D_8009B240);
+
+ if (gViConfigAdditionalScanLines != 0) {
+ func_80087E00(gViConfigAdditionalScanLines);
+ }
+
+ // TODO v0 is used here instead of a0. Is this a 7.1 optimization?
+ if (gViConfigFeatures != 0) {
+ osViSetSpecialFeatures(gViConfigFeatures);
+ }
+
+ if (gViConfigXScale != 1) {
+ osViSetXScale(gViConfigXScale);
+ }
+
+ if (gViConfigYScale != 1) {
+ osViSetYScale(gViConfigYScale);
+ }
+ }
+
+ gViConfigUseDefault = arg0;
+}
+#else
+GLOBAL_ASM("./asm/non_matchings/viconfig/ViConfig_UpdateVi.asm")
+#endif
+
+void ViConfig_UpdateBlack(void) {
+ if (gViConfigUseDefault != 0) {
+ osViBlack(1);
+ } else {
+ osViBlack(0);
+ }
+}
diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c
index a606c7586..56dcefc40 100644
--- a/src/boot_O2_g3/z_std_dma.c
+++ b/src/boot_O2_g3/z_std_dma.c
@@ -1,14 +1,14 @@
#include <ultra64.h>
#include <global.h>
-UNK_TYPE4 dmamgrChunkSize = 0x2000;
+UNK_TYPE4 sDmaMgrDmaBuffSize = 0x2000;
-s32 Dmamgr_DoDmaTransfer(u32 a0, void* a1, u32 a2) {
+s32 DmaMgr_DMARomToRam(u32 a0, void* a1, u32 a2) {
OSIoMesg sp60;
OSMesgQueue sp48;
OSMesg sp44;
s32 ret;
- u32 s0 = dmamgrChunkSize;
+ u32 s0 = sDmaMgrDmaBuffSize;
osInvalDCache(a1, a2);
osCreateMesgQueue(&sp48, &sp44, 1);
@@ -20,7 +20,7 @@ s32 Dmamgr_DoDmaTransfer(u32 a0, void* a1, u32 a2) {
sp60.devAddr = (u32)a0;
sp60.dramAddr = a1;
sp60.size = s0;
- ret = osEPiStartDma(D_80096B40, &sp60, 0);
+ ret = osEPiStartDma(gCartHandle, &sp60, 0);
if (ret) goto END;
osRecvMesg(&sp48, NULL, 1);
@@ -34,7 +34,7 @@ s32 Dmamgr_DoDmaTransfer(u32 a0, void* a1, u32 a2) {
sp60.devAddr = (u32)a0;
sp60.dramAddr = a1;
sp60.size = (u32)a2;
- ret = osEPiStartDma(D_80096B40, &sp60, 0);
+ ret = osEPiStartDma(gCartHandle, &sp60, 0);
if (ret) goto END;
osRecvMesg(&sp48, NULL, 1);
@@ -45,12 +45,12 @@ END:
return ret;
}
-void Dmamgr_osEPiStartDmaWrapper(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
+void DmaMgr_DmaCallback0(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
osEPiStartDma(pihandle, mb, direction);
}
-DmadataEntry* Dmamgr_FindDmaEntry(u32 a0) {
- DmadataEntry* curr;
+DmaEntry* Dmamgr_FindDmaEntry(u32 a0) {
+ DmaEntry* curr;
for (curr = dmadata; curr->vromEnd != 0; curr++) {
if (a0 < curr->vromStart) continue;
@@ -63,7 +63,7 @@ DmadataEntry* Dmamgr_FindDmaEntry(u32 a0) {
}
u32 Dmamgr_TranslateVromToRom(u32 a0) {
- DmadataEntry* v0 = Dmamgr_FindDmaEntry(a0);
+ DmaEntry* v0 = Dmamgr_FindDmaEntry(a0);
if (v0 != NULL) {
if (v0->romEnd == 0) {
@@ -81,7 +81,7 @@ u32 Dmamgr_TranslateVromToRom(u32 a0) {
}
s32 Dmamgr_FindDmaIndex(u32 a0) {
- DmadataEntry* v0 = Dmamgr_FindDmaEntry(a0);
+ DmaEntry* v0 = Dmamgr_FindDmaEntry(a0);
if (v0 != NULL) {
return v0 - dmadata;
@@ -96,7 +96,7 @@ char* func_800809F4(u32 a0) {
}
#ifdef NON_MATCHING
-void Dmamgr_HandleRequest(DmaRequest* a0) {
+void DmaMgr_ProcessMsg(DmaRequest* a0) {
u32 sp34;
u32 sp30;
UNK_TYPE sp2C;
@@ -107,7 +107,7 @@ void Dmamgr_HandleRequest(DmaRequest* a0) {
UNK_TYPE sp18;
sp34 = a0->vromStart;
- sp30 = a0->vramStart;
+ sp30 = a0->dramAddr;
sp2C = a0->size;
sp1C = Dmamgr_FindDmaIndex(sp34);
@@ -117,7 +117,7 @@ void Dmamgr_HandleRequest(DmaRequest* a0) {
if (dmadata[sp1C].vromEnd < (sp2C + sp34)) {
Fault_AddHungupAndCrash(dmamgrString800981C4, 499);
}
- Dmamgr_DoDmaTransfer((dmadata[sp1C].romStart + sp34) - dmadata[sp1C].vromStart, (u8*)sp30, sp2C);
+ DmaMgr_DMARomToRam((dmadata[sp1C].romStart + sp34) - dmadata[sp1C].vromStart, (u8*)sp30, sp2C);
return;
}
@@ -141,7 +141,7 @@ void Dmamgr_HandleRequest(DmaRequest* a0) {
}
}
#else
-GLOBAL_ASM("./asm/non_matchings/z_std_dma/Dmamgr_HandleRequest.asm")
+GLOBAL_ASM("./asm/non_matchings/z_std_dma/DmaMgr_ProcessMsg.asm")
#endif
void Dmamgr_ThreadEntry(void* a0) {
@@ -153,30 +153,30 @@ void Dmamgr_ThreadEntry(void* a0) {
osRecvMesg(&dmamgrMsq, &sp34, 1);
if (sp34 == NULL) return;
s0 = (DmaRequest*)sp34;
- Dmamgr_HandleRequest(s0);
- if (s0->callback == NULL) continue;
- osSendMesg(s0->callback, s0->callbackMesg, 0);
+ DmaMgr_ProcessMsg(s0);
+ if (s0->notifyQueue == NULL) continue;
+ osSendMesg(s0->notifyQueue, s0->notifyMsg, 0);
}
}
-s32 Dmamgr_SendRequest(DmaRequest* request, u32 vramStart, u32 vromStart, u32 size, UNK_TYPE4 unused, OSMesgQueue* callback, void* callbackMesg) {
- if (gPrenmiStage >= 2) {
+s32 DmaMgr_SendRequestImpl(DmaRequest* request, u32 vramStart, u32 vromStart, u32 size, UNK_TYPE4 unused, OSMesgQueue* callback, void* callbackMesg) {
+ if (gIrqMgrResetStatus >= 2) {
return -2;
}
request->vromStart = vromStart;
- request->vramStart = vramStart;
+ request->dramAddr = vramStart;
request->size = size;
request->unk14 = 0;
- request->callback = callback;
- request->callbackMesg = callbackMesg;
+ request->notifyQueue = callback;
+ request->notifyMsg = callbackMesg;
osSendMesg(&dmamgrMsq, request, 1);
return 0;
}
-s32 Dmamgr_SendRequestAndWait(u32 a0, u32 a1, u32 a2) {
+s32 DmaMgr_SendRequest0(u32 a0, u32 a1, u32 a2) {
DmaRequest sp48;
OSMesgQueue sp30;
OSMesg sp2C;
@@ -184,7 +184,7 @@ s32 Dmamgr_SendRequestAndWait(u32 a0, u32 a1, u32 a2) {
osCreateMesgQueue(&sp30, &sp2C, 1);
- ret = Dmamgr_SendRequest(&sp48, a0, a1, a2, 0, &sp30, 0);
+ ret = DmaMgr_SendRequestImpl(&sp48, a0, a1, a2, 0, &sp30, 0);
if (ret == -1) {
return ret;
@@ -198,9 +198,9 @@ s32 Dmamgr_SendRequestAndWait(u32 a0, u32 a1, u32 a2) {
#ifdef NON_MATCHING
// TODO missing a useless move initializing v0, and some reorderings
void Dmamgr_Start() {
- DmadataEntry* v0;
+ DmaEntry* v0;
u32 v1;
- Dmamgr_DoDmaTransfer((u32)&dmadata_vrom_start, dmadata, (u32)&dmadata_vrom_end - (u32)&dmadata_vrom_start);
+ DmaMgr_DMARomToRam((u32)&dmadata_vrom_start, dmadata, (u32)&dmadata_vrom_end - (u32)&dmadata_vrom_start);
for (v0 = dmadata, v1 = 0; v0->vromEnd != 0; v0++, v1++);