1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include "libc/stdbool.h"
#include "ultra64.h"
#include "macros.h"
#include "main.h"
#include "m_thread.h"
#include "segment_symbols.h"
#include "stack.h"
#include "libu64/stackcheck.h"
#include "m_std_dma.h"
OSThread sMainThread;
STACK(sMainStack, 0x900);
StackEntry sMainStackInfo;
OSMesg sPiMgrCmdBuff[50];
OSMesgQueue sPiMgrCmdQueue;
OSViMode gViConfigMode;
s8 D_8003BBC0_jp = 1;
u32 gViConfigFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF;
f32 gViConfigXScale = 1.0f;
f32 gViConfigYScale = 1.0f;
void Main_ThreadEntry(void* arg) {
DmaMgr_Init();
DmaMgr_RequestSyncDebug(SEGMENT_VRAM_START(code), SEGMENT_ROM_START(code), SEGMENT_ROM_SIZE_ALT(code), "../idle.c",
53);
bzero(SEGMENT_BSS_START(code), SEGMENT_BSS_SIZE(code));
func_800D66D0_jp(arg);
DmaMgr_Stop();
}
void Idle_InitVideo(void) {
osCreateViManager(OS_PRIORITY_VIMGR);
gViConfigFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF;
gViConfigXScale = 1.0f;
gViConfigYScale = 1.0f;
switch (osTvType) {
case OS_TV_NTSC:
gViConfigMode = osViModeNtscLan1;
break;
case OS_TV_MPAL:
gViConfigMode = osViModeMpalLan1;
break;
case OS_TV_PAL:
gViConfigMode = osViModeFpalLan1;
gViConfigYScale = 0.833f;
break;
}
D_8003BBC0_jp = 1;
}
void Idle_ThreadEntry(void* arg) {
Idle_InitVideo();
osViBlack(true);
osCreatePiManager(OS_PRIORITY_PIMGR, &sPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
StackCheck_Init(&sMainStackInfo, sMainStack, STACK_TOP(sMainStack), 0, 0x400, "main");
osCreateThread(&sMainThread, M_THREAD_ID_MAIN, Main_ThreadEntry, arg, &sMainStackInfo, M_PRIORITY_MAIN);
osStartThread(&sMainThread);
osSetThreadPri(NULL, OS_PRIORITY_IDLE);
for (;;) {}
}
|