mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-05 11:17:37 -04:00
Rename many functions, structs, and variables to match the oot decomp. Some things have not been renamed as their respective files have not been decompiled yet.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
+19
-19
@@ -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);
|
||||
|
||||
|
||||
+36
-36
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
+26
-26
@@ -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++);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user