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