-
Notifications
You must be signed in to change notification settings - Fork 2
/
main.c
93 lines (75 loc) · 1.67 KB
/
main.c
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include <stddef.h>
#include <uspi.h>
#include <uspios.h>
#include <uspi/string.h>
#include <uspi/usbxbox360.h>
#include "framebuffer.h"
#include "console.h"
#include "mmu.h"
#include "gba.h"
#include "peripherals/peripherals.h"
#include "irq.h"
#include "dma.h"
#include "mailbox.h"
#include "mem.h"
#include "uspienv/uspienv.h"
#include "errlog.h"
#include "linker.h"
#include "uspienv/alloc.h"
#include "uspienv/logger.h"
#include "usb.h"
#include "timer.h"
#include "gbaConstants.h"
static void paintGreen(struct FBInfo *fb)
{
size_t i;
for(i = 0; i <GBA_LCD_WIDTH*GBA_LCD_HEIGHT*2; ++i)
fb->ptr[i] = 0xFF00FF00;
FBCopyDoubleBuffer();
}
static void paintSpecial(struct FBInfo *fb)
{
size_t x;
size_t y;
for(y = 0; y <GBA_LCD_HEIGHT; ++y)
for(x = 0; x < GBA_LCD_WIDTH*2; ++x)
fb->ptr[y*(fb->pitch>>2) + x] = 0xFF000000 | (((x+y)&0xFF) * 0x010101);
FBCopyDoubleBuffer();
}
#ifndef NO_USB
static void USPiInit(void)
{
ConsolePrint(0, 0, "USB init... ");
FBCopyDoubleBuffer();
if(!USPiInitialize())
ErrorDisplayMessage("USPiInitialize: cannot init USB", 1);
ConsolePrint(20, 0, "OK");
FBCopyDoubleBuffer();
}
#endif
int main(void)
{
MemInit();
#ifndef NO_USB
USPiEnvInit();
#endif
TimerInit();
if(FBInit(240 * 2, 160))
{
struct FBInfo *fb;
fb = FBCreateDoubleBuffer();
paintGreen(fb);
PeripheralsInit();
GBALoadComponents();
FBConvertBufferToVirtualSpace();
MMUInit();
#ifndef NO_USB
USPiInit();
#endif
paintSpecial(fb);
GBARun();
}
for(;;);
return 0;
}