sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

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