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