blob: b3099f90dae7c2a0c7c11b28f917b290fcfb9c62 (
plain)
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
69
|
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h"
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h"
#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h"
BOOL gTRKBigEndian;
DSError TRKInitializeNub(void) {
DSError ret;
DSError uartErr;
ret = TRKInitializeEndian();
if (ret == DS_NoError) {
usr_put_initialize();
}
if (ret == DS_NoError) {
ret = TRKInitializeEventQueue();
}
if (ret == DS_NoError) {
ret = TRKInitializeMessageBuffers();
}
if (ret == DS_NoError) {
ret = TRKInitializeDispatcher();
}
if (ret == DS_NoError) {
uartErr = TRKInitializeIntDrivenUART(0x0000e100, 1, 0, &gTRKInputPendingPtr);
TRKTargetSetInputPendingPtr(gTRKInputPendingPtr);
if (uartErr != DS_NoError) {
ret = uartErr;
}
}
if (ret == DS_NoError) {
ret = TRKInitializeSerialHandler();
}
if (ret == DS_NoError) {
ret = TRKInitializeTarget();
}
return ret;
}
DSError TRKTerminateNub(void) {
TRKTerminateSerialHandler();
return DS_NoError;
}
void TRKNubWelcome(void) {
TRK_board_display("MetroTRK for GAMECUBE v0.10");
return;
}
BOOL TRKInitializeEndian(void) {
u8 bendian[4];
BOOL result = FALSE;
gTRKBigEndian = TRUE;
bendian[0] = 0x12;
bendian[1] = 0x34;
bendian[2] = 0x56;
bendian[3] = 0x78;
if (*(u32*)bendian == 0x12345678) {
gTRKBigEndian = TRUE;
} else if (*(u32*)bendian == 0x78563412) {
gTRKBigEndian = FALSE;
} else {
result = TRUE;
}
return result;
}
|