__osViInit.c (2261B)
1 #include "libultra_internal.h" 2 #include "PR/rcp.h" 3 #include "PR/os.h" 4 5 OSViContext sViContexts[2] = { 0 }; 6 OSViContext *__osViCurr = &sViContexts[0]; 7 OSViContext *__osViNext = &sViContexts[1]; 8 9 #ifdef VERSION_EU 10 u32 osViClock = VI_NTSC_CLOCK; 11 u32 sTvType = TV_TYPE_PAL; 12 #elif !defined(VERSION_SH) && !defined(VERSION_CN) 13 u32 sTvType = TV_TYPE_NTSC; 14 u32 osViClock = VI_NTSC_CLOCK; 15 #endif 16 17 extern OSViMode osViModePalLan1; 18 extern OSViMode osViModeMpalLan1; 19 #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN) 20 extern OSViMode osViModeNtscLan1; 21 #endif 22 23 void __osViInit(void) { 24 #ifdef VERSION_US 25 sTvType = osTvType; 26 #endif 27 28 bzero(sViContexts, sizeof(sViContexts)); 29 __osViCurr = &sViContexts[0]; 30 __osViNext = &sViContexts[1]; 31 __osViNext->retraceCount = 1; 32 __osViCurr->retraceCount = 1; 33 34 #if defined(VERSION_JP) 35 if (sTvType != TV_TYPE_PAL) { 36 __osViNext->modep = &osViModePalLan1; 37 osViClock = VI_NTSC_CLOCK; 38 } else { 39 __osViNext->modep = &osViModeMpalLan1; 40 osViClock = VI_PAL_CLOCK; 41 } 42 #elif defined(VERSION_US) 43 if (sTvType == TV_TYPE_NTSC) { 44 __osViNext->modep = &osViModePalLan1; 45 osViClock = VI_NTSC_CLOCK; 46 } else { 47 __osViNext->modep = &osViModeMpalLan1; 48 osViClock = VI_MPAL_CLOCK; 49 } 50 #elif defined(VERSION_EU) 51 if (osTvType == TV_TYPE_PAL) { 52 __osViNext->modep = &osViModePalLan1; 53 osViClock = VI_PAL_CLOCK; 54 } else if (osTvType == TV_TYPE_MPAL) { 55 __osViNext->modep = &osViModeMpalLan1; 56 osViClock = VI_MPAL_CLOCK; 57 } else { 58 __osViNext->modep = &osViModeNtscLan1; 59 osViClock = VI_NTSC_CLOCK; 60 } 61 #else 62 __osViNext->buffer = (void *) 0x80000000; 63 __osViCurr->buffer = (void *) 0x80000000; 64 if (osTvType == TV_TYPE_PAL) { 65 __osViNext->modep = &osViModePalLan1; 66 } else if (osTvType == TV_TYPE_MPAL) { 67 __osViNext->modep = &osViModeMpalLan1; 68 } else { 69 __osViNext->modep = &osViModeNtscLan1; 70 } 71 72 #endif 73 74 __osViNext->unk00 = VI_STATE_BLACK; 75 __osViNext->features = __osViNext->modep->comRegs.ctrl; 76 77 #ifndef VERSION_JP 78 while (IO_READ(VI_CURRENT_REG) > 10) { 79 ; 80 } 81 IO_WRITE(VI_STATUS_REG, 0); 82 #endif 83 __osViSwapContext(); 84 }