]> git.sesse.net Git - pistorm/blob - platforms/amiga/rtg/rtg_driver_amiga/settings.h
Add dumb framebuffer RTG
[pistorm] / platforms / amiga / rtg / rtg_driver_amiga / settings.h
1 #ifndef settings_H
2 #define settings_H
3
4 /************************************************************************/
5
6 enum{
7         PLANAR,
8         CHUNKY,
9         HICOLOR,
10         TRUECOLOR,
11         TRUEALPHA,
12         MAXMODES
13 };
14
15 /************************************************************************/
16
17 #define SETTINGSNAMEMAXCHARS            30
18 #define BOARDNAMEMAXCHARS                       30
19
20 struct P96MonitorInfo
21 {
22         UBYTE   Name[32];       // Name des Monitortyps, z.B. "NEC P750"
23
24         ULONG   HSyncMin;       // Minimal unterstützte Horizontalfrequenz in Hz
25         ULONG   HSyncMax;       // Maximal unterstützte Horizontalfrequenz in Hz
26
27         UWORD   VSyncMin;       // Minimal unterstützte Vertikalfrequenz in Hz
28         UWORD   VSyncMax;       // Maximal unterstützte Vertikalfrequenz in Hz
29
30         ULONG   Flags;          // Siehe unten
31 };
32
33 #define MIB_DPMS_StandBy        (0)     // Monitor unterstützt DPMS-Level "stand-by".
34                                         // Dieses Feature ist optional, nicht jeder
35                                         // DPMS-fähige Monitor muß es unterstützen.
36                                         // Aktivierung: hsync aus, vsync an
37
38 #define MIB_DPMS_Suspend        (1)     // Monitor unterstützt DPMS-Level "suspend".
39                                         // Dieses Feature ist Pflicht, jeder
40                                         // DPMS-fähige Monitor muß es unterstützen.
41                                         // Aktivierung: hsync an, vsync aus
42
43 #define MIB_DPMS_ActiveOff      (2)     // Monitor unterstützt DPMS-Level "active off".
44                                         // Dieses Feature ist Pflicht, jeder
45                                         // DPMS-fähige Monitor muß es unterstützen.
46                                         // Aktivierung: hsync aus, vsync aus
47
48 #define MIF_DPMS_StandBy        (1UL << MIB_DPMS_StandBy)
49 #define MIF_DPMS_Suspend        (1UL << MIB_DPMS_Suspend)
50 #define MIF_DPMS_ActiveOff      (1UL << MIB_DPMS_ActiveOff)
51
52 struct Settings{
53         struct Node                     Node;
54         struct MinList          Resolutions;
55         ULONG                                   BoardType;
56 // a value discribing assignment to nth board local to boardtype
57 // to be used for reassignment when boards are added or removed.
58         UWORD                                   LocalOrdering;
59         WORD                                    LastSelected;
60         char                                    NameField[SETTINGSNAMEMAXCHARS];
61         char                                    *BoardName;
62         struct P96MonitorInfo *MonitorInfo;
63 };
64
65 #define MAXRESOLUTIONNAMELENGTH 22
66
67 /********************************
68  * only used within rtg.library *
69  ********************************/
70 struct LibResolution{
71         struct Node                             Node;
72         char                                            P96ID[6];
73         char                                            Name[MAXRESOLUTIONNAMELENGTH];
74         ULONG                                           DisplayID;
75         UWORD                                           Width;
76         UWORD                                           Height;
77         UWORD                                           Flags;
78         struct ModeInfo         *Modes[MAXMODES];
79         struct BoardInfo                *BoardInfo;
80         struct LibResolution    *HashChain;
81 };
82
83 /*****************************
84  * only used within MoniTool *
85  *****************************/
86 struct Resolution{
87         struct Node             Node;
88         struct MinList  ModeInfos;
89         ULONG                           DisplayID;
90         UWORD                           Width;
91         UWORD                           Height;
92         BOOL                            Active;
93         WORD                            LastSelected;
94         UWORD                           Flags;
95         char                            Name[MAXRESOLUTIONNAMELENGTH];
96 };
97
98 #define P96B_FAMILY                     0                                               // obsolete (Resolution is an entire family)
99 #define P96B_PUBLIC                     1                                               // Resolution should be added to the public
100 #define P96B_MONITOOL           2
101
102 #define P96B_CHECKME            15                                              // Resolution has been attached to another board
103                                                                                                                         // by AttachSettings without being checked against
104                                                                                                                         // hardware limits
105
106 #define P96F_FAMILY                     (1<<P96B_FAMILY)        // obsolete
107 #define P96F_PUBLIC                     (1<<P96B_PUBLIC)
108 #define P96F_MONITOOL           (1<<P96B_MONITOOL)
109 #define P96F_CHECKME            (1<<P96B_CHECKME)
110
111 /*
112 enum {
113         DBLLORES_FLAGS, // 0000          320x200
114         DBLHIRES_FLAGS, // 8000          640x200
115         DBLSHIRES_FLAGS,        // 8020         1280x200
116         LORES_FLAGS,            // 0004          320x400
117         HIRES_FLAGS,            // 8004          640x400
118         SHIRES_FLAGS,           // 8024         1280x400
119         LORESLACE_FLAGS,        // 0005          320x800
120         HIRESLACE_FLAGS,        //      8005             640x800
121         SHIRESLACE_FLAGS,       // 8025         1280x800
122         MAXFAMILYFLAGS
123 };
124 */
125
126 /*****************************
127  * this one describes a mode *
128  *****************************/
129 struct ModeInfo{
130         struct Node     Node;                                           // used for linking ModeInfos e.g. within MoniTool
131         WORD                    OpenCount;
132         BOOL                    Active;
133         UWORD                   Width;
134         UWORD                   Height;
135         UBYTE                   Depth;
136         UBYTE                   Flags;
137
138         UWORD                   HorTotal;                               // wichtig für aufziehen (beeinflußt Timings)
139         UWORD                   HorBlankSize;                   // Rahmengröße
140         UWORD                   HorSyncStart;                   // bestimmt Bildlage
141         UWORD                   HorSyncSize;                    // muß Spezifikation für Sync-Lücke erfüllen
142
143         UBYTE                   HorSyncSkew;                    // im Moment obsolet
144         UBYTE                   HorEnableSkew;                  //
145
146         UWORD                   VerTotal;                               // analog zu horizontalen Werten
147         UWORD                   VerBlankSize;
148         UWORD                   VerSyncStart;
149         UWORD                   VerSyncSize;
150
151         union{
152                 UBYTE           Clock;                                  // Tseng: Nummer der Hardwareclock
153                 UBYTE           Numerator;                              // Cirrus: Mumerator für PLL
154         } pll1;
155         union{
156                 UBYTE           ClockDivide;                    // Tseng: Clockteiler
157                 UBYTE           Denominator;                    // Cirrus: Denominator für PLL
158         } pll2;
159         ULONG                   PixelClock;                             // PixelClock in Hz
160 };
161
162 /***********************************
163 * Flags: */
164
165 #define GMB_DOUBLECLOCK         0
166 #define GMB_INTERLACE           1
167 #define GMB_DOUBLESCAN          2
168 #define GMB_HPOLARITY           3
169 #define GMB_VPOLARITY           4
170 #define GMB_COMPATVIDEO         5
171 #define GMB_DOUBLEVERTICAL      6
172 #define GMB_ALWAYSBORDER        7                       // only used by MoniTool-EditScreen
173
174 #define GMF_DOUBLECLOCK         (1L<<GMB_DOUBLECLOCK)
175 #define GMF_INTERLACE           (1L<<GMB_INTERLACE)
176 #define GMF_DOUBLESCAN          (1L<<GMB_DOUBLESCAN)
177 #define GMF_HPOLARITY           (1L<<GMB_HPOLARITY)
178 #define GMF_VPOLARITY           (1L<<GMB_VPOLARITY)
179 #define GMF_COMPATVIDEO         (1L<<GMB_COMPATVIDEO)
180 #define GMF_DOUBLEVERTICAL      (1L<<GMB_DOUBLEVERTICAL)
181 #define GMF_ALWAYSBORDER        (1L<<GMB_ALWAYSBORDER)
182
183 /************************************************************************/
184 #endif