summaryrefslogtreecommitdiff
path: root/include/PR/os_vi.h
blob: 347eba179401ad1c730cd9d14b5ce2e7a9d0131e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#ifndef PR_OS_VI_H
#define PR_OS_VI_H

#include "PR/ultratypes.h"
#include "PR/os_message.h"

/*
 * Video Interface (VI) special features
 */
#define	OS_VI_GAMMA_ON			0x0001
#define	OS_VI_GAMMA_OFF			0x0002
#define	OS_VI_GAMMA_DITHER_ON		0x0004
#define	OS_VI_GAMMA_DITHER_OFF		0x0008
#define	OS_VI_DIVOT_ON			0x0010
#define	OS_VI_DIVOT_OFF			0x0020
#define	OS_VI_DITHER_FILTER_ON		0x0040
#define	OS_VI_DITHER_FILTER_OFF		0x0080

typedef struct {
    /* 0x00 */ u32 ctrl;
    /* 0x04 */ u32 width;
    /* 0x08 */ u32 burst;
    /* 0x0C */ u32 vSync;
    /* 0x10 */ u32 hSync;
    /* 0x14 */ u32 leap;
    /* 0x18 */ u32 hStart;
    /* 0x1C */ u32 xScale;
    /* 0x20 */ u32 vCurrent;
} OSViCommonRegs; // size = 0x20

typedef struct {
    /* 0x00 */ u32 origin;
    /* 0x04 */ u32 yScale;
    /* 0x08 */ u32 vStart;
    /* 0x0C */ u32 vBurst;
    /* 0x10 */ u32 vIntr;
} OSViFieldRegs; // size = 0x14

typedef struct {
    /* 0x00 */ u8 type;
    /* 0x04 */ OSViCommonRegs comRegs;
    /* 0x24 */ OSViFieldRegs fldRegs[2];
} OSViMode; // size = 0x4C


#define OS_VI_NTSC_LPN1     0   /* NTSC */
#define OS_VI_NTSC_LPF1     1
#define OS_VI_NTSC_LAN1     2
#define OS_VI_NTSC_LAF1     3
#define OS_VI_NTSC_LPN2     4
#define OS_VI_NTSC_LPF2     5
#define OS_VI_NTSC_LAN2     6
#define OS_VI_NTSC_LAF2     7
#define OS_VI_NTSC_HPN1     8
#define OS_VI_NTSC_HPF1     9
#define OS_VI_NTSC_HAN1     10
#define OS_VI_NTSC_HAF1     11
#define OS_VI_NTSC_HPN2     12
#define OS_VI_NTSC_HPF2     13

#define OS_VI_PAL_LPN1      14  /* PAL */
#define OS_VI_PAL_LPF1      15
#define OS_VI_PAL_LAN1      16
#define OS_VI_PAL_LAF1      17
#define OS_VI_PAL_LPN2      18
#define OS_VI_PAL_LPF2      19
#define OS_VI_PAL_LAN2      20
#define OS_VI_PAL_LAF2      21
#define OS_VI_PAL_HPN1      22
#define OS_VI_PAL_HPF1      23
#define OS_VI_PAL_HAN1      24
#define OS_VI_PAL_HAF1      25
#define OS_VI_PAL_HPN2      26
#define OS_VI_PAL_HPF2      27

#define OS_VI_MPAL_LPN1     28  /* MPAL */
#define OS_VI_MPAL_LPF1     29
#define OS_VI_MPAL_LAN1     30
#define OS_VI_MPAL_LAF1     31
#define OS_VI_MPAL_LPN2     32
#define OS_VI_MPAL_LPF2     33
#define OS_VI_MPAL_LAN2     34
#define OS_VI_MPAL_LAF2     35
#define OS_VI_MPAL_HPN1     36
#define OS_VI_MPAL_HPF1     37
#define OS_VI_MPAL_HAN1     38
#define OS_VI_MPAL_HAF1     39
#define OS_VI_MPAL_HPN2     40
#define OS_VI_MPAL_HPF2     41

#define OS_VI_FPAL_LPN1     42  /* FPAL */
#define OS_VI_FPAL_LPF1     43
#define OS_VI_FPAL_LAN1     44
#define OS_VI_FPAL_LAF1     45
#define OS_VI_FPAL_LPN2     46
#define OS_VI_FPAL_LPF2     47
#define OS_VI_FPAL_LAN2     48
#define OS_VI_FPAL_LAF2     49
#define OS_VI_FPAL_HPN1     50
#define OS_VI_FPAL_HPF1     51
#define OS_VI_FPAL_HAN1     52
#define OS_VI_FPAL_HAF1     53
#define OS_VI_FPAL_HPN2     54
#define OS_VI_FPAL_HPF2     55

extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModePalLan1;
extern OSViMode osViModeNtscHpn1;
extern OSViMode osViModeNtscLan1;
extern OSViMode osViModeMpalLan1;
extern OSViMode osViModeFpalLan1;

extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModePalLan1;
extern OSViMode osViModeNtscHpn1;
extern OSViMode osViModeNtscLan1;
extern OSViMode osViModeMpalLan1;
extern OSViMode osViModeFpalLan1;

void* osViGetCurrentFramebuffer(void);
void* osViGetNextFramebuffer(void);
void osViSetXScale(f32 value);
void osViSetYScale(f32 value);
void osViExtendVStart(u32 value);
void osViSetSpecialFeatures(u32 func);
void osViSetMode(OSViMode* modep);
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount);
void osViSwapBuffer(void* frameBufPtr);
void osViBlack(u8 active);
void osCreateViManager(OSPri pri);

#endif