Front SD ELF loader added
[svpe-wii.git] / sdelfloader / miniloader / source / main.c
blobd041dae0dfab5c7a6cd5675961d5db4ab4f711ee
1 #include <gccore.h>
2 #include <stdio.h>
4 #include "dol.h"
5 #include "processor.h"
6 #include "asm.h"
8 static void *xfb = NULL;
9 static GXRModeObj *rmode = NULL;
11 extern u8 loader_dol[];
13 extern void __exception_closeall();
14 extern s32 __IOS_ShutdownSubsystems();
16 int main(int argc, char **argv) {
17 u32 level;
19 VIDEO_Init();
20 switch(VIDEO_GetCurrentTvMode()) {
21 case VI_NTSC:
22 rmode = &TVNtsc480IntDf;
23 break;
24 case VI_PAL:
25 rmode = &TVPal528IntDf;
26 break;
27 case VI_MPAL:
28 rmode = &TVMpal480IntDf;
29 break;
30 default:
31 rmode = &TVNtsc480IntDf;
32 break;
35 PAD_Init();
37 xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
38 console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
40 VIDEO_Configure(rmode);
41 VIDEO_SetNextFramebuffer(xfb);
42 VIDEO_SetBlack(FALSE);
43 VIDEO_Flush();
44 VIDEO_WaitVSync();
46 if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
48 printf("\n\nloading\n");
49 VIDEO_WaitVSync();
50 void (*ep)() = (void(*)())load_dol_image(loader_dol);
51 printf("jumping to 0x%08X\n", (unsigned int)ep);
53 __IOS_ShutdownSubsystems();
54 _CPU_ISR_Disable (level);
55 __exception_closeall ();
56 printf("__exception_closeall() done. Jumping to ep now...\n");
57 ep();
58 _CPU_ISR_Restore (level);
60 return 0; // fixes gcc warning