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