]> git.sesse.net Git - pistorm/blob - platforms/amiga/rtg/irtg_structs.h
Some RTG bug fixes, (inactive for now) P2C iRTG implementation
[pistorm] / platforms / amiga / rtg / irtg_structs.h
1 struct P96Line {
2     int16_t     X, Y;
3     uint16_t    Length;
4     int16_t     dX, dY;
5     int16_t     sDelta, lDelta, twoSDminusLD;
6     uint16_t    LinePtrn;
7     uint16_t    PatternShift;
8     uint32_t    FgPen, BgPen;
9     uint16_t    Horizontal;
10     uint8_t     DrawMode;
11     int8_t      pad;
12     uint16_t    Xorigin, Yorigin;
13 };
14
15 #pragma pack(2)
16 struct P96Template {
17     uint32_t _p_Memory;
18     uint16_t BytesPerRow;
19     uint8_t XOffset;
20     uint8_t DrawMode;
21     uint32_t FgPen;
22     uint32_t BgPen;
23 };
24
25 #pragma pack(2)
26 struct P96Pattern {
27     uint32_t _p_Memory;
28     uint16_t XOffset, YOffset;
29     uint32_t FgPen, BgPen;
30     uint8_t Size; // Width: 16, Height: (1<<pat_Size)
31     uint8_t DrawMode;
32 };
33
34 struct MinNode_placeholder {
35     uint32_t _p_mln_Succ;
36     uint32_t _p_mln_Pred;
37 };
38
39 #pragma pack(2)
40 struct Node_placeholder {
41     uint32_t _p_ln_Succ;
42     uint32_t _p_ln_Pred;
43     uint8_t shit[2];
44     uint32_t _p_ln_Name;
45 };
46
47 struct BitMap {
48     uint16_t BytesPerRow;
49     uint16_t Rows;
50     uint8_t Flags;
51     uint8_t Depth;
52     uint16_t pad;
53     uint32_t _p_Planes[8];
54 };
55
56 struct MinList_placeholder {
57    uint32_t _p_mlh_Head;
58    uint32_t _p_mlh_Tail;
59    uint32_t _p_mlh_TailPred;
60 };
61
62 struct List_placeholder {
63    uint32_t _p_lh_Head;
64    uint32_t _p_lh_Tail;
65    uint32_t _p_lh_TailPred;
66    uint8_t lh_Type;
67    uint8_t l_pad;
68 };
69
70 struct SemaphoreRequest_placeholder {
71     struct MinNode_placeholder sr_Link;
72     uint32_t _p_sr_Waiter;
73 };
74
75 struct SignalSemaphore_placeholder {
76     struct Node_placeholder ss_Link;
77     int16_t ss_NestCount;
78     struct MinList_placeholder ss_WaitQueue;
79     struct SemaphoreRequest_placeholder ss_MultipleLink;
80     uint32_t _p_ss_Owner;
81     int16_t ss_QueueCount;
82 };
83
84 struct Interrupt_placeholder {
85     struct Node_placeholder is_Node;
86     uint32_t _p_is_Data;
87     uint32_t _p_is_Code;
88 };
89
90 struct MsgPort_placeholder {
91     struct Node_placeholder mp_Node;
92     uint8_t mp_Flags;
93     uint8_t mp_SigBit;
94     uint32_t _p_mp_SigTask;
95     struct List_placeholder mp_MsgList;
96 };
97
98 struct P96Rectangle {
99     int16_t MinX,MinY;
100     int16_t MaxX,MaxY;
101 };
102
103 struct CLUTEntry {
104     uint8_t Red;
105     uint8_t Green;
106     uint8_t Blue;
107 };
108
109 struct timeval_placeholder {
110     uint32_t tv_secs;
111     uint32_t tv_micro;
112 };
113
114 #define MAXMODES 5
115
116 struct ModeInfo_placeholder {
117     struct Node_placeholder Node;
118     int16_t OpenCount;
119     uint32_t Active;
120     uint16_t Width;
121     uint16_t Height;
122     uint8_t Depth;
123     uint8_t Flags;
124
125     uint16_t HorTotal;
126     uint16_t HorBlankSize;
127     uint16_t HorSyncStart;
128     uint16_t HorSyncSize;
129
130     uint8_t HorSyncSkew;
131     uint8_t HorEnableSkew;
132
133     uint16_t VerTotal;
134     uint16_t VerBlankSize;
135     uint16_t VerSyncStart;
136     uint16_t VerSyncSize;
137
138     union {
139         uint8_t Clock;
140         uint8_t Numerator;
141     } pll1;
142     union {
143         uint8_t ClockDivide;
144         uint8_t Denominator;
145     } pll2;
146     uint32_t PixelClock;
147 };
148
149 struct P96RenderInfo {
150         uint32_t _p_Memory;
151         int16_t BytesPerRow;
152         int16_t pad;
153         uint32_t RGBFormat;
154 };
155
156 struct P96BoardInfo{
157     uint32_t _p_RegisterBase, _p_MemoryBase, _p_MemoryIOBase;
158     uint32_t MemorySize;
159     uint32_t _p_BoardName;
160     int8_t VBIName[32];
161     uint32_t _p_CardBase;
162     uint32_t _p_ChipBase;
163     uint32_t _p_ExecBase;
164     uint32_t _p_UtilBase;
165     struct Interrupt_placeholder HardInterrupt;
166     struct Interrupt_placeholder SoftInterrupt;
167     struct SignalSemaphore_placeholder BoardLock;
168     struct MinList_placeholder ResolutionsList;
169     uint32_t BoardType;
170     uint32_t PaletteChipType;
171     uint32_t GraphicsControllerType;
172     uint16_t MoniSwitch;
173     uint16_t BitsPerCannon;
174     uint32_t Flags;
175     uint16_t SoftSpriteFlags;
176     uint16_t ChipFlags;
177     uint32_t CardFlags;
178
179     uint16_t BoardNum;
180     uint16_t RGBFormats;
181
182     uint16_t MaxHorValue[MAXMODES];
183     uint16_t MaxVerValue[MAXMODES];
184     uint16_t MaxHorResolution[MAXMODES];
185     uint16_t MaxVerResolution[MAXMODES];
186     uint32_t MaxMemorySize, MaxChunkSize;
187
188     uint32_t MemoryClock;
189
190     uint32_t PixelClockCount[MAXMODES];
191
192     uint32_t _p_AllocCardMem;
193     uint32_t _p_FreeCardMem;
194
195     uint32_t _p_SetSwitch;
196
197     uint32_t _p_SetColorArray;
198
199     uint32_t _p_SetDAC;
200     uint32_t _p_SetGC;
201     uint32_t _p_SetPanning;
202     uint32_t _p_CalculateBytesPerRow;
203     uint32_t _p_CalculateMemory;
204     uint32_t _p_GetCompatibleFormats;
205     uint32_t _p_SetDisplay;
206
207     uint32_t _p_ResolvePixelClock;
208     uint32_t _p_GetPixelClock;
209     uint32_t _p_SetClock;
210
211     uint32_t _p_SetMemoryMode;
212     uint32_t _p_SetWriteMask;
213     uint32_t _p_SetClearMask;
214     uint32_t _p_SetReadPlane;
215
216     uint32_t _p_WaitVerticalSync;
217     uint32_t _p_SetInterrupt;
218
219     uint32_t _p_WaitBlitter;
220
221     uint32_t _p_ScrollPlanar;
222     uint32_t _p_ScrollPlanarDefault;
223     uint32_t _p_UpdatePlanar;
224     uint32_t _p_UpdatePlanarDefault;
225     uint32_t _p_BlitPlanar2Chunky;
226     uint32_t _p_BlitPlanar2ChunkyDefault;
227
228     uint32_t _p_FillRect;
229     uint32_t _p_FillRectDefault;
230     uint32_t _p_InvertRect;
231     uint32_t _p_InvertRectDefault;
232     uint32_t _p_BlitRect;
233     uint32_t _p_BlitRectDefault;
234     uint32_t _p_BlitTemplate;
235     uint32_t _p_BlitTemplateDefault;
236     uint32_t _p_BlitPattern;
237     uint32_t _p_BlitPatternDefault;
238     uint32_t _p_DrawLine;
239     uint32_t _p_DrawLineDefault;
240     uint32_t _p_BlitRectNoMaskComplete;
241     uint32_t _p_BlitRectNoMaskCompleteDefault;
242     uint32_t _p_BlitPlanar2Direct;
243     uint32_t _p_BlitPlanar2DirectDefault;
244     uint32_t _p_EnableSoftSprite;
245     uint32_t _p_EnableSoftSpriteDefault;
246     uint32_t _p_AllocCardMemAbs;
247     uint32_t _p_SetSplitPosition;
248     uint32_t _p_ReInitMemory;
249     uint32_t _p_Reserved2Default;
250     uint32_t _p_Reserved3;
251     uint32_t _p_Reserved3Default;
252
253     uint32_t _p_WriteYUVRect;
254     uint32_t _p_WriteYUVRectDefault;
255
256     uint32_t _p_GetVSyncState;
257     uint32_t _p_GetVBeamPos;
258     uint32_t _p_SetDPMSLevel;
259     uint32_t _p_ResetChip;
260     uint32_t _p_GetFeatureAttrs;
261
262     uint32_t _p_AllocBitMap;
263     uint32_t _p_FreeBitMap;
264     uint32_t _p_GetBitMapAttr;
265     uint32_t _p_SetSprite;
266     uint32_t _p_SetSpritePosition;
267     uint32_t _p_SetSpriteImage;
268     uint32_t _p_SetSpriteColor;
269     uint32_t _p_CreateFeature;
270     uint32_t _p_SetFeatureAttrs;
271     uint32_t _p_DeleteFeature;
272     struct MinList_placeholder SpecialFeatures;
273
274     uint32_t _p_ModeInfo;
275     uint32_t RGBFormat;
276     int16_t XOffset;
277     int16_t YOffset;
278     uint8_t Depth;
279     uint8_t ClearMask;
280     uint16_t Border;
281     uint32_t Mask;
282     uint8_t CLUT[256 * 3];
283
284     uint32_t _p_ViewPort;
285     uint32_t _p_VisibleBitMap;
286     uint32_t _p_BitMapExtra;
287     struct MinList_placeholder BitMapList;
288     struct MinList_placeholder MemList;
289
290     int16_t MouseX;
291     int16_t MouseY;
292     uint8_t MouseWidth;
293     uint8_t MouseHeight;
294     uint8_t MouseXOffset;
295     uint8_t MouseYOffset;
296     uint32_t _p_MouseImage;
297     uint8_t MousePens[4];
298     struct P96Rectangle MouseRect;
299     uint32_t _p_MouseChunky;
300     uint32_t _p_MouseRendered;
301     uint32_t _p_MouseSaveBuffer;
302
303     uint32_t ChipData[16];
304     uint32_t CardData[16];
305
306     uint32_t _p_MemorySpaceBase;
307     uint32_t MemorySpaceSize;
308
309     uint32_t _p_DoubleBufferList;
310
311     struct timeval_placeholder SyncTime;
312     uint32_t SyncPeriod;
313     struct MsgPort_placeholder SoftVBlankPort;
314
315     struct MinList_placeholder WaitQ;
316     
317     int32_t EssentialFormats;
318     uint32_t _p_MouseImageBuffer;
319
320     uint32_t _p_backViewPort;
321     uint32_t _p_backBitMap;
322     uint32_t _p_backExtra;
323     int16_t YSplit;
324     uint32_t MaxPlanarMemory;
325     uint32_t MaxBMWidth;
326     uint32_t MaxBMHeight;
327 };