int main() { void *xfb; GXRModeObj *rmode; lwp_t handle; int r; char *stack; IOS_ReloadIOS(30); VIDEO_Init(); switch(VIDEO_GetCurrentTvMode()) { case VI_NTSC: rmode = &TVNtsc480IntDf; break; case VI_PAL: rmode = &TVPal528IntDf; break; case VI_MPAL: rmode = &TVMpal480IntDf; break; default: rmode = &TVNtsc480IntDf; break; } xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(xfb); VIDEO_SetBlack(FALSE); VIDEO_Flush(); VIDEO_WaitVSync(); #if 1 printf("Calling main()\n"); main_real(); printf("main() returned\n"); #else printf("Creating main thread\n"); stack = malloc(1024*1024); if (stack == 0) { printf("Unable to allocate stack\n"); while(1); } handle = 0; r = LWP_CreateThread(&handle, main_real, 0, stack, 1024*1024, 50); if (r != 0) { printf("Failed to create thread\n"); while(1); } printf("Main thread created\n"); LWP_SetThreadPriority(0, 0); printf("Looping\n"); while(1); #endif }
int main(int argc, char **argv) { return main_real(argc, argv); }