mirror of
https://github.com/zeldaret/mm.git
synced 2026-08-04 01:02:54 -04:00
[n64-jp-1.1] CIC6105.c matched (#1843)
* match CIC6105.c * Renames and fixes * Fix bss * format * Review * Version check inequalities
This commit is contained in:
+85
-1
@@ -2,23 +2,56 @@
|
||||
|
||||
#include "build.h"
|
||||
#include "fault.h"
|
||||
#include "macros.h"
|
||||
#include "regs.h"
|
||||
#include "scheduler.h"
|
||||
|
||||
#pragma increment_block_number "n64-us:200"
|
||||
#pragma increment_block_number "n64-us:188"
|
||||
|
||||
s32 gCICAddr1Val;
|
||||
s32 gCICAddr2Val;
|
||||
FaultClient sRomInfoFaultClient;
|
||||
#if MM_VERSION < N64_US
|
||||
s32 gCICValue1;
|
||||
s32 gCICValue2;
|
||||
|
||||
s32 CIC6105_ILoveYou(void);
|
||||
#endif
|
||||
|
||||
void CIC6105_Noop1(void) {
|
||||
#if MM_VERSION < N64_US
|
||||
R_AUDIOMGR_DEBUG_LEVEL = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CIC6105_Noop2(void) {
|
||||
#if MM_VERSION < N64_US
|
||||
R_AUDIOMGR_DEBUG_LEVEL = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CIC6105_PrintRomInfo(void) {
|
||||
#if MM_VERSION >= N64_US
|
||||
FaultDrawer_DrawText(80, 200, "SP_STATUS %08x", IO_READ(SP_STATUS_REG));
|
||||
FaultDrawer_DrawText(40, 184, "ROM_F [Creator:%s]", gBuildCreator);
|
||||
FaultDrawer_DrawText(56, 192, "[Date:%s]", gBuildDate);
|
||||
#else
|
||||
u32 status = IO_READ(SP_STATUS_REG);
|
||||
|
||||
FaultDrawer_SetCursor(48, 200);
|
||||
if (status & SP_STATUS_SIG7) {
|
||||
FaultDrawer_Printf("OCARINA %08x %08x", gCICValue1, gCICValue2);
|
||||
} else {
|
||||
FaultDrawer_Printf("LEGEND %08x %08x", gCICValue1, gCICValue2);
|
||||
}
|
||||
FaultDrawer_SetCursor(40, 184);
|
||||
FaultDrawer_Printf("ROM_F");
|
||||
FaultDrawer_Printf(" [Creator:%s]", gBuildCreator);
|
||||
FaultDrawer_SetCursor(56, 192);
|
||||
FaultDrawer_Printf("[Date:%s]", gBuildDate);
|
||||
FaultDrawer_SetCursor(96, 32);
|
||||
FaultDrawer_Printf("I LOVE YOU %08x", CIC6105_ILoveYou());
|
||||
#endif
|
||||
}
|
||||
|
||||
void CIC6105_AddRomInfoFaultPage(void) {
|
||||
@@ -29,6 +62,57 @@ void CIC6105_Destroy(void) {
|
||||
Fault_RemoveClient(&sRomInfoFaultClient);
|
||||
}
|
||||
|
||||
#if MM_VERSION < N64_US
|
||||
void CIC6105_ScheduleCICTask(void) {
|
||||
// TODO: do something with the hardcoded sizes
|
||||
static OSTask D_80097AA0_unknown = {
|
||||
M_CICTASK, // type
|
||||
0, // flags
|
||||
rspbootTextStart, // ucode_boot
|
||||
0x000003E8, // ucode_boot_size
|
||||
cic6105TextStart, // ucode
|
||||
0x00000020, // ucode_size
|
||||
(u64*)gBuildCreator, // ucode_data
|
||||
0x00000008, // ucode_data_size
|
||||
NULL, // dram_stack
|
||||
0x00000000, // dram_stack_size
|
||||
NULL, // output_buff
|
||||
NULL, // output_buff_size
|
||||
NULL, // data_ptr
|
||||
0x00000000, // data_size
|
||||
NULL, // yield_data_ptr
|
||||
0x00000000, // yield_data_size
|
||||
};
|
||||
|
||||
OSScTask task;
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg[1];
|
||||
|
||||
osCreateMesgQueue(&queue, msg, ARRAY_COUNT(msg));
|
||||
|
||||
task.next = NULL;
|
||||
task.flags = OS_SC_NEEDS_RSP;
|
||||
task.msgQ = &queue;
|
||||
task.msg = (OSMesg)0;
|
||||
task.framebuffer = NULL;
|
||||
task.list = D_80097AA0_unknown;
|
||||
osSendMesg(&gScheduler.cmdQueue, &task, OS_MESG_BLOCK);
|
||||
|
||||
Sched_SendNotifyMsg(&gScheduler);
|
||||
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
|
||||
|
||||
gCICValue1 = IO_READ(SP_DMEM_START + 0xFF4);
|
||||
gCICValue2 = IO_READ(SP_DMEM_START + 0xFFC);
|
||||
CIC6105_ILoveYou();
|
||||
|
||||
(void)"flag:%08x data:%08x\n";
|
||||
}
|
||||
|
||||
s32 CIC6105_ILoveYou(void) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void CIC6105_Init(void) {
|
||||
gCICAddr1Val = IO_READ(CIC_ADDRESS_1);
|
||||
gCICAddr2Val = IO_READ(CIC_ADDRESS_2);
|
||||
|
||||
Reference in New Issue
Block a user