os_vi.h (2948B)
1 #ifndef _ULTRA64_VI_H_ 2 #define _ULTRA64_VI_H_ 3 4 #include <PR/ultratypes.h> 5 #include <PR/os_message.h> 6 7 //TODO: figure out what this is 8 #define VI_STATE_01 0x01 9 #define VI_STATE_XSCALE_UPDATED 0x02 10 #define VI_STATE_YSCALE_UPDATED 0x04 11 #define VI_STATE_08 0x08 //related to control regs changing 12 #define VI_STATE_10 0x10 //swap buffer 13 #define VI_STATE_BLACK 0x20 //probably related to a black screen 14 #define VI_STATE_REPEATLINE 0x40 //repeat line? 15 #define VI_STATE_FADE 0x80 //fade 16 17 /* Ultra64 Video Interface */ 18 19 20 /* Special Features */ 21 #define OS_VI_GAMMA_ON 0x0001 22 #define OS_VI_GAMMA_OFF 0x0002 23 #define OS_VI_GAMMA_DITHER_ON 0x0004 24 #define OS_VI_GAMMA_DITHER_OFF 0x0008 25 #define OS_VI_DIVOT_ON 0x0010 26 #define OS_VI_DIVOT_OFF 0x0020 27 #define OS_VI_DITHER_FILTER_ON 0x0040 28 #define OS_VI_DITHER_FILTER_OFF 0x0080 29 30 #define OS_VI_GAMMA 0x08 31 #define OS_VI_GAMMA_DITHER 0x04 32 #define OS_VI_DIVOT 0x10 33 #define OS_VI_DITHER_FILTER 0x10000 34 #define OS_VI_UNK200 0x200 35 #define OS_VI_UNK100 0x100 36 37 38 /* Types */ 39 40 typedef struct { 41 u32 ctrl; 42 u32 width; 43 u32 burst; 44 u32 vSync; 45 u32 hSync; 46 u32 leap; 47 u32 hStart; 48 u32 xScale; 49 u32 vCurrent; 50 } OSViCommonRegs; 51 52 typedef struct { 53 u32 origin; 54 u32 yScale; 55 u32 vStart; 56 u32 vBurst; 57 u32 vIntr; 58 } OSViFieldRegs; 59 60 typedef struct { 61 u8 type; 62 OSViCommonRegs comRegs; 63 OSViFieldRegs fldRegs[2]; 64 } OSViMode; 65 66 typedef struct { 67 /* 0x00 */ u16 unk00; //some kind of flags. swap buffer sets to 0x10 68 /* 0x02 */ u16 retraceCount; 69 /* 0x04 */ void* buffer; 70 /* 0x08 */ OSViMode *modep; 71 /* 0x0c */ u32 features; 72 /* 0x10 */ OSMesgQueue *mq; 73 /* 0x14 */ OSMesg *msg; 74 /* 0x18 */ u32 unk18; 75 /* 0x1c */ u32 unk1c; 76 /* 0x20 */ u32 unk20; 77 /* 0x24 */ f32 unk24; 78 /* 0x28 */ u16 unk28; 79 /* 0x2c */ u32 unk2c; 80 } OSViContext; 81 82 void osCreateViManager(OSPri pri); 83 void osViSetMode(OSViMode *mode); 84 void osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount); 85 void osViBlack(u8 active); 86 void osViSetSpecialFeatures(u32 func); 87 void osViSwapBuffer(void *vaddr); 88 89 90 #define OS_VI_NTSC_LPN1 0 /* NTSC */ 91 #define OS_VI_NTSC_LPF1 1 92 #define OS_VI_NTSC_LAN1 2 93 #define OS_VI_NTSC_LAF1 3 94 #define OS_VI_NTSC_LPN2 4 95 #define OS_VI_NTSC_LPF2 5 96 #define OS_VI_NTSC_LAN2 6 97 #define OS_VI_NTSC_LAF2 7 98 #define OS_VI_NTSC_HPN1 8 99 #define OS_VI_NTSC_HPF1 9 100 #define OS_VI_NTSC_HAN1 10 101 #define OS_VI_NTSC_HAF1 11 102 #define OS_VI_NTSC_HPN2 12 103 #define OS_VI_NTSC_HPF2 13 104 105 #define OS_VI_PAL_LPN1 14 /* PAL */ 106 #define OS_VI_PAL_LPF1 15 107 #define OS_VI_PAL_LAN1 16 108 #define OS_VI_PAL_LAF1 17 109 #define OS_VI_PAL_LPN2 18 110 #define OS_VI_PAL_LPF2 19 111 #define OS_VI_PAL_LAN2 20 112 #define OS_VI_PAL_LAF2 21 113 #define OS_VI_PAL_HPN1 22 114 #define OS_VI_PAL_HPF1 23 115 #define OS_VI_PAL_HAN1 24 116 #define OS_VI_PAL_HAF1 25 117 #define OS_VI_PAL_HPN2 26 118 #define OS_VI_PAL_HPF2 27 119 120 extern OSViMode osViModeTable[]; /* Global VI mode table */ 121 122 123 #endif