mirror of
https://github.com/HarbourMasters/Starship
synced 2026-07-06 06:04:25 -04:00
First compilation, we just need more stupid assets
This commit is contained in:
+109
-108
@@ -108,46 +108,46 @@ void Audio_ThreadEntry(void* arg0) {
|
||||
task = AudioThread_CreateTask();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &gAudioTaskMsgQueue;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
task->msg = OS_MESG_32(TASK_MESG_1);
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gTaskMsgQueue, OS_MESG_PTR(task), OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
while (1) {
|
||||
task = AudioThread_CreateTask();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &gAudioTaskMsgQueue;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
task->msg = OS_MESG_32(TASK_MESG_1);
|
||||
osWritebackDCacheAll();
|
||||
}
|
||||
osRecvMesg(&gAudioTaskMsgQueue, NULL, OS_MESG_NOBLOCK);
|
||||
if (task != NULL) {
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gTaskMsgQueue, OS_MESG_PTR(task), OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
osRecvMesg(&gAudioVImsgQueue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void Graphics_SetTask(void) {
|
||||
gGfxTask->msgQueue = &gGfxTaskMsgQueue;
|
||||
gGfxTask->msg = (OSMesg) TASK_MESG_2;
|
||||
gGfxTask->task.t.type = M_GFXTASK;
|
||||
gGfxTask->task.t.flags = 0;
|
||||
gGfxTask->task.t.ucode_boot = rspbootTextStart;
|
||||
gGfxTask->task.t.ucode_boot_size = (uintptr_t) rspbootTextEnd - (uintptr_t) rspbootTextStart;
|
||||
gGfxTask->task.t.ucode = gspF3DEX_fifoTextStart;
|
||||
gGfxTask->task.t.ucode_size = SP_UCODE_SIZE;
|
||||
gGfxTask->task.t.ucode_data = (u64*) &gspF3DEX_fifoDataStart;
|
||||
gGfxTask->task.t.ucode_data_size = SP_UCODE_DATA_SIZE;
|
||||
gGfxTask->task.t.dram_stack = gDramStack;
|
||||
gGfxTask->task.t.dram_stack_size = SP_DRAM_STACK_SIZE8;
|
||||
gGfxTask->task.t.output_buff = (u64*) gTaskOutputBuffer;
|
||||
gGfxTask->task.t.output_buff_size = (u64*) gAudioHeap;
|
||||
gGfxTask->task.t.data_ptr = (u64*) gGfxPool->masterDL;
|
||||
gGfxTask->task.t.data_size = (gMasterDisp - gGfxPool->masterDL) * sizeof(Gfx);
|
||||
gGfxTask->task.t.yield_data_ptr = (u64*) &gOSYieldData;
|
||||
gGfxTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&gTaskMsgQueue, gGfxTask, OS_MESG_PRI_NORMAL);
|
||||
// gGfxTask->msgQueue = &gGfxTaskMsgQueue;
|
||||
// gGfxTask->msg = (OSMesg) TASK_MESG_2;
|
||||
// gGfxTask->task.t.type = M_GFXTASK;
|
||||
// gGfxTask->task.t.flags = 0;
|
||||
// gGfxTask->task.t.ucode_boot = rspbootTextStart;
|
||||
// gGfxTask->task.t.ucode_boot_size = (uintptr_t) rspbootTextEnd - (uintptr_t) rspbootTextStart;
|
||||
// gGfxTask->task.t.ucode = gspF3DEX_fifoTextStart;
|
||||
// gGfxTask->task.t.ucode_size = SP_UCODE_SIZE;
|
||||
// gGfxTask->task.t.ucode_data = (u64*) &gspF3DEX_fifoDataStart;
|
||||
// gGfxTask->task.t.ucode_data_size = SP_UCODE_DATA_SIZE;
|
||||
// gGfxTask->task.t.dram_stack = gDramStack;
|
||||
// gGfxTask->task.t.dram_stack_size = SP_DRAM_STACK_SIZE8;
|
||||
// gGfxTask->task.t.output_buff = (u64*) gTaskOutputBuffer;
|
||||
// gGfxTask->task.t.output_buff_size = (u64*) gAudioHeap;
|
||||
// gGfxTask->task.t.data_ptr = (u64*) gGfxPool->masterDL;
|
||||
// gGfxTask->task.t.data_size = (gMasterDisp - gGfxPool->masterDL) * sizeof(Gfx);
|
||||
// gGfxTask->task.t.yield_data_ptr = (u64*) &gOSYieldData;
|
||||
// gGfxTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;
|
||||
// osWritebackDCacheAll();
|
||||
// osSendMesg(&gTaskMsgQueue, gGfxTask, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
|
||||
void Graphics_InitializeTask(u32 frameCount) {
|
||||
@@ -176,23 +176,23 @@ void Main_SetVIMode(void) {
|
||||
(gControllerHold[3].button & R_TRIG) && (gControllerHold[3].button & Z_TRIG)) {
|
||||
sGammaMode = 1 - sGammaMode;
|
||||
}
|
||||
switch (osTvType) {
|
||||
case OS_TV_PAL:
|
||||
osViSetMode(&osViModePalLan1);
|
||||
break;
|
||||
case OS_TV_MPAL:
|
||||
osViSetMode(&osViModeMpalLan1);
|
||||
break;
|
||||
default:
|
||||
case OS_TV_NTSC:
|
||||
osViSetMode(&osViModeNtscLan1);
|
||||
break;
|
||||
}
|
||||
if (sGammaMode != 0) {
|
||||
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_ON | OS_VI_GAMMA_DITHER_ON);
|
||||
} else {
|
||||
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
||||
}
|
||||
// switch (osTvType) {
|
||||
// case OS_TV_PAL:
|
||||
// osViSetMode(&osViModePalLan1);
|
||||
// break;
|
||||
// case OS_TV_MPAL:
|
||||
// osViSetMode(&osViModeMpalLan1);
|
||||
// break;
|
||||
// default:
|
||||
// case OS_TV_NTSC:
|
||||
// osViSetMode(&osViModeNtscLan1);
|
||||
// break;
|
||||
// }
|
||||
// if (sGammaMode != 0) {
|
||||
// osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_ON | OS_VI_GAMMA_DITHER_ON);
|
||||
// } else {
|
||||
// osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
||||
// }
|
||||
}
|
||||
|
||||
void SerialInterface_ThreadEntry(void* arg0) {
|
||||
@@ -202,7 +202,7 @@ void SerialInterface_ThreadEntry(void* arg0) {
|
||||
while (1) {
|
||||
osRecvMesg(&gSerialThreadMsgQueue, &sp34, OS_MESG_BLOCK);
|
||||
|
||||
switch ((s32) sp34) {
|
||||
switch (sp34.data32) {
|
||||
case SI_READ_CONTROLLER:
|
||||
Controller_ReadData();
|
||||
break;
|
||||
@@ -220,11 +220,11 @@ void SerialInterface_ThreadEntry(void* arg0) {
|
||||
}
|
||||
|
||||
void Timer_ThreadEntry(void* arg0) {
|
||||
void* sp24;
|
||||
OSMesg sp24;
|
||||
|
||||
while (1) {
|
||||
osRecvMesg(&gTimerTaskMsgQueue, &sp24, OS_MESG_BLOCK);
|
||||
Timer_CompleteTask(sp24);
|
||||
Timer_CompleteTask(sp24.ptr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
u8 var_v2;
|
||||
|
||||
Game_Initialize();
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSerialThreadMsgQueue, OS_MESG_32(SI_READ_CONTROLLER), OS_MESG_PRI_NORMAL);
|
||||
Graphics_InitializeTask(gSysFrameCount);
|
||||
{
|
||||
gSPSegment(gUnkDisp1++, 0, 0);
|
||||
@@ -251,9 +251,9 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
gSysFrameCount++;
|
||||
Graphics_InitializeTask(gSysFrameCount);
|
||||
osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_RUMBLE, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSerialThreadMsgQueue, OS_MESG_32(SI_RUMBLE), OS_MESG_PRI_NORMAL);
|
||||
Controller_UpdateInput();
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gSerialThreadMsgQueue, OS_MESG_32(SI_READ_CONTROLLER), OS_MESG_PRI_NORMAL);
|
||||
if (gControllerPress[3].button & U_JPAD) {
|
||||
Main_SetVIMode();
|
||||
}
|
||||
@@ -275,7 +275,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
if (gFillScreen == 0) {
|
||||
osViSwapBuffer(&gFrameBuffers[(gSysFrameCount - 1) % 3]);
|
||||
}
|
||||
func_80007FE4(&gFrameBuffers[(gSysFrameCount - 1) % 3], SCREEN_WIDTH, 16);
|
||||
// func_80007FE4(&gFrameBuffers[(gSysFrameCount - 1) % 3], SCREEN_WIDTH, 16);
|
||||
|
||||
var_v1 = MIN(D_80137E78, 4);
|
||||
var_v2 = MAX(var_v1, gGfxVImsgQueue.validCount + 1);
|
||||
@@ -295,12 +295,12 @@ void Main_InitMesgQueues(void) {
|
||||
osCreateMesgQueue(&gGfxVImsgQueue, sGfxVImsgBuff, ARRAY_COUNT(sGfxVImsgBuff));
|
||||
osCreateMesgQueue(&gGfxTaskMsgQueue, sGfxTaskMsgBuff, ARRAY_COUNT(sGfxTaskMsgBuff));
|
||||
osCreateMesgQueue(&gSerialEventQueue, sSerialEventBuff, ARRAY_COUNT(sSerialEventBuff));
|
||||
osSetEventMesg(OS_EVENT_SI, &gSerialEventQueue, NULL);
|
||||
osSetEventMesg(OS_EVENT_SI, &gSerialEventQueue, OS_MESG_PTR(NULL));
|
||||
osCreateMesgQueue(&gMainThreadMsgQueue, sMainThreadMsgBuff, ARRAY_COUNT(sMainThreadMsgBuff));
|
||||
osViSetEvent(&gMainThreadMsgQueue, (OSMesg) EVENT_MESG_VI, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_SP);
|
||||
osSetEventMesg(OS_EVENT_DP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_DP);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_PRENMI);
|
||||
osViSetEvent(&gMainThreadMsgQueue, OS_MESG_32(EVENT_MESG_VI), 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &gMainThreadMsgQueue, OS_MESG_32(EVENT_MESG_SP));
|
||||
osSetEventMesg(OS_EVENT_DP, &gMainThreadMsgQueue, OS_MESG_32(EVENT_MESG_DP));
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMsgQueue, OS_MESG_32(EVENT_MESG_PRENMI));
|
||||
osCreateMesgQueue(&gTimerTaskMsgQueue, sTimerTaskMsgBuff, ARRAY_COUNT(sTimerTaskMsgBuff));
|
||||
osCreateMesgQueue(&gTimerWaitMsgQueue, sTimerWaitMsgBuff, ARRAY_COUNT(sTimerWaitMsgBuff));
|
||||
osCreateMesgQueue(&gSerialThreadMsgQueue, sSerialThreadMsgBuff, ARRAY_COUNT(sSerialThreadMsgBuff));
|
||||
@@ -323,22 +323,22 @@ void Main_HandleRDP(void) {
|
||||
}
|
||||
|
||||
void Main_HandleRSP(void) {
|
||||
SPTask* task = gCurrentTask;
|
||||
|
||||
gCurrentTask = NULL;
|
||||
if (task->state == SPTASK_STATE_INTERRUPTED) {
|
||||
if (osSpTaskYielded(&task->task) == 0) {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
}
|
||||
} else {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
if (task->task.t.type == M_AUDTASK) {
|
||||
if (task->msgQueue != NULL) {
|
||||
osSendMesg(task->msgQueue, task->msg, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
sAudioTasks[0] = NULL;
|
||||
}
|
||||
}
|
||||
// SPTask* task = gCurrentTask;
|
||||
//
|
||||
// gCurrentTask = NULL;
|
||||
// if (task->state == SPTASK_STATE_INTERRUPTED) {
|
||||
// if (osSpTaskYielded(&task->task) == 0) {
|
||||
// task->state = SPTASK_STATE_FINISHED;
|
||||
// }
|
||||
// } else {
|
||||
// task->state = SPTASK_STATE_FINISHED;
|
||||
// if (task->task.t.type == M_AUDTASK) {
|
||||
// if (task->msgQueue != NULL) {
|
||||
// osSendMesg(task->msgQueue, task->msg, OS_MESG_PRI_NORMAL);
|
||||
// }
|
||||
// sAudioTasks[0] = NULL;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void Main_GetNewTasks(void) {
|
||||
@@ -362,7 +362,7 @@ void Main_GetNewTasks(void) {
|
||||
var_s0_2 = sNewAudioTasks;
|
||||
var_s1_2 = sNewGfxTasks;
|
||||
while (osRecvMesg(&gTaskMsgQueue, &sp40, OS_MESG_NOBLOCK) != MSG_QUEUE_EMPTY) {
|
||||
sp3C = (SPTask*) sp40;
|
||||
sp3C = (SPTask*) sp40.ptr;
|
||||
sp3C->state = SPTASK_STATE_NOT_STARTED;
|
||||
|
||||
switch (sp3C->task.t.type) {
|
||||
@@ -403,50 +403,50 @@ void Main_StartNextTask(void) {
|
||||
if (gCurrentTask != NULL) {
|
||||
if (gCurrentTask->task.t.type == M_GFXTASK) {
|
||||
gCurrentTask->state = SPTASK_STATE_INTERRUPTED;
|
||||
osSpTaskYield();
|
||||
// osSpTaskYield();
|
||||
}
|
||||
} else {
|
||||
gCurrentTask = sAudioTasks[0];
|
||||
osSpTaskLoad(&gCurrentTask->task);
|
||||
osSpTaskStartGo(&gCurrentTask->task);
|
||||
// osSpTaskLoad(&gCurrentTask->task);
|
||||
// osSpTaskStartGo(&gCurrentTask->task);
|
||||
gCurrentTask->state = SPTASK_STATE_RUNNING;
|
||||
}
|
||||
} else if ((gCurrentTask == NULL) && (sGfxTasks[0] != NULL) && (sGfxTasks[0]->state != SPTASK_STATE_FINISHED)) {
|
||||
gCurrentTask = sGfxTasks[0];
|
||||
osDpSetStatus(DPC_CLR_TMEM_CTR | DPC_CLR_PIPE_CTR | DPC_CLR_CMD_CTR | DPC_CLR_CLOCK_CTR);
|
||||
osSpTaskLoad(&gCurrentTask->task);
|
||||
osSpTaskStartGo(&gCurrentTask->task);
|
||||
// osDpSetStatus(DPC_CLR_TMEM_CTR | DPC_CLR_PIPE_CTR | DPC_CLR_CMD_CTR | DPC_CLR_CLOCK_CTR);
|
||||
// osSpTaskLoad(&gCurrentTask->task);
|
||||
// osSpTaskStartGo(&gCurrentTask->task);
|
||||
gCurrentTask->state = SPTASK_STATE_RUNNING;
|
||||
}
|
||||
}
|
||||
|
||||
void Main_ThreadEntry(void* arg0) {
|
||||
OSMesg ogMsg;
|
||||
u8 mesg;
|
||||
u32 mesg;
|
||||
|
||||
osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
|
||||
gAudioThreadStack + sizeof(gAudioThreadStack), 80);
|
||||
osStartThread(&gAudioThread);
|
||||
osCreateThread(&gGraphicsThread, THREAD_ID_GRAPHICS, Graphics_ThreadEntry, arg0,
|
||||
gGraphicsThreadStack + sizeof(gGraphicsThreadStack), 40);
|
||||
osStartThread(&gGraphicsThread);
|
||||
osCreateThread(&gTimerThread, THREAD_ID_TIMER, Timer_ThreadEntry, arg0,
|
||||
gTimerThreadStack + sizeof(gTimerThreadStack), 60);
|
||||
osStartThread(&gTimerThread);
|
||||
osCreateThread(&gSerialThread, THREAD_ID_SERIAL, SerialInterface_ThreadEntry, arg0,
|
||||
gSerialThreadStack + sizeof(gSerialThreadStack), 20);
|
||||
osStartThread(&gSerialThread);
|
||||
// osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
|
||||
// gAudioThreadStack + sizeof(gAudioThreadStack), 80);
|
||||
// osStartThread(&gAudioThread);
|
||||
// osCreateThread(&gGraphicsThread, THREAD_ID_GRAPHICS, Graphics_ThreadEntry, arg0,
|
||||
// gGraphicsThreadStack + sizeof(gGraphicsThreadStack), 40);
|
||||
// osStartThread(&gGraphicsThread);
|
||||
// osCreateThread(&gTimerThread, THREAD_ID_TIMER, Timer_ThreadEntry, arg0,
|
||||
// gTimerThreadStack + sizeof(gTimerThreadStack), 60);
|
||||
// osStartThread(&gTimerThread);
|
||||
// osCreateThread(&gSerialThread, THREAD_ID_SERIAL, SerialInterface_ThreadEntry, arg0,
|
||||
// gSerialThreadStack + sizeof(gSerialThreadStack), 20);
|
||||
// osStartThread(&gSerialThread);
|
||||
|
||||
Main_InitMesgQueues();
|
||||
|
||||
while (true) {
|
||||
osRecvMesg(&gMainThreadMsgQueue, &ogMsg, OS_MESG_BLOCK);
|
||||
mesg = (u32) ogMsg;
|
||||
mesg = ogMsg.data32;
|
||||
|
||||
switch (mesg) {
|
||||
case EVENT_MESG_VI:
|
||||
osSendMesg(&gAudioVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gGfxVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gAudioVImsgQueue, OS_MESG_32(EVENT_MESG_VI), OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&gGfxVImsgQueue, OS_MESG_32(EVENT_MESG_VI), OS_MESG_PRI_NORMAL);
|
||||
Main_GetNewTasks();
|
||||
break;
|
||||
case EVENT_MESG_SP:
|
||||
@@ -466,24 +466,25 @@ void Main_ThreadEntry(void* arg0) {
|
||||
}
|
||||
|
||||
void Idle_ThreadEntry(void* arg0) {
|
||||
osCreateViManager(OS_PRIORITY_VIMGR);
|
||||
Main_SetVIMode();
|
||||
Lib_FillScreen(1);
|
||||
osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
|
||||
osCreateThread(&gMainThread, THREAD_ID_MAIN, &Main_ThreadEntry, arg0, sMainThreadStack + sizeof(sMainThreadStack),
|
||||
100);
|
||||
osStartThread(&gMainThread);
|
||||
Fault_Init();
|
||||
osSetThreadPri(NULL, OS_PRIORITY_IDLE);
|
||||
loop_1:
|
||||
goto loop_1;
|
||||
// TODO: Implement idle thread
|
||||
// osCreateViManager(OS_PRIORITY_VIMGR);
|
||||
// Main_SetVIMode();
|
||||
// Lib_FillScreen(1);
|
||||
// osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
|
||||
// osCreateThread(&gMainThread, THREAD_ID_MAIN, &Main_ThreadEntry, arg0, sMainThreadStack + sizeof(sMainThreadStack),
|
||||
// 100);
|
||||
// osStartThread(&gMainThread);
|
||||
// Fault_Init();
|
||||
// osSetThreadPri(NULL, OS_PRIORITY_IDLE);
|
||||
// loop_1:
|
||||
// goto loop_1;
|
||||
}
|
||||
|
||||
void bootproc(void) {
|
||||
RdRam_CheckIPL3();
|
||||
osInitialize();
|
||||
// RdRam_CheckIPL3();
|
||||
// osInitialize();
|
||||
Main_Initialize();
|
||||
osCreateThread(&sIdleThread, THREAD_ID_IDLE, &Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
|
||||
255);
|
||||
osStartThread(&sIdleThread);
|
||||
// osCreateThread(&sIdleThread, THREAD_ID_IDLE, &Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
|
||||
// 255);
|
||||
// osStartThread(&sIdleThread);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user