Initial revision
[AROS-Contrib.git] / development / compilers / freepascal / rtl / aros / graphics.pas
blob615b35b446074aed97bceca0d400f936a5676618
2 This file is part of the Free Pascal run time library.
4 A file in Amiga system run time library.
5 Copyright (c) 1998 by Nils Sjoholm
6 member of the Amiga RTL development team.
8 See the file COPYING.FPC, included in this distribution,
9 for details about the copyright.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 **********************************************************************}
17 unit graphics;
19 INTERFACE
21 uses exec, hardware, utility;
24 const
26 BITSET = $8000;
27 BITCLR = 0;
29 type
32 pRectangle = ^tRectangle;
33 tRectangle = record
34 MinX,MinY : Word;
35 MaxX,MaxY : Word;
36 end;
38 pRect32 = ^tRect32;
39 tRect32 = record
40 MinX,MinY : Longint;
41 MaxX,MaxY : Longint;
42 end;
44 pPoint = ^tPoint;
45 tPoint = record
46 x,y : Word;
47 end;
49 PLANEPTR = Pointer;
51 pBitMap = ^tBitMap;
52 tBitMap = record
53 BytesPerRow : Word;
54 Rows : Word;
55 Flags : Byte;
56 Depth : Byte;
57 pad : Word;
58 Planes : Array [0..7] of PLANEPTR;
59 end;
60 {* flags for AllocBitMap, etc. *}
61 const
62 BMB_CLEAR = 0;
63 BMB_DISPLAYABLE = 1;
64 BMB_INTERLEAVED = 2;
65 BMB_STANDARD = 3;
66 BMB_MINPLANES = 4;
68 BMF_CLEAR = (1 shl BMB_CLEAR);
69 BMF_DISPLAYABLE = (1 shl BMB_DISPLAYABLE);
70 BMF_INTERLEAVED = (1 shl BMB_INTERLEAVED);
71 BMF_STANDARD = (1 shl BMB_STANDARD);
72 BMF_MINPLANES = (1 shl BMB_MINPLANES);
74 {* the following are for GetBitMapAttr() *}
75 BMA_HEIGHT = 0;
76 BMA_DEPTH = 4;
77 BMA_WIDTH = 8;
78 BMA_FLAGS = 12;
81 { structures used by and constructed by windowlib.a }
82 { understood by rom software }
83 type
84 pClipRect = ^tClipRect;
85 tClipRect = record
86 Next : pClipRect; { roms used to find next ClipRect }
87 prev : pClipRect; { ignored by roms, used by windowlib }
88 lobs : Pointer; { ignored by roms, used by windowlib (LayerPtr)}
89 BitMap : pBitMap;
90 bounds : tRectangle; { set up by windowlib, used by roms }
91 _p1,
92 _p2 : Pointer; { system reserved }
93 reserved : Longint; { system use }
94 Flags : Longint; { only exists in layer allocation }
95 end;
97 pLayer = ^tLayer;
98 tLayer = record
99 front,
100 back : pLayer; { ignored by roms }
101 ClipRect : pClipRect; { read by roms to find first cliprect }
102 rp : Pointer; { (RastPortPtr) ignored by roms, I hope }
103 bounds : tRectangle; { ignored by roms }
104 reserved : Array [0..3] of Byte;
105 priority : Word; { system use only }
106 Flags : Word; { obscured ?, Virtual BitMap? }
107 SuperBitMap : pBitMap;
108 SuperClipRect : pClipRect; { super bitmap cliprects if
109 VBitMap != 0}
110 { else damage cliprect list for refresh }
111 Window : Pointer; { reserved for user interface use }
112 Scroll_X,
113 Scroll_Y : Word;
115 cr2,
116 crnew : pClipRect; { used by dedice }
117 SuperSaveClipRects : pClipRect; { preallocated cr's }
118 cliprects : pClipRect; { system use during refresh }
119 LayerInfo : Pointer; { points to head of the list }
120 Lock : tSignalSemaphore;
121 BackFill : pHook;
122 reserved1 : ULONG;
123 ClipRegion : Pointer;
124 saveClipRects : Pointer; { used to back out when in trouble}
125 Width,
126 Height : Integer;
127 reserved2 : Array [0..17] of Byte;
128 { this must stay here }
129 DamageList : Pointer; { list of rectangles to refresh
130 through }
131 end;
133 const
135 { internal cliprect flags }
137 CR_NEEDS_NO_CONCEALED_RASTERS = 1;
138 CR_NEEDS_NO_LAYERBLIT_DAMAGE = 2;
141 { defines for code values for getcode }
143 ISLESSX = 1;
144 ISLESSY = 2;
145 ISGRTRX = 4;
146 ISGRTRY = 8;
149 {------ Font Styles ------------------------------------------------}
151 FS_NORMAL = 0; { normal text (no style bits set) }
152 FSB_EXTENDED = 3; { extended face (wider than normal) }
153 FSF_EXTENDED = 8;
154 FSB_ITALIC = 2; { italic (slanted 1:2 right) }
155 FSF_ITALIC = 4;
156 FSB_BOLD = 1; { bold face text (ORed w/ shifted) }
157 FSF_BOLD = 2;
158 FSB_UNDERLINED = 0; { underlined (under baseline) }
159 FSF_UNDERLINED = 1;
161 FSB_COLORFONT = 6; { this uses ColorTextFont structure }
162 FSF_COLORFONT = $40;
163 FSB_TAGGED = 7; { the TextAttr is really an TTextAttr, }
164 FSF_TAGGED = $80;
167 {------ Font Flags -------------------------------------------------}
168 FPB_ROMFONT = 0; { font is in rom }
169 FPF_ROMFONT = 1;
170 FPB_DISKFONT = 1; { font is from diskfont.library }
171 FPF_DISKFONT = 2;
172 FPB_REVPATH = 2; { designed path is reversed (e.g. left) }
173 FPF_REVPATH = 4;
174 FPB_TALLDOT = 3; { designed for hires non-interlaced }
175 FPF_TALLDOT = 8;
176 FPB_WIDEDOT = 4; { designed for lores interlaced }
177 FPF_WIDEDOT = 16;
178 FPB_PROPORTIONAL = 5; { character sizes can vary from nominal }
179 FPF_PROPORTIONAL = 32;
180 FPB_DESIGNED = 6; { size is "designed", not constructed }
181 FPF_DESIGNED = 64;
182 FPB_REMOVED = 7; { the font has been removed }
183 FPF_REMOVED = 128;
185 {***** TextAttr node, matches text attributes in RastPort *********}
187 type
189 pTextAttr = ^tTextAttr;
190 tTextAttr = record
191 ta_Name : STRPTR; { name of the font }
192 ta_YSize : Word; { height of the font }
193 ta_Style : Byte; { intrinsic font style }
194 ta_Flags : Byte; { font preferences and flags }
195 end;
197 pTTextAttr = ^tTTextAttr;
198 tTTextAttr = record
199 tta_Name : STRPTR; { name of the font }
200 tta_YSize : Word; { height of the font }
201 tta_Style : Byte; { intrinsic font style }
202 tta_Flags : Byte; { font preferences AND flags }
203 tta_Tags : pTagItem; { extended attributes }
204 end;
206 {***** Text Tags **************************************************}
207 CONST
208 TA_DeviceDPI = (1+TAG_USER); { Tag value is Point union: }
209 { Hi Longint XDPI, Lo Longint YDPI }
211 MAXFONTMATCHWEIGHT = 32767; { perfect match from WeighTAMatch }
215 {***** TextFonts node *********************************************}
216 Type
218 pTextFont = ^tTextFont;
219 tTextFont = record
220 tf_Message : tMessage; { reply message for font removal }
221 { font name in LN \ used in this }
222 tf_YSize : Word; { font height | order to best }
223 tf_Style : Byte; { font style | match a font }
224 tf_Flags : Byte; { preferences and flags / request. }
225 tf_XSize : Word; { nominal font width }
226 tf_Baseline : Word; { distance from the top of char to baseline }
227 tf_BoldSmear : Word; { smear to affect a bold enhancement }
229 tf_Accessors : Word; { access count }
231 tf_LoChar : Byte; { the first character described here }
232 tf_HiChar : Byte; { the last character described here }
233 tf_CharData : Pointer; { the bit character data }
235 tf_Modulo : Word; { the row modulo for the strike font data }
236 tf_CharLoc : Pointer; { ptr to location data for the strike font }
237 { 2 words: bit offset then size }
238 tf_CharSpace : Pointer; { ptr to words of proportional spacing data }
239 tf_CharKern : Pointer; { ptr to words of kerning data }
240 end;
243 {----- tfe_Flags0 (partial definition) ----------------------------}
244 CONST
245 TE0B_NOREMFONT = 0; { disallow RemFont for this font }
246 TE0F_NOREMFONT = $01;
248 Type
250 pTextFontExtension = ^tTextFontExtension;
251 tTextFontExtension = record { this structure is read-only }
252 tfe_MatchWord : Word; { a magic cookie for the extension }
253 tfe_Flags0 : Byte; { (system private flags) }
254 tfe_Flags1 : Byte; { (system private flags) }
255 tfe_BackPtr : pTextFont; { validation of compilation }
256 tfe_OrigReplyPort : pMsgPort; { original value in tf_Extension }
257 tfe_Tags : pTagItem; { Text Tags for the font }
258 tfe_OFontPatchS, { (system private use) }
259 tfe_OFontPatchK : Pointer; { (system private use) }
260 { this space is reserved for future expansion }
261 END;
263 {***** ColorTextFont node *****************************************}
264 {----- ctf_Flags --------------------------------------------------}
265 CONST
266 CT_COLORMASK = $000F; { mask to get to following color styles }
267 CT_COLORFONT = $0001; { color map contains designer's colors }
268 CT_GREYFONT = $0002; { color map describes even-stepped }
269 { brightnesses from low to high }
270 CT_ANTIALIAS = $0004; { zero background thru fully saturated char }
272 CTB_MAPCOLOR = 0; { map ctf_FgColor to the rp_FgPen IF it's }
273 CTF_MAPCOLOR = $0001; { is a valid color within ctf_Low..ctf_High }
275 {----- ColorFontColors --------------------------------------------}
276 Type
277 pColorFontColors = ^tColorFontColors;
278 tColorFontColors = record
279 cfc_Reserved, { *must* be zero }
280 cfc_Count : Word; { number of entries in cfc_ColorTable }
281 cfc_ColorTable : Pointer; { 4 bit per component color map packed xRGB }
282 END;
284 {----- ColorTextFont ----------------------------------------------}
286 pColorTextFont = ^tColorTextFont;
287 tColorTextFont = record
288 ctf_TF : tTextFont;
289 ctf_Flags : Word; { extended flags }
290 ctf_Depth, { number of bit planes }
291 ctf_FgColor, { color that is remapped to FgPen }
292 ctf_Low, { lowest color represented here }
293 ctf_High, { highest color represented here }
294 ctf_PlanePick, { PlanePick ala Images }
295 ctf_PlaneOnOff : Byte; { PlaneOnOff ala Images }
296 ctf_ColorFontColors : pColorFontColors; { colors for font }
297 ctf_CharData : Array[0..7] of APTR; {pointers to bit planes ala tf_CharData }
298 END;
300 {***** TextExtent node ********************************************}
302 pTextExtent = ^tTextExtent;
303 tTextExtent = record
304 te_Width, { same as TextLength }
305 te_Height : Word; { same as tf_YSize }
306 te_Extent : tRectangle; { relative to CP }
307 END;
310 const
312 COPPER_MOVE = 0; { pseude opcode for move #XXXX,dir }
313 COPPER_WAIT = 1; { pseudo opcode for wait y,x }
314 CPRNXTBUF = 2; { continue processing with next buffer }
315 CPR_NT_LOF = $8000; { copper instruction only for Longint frames }
316 CPR_NT_SHT = $4000; { copper instruction only for long frames }
317 CPR_NT_SYS = $2000; { copper user instruction only }
318 type
320 { Note: The combination VWaitAddr and HWaitAddr replace a three way
321 union in C. The three possibilities are:
323 nxtList : CopListPtr; or
325 VWaitPos : Longint;
326 HWaitPos : Longint; or
328 DestAddr : Longint;
329 DestData : Longint;
332 pCopIns = ^tCopIns;
333 tCopIns = record
334 OpCode : Integer; { 0 = move, 1 = wait }
335 VWaitAddr : Integer; { vertical or horizontal wait position }
336 HWaitData : Integer; { destination Pointer or data to send }
337 end;
339 { structure of cprlist that points to list that hardware actually executes }
341 pcprlist = ^tcprlist;
342 tcprlist = record
343 Next : pcprlist;
344 start : pInteger; { start of copper list }
345 MaxCount : Integer; { number of long instructions }
346 end;
348 pCopList = ^tCopList;
349 tCopList = record
350 Next : pCopList; { next block for this copper list }
351 CopList : pCopList; { system use }
352 ViewPort : Pointer; { system use }
353 CopIns : pCopIns; { start of this block }
354 CopPtr : pCopIns; { intermediate ptr }
355 CopLStart : pInteger; { mrgcop fills this in for Long Frame}
356 CopSStart : pInteger; { mrgcop fills this in for Longint Frame}
357 Count : Integer; { intermediate counter }
358 MaxCount : Integer; { max # of copins for this block }
359 DyOffset : Integer; { offset this copper list vertical waits }
360 SLRepeat : Word;
361 Flags : Word;
362 end;
364 pUCopList = ^tUCopList;
365 tUCopList = record
366 Next : pUCopList;
367 FirstCopList : pCopList; { head node of this copper list }
368 CopList : pCopList; { node in use }
369 end;
371 pcopinit = ^tcopinit;
372 tcopinit = record
373 vsync_hblank : array [0..1] of word;
374 diagstrt : Array [0..11] of word;
375 fm0 : array [0..1] of word;
376 diwstart : array [0..9] of word;
377 bplcon2 : array [0..1] of word;
378 sprfix : array [0..(2*8)] of word;
379 sprstrtup : Array [0..(2*8*2)] of Word;
380 wait14 : array [0..1] of word;
381 norm_hblank : array [0..1] of word;
382 jump : array [0..1] of word;
383 wait_forever : array [0..5] of word;
384 sprstop : Array [0..7] of Word;
385 end;
389 pAreaInfo = ^tAreaInfo;
390 tAreaInfo = record
391 VctrTbl : Pointer; { ptr to start of vector table }
392 VctrPtr : Pointer; { ptr to current vertex }
393 FlagTbl : Pointer; { ptr to start of vector flag table }
394 FlagPtr : Pointer; { ptrs to areafill flags }
395 Count : Integer; { number of vertices in list }
396 MaxCount : Integer; { AreaMove/Draw will not allow Count>MaxCount}
397 FirstX,
398 FirstY : Integer; { first point for this polygon }
399 end;
401 pTmpRas = ^tTmpRas;
402 tTmpRas = record
403 RasPtr : Pointer;
404 Size : Longint;
405 end;
407 { unoptimized for 32bit alignment of pointers }
409 pGelsInfo = ^tGelsInfo;
410 tGelsInfo = record
411 sprRsrvd : Shortint; { flag of which sprites to reserve from
412 vsprite system }
413 Flags : Byte; { system use }
414 gelHead,
415 gelTail : Pointer; { (VSpritePtr) dummy vSprites for list management}
417 { pointer to array of 8 WORDS for sprite available lines }
419 nextLine : Pointer;
421 { pointer to array of 8 pointers for color-last-assigned to vSprites }
423 lastColor : Pointer;
424 collHandler : Pointer; { (collTablePtr) Pointeres of collision routines }
425 leftmost,
426 rightmost,
427 topmost,
428 bottommost : Integer;
429 firstBlissObj,
430 lastBlissObj : Pointer; { system use only }
431 end;
433 pRastPort = ^tRastPort;
434 tRastPort = record
435 Layer : pLayer; { LayerPtr }
436 BitMap : pBitMap; { BitMapPtr }
437 AreaPtrn : Pointer; { ptr to areafill pattern }
438 TmpRas : pTmpRas;
439 AreaInfo : pAreaInfo;
440 GelsInfo : pGelsInfo;
441 Mask : Byte; { write mask for this raster }
442 FgPen : Shortint; { foreground pen for this raster }
443 BgPen : Shortint; { background pen }
444 AOlPen : Shortint; { areafill outline pen }
445 DrawMode : Shortint; { drawing mode for fill, lines, and text }
446 AreaPtSz : Shortint; { 2^n words for areafill pattern }
447 linpatcnt : Shortint; { current line drawing pattern preshift }
448 dummy : Shortint;
449 Flags : Word; { miscellaneous control bits }
450 LinePtrn : Word; { 16 bits for textured lines }
451 cp_x,
452 cp_y : Integer; { current pen position }
453 minterms : Array [0..7] of Byte;
454 PenWidth : Integer;
455 PenHeight : Integer;
456 Font : pTextFont; { (TextFontPtr) current font Pointer }
457 AlgoStyle : Byte; { the algorithmically generated style }
458 TxFlags : Byte; { text specific flags }
459 TxHeight : Word; { text height }
460 TxWidth : Word; { text nominal width }
461 TxBaseline : Word; { text baseline }
462 TxSpacing : Integer; { text spacing (per character) }
463 RP_User : Pointer;
464 longreserved : Array [0..1] of ULONG;
465 wordreserved : Array [0..6] of Word; { used to be a node }
466 reserved : Array [0..7] of Byte; { for future use }
467 end;
469 const
471 { drawing modes }
473 JAM1 = 0; { jam 1 color into raster }
474 JAM2 = 1; { jam 2 colors into raster }
475 COMPLEMENT = 2; { XOR bits into raster }
476 INVERSVID = 4; { inverse video for drawing modes }
478 { these are the flag bits for RastPort flags }
480 FRST_DOT = $01; { draw the first dot of this line ? }
481 ONE_DOT = $02; { use one dot mode for drawing lines }
482 DBUFFER = $04; { flag set when RastPorts are double-buffered }
484 { only used for bobs }
486 AREAOUTLINE = $08; { used by areafiller }
487 NOCROSSFILL = $20; { areafills have no crossovers }
489 { there is only one style of clipping: raster clipping }
490 { this preserves the continuity of jaggies regardless of clip window }
491 { When drawing into a RastPort, if the ptr to ClipRect is nil then there }
492 { is no clipping done, this is dangerous but useful for speed }
495 Const
496 CleanUp = $40;
497 CleanMe = CleanUp;
499 BltClearWait = 1; { Waits for blit to finish }
500 BltClearXY = 2; { Use Row/Bytes per row method }
502 { Useful minterms }
504 StraightCopy = $C0; { Vanilla copy }
505 InvertAndCopy = $30; { Invert the source before copy }
506 InvertDest = $50; { Forget source, invert dest }
509 { mode coercion definitions }
511 const
512 { These flags are passed (in combination) to CoerceMode() to determine the
513 * type of coercion required.
516 { Ensure that the mode coerced to can display just as many colours as the
517 * ViewPort being coerced.
519 PRESERVE_COLORS = 1;
521 { Ensure that the mode coerced to is not interlaced. }
522 AVOID_FLICKER = 2;
524 { Coercion should ignore monitor compatibility issues. }
525 IGNORE_MCOMPAT = 4;
528 BIDTAG_COERCE = 1; { Private }
530 const
532 { VSprite flags }
533 { user-set VSprite flags: }
535 SUSERFLAGS = $00FF; { mask of all user-settable VSprite-flags }
536 VSPRITE_f = $0001; { set if VSprite, clear if Bob }
537 { VSPRITE had to be changed for name conflict }
538 SAVEBACK = $0002; { set if background is to be saved/restored }
539 OVERLAY = $0004; { set to mask image of Bob onto background }
540 MUSTDRAW = $0008; { set if VSprite absolutely must be drawn }
542 { system-set VSprite flags: }
544 BACKSAVED = $0100; { this Bob's background has been saved }
545 BOBUPDATE = $0200; { temporary flag, useless to outside world }
546 GELGONE = $0400; { set if gel is completely clipped (offscreen) }
547 VSOVERFLOW = $0800; { VSprite overflow (if MUSTDRAW set we draw!) }
549 { Bob flags }
550 { these are the user flag bits }
552 BUSERFLAGS = $00FF; { mask of all user-settable Bob-flags }
553 SAVEBOB = $0001; { set to not erase Bob }
554 BOBISCOMP = $0002; { set to identify Bob as AnimComp }
556 { these are the system flag bits }
558 BWAITING = $0100; { set while Bob is waiting on 'after' }
559 BDRAWN = $0200; { set when Bob is drawn this DrawG pass}
560 BOBSAWAY = $0400; { set to initiate removal of Bob }
561 BOBNIX = $0800; { set when Bob is completely removed }
562 SAVEPRESERVE = $1000; { for back-restore during double-buffer}
563 OUTSTEP = $2000; { for double-clearing if double-buffer }
565 { defines for the animation procedures }
567 ANFRACSIZE = 6;
568 ANIMHALF = $0020;
569 RINGTRIGGER = $0001;
572 { UserStuff definitions
573 * the user can define these to be a single variable or a sub-structure
574 * if undefined by the user, the system turns these into innocuous variables
575 * see the manual for a thorough definition of the UserStuff definitions
579 type
581 VUserStuff = Integer; { Sprite user stuff }
582 BUserStuff = Integer; { Bob user stuff }
583 AUserStuff = Integer; { AnimOb user stuff }
585 {********************** GEL STRUCTURES **********************************}
587 pVSprite = ^tVSprite;
588 tVSprite = record
590 { --------------------- SYSTEM VARIABLES ------------------------------- }
591 { GEL linked list forward/backward pointers sorted by y,x value }
593 NextVSprite : pVSprite;
594 PrevVSprite : pVSprite;
596 { GEL draw list constructed in the order the Bobs are actually drawn, then
597 * list is copied to clear list
598 * must be here in VSprite for system boundary detection
601 DrawPath : pVSprite; { pointer of overlay drawing }
602 ClearPath : pVSprite; { pointer for overlay clearing }
604 { the VSprite positions are defined in (y,x) order to make sorting
605 * sorting easier, since (y,x) as a long Longint
608 OldY, OldX : Integer; { previous position }
610 { --------------------- COMMON VARIABLES --------------------------------- }
612 Flags : Integer; { VSprite flags }
615 { --------------------- USER VARIABLES ----------------------------------- }
616 { the VSprite positions are defined in (y,x) order to make sorting
617 * sorting easier, since (y,x) as a long Longint
620 Y, X : Integer; { screen position }
622 Height : Integer;
623 Width : Integer; { number of words per row of image data }
624 Depth : Integer; { number of planes of data }
626 MeMask : Integer; { which types can collide with this VSprite}
627 HitMask : Integer; { which types this VSprite can collide with}
629 ImageData : Pointer; { pointer to VSprite image }
631 { borderLine is the one-dimensional logical OR of all
632 * the VSprite bits, used for fast collision detection of edge
635 BorderLine : Pointer; { logical OR of all VSprite bits }
636 CollMask : Pointer; { similar to above except this is a matrix }
638 { pointer to this VSprite's color definitions (not used by Bobs) }
640 SprColors : Pointer;
642 VSBob : Pointer; { (BobPtr) points home if this VSprite
643 is part of a Bob }
645 { planePick flag: set bit selects a plane from image, clear bit selects
646 * use of shadow mask for that plane
647 * OnOff flag: if using shadow mask to fill plane, this bit (corresponding
648 * to bit in planePick) describes whether to fill with 0's or 1's
649 * There are two uses for these flags:
650 * - if this is the VSprite of a Bob, these flags describe how the Bob
651 * is to be drawn into memory
652 * - if this is a simple VSprite and the user intends on setting the
653 * MUSTDRAW flag of the VSprite, these flags must be set too to describe
654 * which color registers the user wants for the image
657 PlanePick : Shortint;
658 PlaneOnOff : Shortint;
660 VUserExt : VUserStuff; { user definable: see note above }
661 end;
666 { dBufPacket defines the values needed to be saved across buffer to buffer
667 * when in double-buffer mode
670 pDBufPacket = ^tDBufPacket;
671 tDBufPacket = record
672 BufY,
673 BufX : Word; { save other buffers screen coordinates }
674 BufPath : pVSprite; { carry the draw path over the gap }
676 { these pointers must be filled in by the user }
677 { pointer to other buffer's background save buffer }
679 BufBuffer : Pointer;
680 end;
686 pBob = ^tBob;
687 tBob = record
688 { blitter-objects }
690 { --------------------- SYSTEM VARIABLES --------------------------------- }
692 { --------------------- COMMON VARIABLES --------------------------------- }
694 Flags : Integer; { general purpose flags (see definitions below) }
696 { --------------------- USER VARIABLES ----------------------------------- }
698 SaveBuffer : Pointer; { pointer to the buffer for background save }
700 { used by Bobs for "cookie-cutting" and multi-plane masking }
702 ImageShadow : Pointer;
704 { pointer to BOBs for sequenced drawing of Bobs
705 * for correct overlaying of multiple component animations
707 Before : pBob; { draw this Bob before Bob pointed to by before }
708 After : pBob; { draw this Bob after Bob pointed to by after }
710 BobVSprite : pVSprite; { this Bob's VSprite definition }
712 BobComp : Pointer; { (AnimCompPtr) pointer to this Bob's AnimComp def }
714 DBuffer : Pointer; { pointer to this Bob's dBuf packet }
716 BUserExt : BUserStuff; { Bob user extension }
717 end;
719 pAnimComp = ^tAnimComp;
720 tAnimComp = record
722 { --------------------- SYSTEM VARIABLES --------------------------------- }
724 { --------------------- COMMON VARIABLES --------------------------------- }
726 Flags : Integer; { AnimComp flags for system & user }
728 { timer defines how long to keep this component active:
729 * if set non-zero, timer decrements to zero then switches to nextSeq
730 * if set to zero, AnimComp never switches
733 Timer : Integer;
735 { --------------------- USER VARIABLES ----------------------------------- }
736 { initial value for timer when the AnimComp is activated by the system }
738 TimeSet : Integer;
740 { pointer to next and previous components of animation object }
742 NextComp : pAnimComp;
743 PrevComp : pAnimComp;
745 { pointer to component component definition of next image in sequence }
747 NextSeq : pAnimComp;
748 PrevSeq : pAnimComp;
750 AnimCRoutine : Pointer; { Pointer of special animation procedure }
752 YTrans : Integer; { initial y translation (if this is a component) }
753 XTrans : Integer; { initial x translation (if this is a component) }
755 HeadOb : Pointer; { AnimObPtr }
757 AnimBob : pBob;
758 end;
760 pAnimOb = ^tAnimOb;
761 tAnimOb = record
763 { --------------------- SYSTEM VARIABLES --------------------------------- }
765 NextOb,
766 PrevOb : pAnimOb;
768 { number of calls to Animate this AnimOb has endured }
770 Clock : Longint;
772 AnOldY,
773 AnOldX : Integer; { old y,x coordinates }
775 { --------------------- COMMON VARIABLES --------------------------------- }
777 AnY,
778 AnX : Integer; { y,x coordinates of the AnimOb }
780 { --------------------- USER VARIABLES ----------------------------------- }
782 YVel,
783 XVel : Integer; { velocities of this object }
784 YAccel,
785 XAccel : Integer; { accelerations of this object }
787 RingYTrans,
788 RingXTrans : Integer; { ring translation values }
790 AnimORoutine : Pointer; { Pointer of special animation
791 procedure }
793 HeadComp : pAnimComp; { pointer to first component }
795 AUserExt : AUserStuff; { AnimOb user extension }
796 end;
798 ppAnimOb = ^pAnimOb;
801 { ************************************************************************ }
803 const
805 B2NORM = 0;
806 B2SWAP = 1;
807 B2BOBBER = 2;
809 { ************************************************************************ }
811 type
813 { a structure to contain the 16 collision procedure addresses }
815 collTable = Array [0..15] of Pointer;
816 pcollTable = ^collTable;
818 const
820 { These bit descriptors are used by the GEL collide routines.
821 * These bits are set in the hitMask and meMask variables of
822 * a GEL to describe whether or not these types of collisions
823 * can affect the GEL. BNDRY_HIT is described further below;
824 * this bit is permanently assigned as the boundary-hit flag.
825 * The other bit GEL_HIT is meant only as a default to cover
826 * any GEL hitting any other; the user may redefine this bit.
829 BORDERHIT = 0;
831 { These bit descriptors are used by the GEL boundry hit routines.
832 * When the user's boundry-hit routine is called (via the argument
833 * set by a call to SetCollision) the first argument passed to
834 * the user's routine is the Pointer of the GEL involved in the
835 * boundry-hit, and the second argument has the appropriate bit(s)
836 * set to describe which boundry was surpassed
839 TOPHIT = 1;
840 BOTTOMHIT = 2;
841 LEFTHIT = 4;
842 RIGHTHIT = 8;
844 Type
845 pExtendedNode = ^tExtendedNode;
846 tExtendedNode = record
847 xln_Succ,
848 xln_Pred : pNode;
849 xln_Type : Byte;
850 xln_Pri : Shortint;
851 xln_Name : STRPTR;
852 xln_Subsystem : Byte;
853 xln_Subtype : Byte;
854 xln_Library : Longint;
855 xln_Init : Pointer;
856 END;
858 CONST
859 SS_GRAPHICS = $02;
861 VIEW_EXTRA_TYPE = 1;
862 VIEWPORT_EXTRA_TYPE = 2;
863 SPECIAL_MONITOR_TYPE = 3;
864 MONITOR_SPEC_TYPE = 4;
866 type
868 { structure used by AddTOFTask }
870 pIsrvstr = ^tIsrvstr;
871 tIsrvstr = record
872 is_Node : tNode;
873 Iptr : pIsrvstr; { passed to srvr by os }
874 code : Pointer;
875 ccode : Pointer;
876 Carg : Pointer;
877 end;
879 Type
880 pAnalogSignalInterval = ^tAnalogSignalInterval;
881 tAnalogSignalInterval = record
882 asi_Start,
883 asi_Stop : Word;
884 END;
886 pSpecialMonitor = ^tSpecialMonitor;
887 tSpecialMonitor = record
888 spm_Node : tExtendedNode;
889 spm_Flags : Word;
890 do_monitor,
891 reserved1,
892 reserved2,
893 reserved3 : Pointer;
894 hblank,
895 vblank,
896 hsync,
897 vsync : tAnalogSignalInterval;
898 END;
901 pMonitorSpec = ^tMonitorSpec;
902 tMonitorSpec = record
903 ms_Node : tExtendedNode;
904 ms_Flags : Word;
905 ratioh,
906 ratiov : Longint;
907 total_rows,
908 total_colorclocks,
909 DeniseMaxDisplayColumn,
910 BeamCon0,
911 min_row : Word;
912 ms_Special : pSpecialMonitor;
913 ms_OpenCount : Word;
914 ms_transform,
915 ms_translate,
916 ms_scale : Pointer;
917 ms_xoffset,
918 ms_yoffset : Word;
919 ms_LegalView : tRectangle;
920 ms_maxoscan, { maximum legal overscan }
921 ms_videoscan : Pointer; { video display overscan }
922 DeniseMinDisplayColumn : Word;
923 DisplayCompatible : ULONG;
924 DisplayInfoDataBase : tList;
925 DisplayInfoDataBaseSemaphore : tSignalSemaphore;
926 ms_MrgCop,
927 ms_LoadView,
928 ms_KillView : Longint;
929 END;
931 const
932 TO_MONITOR = 0;
933 FROM_MONITOR = 1;
934 STANDARD_XOFFSET = 9;
935 STANDARD_YOFFSET = 0;
937 MSB_REQUEST_NTSC = 0;
938 MSB_REQUEST_PAL = 1;
939 MSB_REQUEST_SPECIAL = 2;
940 MSB_REQUEST_A2024 = 3;
941 MSB_DOUBLE_SPRITES = 4;
942 MSF_REQUEST_NTSC = 1;
943 MSF_REQUEST_PAL = 2;
944 MSF_REQUEST_SPECIAL = 4;
945 MSF_REQUEST_A2024 = 8;
946 MSF_DOUBLE_SPRITES = 16;
949 { obsolete, v37 compatible definitions follow }
950 REQUEST_NTSC = 1;
951 REQUEST_PAL = 2;
952 REQUEST_SPECIAL = 4;
953 REQUEST_A2024 = 8;
955 DEFAULT_MONITOR_NAME : PChar = 'default.monitor';
956 NTSC_MONITOR_NAME : PChar = 'ntsc.monitor';
957 PAL_MONITOR_NAME : PChar = 'pal.monitor';
958 STANDARD_MONITOR_MASK = ( REQUEST_NTSC OR REQUEST_PAL ) ;
960 STANDARD_NTSC_ROWS = 262;
961 STANDARD_PAL_ROWS = 312;
962 STANDARD_COLORCLOCKS = 226;
963 STANDARD_DENISE_MAX = 455;
964 STANDARD_DENISE_MIN = 93 ;
965 STANDARD_NTSC_BEAMCON = $0000;
966 STANDARD_PAL_BEAMCON = DISPLAYPAL ;
968 SPECIAL_BEAMCON = ( VARVBLANK OR LOLDIS OR VARVSYNC OR VARHSYNC OR VARBEAM OR CSBLANK OR VSYNCTRUE);
970 MIN_NTSC_ROW = 21 ;
971 MIN_PAL_ROW = 29 ;
972 STANDARD_VIEW_X = $81 ;
973 STANDARD_VIEW_Y = $2C ;
974 STANDARD_HBSTRT = $06 ;
975 STANDARD_HSSTRT = $0B ;
976 STANDARD_HSSTOP = $1C ;
977 STANDARD_HBSTOP = $2C ;
978 STANDARD_VBSTRT = $0122;
979 STANDARD_VSSTRT = $02A6;
980 STANDARD_VSSTOP = $03AA;
981 STANDARD_VBSTOP = $1066;
983 VGA_COLORCLOCKS = (STANDARD_COLORCLOCKS/2);
984 VGA_TOTAL_ROWS = (STANDARD_NTSC_ROWS*2);
985 VGA_DENISE_MIN = 59 ;
986 MIN_VGA_ROW = 29 ;
987 VGA_HBSTRT = $08 ;
988 VGA_HSSTRT = $0E ;
989 VGA_HSSTOP = $1C ;
990 VGA_HBSTOP = $1E ;
991 VGA_VBSTRT = $0000;
992 VGA_VSSTRT = $0153;
993 VGA_VSSTOP = $0235;
994 VGA_VBSTOP = $0CCD;
996 VGA_MONITOR_NAME : PChar = 'vga.monitor';
998 { NOTE: VGA70 definitions are obsolete - a VGA70 monitor has never been
999 * implemented.
1001 VGA70_COLORCLOCKS = (STANDARD_COLORCLOCKS/2) ;
1002 VGA70_TOTAL_ROWS = 449;
1003 VGA70_DENISE_MIN = 59;
1004 MIN_VGA70_ROW = 35 ;
1005 VGA70_HBSTRT = $08 ;
1006 VGA70_HSSTRT = $0E ;
1007 VGA70_HSSTOP = $1C ;
1008 VGA70_HBSTOP = $1E ;
1009 VGA70_VBSTRT = $0000;
1010 VGA70_VSSTRT = $02A6;
1011 VGA70_VSSTOP = $0388;
1012 VGA70_VBSTOP = $0F73;
1014 VGA70_BEAMCON = (SPECIAL_BEAMCON XOR VSYNCTRUE);
1015 VGA70_MONITOR_NAME : PChar = 'vga70.monitor';
1017 BROADCAST_HBSTRT = $01 ;
1018 BROADCAST_HSSTRT = $06 ;
1019 BROADCAST_HSSTOP = $17 ;
1020 BROADCAST_HBSTOP = $27 ;
1021 BROADCAST_VBSTRT = $0000;
1022 BROADCAST_VSSTRT = $02A6;
1023 BROADCAST_VSSTOP = $054C;
1024 BROADCAST_VBSTOP = $1C40;
1025 BROADCAST_BEAMCON = ( LOLDIS OR CSBLANK );
1026 RATIO_FIXEDPART = 4;
1027 RATIO_UNITY = 16;
1031 Type
1032 pRasInfo = ^tRasInfo;
1033 tRasInfo = record { used by callers to and InitDspC() }
1034 Next : pRasInfo; { used for dualpf }
1035 BitMap : pBitMap;
1036 RxOffset,
1037 RyOffset : Integer; { scroll offsets in this BitMap }
1038 end;
1041 pView = ^tView;
1042 tView = record
1043 ViewPort : Pointer; { ViewPortPtr }
1044 LOFCprList : pcprlist; { used for interlaced and noninterlaced }
1045 SHFCprList : pcprlist; { only used during interlace }
1046 DyOffset,
1047 DxOffset : Integer; { for complete View positioning }
1048 { offsets are +- adjustments to standard #s }
1049 Modes : WORD; { such as INTERLACE, GENLOC }
1050 end;
1052 { these structures are obtained via GfxNew }
1053 { and disposed by GfxFree }
1054 Type
1055 pViewExtra = ^tViewExtra;
1056 tViewExtra = record
1057 n : tExtendedNode;
1058 View : pView; { backwards link } { view in C-Includes }
1059 Monitor : pMonitorSpec; { monitors for this view }
1060 TopLine : Word;
1061 END;
1064 pViewPort = ^tViewPort;
1065 tViewPort = record
1066 Next : pViewPort;
1067 ColorMap : Pointer; { table of colors for this viewport } { ColorMapPtr }
1068 { if this is nil, MakeVPort assumes default values }
1069 DspIns : pCopList; { user by MakeView() }
1070 SprIns : pCopList; { used by sprite stuff }
1071 ClrIns : pCopList; { used by sprite stuff }
1072 UCopIns : pUCopList; { User copper list }
1073 DWidth,
1074 DHeight : Integer;
1075 DxOffset,
1076 DyOffset : Integer;
1077 Modes : Word;
1078 SpritePriorities : Byte; { used by makevp }
1079 reserved : Byte;
1080 RasInfo : pRasInfo;
1081 end;
1084 { this structure is obtained via GfxNew }
1085 { and disposed by GfxFree }
1087 pViewPortExtra = ^tViewPortExtra;
1088 tViewPortExtra = record
1089 n : tExtendedNode;
1090 ViewPort : pViewPort; { backwards link } { ViewPort in C-Includes }
1091 DisplayClip : tRectangle; { makevp display clipping information }
1092 { These are added for V39 }
1093 VecTable : Pointer; { Private }
1094 DriverData : Array[0..1] of Pointer;
1095 Flags : WORD;
1096 Origin : Array[0..1] of tPoint; { First visible point relative to the DClip.
1097 * One for each possible playfield.
1099 cop1ptr, { private }
1100 cop2ptr : ULONG; { private }
1101 END;
1104 pColorMap = ^tColorMap;
1105 tColorMap = record
1106 Flags : Byte;
1107 CType : Byte; { This is "Type" in C includes }
1108 Count : Word;
1109 ColorTable : Pointer;
1110 cm_vpe : pViewPortExtra;
1111 LowColorBits : Pointer;
1112 TransparencyPlane,
1113 SpriteResolution,
1114 SpriteResDefault,
1115 AuxFlags : Byte;
1116 cm_vp : pViewPort; { ViewPortPtr }
1117 NormalDisplayInfo,
1118 CoerceDisplayInfo : Pointer;
1119 cm_batch_items : pTagItem;
1120 VPModeID : ULONG;
1121 PalExtra : Pointer;
1122 SpriteBase_Even,
1123 SpriteBase_Odd,
1124 Bp_0_base,
1125 Bp_1_base : Word;
1126 end;
1128 { if Type == 0 then ColorMap is V1.2/V1.3 compatible }
1129 { if Type != 0 then ColorMap is V36 compatible }
1130 { the system will never create other than V39 type colormaps when running V39 }
1132 CONST
1133 COLORMAP_TYPE_V1_2 = $00;
1134 COLORMAP_TYPE_V1_4 = $01;
1135 COLORMAP_TYPE_V36 = COLORMAP_TYPE_V1_4; { use this definition }
1136 COLORMAP_TYPE_V39 = $02;
1139 { Flags variable }
1140 COLORMAP_TRANSPARENCY = $01;
1141 COLORPLANE_TRANSPARENCY = $02;
1142 BORDER_BLANKING = $04;
1143 BORDER_NOTRANSPARENCY = $08;
1144 VIDEOCONTROL_BATCH = $10;
1145 USER_COPPER_CLIP = $20;
1148 CONST
1149 EXTEND_VSTRUCT = $1000; { unused bit in Modes field of View }
1152 { defines used for Modes in IVPargs }
1154 CONST
1155 GENLOCK_VIDEO = $0002;
1156 LACE = $0004;
1157 SUPERHIRES = $0020;
1158 PFBA = $0040;
1159 EXTRA_HALFBRITE= $0080;
1160 GENLOCK_AUDIO = $0100;
1161 DUALPF = $0400;
1162 HAM = $0800;
1163 EXTENDED_MODE = $1000;
1164 VP_HIDE = $2000;
1165 SPRITES = $4000;
1166 HIRES = $8000;
1168 VPF_A2024 = $40;
1169 VPF_AGNUS = $20;
1170 VPF_TENHZ = $20;
1172 BORDERSPRITES = $40;
1174 CMF_CMTRANS = 0;
1175 CMF_CPTRANS = 1;
1176 CMF_BRDRBLNK = 2;
1177 CMF_BRDNTRAN = 3;
1178 CMF_BRDRSPRT = 6;
1180 SPRITERESN_ECS = 0;
1181 { ^140ns, except in 35ns viewport, where it is 70ns. }
1182 SPRITERESN_140NS = 1;
1183 SPRITERESN_70NS = 2;
1184 SPRITERESN_35NS = 3;
1185 SPRITERESN_DEFAULT = -1;
1187 { AuxFlags : }
1188 CMAB_FULLPALETTE = 0;
1189 CMAF_FULLPALETTE = 1;
1190 CMAB_NO_INTERMED_UPDATE = 1;
1191 CMAF_NO_INTERMED_UPDATE = 2;
1192 CMAB_NO_COLOR_LOAD = 2;
1193 CMAF_NO_COLOR_LOAD = 4;
1194 CMAB_DUALPF_DISABLE = 3;
1195 CMAF_DUALPF_DISABLE = 8;
1197 Type
1198 pPaletteExtra = ^tPaletteExtra;
1199 tPaletteExtra = record { structure may be extended so watch out! }
1200 pe_Semaphore : tSignalSemaphore; { shared semaphore for arbitration }
1201 pe_FirstFree, { *private* }
1202 pe_NFree, { number of free colors }
1203 pe_FirstShared, { *private* }
1204 pe_NShared : WORD; { *private* }
1205 pe_RefCnt : Pointer; { *private* }
1206 pe_AllocList : Pointer; { *private* }
1207 pe_ViewPort : pViewPort; { back pointer to viewport }
1208 pe_SharableColors : WORD; { the number of sharable colors. }
1209 end;
1210 { flags values for ObtainPen }
1211 Const
1212 PENB_EXCLUSIVE = 0;
1213 PENB_NO_SETCOLOR = 1;
1215 PENF_EXCLUSIVE = 1;
1216 PENF_NO_SETCOLOR = 2;
1218 { obsolete names for PENF_xxx flags: }
1220 PEN_EXCLUSIVE = PENF_EXCLUSIVE;
1221 PEN_NO_SETCOLOR = PENF_NO_SETCOLOR;
1223 { precision values for ObtainBestPen : }
1225 PRECISION_EXACT = -1;
1226 PRECISION_IMAGE = 0;
1227 PRECISION_ICON = 16;
1228 PRECISION_GUI = 32;
1231 { tags for ObtainBestPen: }
1232 OBP_Precision = $84000000;
1233 OBP_FailIfBad = $84000001;
1235 { From V39, MakeVPort() will return an error if there is not enough memory,
1236 * or the requested mode cannot be opened with the requested depth with the
1237 * given bitmap (for higher bandwidth alignments).
1240 MVP_OK = 0; { you want to see this one }
1241 MVP_NO_MEM = 1; { insufficient memory for intermediate workspace }
1242 MVP_NO_VPE = 2; { ViewPort does not have a ViewPortExtra, and
1243 * insufficient memory to allocate a temporary one.
1245 MVP_NO_DSPINS = 3; { insufficient memory for intermidiate copper
1246 * instructions.
1248 MVP_NO_DISPLAY = 4; { BitMap data is misaligned for this viewport's
1249 * mode and depth - see AllocBitMap().
1251 MVP_OFF_BOTTOM = 5; { PRIVATE - you will never see this. }
1253 { From V39, MrgCop() will return an error if there is not enough memory,
1254 * or for some reason MrgCop() did not need to make any copper lists.
1257 MCOP_OK = 0; { you want to see this one }
1258 MCOP_NO_MEM = 1; { insufficient memory to allocate the system
1259 * copper lists.
1261 MCOP_NOP = 2; { MrgCop() did not merge any copper lists
1262 * (eg, no ViewPorts in the list, or all marked as
1263 * hidden).
1265 Type
1266 pDBufInfo = ^tDBufInfo;
1267 tDBufInfo = record
1268 dbi_Link1 : Pointer;
1269 dbi_Count1 : ULONG;
1270 dbi_SafeMessage : tMessage; { replied to when safe to write to old bitmap }
1271 dbi_UserData1 : Pointer; { first user data }
1273 dbi_Link2 : Pointer;
1274 dbi_Count2 : ULONG;
1275 dbi_DispMessage : tMessage; { replied to when new bitmap has been displayed at least
1276 once }
1277 dbi_UserData2 : Pointer; { second user data }
1278 dbi_MatchLong : ULONG;
1279 dbi_CopPtr1,
1280 dbi_CopPtr2,
1281 dbi_CopPtr3 : Pointer;
1282 dbi_BeamPos1,
1283 dbi_BeamPos2 : WORD;
1284 end;
1288 { include define file for graphics display mode IDs. }
1291 const
1293 INVALID_ID = NOT 0;
1295 { With all the new modes that are available under V38 and V39, it is highly
1296 * recommended that you use either the asl.library screenmode requester,
1297 * and/or the V39 graphics.library function BestModeIDA().
1299 * DO NOT interpret the any of the bits in the ModeID for its meaning. For
1300 * example, do not interpret bit 3 ($4) as meaning the ModeID is interlaced.
1301 * Instead, use GetDisplayInfoData() with DTAG_DISP, and examine the DIPF_...
1302 * flags to determine a ModeID's characteristics. The only exception to
1303 * this rule is that bit 7 ($80) will always mean the ModeID is
1304 * ExtraHalfBright, and bit 11 ($800) will always mean the ModeID is HAM.
1307 { normal identifiers }
1309 MONITOR_ID_MASK = $FFFF1000;
1311 DEFAULT_MONITOR_ID = $00000000;
1312 NTSC_MONITOR_ID = $00011000;
1313 PAL_MONITOR_ID = $00021000;
1315 { the following 22 composite keys are for Modes on the default Monitor.
1316 * NTSC & PAL "flavors" of these particular keys may be made by or'ing
1317 * the NTSC or PAL MONITOR_ID with the desired MODE_KEY...
1319 * For example, to specifically open a PAL HAM interlaced ViewPort
1320 * (or intuition screen), you would use the modeid of
1321 * (PAL_MONITOR_ID OR HAMLACE_KEY)
1324 LORES_KEY = $00000000;
1325 HIRES_KEY = $00008000;
1326 SUPER_KEY = $00008020;
1327 HAM_KEY = $00000800;
1328 LORESLACE_KEY = $00000004;
1329 HIRESLACE_KEY = $00008004;
1330 SUPERLACE_KEY = $00008024;
1331 HAMLACE_KEY = $00000804;
1332 LORESDPF_KEY = $00000400;
1333 HIRESDPF_KEY = $00008400;
1334 SUPERDPF_KEY = $00008420;
1335 LORESLACEDPF_KEY = $00000404;
1336 HIRESLACEDPF_KEY = $00008404;
1337 SUPERLACEDPF_KEY = $00008424;
1338 LORESDPF2_KEY = $00000440;
1339 HIRESDPF2_KEY = $00008440;
1340 SUPERDPF2_KEY = $00008460;
1341 LORESLACEDPF2_KEY = $00000444;
1342 HIRESLACEDPF2_KEY = $00008444;
1343 SUPERLACEDPF2_KEY = $00008464;
1344 EXTRAHALFBRITE_KEY = $00000080;
1345 EXTRAHALFBRITELACE_KEY = $00000084;
1346 { New for AA ChipSet (V39) }
1347 HIRESHAM_KEY = $00008800;
1348 SUPERHAM_KEY = $00008820;
1349 HIRESEHB_KEY = $00008080;
1350 SUPEREHB_KEY = $000080a0;
1351 HIRESHAMLACE_KEY = $00008804;
1352 SUPERHAMLACE_KEY = $00008824;
1353 HIRESEHBLACE_KEY = $00008084;
1354 SUPEREHBLACE_KEY = $000080a4;
1355 { Added for V40 - may be useful modes for some games or animations. }
1356 LORESSDBL_KEY = $00000008;
1357 LORESHAMSDBL_KEY = $00000808;
1358 LORESEHBSDBL_KEY = $00000088;
1359 HIRESHAMSDBL_KEY = $00008808;
1362 { VGA identifiers }
1364 VGA_MONITOR_ID = $00031000;
1366 VGAEXTRALORES_KEY = $00031004;
1367 VGALORES_KEY = $00039004;
1368 VGAPRODUCT_KEY = $00039024;
1369 VGAHAM_KEY = $00031804;
1370 VGAEXTRALORESLACE_KEY = $00031005;
1371 VGALORESLACE_KEY = $00039005;
1372 VGAPRODUCTLACE_KEY = $00039025;
1373 VGAHAMLACE_KEY = $00031805;
1374 VGAEXTRALORESDPF_KEY = $00031404;
1375 VGALORESDPF_KEY = $00039404;
1376 VGAPRODUCTDPF_KEY = $00039424;
1377 VGAEXTRALORESLACEDPF_KEY = $00031405;
1378 VGALORESLACEDPF_KEY = $00039405;
1379 VGAPRODUCTLACEDPF_KEY = $00039425;
1380 VGAEXTRALORESDPF2_KEY = $00031444;
1381 VGALORESDPF2_KEY = $00039444;
1382 VGAPRODUCTDPF2_KEY = $00039464;
1383 VGAEXTRALORESLACEDPF2_KEY = $00031445;
1384 VGALORESLACEDPF2_KEY = $00039445;
1385 VGAPRODUCTLACEDPF2_KEY = $00039465;
1386 VGAEXTRAHALFBRITE_KEY = $00031084;
1387 VGAEXTRAHALFBRITELACE_KEY = $00031085;
1388 { New for AA ChipSet (V39) }
1389 VGAPRODUCTHAM_KEY = $00039824;
1390 VGALORESHAM_KEY = $00039804;
1391 VGAEXTRALORESHAM_KEY = VGAHAM_KEY;
1392 VGAPRODUCTHAMLACE_KEY = $00039825;
1393 VGALORESHAMLACE_KEY = $00039805;
1394 VGAEXTRALORESHAMLACE_KEY = VGAHAMLACE_KEY;
1395 VGAEXTRALORESEHB_KEY = VGAEXTRAHALFBRITE_KEY;
1396 VGAEXTRALORESEHBLACE_KEY = VGAEXTRAHALFBRITELACE_KEY;
1397 VGALORESEHB_KEY = $00039084;
1398 VGALORESEHBLACE_KEY = $00039085;
1399 VGAEHB_KEY = $000390a4;
1400 VGAEHBLACE_KEY = $000390a5;
1401 { These ModeIDs are the scandoubled equivalents of the above, with the
1402 * exception of the DualPlayfield modes, as AA does not allow for scandoubling
1403 * dualplayfield.
1405 VGAEXTRALORESDBL_KEY = $00031000;
1406 VGALORESDBL_KEY = $00039000;
1407 VGAPRODUCTDBL_KEY = $00039020;
1408 VGAEXTRALORESHAMDBL_KEY = $00031800;
1409 VGALORESHAMDBL_KEY = $00039800;
1410 VGAPRODUCTHAMDBL_KEY = $00039820;
1411 VGAEXTRALORESEHBDBL_KEY = $00031080;
1412 VGALORESEHBDBL_KEY = $00039080;
1413 VGAPRODUCTEHBDBL_KEY = $000390a0;
1415 { a2024 identifiers }
1417 A2024_MONITOR_ID = $00041000;
1419 A2024TENHERTZ_KEY = $00041000;
1420 A2024FIFTEENHERTZ_KEY = $00049000;
1422 { prototype identifiers (private) }
1424 PROTO_MONITOR_ID = $00051000;
1427 { These monitors and modes were added for the V38 release. }
1429 EURO72_MONITOR_ID = $00061000;
1431 EURO72EXTRALORES_KEY = $00061004;
1432 EURO72LORES_KEY = $00069004;
1433 EURO72PRODUCT_KEY = $00069024;
1434 EURO72HAM_KEY = $00061804;
1435 EURO72EXTRALORESLACE_KEY = $00061005;
1436 EURO72LORESLACE_KEY = $00069005;
1437 EURO72PRODUCTLACE_KEY = $00069025;
1438 EURO72HAMLACE_KEY = $00061805;
1439 EURO72EXTRALORESDPF_KEY = $00061404;
1440 EURO72LORESDPF_KEY = $00069404;
1441 EURO72PRODUCTDPF_KEY = $00069424;
1442 EURO72EXTRALORESLACEDPF_KEY = $00061405;
1443 EURO72LORESLACEDPF_KEY = $00069405;
1444 EURO72PRODUCTLACEDPF_KEY = $00069425;
1445 EURO72EXTRALORESDPF2_KEY = $00061444;
1446 EURO72LORESDPF2_KEY = $00069444;
1447 EURO72PRODUCTDPF2_KEY = $00069464;
1448 EURO72EXTRALORESLACEDPF2_KEY = $00061445;
1449 EURO72LORESLACEDPF2_KEY = $00069445;
1450 EURO72PRODUCTLACEDPF2_KEY = $00069465;
1451 EURO72EXTRAHALFBRITE_KEY = $00061084;
1452 EURO72EXTRAHALFBRITELACE_KEY = $00061085;
1453 { New AA modes (V39) }
1454 EURO72PRODUCTHAM_KEY = $00069824;
1455 EURO72PRODUCTHAMLACE_KEY = $00069825;
1456 EURO72LORESHAM_KEY = $00069804;
1457 EURO72LORESHAMLACE_KEY = $00069805;
1458 EURO72EXTRALORESHAM_KEY = EURO72HAM_KEY;
1459 EURO72EXTRALORESHAMLACE_KEY = EURO72HAMLACE_KEY ;
1460 EURO72EXTRALORESEHB_KEY = EURO72EXTRAHALFBRITE_KEY;
1461 EURO72EXTRALORESEHBLACE_KEY = EURO72EXTRAHALFBRITELACE_KEY;
1462 EURO72LORESEHB_KEY = $00069084;
1463 EURO72LORESEHBLACE_KEY = $00069085;
1464 EURO72EHB_KEY = $000690a4;
1465 EURO72EHBLACE_KEY = $000690a5;
1466 { These ModeIDs are the scandoubled equivalents of the above, with the
1467 * exception of the DualPlayfield modes, as AA does not allow for scandoubling
1468 * dualplayfield.
1470 EURO72EXTRALORESDBL_KEY = $00061000;
1471 EURO72LORESDBL_KEY = $00069000;
1472 EURO72PRODUCTDBL_KEY = $00069020;
1473 EURO72EXTRALORESHAMDBL_KEY = $00061800;
1474 EURO72LORESHAMDBL_KEY = $00069800;
1475 EURO72PRODUCTHAMDBL_KEY = $00069820;
1476 EURO72EXTRALORESEHBDBL_KEY = $00061080;
1477 EURO72LORESEHBDBL_KEY = $00069080;
1478 EURO72PRODUCTEHBDBL_KEY = $000690a0;
1481 EURO36_MONITOR_ID = $00071000;
1483 { Euro36 modeids can be ORed with the default modeids a la NTSC and PAL.
1484 * For example, Euro36 SuperHires is
1485 * (EURO36_MONITOR_ID OR SUPER_KEY)
1488 SUPER72_MONITOR_ID = $00081000;
1490 { Super72 modeids can be ORed with the default modeids a la NTSC and PAL.
1491 * For example, Super72 SuperHiresLace (80$600) is
1492 * (SUPER72_MONITOR_ID OR SUPERLACE_KEY).
1493 * The following scandoubled Modes are the exception:
1495 SUPER72LORESDBL_KEY = $00081008;
1496 SUPER72HIRESDBL_KEY = $00089008;
1497 SUPER72SUPERDBL_KEY = $00089028;
1498 SUPER72LORESHAMDBL_KEY = $00081808;
1499 SUPER72HIRESHAMDBL_KEY = $00089808;
1500 SUPER72SUPERHAMDBL_KEY = $00089828;
1501 SUPER72LORESEHBDBL_KEY = $00081088;
1502 SUPER72HIRESEHBDBL_KEY = $00089088;
1503 SUPER72SUPEREHBDBL_KEY = $000890a8;
1506 { These monitors and modes were added for the V39 release. }
1508 DBLNTSC_MONITOR_ID = $00091000;
1510 DBLNTSCLORES_KEY = $00091000;
1511 DBLNTSCLORESFF_KEY = $00091004;
1512 DBLNTSCLORESHAM_KEY = $00091800;
1513 DBLNTSCLORESHAMFF_KEY = $00091804;
1514 DBLNTSCLORESEHB_KEY = $00091080;
1515 DBLNTSCLORESEHBFF_KEY = $00091084;
1516 DBLNTSCLORESLACE_KEY = $00091005;
1517 DBLNTSCLORESHAMLACE_KEY = $00091805;
1518 DBLNTSCLORESEHBLACE_KEY = $00091085;
1519 DBLNTSCLORESDPF_KEY = $00091400;
1520 DBLNTSCLORESDPFFF_KEY = $00091404;
1521 DBLNTSCLORESDPFLACE_KEY = $00091405;
1522 DBLNTSCLORESDPF2_KEY = $00091440;
1523 DBLNTSCLORESDPF2FF_KEY = $00091444;
1524 DBLNTSCLORESDPF2LACE_KEY = $00091445;
1525 DBLNTSCHIRES_KEY = $00099000;
1526 DBLNTSCHIRESFF_KEY = $00099004;
1527 DBLNTSCHIRESHAM_KEY = $00099800;
1528 DBLNTSCHIRESHAMFF_KEY = $00099804;
1529 DBLNTSCHIRESLACE_KEY = $00099005;
1530 DBLNTSCHIRESHAMLACE_KEY = $00099805;
1531 DBLNTSCHIRESEHB_KEY = $00099080;
1532 DBLNTSCHIRESEHBFF_KEY = $00099084;
1533 DBLNTSCHIRESEHBLACE_KEY = $00099085;
1534 DBLNTSCHIRESDPF_KEY = $00099400;
1535 DBLNTSCHIRESDPFFF_KEY = $00099404;
1536 DBLNTSCHIRESDPFLACE_KEY = $00099405;
1537 DBLNTSCHIRESDPF2_KEY = $00099440;
1538 DBLNTSCHIRESDPF2FF_KEY = $00099444;
1539 DBLNTSCHIRESDPF2LACE_KEY = $00099445;
1540 DBLNTSCEXTRALORES_KEY = $00091200;
1541 DBLNTSCEXTRALORESHAM_KEY = $00091a00;
1542 DBLNTSCEXTRALORESEHB_KEY = $00091280;
1543 DBLNTSCEXTRALORESDPF_KEY = $00091600;
1544 DBLNTSCEXTRALORESDPF2_KEY = $00091640;
1545 DBLNTSCEXTRALORESFF_KEY = $00091204;
1546 DBLNTSCEXTRALORESHAMFF_KEY = $00091a04;
1547 DBLNTSCEXTRALORESEHBFF_KEY = $00091284;
1548 DBLNTSCEXTRALORESDPFFF_KEY = $00091604;
1549 DBLNTSCEXTRALORESDPF2FF_KEY = $00091644;
1550 DBLNTSCEXTRALORESLACE_KEY = $00091205;
1551 DBLNTSCEXTRALORESHAMLACE_KEY = $00091a05;
1552 DBLNTSCEXTRALORESEHBLACE_KEY = $00091285;
1553 DBLNTSCEXTRALORESDPFLACE_KEY = $00091605;
1554 DBLNTSCEXTRALORESDPF2LACE_KEY = $00091645;
1556 DBLPAL_MONITOR_ID = $000a1000;
1558 DBLPALLORES_KEY = $000a1000;
1559 DBLPALLORESFF_KEY = $000a1004;
1560 DBLPALLORESHAM_KEY = $000a1800;
1561 DBLPALLORESHAMFF_KEY = $000a1804;
1562 DBLPALLORESEHB_KEY = $000a1080;
1563 DBLPALLORESEHBFF_KEY = $000a1084;
1564 DBLPALLORESLACE_KEY = $000a1005;
1565 DBLPALLORESHAMLACE_KEY = $000a1805;
1566 DBLPALLORESEHBLACE_KEY = $000a1085;
1567 DBLPALLORESDPF_KEY = $000a1400;
1568 DBLPALLORESDPFFF_KEY = $000a1404;
1569 DBLPALLORESDPFLACE_KEY = $000a1405;
1570 DBLPALLORESDPF2_KEY = $000a1440;
1571 DBLPALLORESDPF2FF_KEY = $000a1444;
1572 DBLPALLORESDPF2LACE_KEY = $000a1445;
1573 DBLPALHIRES_KEY = $000a9000;
1574 DBLPALHIRESFF_KEY = $000a9004;
1575 DBLPALHIRESHAM_KEY = $000a9800;
1576 DBLPALHIRESHAMFF_KEY = $000a9804;
1577 DBLPALHIRESLACE_KEY = $000a9005;
1578 DBLPALHIRESHAMLACE_KEY = $000a9805;
1579 DBLPALHIRESEHB_KEY = $000a9080;
1580 DBLPALHIRESEHBFF_KEY = $000a9084;
1581 DBLPALHIRESEHBLACE_KEY = $000a9085;
1582 DBLPALHIRESDPF_KEY = $000a9400;
1583 DBLPALHIRESDPFFF_KEY = $000a9404;
1584 DBLPALHIRESDPFLACE_KEY = $000a9405;
1585 DBLPALHIRESDPF2_KEY = $000a9440;
1586 DBLPALHIRESDPF2FF_KEY = $000a9444;
1587 DBLPALHIRESDPF2LACE_KEY = $000a9445;
1588 DBLPALEXTRALORES_KEY = $000a1200;
1589 DBLPALEXTRALORESHAM_KEY = $000a1a00;
1590 DBLPALEXTRALORESEHB_KEY = $000a1280;
1591 DBLPALEXTRALORESDPF_KEY = $000a1600;
1592 DBLPALEXTRALORESDPF2_KEY = $000a1640;
1593 DBLPALEXTRALORESFF_KEY = $000a1204;
1594 DBLPALEXTRALORESHAMFF_KEY = $000a1a04;
1595 DBLPALEXTRALORESEHBFF_KEY = $000a1284;
1596 DBLPALEXTRALORESDPFFF_KEY = $000a1604;
1597 DBLPALEXTRALORESDPF2FF_KEY = $000a1644;
1598 DBLPALEXTRALORESLACE_KEY = $000a1205;
1599 DBLPALEXTRALORESHAMLACE_KEY = $000a1a05;
1600 DBLPALEXTRALORESEHBLACE_KEY = $000a1285;
1601 DBLPALEXTRALORESDPFLACE_KEY = $000a1605;
1602 DBLPALEXTRALORESDPF2LACE_KEY = $000a1645;
1605 { Use these tags for passing to BestModeID() (V39) }
1607 SPECIAL_FLAGS = $100E;
1608 { Original:
1609 SPECIAL_FLAGS = DIPF_IS_DUALPF OR DIPF_IS_PF2PRI OR DIPF_IS_HAM OR DIPF_IS_EXTRAHALFBRITE;
1610 ( Mu?te aufgrund eines Fehler in PCQ ge?ndert werden )
1614 BIDTAG_DIPFMustHave = $80000001; { mask of the DIPF_ flags the ModeID must have }
1615 { Default - NULL }
1616 BIDTAG_DIPFMustNotHave = $80000002; { mask of the DIPF_ flags the ModeID must not have }
1617 { Default - SPECIAL_FLAGS }
1618 BIDTAG_ViewPort = $80000003; { ViewPort for which a ModeID is sought. }
1619 { Default - NULL }
1620 BIDTAG_NominalWidth = $80000004; { \ together make the aspect ratio and }
1621 BIDTAG_NominalHeight = $80000005; { / override the vp->Width/Height. }
1622 { Default - SourceID NominalDimensionInfo,
1623 * or vp->DWidth/Height, or (640 * 200),
1624 * in that preferred order.
1626 BIDTAG_DesiredWidth = $80000006; { \ Nominal Width and Height of the }
1627 BIDTAG_DesiredHeight = $80000007; { / returned ModeID. }
1628 { Default - same as Nominal }
1629 BIDTAG_Depth = $80000008; { ModeID must support this depth. }
1630 { Default - vp->RasInfo->BitMap->Depth or 1 }
1631 BIDTAG_MonitorID = $80000009; { ModeID must use this monitor. }
1632 { Default - use best monitor available }
1633 BIDTAG_SourceID = $8000000a; { instead of a ViewPort. }
1634 { Default - VPModeID(vp) if BIDTAG_ViewPort is
1635 * specified, else leave the DIPFMustHave and
1636 * DIPFMustNotHave values untouched.
1638 BIDTAG_RedBits = $8000000b; { \ }
1639 BIDTAG_BlueBits = $8000000c; { > Match up from the database }
1640 BIDTAG_GreenBits = $8000000d; { / }
1641 { Default - 4 }
1642 BIDTAG_GfxPrivate = $8000000e; { Private }
1645 const
1647 { bplcon0 defines }
1649 MODE_640 = $8000;
1650 PLNCNTMSK = $7; { how many bit planes? }
1651 { 0 = none, 1->6 = 1->6, 7 = reserved }
1652 PLNCNTSHFT = 12; { bits to shift for bplcon0 }
1653 PF2PRI = $40; { bplcon2 bit }
1654 COLORON = $0200; { disable color burst }
1655 DBLPF = $400;
1656 HOLDNMODIFY = $800;
1657 INTERLACE = 4; { interlace mode for 400 }
1659 { bplcon1 defines }
1661 PFA_FINE_SCROLL = $F;
1662 PFB_FINE_SCROLL_SHIFT = 4;
1663 PF_FINE_SCROLL_MASK = $F;
1665 { display window start and stop defines }
1667 DIW_HORIZ_POS = $7F; { horizontal start/stop }
1668 DIW_VRTCL_POS = $1FF; { vertical start/stop }
1669 DIW_VRTCL_POS_SHIFT = $7;
1671 { Data fetch start/stop horizontal position }
1673 DFTCH_MASK = $FF;
1675 { vposr bits }
1677 VPOSRLOF = $8000;
1679 { include define file for displayinfo database }
1681 { the "public" handle to a DisplayInfoRecord }
1682 Type
1684 DisplayInfoHandle = APTR;
1686 { datachunk type identifiers }
1688 CONST
1689 DTAG_DISP = $80000000;
1690 DTAG_DIMS = $80001000;
1691 DTAG_MNTR = $80002000;
1692 DTAG_NAME = $80003000;
1693 DTAG_VEC = $80004000; { internal use only }
1695 Type
1697 pQueryHeader = ^tQueryHeader;
1698 tQueryHeader = record
1699 tructID, { datachunk type identifier }
1700 DisplayID, { copy of display record key }
1701 SkipID, { TAG_SKIP -- see tagitems.h }
1702 Length : ULONG; { length of local data in double-longwords }
1703 END;
1705 pDisplayInfo = ^tDisplayInfo;
1706 tDisplayInfo = record
1707 Header : tQueryHeader;
1708 NotAvailable : Word; { IF NULL available, else see defines }
1709 PropertyFlags : ULONG; { Properties of this mode see defines }
1710 Resolution : tPoint; { ticks-per-pixel X/Y }
1711 PixelSpeed : Word; { aproximation in nanoseconds }
1712 NumStdSprites : Word; { number of standard amiga sprites }
1713 PaletteRange : Word; { distinguishable shades available }
1714 SpriteResolution : tPoint; { std sprite ticks-per-pixel X/Y }
1715 pad : Array[0..3] of Byte;
1716 RedBits : Byte;
1717 GreenBits : Byte;
1718 BlueBits : Byte;
1719 pad2 : array [0..4] of Byte;
1720 reserved : Array[0..1] of ULONG; { terminator }
1721 END;
1723 { availability }
1725 CONST
1726 DI_AVAIL_NOCHIPS =$0001;
1727 DI_AVAIL_NOMONITOR =$0002;
1728 DI_AVAIL_NOTWITHGENLOCK =$0004;
1730 { mode properties }
1732 DIPF_IS_LACE = $00000001;
1733 DIPF_IS_DUALPF = $00000002;
1734 DIPF_IS_PF2PRI = $00000004;
1735 DIPF_IS_HAM = $00000008;
1737 DIPF_IS_ECS = $00000010; { note: ECS modes (SHIRES, VGA, AND **
1738 PRODUCTIVITY) do not support **
1739 attached sprites. **
1741 DIPF_IS_AA = $00010000; { AA modes - may only be available
1742 ** if machine has correct memory
1743 ** type to support required
1744 ** bandwidth - check availability.
1745 ** (V39)
1747 DIPF_IS_PAL = $00000020;
1748 DIPF_IS_SPRITES = $00000040;
1749 DIPF_IS_GENLOCK = $00000080;
1751 DIPF_IS_WB = $00000100;
1752 DIPF_IS_DRAGGABLE = $00000200;
1753 DIPF_IS_PANELLED = $00000400;
1754 DIPF_IS_BEAMSYNC = $00000800;
1756 DIPF_IS_EXTRAHALFBRITE = $00001000;
1758 { The following DIPF_IS_... flags are new for V39 }
1759 DIPF_IS_SPRITES_ATT = $00002000; { supports attached sprites }
1760 DIPF_IS_SPRITES_CHNG_RES = $00004000; { supports variable sprite resolution }
1761 DIPF_IS_SPRITES_BORDER = $00008000; { sprite can be displayed in the border }
1762 DIPF_IS_SCANDBL = $00020000; { scan doubled }
1763 DIPF_IS_SPRITES_CHNG_BASE = $00040000;
1764 { can change the sprite base colour }
1765 DIPF_IS_SPRITES_CHNG_PRI = $00080000;
1766 { can change the sprite priority
1767 ** with respect to the playfield(s).
1769 DIPF_IS_DBUFFER = $00100000; { can support double buffering }
1770 DIPF_IS_PROGBEAM = $00200000; { is a programmed beam-sync mode }
1771 DIPF_IS_FOREIGN = $80000000; { this mode is not native to the Amiga }
1773 Type
1774 pDimensionInfo =^tDimensionInfo;
1775 tDimensionInfo = record
1776 Header : tQueryHeader;
1777 MaxDepth, { log2( max number of colors ) }
1778 MinRasterWidth, { minimum width in pixels }
1779 MinRasterHeight, { minimum height in pixels }
1780 MaxRasterWidth, { maximum width in pixels }
1781 MaxRasterHeight : Word; { maximum height in pixels }
1782 Nominal, { "standard" dimensions }
1783 MaxOScan, { fixed, hardware dependant }
1784 VideoOScan, { fixed, hardware dependant }
1785 TxtOScan, { editable via preferences }
1786 StdOScan : tRectangle; { editable via preferences }
1787 pad : Array[0..13] of Byte;
1788 reserved : Array[0..1] of Longint; { terminator }
1789 END;
1791 pMonitorInfo = ^tMonitorInfo;
1792 tMonitorInfo = record
1793 Header : tQueryHeader;
1794 Mspc : pMonitorSpec; { pointer to monitor specification }
1795 ViewPosition, { editable via preferences }
1796 ViewResolution : tPoint; { standard monitor ticks-per-pixel }
1797 ViewPositionRange : tRectangle; { fixed, hardware dependant }
1798 TotalRows, { display height in scanlines }
1799 TotalColorClocks, { scanline width in 280 ns units }
1800 MinRow : Word; { absolute minimum active scanline }
1801 Compatibility : Integer; { how this coexists with others }
1802 pad : Array[0..31] of Byte;
1803 MouseTicks : tPoint;
1804 DefaultViewPosition : tPoint;
1805 PreferredModeID : ULONG;
1806 reserved : Array[0..1] of ULONG; { terminator }
1807 END;
1809 { monitor compatibility }
1811 CONST
1812 MCOMPAT_MIXED = 0; { can share display with other MCOMPAT_MIXED }
1813 MCOMPAT_SELF = 1; { can share only within same monitor }
1814 MCOMPAT_NOBODY= -1; { only one viewport at a time }
1816 DISPLAYNAMELEN = 32;
1818 Type
1819 pNameInfo = ^tNameInfo;
1820 tNameInfo = record
1821 Header : tQueryHeader;
1822 Name : Array[0..DISPLAYNAMELEN-1] of Char;
1823 reserved : Array[0..1] of ULONG; { terminator }
1824 END;
1827 {****************************************************************************}
1829 { The following VecInfo structure is PRIVATE, for our use only
1830 * Touch these, and burn! (V39)
1832 Type
1833 pVecInfo = ^tVecInfo;
1834 tVecInfo = record
1835 Header : tQueryHeader;
1836 Vec : Pointer;
1837 Data : Pointer;
1838 vi_Type : WORD; { Type in C Includes }
1839 pad : Array[0..2] of WORD;
1840 reserved : Array[0..1] of ULONG;
1841 end;
1844 CONST
1845 VTAG_END_CM = $00000000;
1846 VTAG_CHROMAKEY_CLR = $80000000;
1847 VTAG_CHROMAKEY_SET = $80000001;
1848 VTAG_BITPLANEKEY_CLR = $80000002;
1849 VTAG_BITPLANEKEY_SET = $80000003;
1850 VTAG_BORDERBLANK_CLR = $80000004;
1851 VTAG_BORDERBLANK_SET = $80000005;
1852 VTAG_BORDERNOTRANS_CLR = $80000006;
1853 VTAG_BORDERNOTRANS_SET = $80000007;
1854 VTAG_CHROMA_PEN_CLR = $80000008;
1855 VTAG_CHROMA_PEN_SET = $80000009;
1856 VTAG_CHROMA_PLANE_SET = $8000000A;
1857 VTAG_ATTACH_CM_SET = $8000000B;
1858 VTAG_NEXTBUF_CM = $8000000C;
1859 VTAG_BATCH_CM_CLR = $8000000D;
1860 VTAG_BATCH_CM_SET = $8000000E;
1861 VTAG_NORMAL_DISP_GET = $8000000F;
1862 VTAG_NORMAL_DISP_SET = $80000010;
1863 VTAG_COERCE_DISP_GET = $80000011;
1864 VTAG_COERCE_DISP_SET = $80000012;
1865 VTAG_VIEWPORTEXTRA_GET = $80000013;
1866 VTAG_VIEWPORTEXTRA_SET = $80000014;
1867 VTAG_CHROMAKEY_GET = $80000015;
1868 VTAG_BITPLANEKEY_GET = $80000016;
1869 VTAG_BORDERBLANK_GET = $80000017;
1870 VTAG_BORDERNOTRANS_GET = $80000018;
1871 VTAG_CHROMA_PEN_GET = $80000019;
1872 VTAG_CHROMA_PLANE_GET = $8000001A;
1873 VTAG_ATTACH_CM_GET = $8000001B;
1874 VTAG_BATCH_CM_GET = $8000001C;
1875 VTAG_BATCH_ITEMS_GET = $8000001D;
1876 VTAG_BATCH_ITEMS_SET = $8000001E;
1877 VTAG_BATCH_ITEMS_ADD = $8000001F;
1878 VTAG_VPMODEID_GET = $80000020;
1879 VTAG_VPMODEID_SET = $80000021;
1880 VTAG_VPMODEID_CLR = $80000022;
1881 VTAG_USERCLIP_GET = $80000023;
1882 VTAG_USERCLIP_SET = $80000024;
1883 VTAG_USERCLIP_CLR = $80000025;
1884 { The following tags are V39 specific. They will be ignored (returing error -3) by
1885 earlier versions }
1886 VTAG_PF1_BASE_GET = $80000026;
1887 VTAG_PF2_BASE_GET = $80000027;
1888 VTAG_SPEVEN_BASE_GET = $80000028;
1889 VTAG_SPODD_BASE_GET = $80000029;
1890 VTAG_PF1_BASE_SET = $8000002a;
1891 VTAG_PF2_BASE_SET = $8000002b;
1892 VTAG_SPEVEN_BASE_SET = $8000002c;
1893 VTAG_SPODD_BASE_SET = $8000002d;
1894 VTAG_BORDERSPRITE_GET = $8000002e;
1895 VTAG_BORDERSPRITE_SET = $8000002f;
1896 VTAG_BORDERSPRITE_CLR = $80000030;
1897 VTAG_SPRITERESN_SET = $80000031;
1898 VTAG_SPRITERESN_GET = $80000032;
1899 VTAG_PF1_TO_SPRITEPRI_SET = $80000033;
1900 VTAG_PF1_TO_SPRITEPRI_GET = $80000034;
1901 VTAG_PF2_TO_SPRITEPRI_SET = $80000035;
1902 VTAG_PF2_TO_SPRITEPRI_GET = $80000036;
1903 VTAG_IMMEDIATE = $80000037;
1904 VTAG_FULLPALETTE_SET = $80000038;
1905 VTAG_FULLPALETTE_GET = $80000039;
1906 VTAG_FULLPALETTE_CLR = $8000003A;
1907 VTAG_DEFSPRITERESN_SET = $8000003B;
1908 VTAG_DEFSPRITERESN_GET = $8000003C;
1910 { all the following tags follow the new, rational standard for videocontrol tags:
1911 * VC_xxx,state set the state of attribute 'xxx' to value 'state'
1912 * VC_xxx_QUERY,&var get the state of attribute 'xxx' and store it into the longword
1913 * pointed to by &var.
1915 * The following are new for V40:
1918 VC_IntermediateCLUpdate = $80000080;
1919 { default=true. When set graphics will update the intermediate copper
1920 * lists on color changes, etc. When false, it won't, and will be faster.
1922 VC_IntermediateCLUpdate_Query = $80000081;
1924 VC_NoColorPaletteLoad = $80000082;
1925 { default = false. When set, graphics will only load color 0
1926 * for this ViewPort, and so the ViewPort's colors will come
1927 * from the previous ViewPort's.
1929 * NB - Using this tag and VTAG_FULLPALETTE_SET together is undefined.
1931 VC_NoColorPaletteLoad_Query = $80000083;
1933 VC_DUALPF_Disable = $80000084;
1934 { default = false. When this flag is set, the dual-pf bit
1935 in Dual-Playfield screens will be turned off. Even bitplanes
1936 will still come from the first BitMap and odd bitplanes
1937 from the second BitMap, and both R[xy]Offsets will be
1938 considered. This can be used (with appropriate palette
1939 selection) for cross-fades between differently scrolling
1940 images.
1941 When this flag is turned on, colors will be loaded for
1942 the viewport as if it were a single viewport of depth
1943 depth1+depth2 }
1944 VC_DUALPF_Disable_Query = $80000085;
1947 const
1949 SPRITE_ATTACHED = $80;
1951 type
1953 pSimpleSprite = ^tSimpleSprite;
1954 tSimpleSprite = record
1955 posctldata : Pointer;
1956 height : Word;
1957 x,y : Word; { current position }
1958 num : Word;
1959 end;
1961 pExtSprite = ^tExtSprite;
1962 tExtSprite = record
1963 es_SimpleSprite : tSimpleSprite; { conventional simple sprite structure }
1964 es_wordwidth : WORD; { graphics use only, subject to change }
1965 es_flags : WORD; { graphics use only, subject to change }
1966 end;
1968 const
1969 { tags for AllocSpriteData() }
1970 SPRITEA_Width = $81000000;
1971 SPRITEA_XReplication = $81000002;
1972 SPRITEA_YReplication = $81000004;
1973 SPRITEA_OutputHeight = $81000006;
1974 SPRITEA_Attached = $81000008;
1975 SPRITEA_OldDataFormat = $8100000a; { MUST pass in outputheight if using this tag }
1977 { tags for GetExtSprite() }
1978 GSTAG_SPRITE_NUM = $82000020;
1979 GSTAG_ATTACHED = $82000022;
1980 GSTAG_SOFTSPRITE = $82000024;
1982 { tags valid for either GetExtSprite or ChangeExtSprite }
1983 GSTAG_SCANDOUBLED = $83000000; { request "NTSC-Like" height if possible. }
1986 Type
1987 pBitScaleArgs = ^tBitScaleArgs;
1988 tBitScaleArgs = record
1989 bsa_SrcX, bsa_SrcY, { source origin }
1990 bsa_SrcWidth, bsa_SrcHeight, { source size }
1991 bsa_XSrcFactor, bsa_YSrcFactor, { scale factor denominators }
1992 bsa_DestX, bsa_DestY, { destination origin }
1993 bsa_DestWidth, bsa_DestHeight, { destination size result }
1994 bsa_XDestFactor, bsa_YDestFactor : Word; { scale factor numerators }
1995 bsa_SrcBitMap, { source BitMap }
1996 bsa_DestBitMap : pBitMap; { destination BitMap }
1997 bsa_Flags : ULONG; { reserved. Must be zero! }
1998 bsa_XDDA, bsa_YDDA : Word; { reserved }
1999 bsa_Reserved1,
2000 bsa_Reserved2 : Longint;
2001 END;
2003 { tag definitions for GetRPAttr, SetRPAttr }
2005 const
2006 RPTAG_Font = $80000000; { get/set font }
2007 RPTAG_APen = $80000002; { get/set apen }
2008 RPTAG_BPen = $80000003; { get/set bpen }
2009 RPTAG_DrMd = $80000004; { get/set draw mode }
2010 RPTAG_OutlinePen = $80000005; { get/set outline pen. corrected case. }
2011 RPTAG_WriteMask = $80000006; { get/set WriteMask }
2012 RPTAG_MaxPen = $80000007; { get/set maxpen }
2014 RPTAG_DrawBounds = $80000008; { get only rastport draw bounds. pass &rect }
2019 TYPE
2021 pRegionRectangle = ^tRegionRectangle;
2022 tRegionRectangle = record
2023 Next, Prev : pRegionRectangle;
2024 bounds : tRectangle;
2025 END;
2027 pRegion = ^tRegion;
2028 tRegion = record
2029 bounds : tRectangle;
2030 RegionRectangle : pRegionRectangle;
2031 END;
2033 type
2035 pGfxBase = ^tGfxBase;
2036 tGfxBase = record
2037 LibNode : tLibrary;
2038 ActiView : pView; { ViewPtr }
2039 copinit : pcopinit; { (copinitptr) ptr to copper start up list }
2040 cia : Pointer; { for 8520 resource use }
2041 blitter : Pointer; { for future blitter resource use }
2042 LOFlist : Pointer;
2043 SHFlist : Pointer;
2044 blthd,
2045 blttl : pbltnode;
2046 bsblthd,
2047 bsblttl : pbltnode; { Previous four are (bltnodeptr) }
2048 vbsrv,
2049 timsrv,
2050 bltsrv : tInterrupt;
2051 TextFonts : tList;
2052 DefaultFont : pTextFont; { TextFontPtr }
2053 Modes : Word; { copy of current first bplcon0 }
2054 VBlank : Shortint;
2055 Debug : Shortint;
2056 BeamSync : Integer;
2057 system_bplcon0 : Integer; { it is ored into each bplcon0 for display }
2058 SpriteReserved : Byte;
2059 bytereserved : Byte;
2060 Flags : Word;
2061 BlitLock : Integer;
2062 BlitNest : Integer;
2064 BlitWaitQ : tList;
2065 BlitOwner : pTask; { TaskPtr }
2066 TOF_WaitQ : tList;
2067 DisplayFlags : Word; { NTSC PAL GENLOC etc}
2069 { Display flags are determined at power on }
2071 SimpleSprites : Pointer; { SimpleSpritePtr ptr }
2072 MaxDisplayRow : Word; { hardware stuff, do not use }
2073 MaxDisplayColumn : Word; { hardware stuff, do not use }
2074 NormalDisplayRows : Word;
2075 NormalDisplayColumns : Word;
2077 { the following are for standard non interlace, 1/2 wb width }
2079 NormalDPMX : Word; { Dots per meter on display }
2080 NormalDPMY : Word; { Dots per meter on display }
2081 LastChanceMemory : pSignalSemaphore; { SignalSemaphorePtr }
2082 LCMptr : Pointer;
2083 MicrosPerLine : Word; { 256 time usec/line }
2084 MinDisplayColumn : Word;
2085 ChipRevBits0 : Byte;
2086 MemType : Byte;
2087 crb_reserved : Array[0..3] of Byte;
2088 monitor_id : Word; { normally null }
2089 hedley : Array[0..7] of ULONG;
2090 hedley_sprites : Array[0..7] of ULONG; { sprite ptrs for intuition mouse }
2091 hedley_sprites1 : Array[0..7] of ULONG; { sprite ptrs for intuition mouse }
2092 hedley_count : Integer;
2093 hedley_flags : Word;
2094 hedley_tmp : Integer;
2095 hash_table : Pointer;
2096 current_tot_rows : Word;
2097 current_tot_cclks : Word;
2098 hedley_hint : Byte;
2099 hedley_hint2 : Byte;
2100 nreserved : Array[0..3] of ULONG;
2101 a2024_sync_raster : Pointer;
2102 control_delta_pal : Word;
2103 control_delta_ntsc : Word;
2104 current_monitor : pMonitorSpec;
2105 MonitorList : tList;
2106 default_monitor : pMonitorSpec;
2107 MonitorListSemaphore : pSignalSemaphore;
2108 DisplayInfoDataBase : Pointer;
2109 TopLine : Word;
2110 ActiViewCprSemaphore : pSignalSemaphore;
2111 UtilityBase : Pointer; { for hook AND tag utilities }
2112 ExecBase : Pointer; { to link with rom.lib }
2113 bwshifts : Pointer;
2114 StrtFetchMasks,
2115 StopFetchMasks,
2116 Overrun,
2117 RealStops : Pointer;
2118 SpriteWidth, { current width (in words) of sprites }
2119 SpriteFMode : WORD; { current sprite fmode bits }
2120 SoftSprites, { bit mask of size change knowledgeable sprites }
2121 arraywidth : Shortint;
2122 DefaultSpriteWidth : WORD; { what width intuition wants }
2123 SprMoveDisable : Shortint;
2124 WantChips,
2125 BoardMemType,
2126 Bugs : Byte;
2127 gb_LayersBase : Pointer;
2128 ColorMask : ULONG;
2129 IVector,
2130 IData : Pointer;
2131 SpecialCounter : ULONG; { special for double buffering }
2132 DBList : Pointer;
2133 MonitorFlags : WORD;
2134 ScanDoubledSprites,
2135 BP3Bits : Byte;
2136 MonitorVBlank : tAnalogSignalInterval;
2137 natural_monitor : pMonitorSpec;
2138 ProgData : Pointer;
2139 ExtSprites : Byte;
2140 pad3 : Byte;
2141 GfxFlags : WORD;
2142 VBCounter : ULONG;
2143 HashTableSemaphore : pSignalSemaphore;
2144 HWEmul : Array[0..8] of Pointer;
2145 end;
2147 const
2149 NTSC = 1;
2150 GENLOC = 2;
2151 PAL = 4;
2152 TODA_SAFE = 8;
2154 BLITMSG_FAULT = 4;
2156 { bits defs for ChipRevBits }
2157 GFXB_BIG_BLITS = 0 ;
2158 GFXB_HR_AGNUS = 0 ;
2159 GFXB_HR_DENISE = 1 ;
2160 GFXB_AA_ALICE = 2 ;
2161 GFXB_AA_LISA = 3 ;
2162 GFXB_AA_MLISA = 4 ; { internal use only. }
2164 GFXF_BIG_BLITS = 1 ;
2165 GFXF_HR_AGNUS = 1 ;
2166 GFXF_HR_DENISE = 2 ;
2167 GFXF_AA_ALICE = 4 ;
2168 GFXF_AA_LISA = 8 ;
2169 GFXF_AA_MLISA = 16; { internal use only }
2171 { Pass ONE of these to SetChipRev() }
2172 SETCHIPREV_A = GFXF_HR_AGNUS;
2173 SETCHIPREV_ECS = (GFXF_HR_AGNUS OR GFXF_HR_DENISE);
2174 SETCHIPREV_AA = (GFXF_AA_ALICE OR GFXF_AA_LISA OR SETCHIPREV_ECS);
2175 SETCHIPREV_BEST= $ffffffff;
2177 { memory type }
2178 BUS_16 = 0;
2179 NML_CAS = 0;
2180 BUS_32 = 1;
2181 DBL_CAS = 2;
2182 BANDWIDTH_1X = (BUS_16 OR NML_CAS);
2183 BANDWIDTH_2XNML= BUS_32;
2184 BANDWIDTH_2XDBL= DBL_CAS;
2185 BANDWIDTH_4X = (BUS_32 OR DBL_CAS);
2187 { GfxFlags (private) }
2188 NEW_DATABASE = 1;
2190 GRAPHICSNAME : PChar = 'graphics.library';
2194 GfxBase : pLibrary;
2196 PROCEDURE AddAnimOb(anOb : pAnimOb; anKey : ppAnimOb; rp : pRastPort);
2197 PROCEDURE AddBob(bob : pBob; rp : pRastPort);
2198 PROCEDURE AddFont(textFont : pTextFont);
2199 PROCEDURE AddVSprite(vSprite : pVSprite; rp : pRastPort);
2200 FUNCTION AllocBitMap(sizex : ULONG; sizey : ULONG; depth : ULONG; flags : ULONG; friend_bitmap : pBitMap) : pBitMap;
2201 FUNCTION AllocDBufInfo(vp : pViewPort) : pDBufInfo;
2202 FUNCTION AllocRaster(width : ULONG; height : ULONG) : pCHAR;
2203 FUNCTION AllocSpriteDataA(bm : pBitMap; tags : pTagItem) : pExtSprite;
2204 PROCEDURE AndRectRegion(region : pRegion; rectangle : pRectangle);
2205 FUNCTION AndRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
2206 PROCEDURE Animate(anKey : ppAnimOb; rp : pRastPort);
2207 FUNCTION AreaDraw(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
2208 FUNCTION AreaEllipse(rp : pRastPort; xCenter : LONGINT; yCenter : LONGINT; a : LONGINT; b : LONGINT) : LONGINT;
2209 FUNCTION AreaEnd(rp : pRastPort) : LONGINT;
2210 FUNCTION AreaMove(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
2211 PROCEDURE AskFont(rp : pRastPort; textAttr : pTextAttr);
2212 FUNCTION AskSoftStyle(rp : pRastPort) : ULONG;
2213 FUNCTION AttachPalExtra(cm : pColorMap; vp : pViewPort) : LONGINT;
2214 FUNCTION AttemptLockLayerRom(layer : pLayer) : BOOLEAN;
2215 FUNCTION BestModeIDA(tags : pTagItem) : ULONG;
2216 PROCEDURE BitMapScale(bitScaleArgs : pBitScaleArgs);
2217 FUNCTION BltBitMap(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destBitMap : pBitMap; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG; mask : ULONG; tempA : pCHAR) : LONGINT;
2218 PROCEDURE BltBitMapRastPort(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG);
2219 PROCEDURE BltClear(memBlock : pCHAR; byteCount : ULONG; flags : ULONG);
2220 PROCEDURE BltMaskBitMapRastPort(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG; bltMask : pCHAR);
2221 PROCEDURE BltPattern(rp : pRastPort; mask : pCHAR; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT; maskBPR : ULONG);
2222 PROCEDURE BltTemplate(source : pCHAR; xSrc : LONGINT; srcMod : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT);
2223 FUNCTION CalcIVG(v : pView; vp : pViewPort) : WORD;
2224 PROCEDURE CBump(copList : pUCopList);
2225 FUNCTION ChangeExtSpriteA(vp : pViewPort; oldsprite : pExtSprite; newsprite : pExtSprite; tags : pTagItem) : LONGINT;
2226 PROCEDURE ChangeSprite(vp : pViewPort; sprite : pSimpleSprite; newData : pCHAR);
2227 PROCEDURE ChangeVPBitMap(vp : pViewPort; bm : pBitMap; db : pDBufInfo);
2228 PROCEDURE ClearEOL(rp : pRastPort);
2229 FUNCTION ClearRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
2230 PROCEDURE ClearRegion(region : pRegion);
2231 PROCEDURE ClearScreen(rp : pRastPort);
2232 PROCEDURE ClipBlit(srcRP : pRastPort; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG);
2233 PROCEDURE CloseFont(textFont : pTextFont);
2234 FUNCTION CloseMonitor(monitorSpec : pMonitorSpec) : BOOLEAN;
2235 PROCEDURE CMove(copList : pUCopList; destination : POINTER; data : LONGINT);
2236 FUNCTION CoerceMode(vp : pViewPort; monitorid : ULONG; flags : ULONG) : ULONG;
2237 PROCEDURE CopySBitMap(layer : pLayer);
2238 PROCEDURE CWait(copList : pUCopList; v : LONGINT; h : LONGINT);
2239 PROCEDURE DisownBlitter;
2240 PROCEDURE DisposeRegion(region : pRegion);
2241 PROCEDURE DoCollision(rp : pRastPort);
2242 PROCEDURE Draw(rp : pRastPort; x : LONGINT; y : LONGINT);
2243 PROCEDURE DrawEllipse(rp : pRastPort; xCenter : LONGINT; yCenter : LONGINT; a : LONGINT; b : LONGINT);
2244 PROCEDURE DrawGList(rp : pRastPort; vp : pViewPort);
2245 PROCEDURE EraseRect(rp : pRastPort; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
2246 FUNCTION ExtendFont(font : pTextFont; fontTags : pTagItem) : ULONG;
2247 FUNCTION FindColor(cm : pColorMap; r : ULONG; g : ULONG; b : ULONG; maxcolor : LONGINT) : LONGINT;
2248 FUNCTION FindDisplayInfo(displayID : ULONG) : POINTER;
2249 FUNCTION Flood(rp : pRastPort; mode : ULONG; x : LONGINT; y : LONGINT) : BOOLEAN;
2250 PROCEDURE FontExtent(font : pTextFont; fontExtent : pTextExtent);
2251 PROCEDURE FreeBitMap(bm : pBitMap);
2252 PROCEDURE FreeColorMap(colorMap : pColorMap);
2253 PROCEDURE FreeCopList(copList : pCopList);
2254 PROCEDURE FreeCprList(cprList : pcprlist);
2255 PROCEDURE FreeDBufInfo(dbi : pDBufInfo);
2256 PROCEDURE FreeGBuffers(anOb : pAnimOb; rp : pRastPort; flag : LONGINT);
2257 PROCEDURE FreeRaster(p : pCHAR; width : ULONG; height : ULONG);
2258 PROCEDURE FreeSprite(num : LONGINT);
2259 PROCEDURE FreeSpriteData(sp : pExtSprite);
2260 PROCEDURE FreeVPortCopLists(vp : pViewPort);
2261 FUNCTION GetAPen(rp : pRastPort) : ULONG;
2262 FUNCTION GetBitMapAttr(bm : pBitMap; attrnum : ULONG) : ULONG;
2263 FUNCTION GetBPen(rp : pRastPort) : ULONG;
2264 FUNCTION GetColorMap(entries : LONGINT) : pColorMap;
2265 FUNCTION GetDisplayInfoData(handle : POINTER; buf : pCHAR; size : ULONG; tagID : ULONG; displayID : ULONG) : ULONG;
2266 FUNCTION GetDrMd(rp : pRastPort) : ULONG;
2267 FUNCTION GetExtSpriteA(ss : pExtSprite; tags : pTagItem) : LONGINT;
2268 FUNCTION GetGBuffers(anOb : pAnimOb; rp : pRastPort; flag : LONGINT) : BOOLEAN;
2269 FUNCTION GetOutlinePen(rp : pRastPort) : ULONG;
2270 PROCEDURE GetRGB32(cm : pColorMap; firstcolor : ULONG; ncolors : ULONG; table : POINTER);
2271 FUNCTION GetRGB4(colorMap : pColorMap; entry : LONGINT) : ULONG;
2272 PROCEDURE GetRPAttrsA(rp : pRastPort; tags : pTagItem);
2273 FUNCTION GetSprite(sprite : pSimpleSprite; num : LONGINT) : INTEGER;
2274 FUNCTION GetVPModeID(vp : pViewPort) : LONGINT;
2275 PROCEDURE GfxAssociate(associateNode : POINTER; gfxNodePtr : POINTER);
2276 PROCEDURE GfxFree(gfxNodePtr : POINTER);
2277 FUNCTION GfxLookUp(associateNode : POINTER) : POINTER;
2278 FUNCTION GfxNew(gfxNodeType : ULONG) : POINTER;
2279 PROCEDURE InitArea(areaInfo : pAreaInfo; vectorBuffer : POINTER; maxVectors : LONGINT);
2280 PROCEDURE InitBitMap(bitMap : pBitMap; depth : LONGINT; width : LONGINT; height : LONGINT);
2281 PROCEDURE InitGels(head : pVSprite; tail : pVSprite; gelsInfo : pGelsInfo);
2282 PROCEDURE InitGMasks(anOb : pAnimOb);
2283 PROCEDURE InitMasks(vSprite : pVSprite);
2284 PROCEDURE InitRastPort(rp : pRastPort);
2285 FUNCTION InitTmpRas(tmpRas : pTmpRas; buffer : pCHAR; size : LONGINT) : pTmpRas;
2286 PROCEDURE InitView(view : pView);
2287 PROCEDURE InitVPort(vp : pViewPort);
2288 PROCEDURE LoadRGB32(vp : pViewPort; table : POINTER);
2289 PROCEDURE LoadRGB4(vp : pViewPort; colors : POINTER; count : LONGINT);
2290 PROCEDURE LoadView(view : pView);
2291 PROCEDURE LockLayerRom(layer : pLayer);
2292 FUNCTION MakeVPort(view : pView; vp : pViewPort) : ULONG;
2293 FUNCTION ModeNotAvailable(modeID : ULONG) : LONGINT;
2294 PROCEDURE Move(rp : pRastPort; x : LONGINT; y : LONGINT);
2295 PROCEDURE MoveSprite(vp : pViewPort; sprite : pSimpleSprite; x : LONGINT; y : LONGINT);
2296 FUNCTION MrgCop(view : pView) : ULONG;
2297 FUNCTION NewRegion : pRegion;
2298 FUNCTION NextDisplayInfo(displayID : ULONG) : ULONG;
2299 FUNCTION ObtainBestPenA(cm : pColorMap; r : ULONG; g : ULONG; b : ULONG; tags : pTagItem) : LONGINT;
2300 FUNCTION ObtainPen(cm : pColorMap; n : ULONG; r : ULONG; g : ULONG; b : ULONG; f : LONGINT) : ULONG;
2301 FUNCTION OpenFont(textAttr : pTextAttr) : pTextFont;
2302 FUNCTION OpenMonitor(monitorName : pCHAR; displayID : ULONG) : pMonitorSpec;
2303 FUNCTION OrRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
2304 FUNCTION OrRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
2305 PROCEDURE OwnBlitter;
2306 PROCEDURE PolyDraw(rp : pRastPort; count : LONGINT; polyTable : POINTER);
2307 PROCEDURE QBlit(blit : pbltnode);
2308 PROCEDURE QBSBlit(blit : pbltnode);
2309 FUNCTION ReadPixel(rp : pRastPort; x : LONGINT; y : LONGINT) : ULONG;
2310 FUNCTION ReadPixelArray8(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; temprp : pRastPort) : LONGINT;
2311 FUNCTION ReadPixelLine8(rp : pRastPort; xstart : ULONG; ystart : ULONG; width : ULONG; array_ : pCHAR; tempRP : pRastPort) : LONGINT;
2312 PROCEDURE RectFill(rp : pRastPort; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
2313 PROCEDURE ReleasePen(cm : pColorMap; n : ULONG);
2314 PROCEDURE RemFont(textFont : pTextFont);
2315 PROCEDURE RemIBob(bob : pBob; rp : pRastPort; vp : pViewPort);
2316 PROCEDURE RemVSprite(vSprite : pVSprite);
2317 FUNCTION ScalerDiv(factor : ULONG; numerator : ULONG; denominator : ULONG) : WORD;
2318 PROCEDURE ScrollRaster(rp : pRastPort; dx : LONGINT; dy : LONGINT; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
2319 PROCEDURE ScrollRasterBF(rp : pRastPort; dx : LONGINT; dy : LONGINT; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
2320 PROCEDURE ScrollVPort(vp : pViewPort);
2321 PROCEDURE SetABPenDrMd(rp : pRastPort; apen : ULONG; bpen : ULONG; drawmode : ULONG);
2322 PROCEDURE SetAPen(rp : pRastPort; pen : ULONG);
2323 PROCEDURE SetBPen(rp : pRastPort; pen : ULONG);
2324 FUNCTION SetChipRev(want : ULONG) : ULONG;
2325 PROCEDURE SetCollision(num : ULONG; routine : tPROCEDURE; gelsInfo : pGelsInfo);
2326 PROCEDURE SetDrMd(rp : pRastPort; drawMode : ULONG);
2327 FUNCTION SetFont(rp : pRastPort; textFont : pTextFont) : LONGINT;
2328 PROCEDURE SetMaxPen(rp : pRastPort; maxpen : ULONG);
2329 FUNCTION SetOutlinePen(rp : pRastPort; pen : ULONG) : ULONG;
2330 PROCEDURE SetRast(rp : pRastPort; pen : ULONG);
2331 PROCEDURE SetRGB32(vp : pViewPort; n : ULONG; r : ULONG; g : ULONG; b : ULONG);
2332 PROCEDURE SetRGB32CM(cm : pColorMap; n : ULONG; r : ULONG; g : ULONG; b : ULONG);
2333 PROCEDURE SetRGB4(vp : pViewPort; index : LONGINT; red : ULONG; green : ULONG; blue : ULONG);
2334 PROCEDURE SetRGB4CM(colorMap : pColorMap; index : LONGINT; red : ULONG; green : ULONG; blue : ULONG);
2335 PROCEDURE SetRPAttrsA(rp : pRastPort; tags : pTagItem);
2336 FUNCTION SetSoftStyle(rp : pRastPort; style : ULONG; enable : ULONG) : ULONG;
2337 FUNCTION SetWriteMask(rp : pRastPort; msk : ULONG) : ULONG;
2338 PROCEDURE SortGList(rp : pRastPort);
2339 PROCEDURE StripFont(font : pTextFont);
2340 PROCEDURE SyncSBitMap(layer : pLayer);
2341 FUNCTION Text(rp : pRastPort; string_ : pCHAR; count : ULONG) : LONGINT;
2342 FUNCTION TextExtent(rp : pRastPort; string_ : pCHAR; count : LONGINT; textExtent : pTextExtent) : INTEGER;
2343 FUNCTION TextFit(rp : pRastPort; string_ : pCHAR; strLen : ULONG; textExtent : pTextExtent; constrainingExtent : pTextExtent; strDirection : LONGINT; constrainingBitWidth : ULONG; constrainingBitHeight : ULONG) : ULONG;
2344 FUNCTION TextLength(rp : pRastPort; string_ : pCHAR; count : ULONG) : INTEGER;
2345 FUNCTION UCopperListInit(uCopList : pUCopList; n : LONGINT) : pCopList;
2346 PROCEDURE UnlockLayerRom(layer : pLayer);
2347 FUNCTION VBeamPos : LONGINT;
2348 FUNCTION VideoControl(colorMap : pColorMap; tagarray : pTagItem) : BOOLEAN;
2349 PROCEDURE WaitBlit;
2350 PROCEDURE WaitBOVP(vp : pViewPort);
2351 PROCEDURE WaitTOF;
2352 FUNCTION WeighTAMatch(reqTextAttr : pTextAttr; targetTextAttr : pTextAttr; targetTags : pTagItem) : INTEGER;
2353 PROCEDURE WriteChunkyPixels(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; bytesperrow : LONGINT);
2354 FUNCTION WritePixel(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
2355 FUNCTION WritePixelArray8(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; temprp : pRastPort) : LONGINT;
2356 FUNCTION WritePixelLine8(rp : pRastPort; xstart : ULONG; ystart : ULONG; width : ULONG; array_ : pCHAR; tempRP : pRastPort) : LONGINT;
2357 FUNCTION XorRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
2358 FUNCTION XorRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
2360 { gfxmacros }
2362 PROCEDURE BNDRYOFF (w: pRastPort);
2363 PROCEDURE InitAnimate (animkey: ppAnimOb);
2364 PROCEDURE SetAfPt(w: pRastPort;p: Pointer; n: Byte);
2365 PROCEDURE SetDrPt(w: pRastPort;p: Word);
2366 PROCEDURE SetOPen(w: pRastPort;c: Byte);
2367 PROCEDURE SetWrMsk(w: pRastPort; m: Byte);
2369 PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
2370 PROCEDURE SafeSetWriteMask( w : pRastPort ; m : Integer ) ;
2372 PROCEDURE OFF_DISPLAY (cust: pCustom);
2373 PROCEDURE ON_DISPLAY (cust: pCustom);
2374 PROCEDURE OFF_SPRITE (cust: pCustom);
2375 PROCEDURE ON_SPRITE (cust: pCustom);
2376 PROCEDURE OFF_VBLANK (cust: pCustom);
2377 PROCEDURE ON_VBLANK (cust: pCustom);
2380 IMPLEMENTATION
2382 PROCEDURE BNDRYOFF (w: pRastPort);
2383 BEGIN
2384 WITH w^ DO BEGIN
2385 Flags := Flags AND (NOT AREAOUTLINE);
2386 END;
2387 END;
2389 PROCEDURE InitAnimate (animkey: ppAnimOb);
2390 BEGIN
2391 animkey^ := NIL;
2392 END;
2394 PROCEDURE SetAfPt(w: pRastPort;p: Pointer; n: Byte);
2395 BEGIN
2396 WITH w^ DO
2397 BEGIN
2398 AreaPtrn := p;
2399 AreaPtSz := n;
2400 END;
2401 END;
2403 PROCEDURE SetDrPt(w: pRastPort;p: Word);
2404 BEGIN
2405 WITH w^ DO
2406 BEGIN
2407 LinePtrn := p;
2408 Flags := Flags OR FRST_DOT;
2409 linpatcnt := 15;
2410 END;
2411 END;
2413 PROCEDURE SetOPen(w: pRastPort;c: Byte);
2414 BEGIN
2415 WITH w^ DO
2416 BEGIN
2417 AOlPen := c;
2418 Flags := Flags OR AREAOUTLINE;
2419 END;
2420 END;
2422 { This FUNCTION is fine, but FOR OS39 the SetWriteMask() gfx FUNCTION
2423 should be prefered because it SHOULD operate WITH gfx boards as well.
2424 At least I hope it does.... }
2425 PROCEDURE SetWrMsk(w: pRastPort; m: Byte);
2426 BEGIN
2427 w^.Mask := m;
2428 END;
2430 PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
2431 begin
2432 IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN begin
2433 w^.AOlPen := c;
2434 w^.Flags := w^.Flags OR AREAOUTLINE;
2435 END ELSE begin
2436 c := SetOutlinePen(w,c);
2437 END;
2438 END;
2440 PROCEDURE SafeSetWriteMask( w : pRastPort ; m : Integer ) ;
2441 VAR x : INTEGER ;
2442 BEGIN
2443 IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN w^.Mask := BYTE(m)
2444 ELSE x := SetWriteMask( w, m );
2445 END;
2447 PROCEDURE OFF_DISPLAY (cust: pCustom);
2448 BEGIN
2449 cust^.dmacon := BITCLR OR DMAF_RASTER;
2450 END;
2452 PROCEDURE ON_DISPLAY (cust: pCustom);
2453 BEGIN
2454 cust^.dmacon := BITSET OR DMAF_RASTER;
2455 END;
2457 PROCEDURE OFF_SPRITE (cust: pCustom);
2458 BEGIN
2459 cust^.dmacon := BITCLR OR DMAF_SPRITE;
2460 END;
2462 PROCEDURE ON_SPRITE (cust: pCustom);
2463 BEGIN
2464 cust^.dmacon := BITSET OR DMAF_SPRITE;
2465 END;
2467 PROCEDURE OFF_VBLANK (cust: pCustom);
2468 BEGIN
2469 cust^.intena := BITCLR OR INTF_VERTB;
2470 END;
2472 PROCEDURE ON_VBLANK (cust: pCustom);
2473 BEGIN
2474 cust^.intena := BITSET OR INTF_VERTB;
2475 END;
2477 PROCEDURE AddAnimOb(anOb : pAnimOb; anKey : ppAnimOb; rp : pRastPort);
2478 BEGIN
2480 MOVE.L A6,-(A7)
2481 MOVEA.L anOb,A0
2482 MOVEA.L anKey,A1
2483 MOVEA.L rp,A2
2484 MOVEA.L GfxBase,A6
2485 JSR -156(A6)
2486 MOVEA.L (A7)+,A6
2487 END;
2488 END;
2490 PROCEDURE AddBob(bob : pBob; rp : pRastPort);
2491 BEGIN
2493 MOVE.L A6,-(A7)
2494 MOVEA.L bob,A0
2495 MOVEA.L rp,A1
2496 MOVEA.L GfxBase,A6
2497 JSR -096(A6)
2498 MOVEA.L (A7)+,A6
2499 END;
2500 END;
2502 PROCEDURE AddFont(textFont : pTextFont);
2503 BEGIN
2505 MOVE.L A6,-(A7)
2506 MOVEA.L textFont,A1
2507 MOVEA.L GfxBase,A6
2508 JSR -480(A6)
2509 MOVEA.L (A7)+,A6
2510 END;
2511 END;
2513 PROCEDURE AddVSprite(vSprite : pVSprite; rp : pRastPort);
2514 BEGIN
2516 MOVE.L A6,-(A7)
2517 MOVEA.L vSprite,A0
2518 MOVEA.L rp,A1
2519 MOVEA.L GfxBase,A6
2520 JSR -102(A6)
2521 MOVEA.L (A7)+,A6
2522 END;
2523 END;
2525 FUNCTION AllocBitMap(sizex : ULONG; sizey : ULONG; depth : ULONG; flags : ULONG; friend_bitmap : pBitMap) : pBitMap;
2526 BEGIN
2528 MOVE.L A6,-(A7)
2529 MOVE.L sizex,D0
2530 MOVE.L sizey,D1
2531 MOVE.L depth,D2
2532 MOVE.L flags,D3
2533 MOVEA.L friend_bitmap,A0
2534 MOVEA.L GfxBase,A6
2535 JSR -918(A6)
2536 MOVEA.L (A7)+,A6
2537 MOVE.L D0,@RESULT
2538 END;
2539 END;
2541 FUNCTION AllocDBufInfo(vp : pViewPort) : pDBufInfo;
2542 BEGIN
2544 MOVE.L A6,-(A7)
2545 MOVEA.L vp,A0
2546 MOVEA.L GfxBase,A6
2547 JSR -966(A6)
2548 MOVEA.L (A7)+,A6
2549 MOVE.L D0,@RESULT
2550 END;
2551 END;
2553 FUNCTION AllocRaster(width : ULONG; height : ULONG) : pCHAR;
2554 BEGIN
2556 MOVE.L A6,-(A7)
2557 MOVE.L width,D0
2558 MOVE.L height,D1
2559 MOVEA.L GfxBase,A6
2560 JSR -492(A6)
2561 MOVEA.L (A7)+,A6
2562 MOVE.L D0,@RESULT
2563 END;
2564 END;
2566 FUNCTION AllocSpriteDataA(bm : pBitMap; tags : pTagItem) : pExtSprite;
2567 BEGIN
2569 MOVE.L A6,-(A7)
2570 MOVEA.L bm,A2
2571 MOVEA.L tags,A1
2572 MOVEA.L GfxBase,A6
2573 JSR -1020(A6)
2574 MOVEA.L (A7)+,A6
2575 MOVE.L D0,@RESULT
2576 END;
2577 END;
2579 PROCEDURE AndRectRegion(region : pRegion; rectangle : pRectangle);
2580 BEGIN
2582 MOVE.L A6,-(A7)
2583 MOVEA.L region,A0
2584 MOVEA.L rectangle,A1
2585 MOVEA.L GfxBase,A6
2586 JSR -504(A6)
2587 MOVEA.L (A7)+,A6
2588 END;
2589 END;
2591 FUNCTION AndRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
2592 BEGIN
2594 MOVE.L A6,-(A7)
2595 MOVEA.L srcRegion,A0
2596 MOVEA.L destRegion,A1
2597 MOVEA.L GfxBase,A6
2598 JSR -624(A6)
2599 MOVEA.L (A7)+,A6
2600 TST.W D0
2601 BEQ.B @end
2602 MOVEQ #1,D0
2603 @end: MOVE.B D0,@RESULT
2604 END;
2605 END;
2607 PROCEDURE Animate(anKey : ppAnimOb; rp : pRastPort);
2608 BEGIN
2610 MOVE.L A6,-(A7)
2611 MOVEA.L anKey,A0
2612 MOVEA.L rp,A1
2613 MOVEA.L GfxBase,A6
2614 JSR -162(A6)
2615 MOVEA.L (A7)+,A6
2616 END;
2617 END;
2619 FUNCTION AreaDraw(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
2620 BEGIN
2622 MOVE.L A6,-(A7)
2623 MOVEA.L rp,A1
2624 MOVE.L x,D0
2625 MOVE.L y,D1
2626 MOVEA.L GfxBase,A6
2627 JSR -258(A6)
2628 MOVEA.L (A7)+,A6
2629 MOVE.L D0,@RESULT
2630 END;
2631 END;
2633 FUNCTION AreaEllipse(rp : pRastPort; xCenter : LONGINT; yCenter : LONGINT; a : LONGINT; b : LONGINT) : LONGINT;
2634 BEGIN
2636 MOVE.L A6,-(A7)
2637 MOVEA.L rp,A1
2638 MOVE.L xCenter,D0
2639 MOVE.L yCenter,D1
2640 MOVE.L a,D2
2641 MOVE.L b,D3
2642 MOVEA.L GfxBase,A6
2643 JSR -186(A6)
2644 MOVEA.L (A7)+,A6
2645 MOVE.L D0,@RESULT
2646 END;
2647 END;
2649 FUNCTION AreaEnd(rp : pRastPort) : LONGINT;
2650 BEGIN
2652 MOVE.L A6,-(A7)
2653 MOVEA.L rp,A1
2654 MOVEA.L GfxBase,A6
2655 JSR -264(A6)
2656 MOVEA.L (A7)+,A6
2657 MOVE.L D0,@RESULT
2658 END;
2659 END;
2661 FUNCTION AreaMove(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
2662 BEGIN
2664 MOVE.L A6,-(A7)
2665 MOVEA.L rp,A1
2666 MOVE.L x,D0
2667 MOVE.L y,D1
2668 MOVEA.L GfxBase,A6
2669 JSR -252(A6)
2670 MOVEA.L (A7)+,A6
2671 MOVE.L D0,@RESULT
2672 END;
2673 END;
2675 PROCEDURE AskFont(rp : pRastPort; textAttr : pTextAttr);
2676 BEGIN
2678 MOVE.L A6,-(A7)
2679 MOVEA.L rp,A1
2680 MOVEA.L textAttr,A0
2681 MOVEA.L GfxBase,A6
2682 JSR -474(A6)
2683 MOVEA.L (A7)+,A6
2684 END;
2685 END;
2687 FUNCTION AskSoftStyle(rp : pRastPort) : ULONG;
2688 BEGIN
2690 MOVE.L A6,-(A7)
2691 MOVEA.L rp,A1
2692 MOVEA.L GfxBase,A6
2693 JSR -084(A6)
2694 MOVEA.L (A7)+,A6
2695 MOVE.L D0,@RESULT
2696 END;
2697 END;
2699 FUNCTION AttachPalExtra(cm : pColorMap; vp : pViewPort) : LONGINT;
2700 BEGIN
2702 MOVE.L A6,-(A7)
2703 MOVEA.L cm,A0
2704 MOVEA.L vp,A1
2705 MOVEA.L GfxBase,A6
2706 JSR -834(A6)
2707 MOVEA.L (A7)+,A6
2708 MOVE.L D0,@RESULT
2709 END;
2710 END;
2712 FUNCTION AttemptLockLayerRom(layer : pLayer) : BOOLEAN;
2713 BEGIN
2715 MOVE.L A6,-(A7)
2716 MOVEA.L layer,A5
2717 MOVEA.L GfxBase,A6
2718 JSR -654(A6)
2719 MOVEA.L (A7)+,A6
2720 TST.W D0
2721 BEQ.B @end
2722 MOVEQ #1,D0
2723 @end: MOVE.B D0,@RESULT
2724 END;
2725 END;
2727 FUNCTION BestModeIDA(tags : pTagItem) : ULONG;
2728 BEGIN
2730 MOVE.L A6,-(A7)
2731 MOVEA.L tags,A0
2732 MOVEA.L GfxBase,A6
2733 JSR -1050(A6)
2734 MOVEA.L (A7)+,A6
2735 MOVE.L D0,@RESULT
2736 END;
2737 END;
2739 PROCEDURE BitMapScale(bitScaleArgs : pBitScaleArgs);
2740 BEGIN
2742 MOVE.L A6,-(A7)
2743 MOVEA.L bitScaleArgs,A0
2744 MOVEA.L GfxBase,A6
2745 JSR -678(A6)
2746 MOVEA.L (A7)+,A6
2747 END;
2748 END;
2750 FUNCTION BltBitMap(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destBitMap : pBitMap; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG; mask : ULONG; tempA : pCHAR) : LONGINT;
2751 BEGIN
2753 MOVE.L A6,-(A7)
2754 MOVEA.L srcBitMap,A0
2755 MOVE.L xSrc,D0
2756 MOVE.L ySrc,D1
2757 MOVEA.L destBitMap,A1
2758 MOVE.L xDest,D2
2759 MOVE.L yDest,D3
2760 MOVE.L xSize,D4
2761 MOVE.L ySize,D5
2762 MOVE.L minterm,D6
2763 MOVE.L mask,D7
2764 MOVEA.L tempA,A2
2765 MOVEA.L GfxBase,A6
2766 JSR -030(A6)
2767 MOVEA.L (A7)+,A6
2768 MOVE.L D0,@RESULT
2769 END;
2770 END;
2772 PROCEDURE BltBitMapRastPort(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG);
2773 BEGIN
2775 MOVE.L A6,-(A7)
2776 MOVEA.L srcBitMap,A0
2777 MOVE.L xSrc,D0
2778 MOVE.L ySrc,D1
2779 MOVEA.L destRP,A1
2780 MOVE.L xDest,D2
2781 MOVE.L yDest,D3
2782 MOVE.L xSize,D4
2783 MOVE.L ySize,D5
2784 MOVE.L minterm,D6
2785 MOVEA.L GfxBase,A6
2786 JSR -606(A6)
2787 MOVEA.L (A7)+,A6
2788 END;
2789 END;
2791 PROCEDURE BltClear(memBlock : pCHAR; byteCount : ULONG; flags : ULONG);
2792 BEGIN
2794 MOVE.L A6,-(A7)
2795 MOVEA.L memBlock,A1
2796 MOVE.L byteCount,D0
2797 MOVE.L flags,D1
2798 MOVEA.L GfxBase,A6
2799 JSR -300(A6)
2800 MOVEA.L (A7)+,A6
2801 END;
2802 END;
2804 PROCEDURE BltMaskBitMapRastPort(srcBitMap : pBitMap; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG; bltMask : pCHAR);
2805 BEGIN
2807 MOVE.L A6,-(A7)
2808 MOVEA.L srcBitMap,A0
2809 MOVE.L xSrc,D0
2810 MOVE.L ySrc,D1
2811 MOVEA.L destRP,A1
2812 MOVE.L xDest,D2
2813 MOVE.L yDest,D3
2814 MOVE.L xSize,D4
2815 MOVE.L ySize,D5
2816 MOVE.L minterm,D6
2817 MOVEA.L bltMask,A2
2818 MOVEA.L GfxBase,A6
2819 JSR -636(A6)
2820 MOVEA.L (A7)+,A6
2821 END;
2822 END;
2824 PROCEDURE BltPattern(rp : pRastPort; mask : pCHAR; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT; maskBPR : ULONG);
2825 BEGIN
2827 MOVE.L A6,-(A7)
2828 MOVEA.L rp,A1
2829 MOVEA.L mask,A0
2830 MOVE.L xMin,D0
2831 MOVE.L yMin,D1
2832 MOVE.L xMax,D2
2833 MOVE.L yMax,D3
2834 MOVE.L maskBPR,D4
2835 MOVEA.L GfxBase,A6
2836 JSR -312(A6)
2837 MOVEA.L (A7)+,A6
2838 END;
2839 END;
2841 PROCEDURE BltTemplate(source : pCHAR; xSrc : LONGINT; srcMod : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT);
2842 BEGIN
2844 MOVE.L A6,-(A7)
2845 MOVEA.L source,A0
2846 MOVE.L xSrc,D0
2847 MOVE.L srcMod,D1
2848 MOVEA.L destRP,A1
2849 MOVE.L xDest,D2
2850 MOVE.L yDest,D3
2851 MOVE.L xSize,D4
2852 MOVE.L ySize,D5
2853 MOVEA.L GfxBase,A6
2854 JSR -036(A6)
2855 MOVEA.L (A7)+,A6
2856 END;
2857 END;
2859 FUNCTION CalcIVG(v : pView; vp : pViewPort) : WORD;
2860 BEGIN
2862 MOVE.L A6,-(A7)
2863 MOVEA.L v,A0
2864 MOVEA.L vp,A1
2865 MOVEA.L GfxBase,A6
2866 JSR -828(A6)
2867 MOVEA.L (A7)+,A6
2868 MOVE.L D0,@RESULT
2869 END;
2870 END;
2872 PROCEDURE CBump(copList : pUCopList);
2873 BEGIN
2875 MOVE.L A6,-(A7)
2876 MOVEA.L copList,A1
2877 MOVEA.L GfxBase,A6
2878 JSR -366(A6)
2879 MOVEA.L (A7)+,A6
2880 END;
2881 END;
2883 FUNCTION ChangeExtSpriteA(vp : pViewPort; oldsprite : pExtSprite; newsprite : pExtSprite; tags : pTagItem) : LONGINT;
2884 BEGIN
2886 MOVE.L A6,-(A7)
2887 MOVEA.L vp,A0
2888 MOVEA.L oldsprite,A1
2889 MOVEA.L newsprite,A2
2890 MOVEA.L tags,A3
2891 MOVEA.L GfxBase,A6
2892 JSR -1026(A6)
2893 MOVEA.L (A7)+,A6
2894 MOVE.L D0,@RESULT
2895 END;
2896 END;
2898 PROCEDURE ChangeSprite(vp : pViewPort; sprite : pSimpleSprite; newData : pCHAR);
2899 BEGIN
2901 MOVE.L A6,-(A7)
2902 MOVEA.L vp,A0
2903 MOVEA.L sprite,A1
2904 MOVEA.L newData,A2
2905 MOVEA.L GfxBase,A6
2906 JSR -420(A6)
2907 MOVEA.L (A7)+,A6
2908 END;
2909 END;
2911 PROCEDURE ChangeVPBitMap(vp : pViewPort; bm : pBitMap; db : pDBufInfo);
2912 BEGIN
2914 MOVE.L A6,-(A7)
2915 MOVEA.L vp,A0
2916 MOVEA.L bm,A1
2917 MOVEA.L db,A2
2918 MOVEA.L GfxBase,A6
2919 JSR -942(A6)
2920 MOVEA.L (A7)+,A6
2921 END;
2922 END;
2924 PROCEDURE ClearEOL(rp : pRastPort);
2925 BEGIN
2927 MOVE.L A6,-(A7)
2928 MOVEA.L rp,A1
2929 MOVEA.L GfxBase,A6
2930 JSR -042(A6)
2931 MOVEA.L (A7)+,A6
2932 END;
2933 END;
2935 FUNCTION ClearRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
2936 BEGIN
2938 MOVE.L A6,-(A7)
2939 MOVEA.L region,A0
2940 MOVEA.L rectangle,A1
2941 MOVEA.L GfxBase,A6
2942 JSR -522(A6)
2943 MOVEA.L (A7)+,A6
2944 TST.W D0
2945 BEQ.B @end
2946 MOVEQ #1,D0
2947 @end: MOVE.B D0,@RESULT
2948 END;
2949 END;
2951 PROCEDURE ClearRegion(region : pRegion);
2952 BEGIN
2954 MOVE.L A6,-(A7)
2955 MOVEA.L region,A0
2956 MOVEA.L GfxBase,A6
2957 JSR -528(A6)
2958 MOVEA.L (A7)+,A6
2959 END;
2960 END;
2962 PROCEDURE ClearScreen(rp : pRastPort);
2963 BEGIN
2965 MOVE.L A6,-(A7)
2966 MOVEA.L rp,A1
2967 MOVEA.L GfxBase,A6
2968 JSR -048(A6)
2969 MOVEA.L (A7)+,A6
2970 END;
2971 END;
2973 PROCEDURE ClipBlit(srcRP : pRastPort; xSrc : LONGINT; ySrc : LONGINT; destRP : pRastPort; xDest : LONGINT; yDest : LONGINT; xSize : LONGINT; ySize : LONGINT; minterm : ULONG);
2974 BEGIN
2976 MOVE.L A6,-(A7)
2977 MOVEA.L srcRP,A0
2978 MOVE.L xSrc,D0
2979 MOVE.L ySrc,D1
2980 MOVEA.L destRP,A1
2981 MOVE.L xDest,D2
2982 MOVE.L yDest,D3
2983 MOVE.L xSize,D4
2984 MOVE.L ySize,D5
2985 MOVE.L minterm,D6
2986 MOVEA.L GfxBase,A6
2987 JSR -552(A6)
2988 MOVEA.L (A7)+,A6
2989 END;
2990 END;
2992 PROCEDURE CloseFont(textFont : pTextFont);
2993 BEGIN
2995 MOVE.L A6,-(A7)
2996 MOVEA.L textFont,A1
2997 MOVEA.L GfxBase,A6
2998 JSR -078(A6)
2999 MOVEA.L (A7)+,A6
3000 END;
3001 END;
3003 FUNCTION CloseMonitor(monitorSpec : pMonitorSpec) : BOOLEAN;
3004 BEGIN
3006 MOVE.L A6,-(A7)
3007 MOVEA.L monitorSpec,A0
3008 MOVEA.L GfxBase,A6
3009 JSR -720(A6)
3010 MOVEA.L (A7)+,A6
3011 TST.W D0
3012 BEQ.B @end
3013 MOVEQ #1,D0
3014 @end: MOVE.B D0,@RESULT
3015 END;
3016 END;
3018 PROCEDURE CMove(copList : pUCopList; destination : POINTER; data : LONGINT);
3019 BEGIN
3021 MOVE.L A6,-(A7)
3022 MOVEA.L copList,A1
3023 MOVE.L destination,D0
3024 MOVE.L data,D1
3025 MOVEA.L GfxBase,A6
3026 JSR -372(A6)
3027 MOVEA.L (A7)+,A6
3028 END;
3029 END;
3031 FUNCTION CoerceMode(vp : pViewPort; monitorid : ULONG; flags : ULONG) : ULONG;
3032 BEGIN
3034 MOVE.L A6,-(A7)
3035 MOVEA.L vp,A0
3036 MOVE.L monitorid,D0
3037 MOVE.L flags,D1
3038 MOVEA.L GfxBase,A6
3039 JSR -936(A6)
3040 MOVEA.L (A7)+,A6
3041 MOVE.L D0,@RESULT
3042 END;
3043 END;
3045 PROCEDURE CopySBitMap(layer : pLayer);
3046 BEGIN
3048 MOVE.L A6,-(A7)
3049 MOVEA.L layer,A0
3050 MOVEA.L GfxBase,A6
3051 JSR -450(A6)
3052 MOVEA.L (A7)+,A6
3053 END;
3054 END;
3056 PROCEDURE CWait(copList : pUCopList; v : LONGINT; h : LONGINT);
3057 BEGIN
3059 MOVE.L A6,-(A7)
3060 MOVEA.L copList,A1
3061 MOVE.L v,D0
3062 MOVE.L h,D1
3063 MOVEA.L GfxBase,A6
3064 JSR -378(A6)
3065 MOVEA.L (A7)+,A6
3066 END;
3067 END;
3069 PROCEDURE DisownBlitter;
3070 BEGIN
3072 MOVE.L A6,-(A7)
3073 MOVEA.L GfxBase,A6
3074 JSR -462(A6)
3075 MOVEA.L (A7)+,A6
3076 END;
3077 END;
3079 PROCEDURE DisposeRegion(region : pRegion);
3080 BEGIN
3082 MOVE.L A6,-(A7)
3083 MOVEA.L region,A0
3084 MOVEA.L GfxBase,A6
3085 JSR -534(A6)
3086 MOVEA.L (A7)+,A6
3087 END;
3088 END;
3090 PROCEDURE DoCollision(rp : pRastPort);
3091 BEGIN
3093 MOVE.L A6,-(A7)
3094 MOVEA.L rp,A1
3095 MOVEA.L GfxBase,A6
3096 JSR -108(A6)
3097 MOVEA.L (A7)+,A6
3098 END;
3099 END;
3101 PROCEDURE Draw(rp : pRastPort; x : LONGINT; y : LONGINT);
3102 BEGIN
3104 MOVE.L A6,-(A7)
3105 MOVEA.L rp,A1
3106 MOVE.L x,D0
3107 MOVE.L y,D1
3108 MOVEA.L GfxBase,A6
3109 JSR -246(A6)
3110 MOVEA.L (A7)+,A6
3111 END;
3112 END;
3114 PROCEDURE DrawEllipse(rp : pRastPort; xCenter : LONGINT; yCenter : LONGINT; a : LONGINT; b : LONGINT);
3115 BEGIN
3117 MOVE.L A6,-(A7)
3118 MOVEA.L rp,A1
3119 MOVE.L xCenter,D0
3120 MOVE.L yCenter,D1
3121 MOVE.L a,D2
3122 MOVE.L b,D3
3123 MOVEA.L GfxBase,A6
3124 JSR -180(A6)
3125 MOVEA.L (A7)+,A6
3126 END;
3127 END;
3129 PROCEDURE DrawGList(rp : pRastPort; vp : pViewPort);
3130 BEGIN
3132 MOVE.L A6,-(A7)
3133 MOVEA.L rp,A1
3134 MOVEA.L vp,A0
3135 MOVEA.L GfxBase,A6
3136 JSR -114(A6)
3137 MOVEA.L (A7)+,A6
3138 END;
3139 END;
3141 PROCEDURE EraseRect(rp : pRastPort; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
3142 BEGIN
3144 MOVE.L A6,-(A7)
3145 MOVEA.L rp,A1
3146 MOVE.L xMin,D0
3147 MOVE.L yMin,D1
3148 MOVE.L xMax,D2
3149 MOVE.L yMax,D3
3150 MOVEA.L GfxBase,A6
3151 JSR -810(A6)
3152 MOVEA.L (A7)+,A6
3153 END;
3154 END;
3156 FUNCTION ExtendFont(font : pTextFont; fontTags : pTagItem) : ULONG;
3157 BEGIN
3159 MOVE.L A6,-(A7)
3160 MOVEA.L font,A0
3161 MOVEA.L fontTags,A1
3162 MOVEA.L GfxBase,A6
3163 JSR -816(A6)
3164 MOVEA.L (A7)+,A6
3165 MOVE.L D0,@RESULT
3166 END;
3167 END;
3169 FUNCTION FindColor(cm : pColorMap; r : ULONG; g : ULONG; b : ULONG; maxcolor : LONGINT) : LONGINT;
3170 BEGIN
3172 MOVE.L A6,-(A7)
3173 MOVEA.L cm,A3
3174 MOVE.L r,D1
3175 MOVE.L g,D2
3176 MOVE.L b,D3
3177 MOVE.L maxcolor,D4
3178 MOVEA.L GfxBase,A6
3179 JSR -1008(A6)
3180 MOVEA.L (A7)+,A6
3181 MOVE.L D0,@RESULT
3182 END;
3183 END;
3185 FUNCTION FindDisplayInfo(displayID : ULONG) : POINTER;
3186 BEGIN
3188 MOVE.L A6,-(A7)
3189 MOVE.L displayID,D0
3190 MOVEA.L GfxBase,A6
3191 JSR -726(A6)
3192 MOVEA.L (A7)+,A6
3193 MOVE.L D0,@RESULT
3194 END;
3195 END;
3197 FUNCTION Flood(rp : pRastPort; mode : ULONG; x : LONGINT; y : LONGINT) : BOOLEAN;
3198 BEGIN
3200 MOVE.L A6,-(A7)
3201 MOVEA.L rp,A1
3202 MOVE.L mode,D2
3203 MOVE.L x,D0
3204 MOVE.L y,D1
3205 MOVEA.L GfxBase,A6
3206 JSR -330(A6)
3207 MOVEA.L (A7)+,A6
3208 TST.W D0
3209 BEQ.B @end
3210 MOVEQ #1,D0
3211 @end: MOVE.B D0,@RESULT
3212 END;
3213 END;
3215 PROCEDURE FontExtent(font : pTextFont; fontExtent : pTextExtent);
3216 BEGIN
3218 MOVE.L A6,-(A7)
3219 MOVEA.L font,A0
3220 MOVEA.L fontExtent,A1
3221 MOVEA.L GfxBase,A6
3222 JSR -762(A6)
3223 MOVEA.L (A7)+,A6
3224 END;
3225 END;
3227 PROCEDURE FreeBitMap(bm : pBitMap);
3228 BEGIN
3230 MOVE.L A6,-(A7)
3231 MOVEA.L bm,A0
3232 MOVEA.L GfxBase,A6
3233 JSR -924(A6)
3234 MOVEA.L (A7)+,A6
3235 END;
3236 END;
3238 PROCEDURE FreeColorMap(colorMap : pColorMap);
3239 BEGIN
3241 MOVE.L A6,-(A7)
3242 MOVEA.L colorMap,A0
3243 MOVEA.L GfxBase,A6
3244 JSR -576(A6)
3245 MOVEA.L (A7)+,A6
3246 END;
3247 END;
3249 PROCEDURE FreeCopList(copList : pCopList);
3250 BEGIN
3252 MOVE.L A6,-(A7)
3253 MOVEA.L copList,A0
3254 MOVEA.L GfxBase,A6
3255 JSR -546(A6)
3256 MOVEA.L (A7)+,A6
3257 END;
3258 END;
3260 PROCEDURE FreeCprList(cprList : pcprlist);
3261 BEGIN
3263 MOVE.L A6,-(A7)
3264 MOVEA.L cprList,A0
3265 MOVEA.L GfxBase,A6
3266 JSR -564(A6)
3267 MOVEA.L (A7)+,A6
3268 END;
3269 END;
3271 PROCEDURE FreeDBufInfo(dbi : pDBufInfo);
3272 BEGIN
3274 MOVE.L A6,-(A7)
3275 MOVEA.L dbi,A1
3276 MOVEA.L GfxBase,A6
3277 JSR -972(A6)
3278 MOVEA.L (A7)+,A6
3279 END;
3280 END;
3282 PROCEDURE FreeGBuffers(anOb : pAnimOb; rp : pRastPort; flag : LONGINT);
3283 BEGIN
3285 MOVE.L A6,-(A7)
3286 MOVEA.L anOb,A0
3287 MOVEA.L rp,A1
3288 MOVE.L flag,D0
3289 MOVEA.L GfxBase,A6
3290 JSR -600(A6)
3291 MOVEA.L (A7)+,A6
3292 END;
3293 END;
3295 PROCEDURE FreeRaster(p : pCHAR; width : ULONG; height : ULONG);
3296 BEGIN
3298 MOVE.L A6,-(A7)
3299 MOVEA.L p,A0
3300 MOVE.L width,D0
3301 MOVE.L height,D1
3302 MOVEA.L GfxBase,A6
3303 JSR -498(A6)
3304 MOVEA.L (A7)+,A6
3305 END;
3306 END;
3308 PROCEDURE FreeSprite(num : LONGINT);
3309 BEGIN
3311 MOVE.L A6,-(A7)
3312 MOVE.L num,D0
3313 MOVEA.L GfxBase,A6
3314 JSR -414(A6)
3315 MOVEA.L (A7)+,A6
3316 END;
3317 END;
3319 PROCEDURE FreeSpriteData(sp : pExtSprite);
3320 BEGIN
3322 MOVE.L A6,-(A7)
3323 MOVEA.L sp,A2
3324 MOVEA.L GfxBase,A6
3325 JSR -1032(A6)
3326 MOVEA.L (A7)+,A6
3327 END;
3328 END;
3330 PROCEDURE FreeVPortCopLists(vp : pViewPort);
3331 BEGIN
3333 MOVE.L A6,-(A7)
3334 MOVEA.L vp,A0
3335 MOVEA.L GfxBase,A6
3336 JSR -540(A6)
3337 MOVEA.L (A7)+,A6
3338 END;
3339 END;
3341 FUNCTION GetAPen(rp : pRastPort) : ULONG;
3342 BEGIN
3344 MOVE.L A6,-(A7)
3345 MOVEA.L rp,A0
3346 MOVEA.L GfxBase,A6
3347 JSR -858(A6)
3348 MOVEA.L (A7)+,A6
3349 MOVE.L D0,@RESULT
3350 END;
3351 END;
3353 FUNCTION GetBitMapAttr(bm : pBitMap; attrnum : ULONG) : ULONG;
3354 BEGIN
3356 MOVE.L A6,-(A7)
3357 MOVEA.L bm,A0
3358 MOVE.L attrnum,D1
3359 MOVEA.L GfxBase,A6
3360 JSR -960(A6)
3361 MOVEA.L (A7)+,A6
3362 MOVE.L D0,@RESULT
3363 END;
3364 END;
3366 FUNCTION GetBPen(rp : pRastPort) : ULONG;
3367 BEGIN
3369 MOVE.L A6,-(A7)
3370 MOVEA.L rp,A0
3371 MOVEA.L GfxBase,A6
3372 JSR -864(A6)
3373 MOVEA.L (A7)+,A6
3374 MOVE.L D0,@RESULT
3375 END;
3376 END;
3378 FUNCTION GetColorMap(entries : LONGINT) : pColorMap;
3379 BEGIN
3381 MOVE.L A6,-(A7)
3382 MOVE.L entries,D0
3383 MOVEA.L GfxBase,A6
3384 JSR -570(A6)
3385 MOVEA.L (A7)+,A6
3386 MOVE.L D0,@RESULT
3387 END;
3388 END;
3390 FUNCTION GetDisplayInfoData(handle : POINTER; buf : pCHAR; size : ULONG; tagID : ULONG; displayID : ULONG) : ULONG;
3391 BEGIN
3393 MOVE.L A6,-(A7)
3394 MOVEA.L handle,A0
3395 MOVEA.L buf,A1
3396 MOVE.L size,D0
3397 MOVE.L tagID,D1
3398 MOVE.L displayID,D2
3399 MOVEA.L GfxBase,A6
3400 JSR -756(A6)
3401 MOVEA.L (A7)+,A6
3402 MOVE.L D0,@RESULT
3403 END;
3404 END;
3406 FUNCTION GetDrMd(rp : pRastPort) : ULONG;
3407 BEGIN
3409 MOVE.L A6,-(A7)
3410 MOVEA.L rp,A0
3411 MOVEA.L GfxBase,A6
3412 JSR -870(A6)
3413 MOVEA.L (A7)+,A6
3414 MOVE.L D0,@RESULT
3415 END;
3416 END;
3418 FUNCTION GetExtSpriteA(ss : pExtSprite; tags : pTagItem) : LONGINT;
3419 BEGIN
3421 MOVE.L A6,-(A7)
3422 MOVEA.L ss,A2
3423 MOVEA.L tags,A1
3424 MOVEA.L GfxBase,A6
3425 JSR -930(A6)
3426 MOVEA.L (A7)+,A6
3427 MOVE.L D0,@RESULT
3428 END;
3429 END;
3431 FUNCTION GetGBuffers(anOb : pAnimOb; rp : pRastPort; flag : LONGINT) : BOOLEAN;
3432 BEGIN
3434 MOVE.L A6,-(A7)
3435 MOVEA.L anOb,A0
3436 MOVEA.L rp,A1
3437 MOVE.L flag,D0
3438 MOVEA.L GfxBase,A6
3439 JSR -168(A6)
3440 MOVEA.L (A7)+,A6
3441 TST.W D0
3442 BEQ.B @end
3443 MOVEQ #1,D0
3444 @end: MOVE.B D0,@RESULT
3445 END;
3446 END;
3448 FUNCTION GetOutlinePen(rp : pRastPort) : ULONG;
3449 BEGIN
3451 MOVE.L A6,-(A7)
3452 MOVEA.L rp,A0
3453 MOVEA.L GfxBase,A6
3454 JSR -876(A6)
3455 MOVEA.L (A7)+,A6
3456 MOVE.L D0,@RESULT
3457 END;
3458 END;
3460 PROCEDURE GetRGB32(cm : pColorMap; firstcolor : ULONG; ncolors : ULONG; table : POINTER);
3461 BEGIN
3463 MOVE.L A6,-(A7)
3464 MOVEA.L cm,A0
3465 MOVE.L firstcolor,D0
3466 MOVE.L ncolors,D1
3467 MOVEA.L table,A1
3468 MOVEA.L GfxBase,A6
3469 JSR -900(A6)
3470 MOVEA.L (A7)+,A6
3471 END;
3472 END;
3474 FUNCTION GetRGB4(colorMap : pColorMap; entry : LONGINT) : ULONG;
3475 BEGIN
3477 MOVE.L A6,-(A7)
3478 MOVEA.L colorMap,A0
3479 MOVE.L entry,D0
3480 MOVEA.L GfxBase,A6
3481 JSR -582(A6)
3482 MOVEA.L (A7)+,A6
3483 MOVE.L D0,@RESULT
3484 END;
3485 END;
3487 PROCEDURE GetRPAttrsA(rp : pRastPort; tags : pTagItem);
3488 BEGIN
3490 MOVE.L A6,-(A7)
3491 MOVEA.L rp,A0
3492 MOVEA.L tags,A1
3493 MOVEA.L GfxBase,A6
3494 JSR -1044(A6)
3495 MOVEA.L (A7)+,A6
3496 END;
3497 END;
3499 FUNCTION GetSprite(sprite : pSimpleSprite; num : LONGINT) : INTEGER;
3500 BEGIN
3502 MOVE.L A6,-(A7)
3503 MOVEA.L sprite,A0
3504 MOVE.L num,D0
3505 MOVEA.L GfxBase,A6
3506 JSR -408(A6)
3507 MOVEA.L (A7)+,A6
3508 MOVE.L D0,@RESULT
3509 END;
3510 END;
3512 FUNCTION GetVPModeID(vp : pViewPort) : LONGINT;
3513 BEGIN
3515 MOVE.L A6,-(A7)
3516 MOVEA.L vp,A0
3517 MOVEA.L GfxBase,A6
3518 JSR -792(A6)
3519 MOVEA.L (A7)+,A6
3520 MOVE.L D0,@RESULT
3521 END;
3522 END;
3524 PROCEDURE GfxAssociate(associateNode : POINTER; gfxNodePtr : POINTER);
3525 BEGIN
3527 MOVE.L A6,-(A7)
3528 MOVEA.L associateNode,A0
3529 MOVEA.L gfxNodePtr,A1
3530 MOVEA.L GfxBase,A6
3531 JSR -672(A6)
3532 MOVEA.L (A7)+,A6
3533 END;
3534 END;
3536 PROCEDURE GfxFree(gfxNodePtr : POINTER);
3537 BEGIN
3539 MOVE.L A6,-(A7)
3540 MOVEA.L gfxNodePtr,A0
3541 MOVEA.L GfxBase,A6
3542 JSR -666(A6)
3543 MOVEA.L (A7)+,A6
3544 END;
3545 END;
3547 FUNCTION GfxLookUp(associateNode : POINTER) : POINTER;
3548 BEGIN
3550 MOVE.L A6,-(A7)
3551 MOVEA.L associateNode,A0
3552 MOVEA.L GfxBase,A6
3553 JSR -702(A6)
3554 MOVEA.L (A7)+,A6
3555 MOVE.L D0,@RESULT
3556 END;
3557 END;
3559 FUNCTION GfxNew(gfxNodeType : ULONG) : POINTER;
3560 BEGIN
3562 MOVE.L A6,-(A7)
3563 MOVE.L gfxNodeType,D0
3564 MOVEA.L GfxBase,A6
3565 JSR -660(A6)
3566 MOVEA.L (A7)+,A6
3567 MOVE.L D0,@RESULT
3568 END;
3569 END;
3571 PROCEDURE InitArea(areaInfo : pAreaInfo; vectorBuffer : POINTER; maxVectors : LONGINT);
3572 BEGIN
3574 MOVE.L A6,-(A7)
3575 MOVEA.L areaInfo,A0
3576 MOVEA.L vectorBuffer,A1
3577 MOVE.L maxVectors,D0
3578 MOVEA.L GfxBase,A6
3579 JSR -282(A6)
3580 MOVEA.L (A7)+,A6
3581 END;
3582 END;
3584 PROCEDURE InitBitMap(bitMap : pBitMap; depth : LONGINT; width : LONGINT; height : LONGINT);
3585 BEGIN
3587 MOVE.L A6,-(A7)
3588 MOVEA.L bitMap,A0
3589 MOVE.L depth,D0
3590 MOVE.L width,D1
3591 MOVE.L height,D2
3592 MOVEA.L GfxBase,A6
3593 JSR -390(A6)
3594 MOVEA.L (A7)+,A6
3595 END;
3596 END;
3598 PROCEDURE InitGels(head : pVSprite; tail : pVSprite; gelsInfo : pGelsInfo);
3599 BEGIN
3601 MOVE.L A6,-(A7)
3602 MOVEA.L head,A0
3603 MOVEA.L tail,A1
3604 MOVEA.L gelsInfo,A2
3605 MOVEA.L GfxBase,A6
3606 JSR -120(A6)
3607 MOVEA.L (A7)+,A6
3608 END;
3609 END;
3611 PROCEDURE InitGMasks(anOb : pAnimOb);
3612 BEGIN
3614 MOVE.L A6,-(A7)
3615 MOVEA.L anOb,A0
3616 MOVEA.L GfxBase,A6
3617 JSR -174(A6)
3618 MOVEA.L (A7)+,A6
3619 END;
3620 END;
3622 PROCEDURE InitMasks(vSprite : pVSprite);
3623 BEGIN
3625 MOVE.L A6,-(A7)
3626 MOVEA.L vSprite,A0
3627 MOVEA.L GfxBase,A6
3628 JSR -126(A6)
3629 MOVEA.L (A7)+,A6
3630 END;
3631 END;
3633 PROCEDURE InitRastPort(rp : pRastPort);
3634 BEGIN
3636 MOVE.L A6,-(A7)
3637 MOVEA.L rp,A1
3638 MOVEA.L GfxBase,A6
3639 JSR -198(A6)
3640 MOVEA.L (A7)+,A6
3641 END;
3642 END;
3644 FUNCTION InitTmpRas(tmpRas : pTmpRas; buffer : pCHAR; size : LONGINT) : pTmpRas;
3645 BEGIN
3647 MOVE.L A6,-(A7)
3648 MOVEA.L tmpRas,A0
3649 MOVEA.L buffer,A1
3650 MOVE.L size,D0
3651 MOVEA.L GfxBase,A6
3652 JSR -468(A6)
3653 MOVEA.L (A7)+,A6
3654 MOVE.L D0,@RESULT
3655 END;
3656 END;
3658 PROCEDURE InitView(view : pView);
3659 BEGIN
3661 MOVE.L A6,-(A7)
3662 MOVEA.L view,A1
3663 MOVEA.L GfxBase,A6
3664 JSR -360(A6)
3665 MOVEA.L (A7)+,A6
3666 END;
3667 END;
3669 PROCEDURE InitVPort(vp : pViewPort);
3670 BEGIN
3672 MOVE.L A6,-(A7)
3673 MOVEA.L vp,A0
3674 MOVEA.L GfxBase,A6
3675 JSR -204(A6)
3676 MOVEA.L (A7)+,A6
3677 END;
3678 END;
3680 PROCEDURE LoadRGB32(vp : pViewPort; table : POINTER);
3681 BEGIN
3683 MOVE.L A6,-(A7)
3684 MOVEA.L vp,A0
3685 MOVEA.L table,A1
3686 MOVEA.L GfxBase,A6
3687 JSR -882(A6)
3688 MOVEA.L (A7)+,A6
3689 END;
3690 END;
3692 PROCEDURE LoadRGB4(vp : pViewPort; colors : POINTER; count : LONGINT);
3693 BEGIN
3695 MOVE.L A6,-(A7)
3696 MOVEA.L vp,A0
3697 MOVEA.L colors,A1
3698 MOVE.L count,D0
3699 MOVEA.L GfxBase,A6
3700 JSR -192(A6)
3701 MOVEA.L (A7)+,A6
3702 END;
3703 END;
3705 PROCEDURE LoadView(view : pView);
3706 BEGIN
3708 MOVE.L A6,-(A7)
3709 MOVEA.L view,A1
3710 MOVEA.L GfxBase,A6
3711 JSR -222(A6)
3712 MOVEA.L (A7)+,A6
3713 END;
3714 END;
3716 PROCEDURE LockLayerRom(layer : pLayer);
3717 BEGIN
3719 MOVE.L A6,-(A7)
3720 MOVEA.L layer,A5
3721 MOVEA.L GfxBase,A6
3722 JSR -432(A6)
3723 MOVEA.L (A7)+,A6
3724 END;
3725 END;
3727 FUNCTION MakeVPort(view : pView; vp : pViewPort) : ULONG;
3728 BEGIN
3730 MOVE.L A6,-(A7)
3731 MOVEA.L view,A0
3732 MOVEA.L vp,A1
3733 MOVEA.L GfxBase,A6
3734 JSR -216(A6)
3735 MOVEA.L (A7)+,A6
3736 MOVE.L D0,@RESULT
3737 END;
3738 END;
3740 FUNCTION ModeNotAvailable(modeID : ULONG) : LONGINT;
3741 BEGIN
3743 MOVE.L A6,-(A7)
3744 MOVE.L modeID,D0
3745 MOVEA.L GfxBase,A6
3746 JSR -798(A6)
3747 MOVEA.L (A7)+,A6
3748 MOVE.L D0,@RESULT
3749 END;
3750 END;
3752 PROCEDURE Move(rp : pRastPort; x : LONGINT; y : LONGINT);
3753 BEGIN
3755 MOVE.L A6,-(A7)
3756 MOVEA.L rp,A1
3757 MOVE.L x,D0
3758 MOVE.L y,D1
3759 MOVEA.L GfxBase,A6
3760 JSR -240(A6)
3761 MOVEA.L (A7)+,A6
3762 END;
3763 END;
3765 PROCEDURE MoveSprite(vp : pViewPort; sprite : pSimpleSprite; x : LONGINT; y : LONGINT);
3766 BEGIN
3768 MOVE.L A6,-(A7)
3769 MOVEA.L vp,A0
3770 MOVEA.L sprite,A1
3771 MOVE.L x,D0
3772 MOVE.L y,D1
3773 MOVEA.L GfxBase,A6
3774 JSR -426(A6)
3775 MOVEA.L (A7)+,A6
3776 END;
3777 END;
3779 FUNCTION MrgCop(view : pView) : ULONG;
3780 BEGIN
3782 MOVE.L A6,-(A7)
3783 MOVEA.L view,A1
3784 MOVEA.L GfxBase,A6
3785 JSR -210(A6)
3786 MOVEA.L (A7)+,A6
3787 MOVE.L D0,@RESULT
3788 END;
3789 END;
3791 FUNCTION NewRegion : pRegion;
3792 BEGIN
3794 MOVE.L A6,-(A7)
3795 MOVEA.L GfxBase,A6
3796 JSR -516(A6)
3797 MOVEA.L (A7)+,A6
3798 MOVE.L D0,@RESULT
3799 END;
3800 END;
3802 FUNCTION NextDisplayInfo(displayID : ULONG) : ULONG;
3803 BEGIN
3805 MOVE.L A6,-(A7)
3806 MOVE.L displayID,D0
3807 MOVEA.L GfxBase,A6
3808 JSR -732(A6)
3809 MOVEA.L (A7)+,A6
3810 MOVE.L D0,@RESULT
3811 END;
3812 END;
3814 FUNCTION ObtainBestPenA(cm : pColorMap; r : ULONG; g : ULONG; b : ULONG; tags : pTagItem) : LONGINT;
3815 BEGIN
3817 MOVE.L A6,-(A7)
3818 MOVEA.L cm,A0
3819 MOVE.L r,D1
3820 MOVE.L g,D2
3821 MOVE.L b,D3
3822 MOVEA.L tags,A1
3823 MOVEA.L GfxBase,A6
3824 JSR -840(A6)
3825 MOVEA.L (A7)+,A6
3826 MOVE.L D0,@RESULT
3827 END;
3828 END;
3830 FUNCTION ObtainPen(cm : pColorMap; n : ULONG; r : ULONG; g : ULONG; b : ULONG; f : LONGINT) : ULONG;
3831 BEGIN
3833 MOVE.L A6,-(A7)
3834 MOVEA.L cm,A0
3835 MOVE.L n,D0
3836 MOVE.L r,D1
3837 MOVE.L g,D2
3838 MOVE.L b,D3
3839 MOVE.L f,D4
3840 MOVEA.L GfxBase,A6
3841 JSR -954(A6)
3842 MOVEA.L (A7)+,A6
3843 MOVE.L D0,@RESULT
3844 END;
3845 END;
3847 FUNCTION OpenFont(textAttr : pTextAttr) : pTextFont;
3848 BEGIN
3850 MOVE.L A6,-(A7)
3851 MOVEA.L textAttr,A0
3852 MOVEA.L GfxBase,A6
3853 JSR -072(A6)
3854 MOVEA.L (A7)+,A6
3855 MOVE.L D0,@RESULT
3856 END;
3857 END;
3859 FUNCTION OpenMonitor(monitorName : pCHAR; displayID : ULONG) : pMonitorSpec;
3860 BEGIN
3862 MOVE.L A6,-(A7)
3863 MOVEA.L monitorName,A1
3864 MOVE.L displayID,D0
3865 MOVEA.L GfxBase,A6
3866 JSR -714(A6)
3867 MOVEA.L (A7)+,A6
3868 MOVE.L D0,@RESULT
3869 END;
3870 END;
3872 FUNCTION OrRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
3873 BEGIN
3875 MOVE.L A6,-(A7)
3876 MOVEA.L region,A0
3877 MOVEA.L rectangle,A1
3878 MOVEA.L GfxBase,A6
3879 JSR -510(A6)
3880 MOVEA.L (A7)+,A6
3881 TST.W D0
3882 BEQ.B @end
3883 MOVEQ #1,D0
3884 @end: MOVE.B D0,@RESULT
3885 END;
3886 END;
3888 FUNCTION OrRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
3889 BEGIN
3891 MOVE.L A6,-(A7)
3892 MOVEA.L srcRegion,A0
3893 MOVEA.L destRegion,A1
3894 MOVEA.L GfxBase,A6
3895 JSR -612(A6)
3896 MOVEA.L (A7)+,A6
3897 TST.W D0
3898 BEQ.B @end
3899 MOVEQ #1,D0
3900 @end: MOVE.B D0,@RESULT
3901 END;
3902 END;
3904 PROCEDURE OwnBlitter;
3905 BEGIN
3907 MOVE.L A6,-(A7)
3908 MOVEA.L GfxBase,A6
3909 JSR -456(A6)
3910 MOVEA.L (A7)+,A6
3911 END;
3912 END;
3914 PROCEDURE PolyDraw(rp : pRastPort; count : LONGINT; polyTable : POINTER);
3915 BEGIN
3917 MOVE.L A6,-(A7)
3918 MOVEA.L rp,A1
3919 MOVE.L count,D0
3920 MOVEA.L polyTable,A0
3921 MOVEA.L GfxBase,A6
3922 JSR -336(A6)
3923 MOVEA.L (A7)+,A6
3924 END;
3925 END;
3927 PROCEDURE QBlit(blit : pbltnode);
3928 BEGIN
3930 MOVE.L A6,-(A7)
3931 MOVEA.L blit,A1
3932 MOVEA.L GfxBase,A6
3933 JSR -276(A6)
3934 MOVEA.L (A7)+,A6
3935 END;
3936 END;
3938 PROCEDURE QBSBlit(blit : pbltnode);
3939 BEGIN
3941 MOVE.L A6,-(A7)
3942 MOVEA.L blit,A1
3943 MOVEA.L GfxBase,A6
3944 JSR -294(A6)
3945 MOVEA.L (A7)+,A6
3946 END;
3947 END;
3949 FUNCTION ReadPixel(rp : pRastPort; x : LONGINT; y : LONGINT) : ULONG;
3950 BEGIN
3952 MOVE.L A6,-(A7)
3953 MOVEA.L rp,A1
3954 MOVE.L x,D0
3955 MOVE.L y,D1
3956 MOVEA.L GfxBase,A6
3957 JSR -318(A6)
3958 MOVEA.L (A7)+,A6
3959 MOVE.L D0,@RESULT
3960 END;
3961 END;
3963 FUNCTION ReadPixelArray8(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; temprp : pRastPort) : LONGINT;
3964 BEGIN
3966 MOVE.L A6,-(A7)
3967 MOVEA.L rp,A0
3968 MOVE.L xstart,D0
3969 MOVE.L ystart,D1
3970 MOVE.L xstop,D2
3971 MOVE.L ystop,D3
3972 MOVEA.L array_,A2
3973 MOVEA.L temprp,A1
3974 MOVEA.L GfxBase,A6
3975 JSR -780(A6)
3976 MOVEA.L (A7)+,A6
3977 MOVE.L D0,@RESULT
3978 END;
3979 END;
3981 FUNCTION ReadPixelLine8(rp : pRastPort; xstart : ULONG; ystart : ULONG; width : ULONG; array_ : pCHAR; tempRP : pRastPort) : LONGINT;
3982 BEGIN
3984 MOVE.L A6,-(A7)
3985 MOVEA.L rp,A0
3986 MOVE.L xstart,D0
3987 MOVE.L ystart,D1
3988 MOVE.L width,D2
3989 MOVEA.L array_,A2
3990 MOVEA.L tempRP,A1
3991 MOVEA.L GfxBase,A6
3992 JSR -768(A6)
3993 MOVEA.L (A7)+,A6
3994 MOVE.L D0,@RESULT
3995 END;
3996 END;
3998 PROCEDURE RectFill(rp : pRastPort; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
3999 BEGIN
4001 MOVE.L A6,-(A7)
4002 MOVEA.L rp,A1
4003 MOVE.L xMin,D0
4004 MOVE.L yMin,D1
4005 MOVE.L xMax,D2
4006 MOVE.L yMax,D3
4007 MOVEA.L GfxBase,A6
4008 JSR -306(A6)
4009 MOVEA.L (A7)+,A6
4010 END;
4011 END;
4013 PROCEDURE ReleasePen(cm : pColorMap; n : ULONG);
4014 BEGIN
4016 MOVE.L A6,-(A7)
4017 MOVEA.L cm,A0
4018 MOVE.L n,D0
4019 MOVEA.L GfxBase,A6
4020 JSR -948(A6)
4021 MOVEA.L (A7)+,A6
4022 END;
4023 END;
4025 PROCEDURE RemFont(textFont : pTextFont);
4026 BEGIN
4028 MOVE.L A6,-(A7)
4029 MOVEA.L textFont,A1
4030 MOVEA.L GfxBase,A6
4031 JSR -486(A6)
4032 MOVEA.L (A7)+,A6
4033 END;
4034 END;
4036 PROCEDURE RemIBob(bob : pBob; rp : pRastPort; vp : pViewPort);
4037 BEGIN
4039 MOVE.L A6,-(A7)
4040 MOVEA.L bob,A0
4041 MOVEA.L rp,A1
4042 MOVEA.L vp,A2
4043 MOVEA.L GfxBase,A6
4044 JSR -132(A6)
4045 MOVEA.L (A7)+,A6
4046 END;
4047 END;
4049 PROCEDURE RemVSprite(vSprite : pVSprite);
4050 BEGIN
4052 MOVE.L A6,-(A7)
4053 MOVEA.L vSprite,A0
4054 MOVEA.L GfxBase,A6
4055 JSR -138(A6)
4056 MOVEA.L (A7)+,A6
4057 END;
4058 END;
4060 FUNCTION ScalerDiv(factor : ULONG; numerator : ULONG; denominator : ULONG) : WORD;
4061 BEGIN
4063 MOVE.L A6,-(A7)
4064 MOVE.L factor,D0
4065 MOVE.L numerator,D1
4066 MOVE.L denominator,D2
4067 MOVEA.L GfxBase,A6
4068 JSR -684(A6)
4069 MOVEA.L (A7)+,A6
4070 MOVE.L D0,@RESULT
4071 END;
4072 END;
4074 PROCEDURE ScrollRaster(rp : pRastPort; dx : LONGINT; dy : LONGINT; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
4075 BEGIN
4077 MOVE.L A6,-(A7)
4078 MOVEA.L rp,A1
4079 MOVE.L dx,D0
4080 MOVE.L dy,D1
4081 MOVE.L xMin,D2
4082 MOVE.L yMin,D3
4083 MOVE.L xMax,D4
4084 MOVE.L yMax,D5
4085 MOVEA.L GfxBase,A6
4086 JSR -396(A6)
4087 MOVEA.L (A7)+,A6
4088 END;
4089 END;
4091 PROCEDURE ScrollRasterBF(rp : pRastPort; dx : LONGINT; dy : LONGINT; xMin : LONGINT; yMin : LONGINT; xMax : LONGINT; yMax : LONGINT);
4092 BEGIN
4094 MOVE.L A6,-(A7)
4095 MOVEA.L rp,A1
4096 MOVE.L dx,D0
4097 MOVE.L dy,D1
4098 MOVE.L xMin,D2
4099 MOVE.L yMin,D3
4100 MOVE.L xMax,D4
4101 MOVE.L yMax,D5
4102 MOVEA.L GfxBase,A6
4103 JSR -1002(A6)
4104 MOVEA.L (A7)+,A6
4105 END;
4106 END;
4108 PROCEDURE ScrollVPort(vp : pViewPort);
4109 BEGIN
4111 MOVE.L A6,-(A7)
4112 MOVEA.L vp,A0
4113 MOVEA.L GfxBase,A6
4114 JSR -588(A6)
4115 MOVEA.L (A7)+,A6
4116 END;
4117 END;
4119 PROCEDURE SetABPenDrMd(rp : pRastPort; apen : ULONG; bpen : ULONG; drawmode : ULONG);
4120 BEGIN
4122 MOVE.L A6,-(A7)
4123 MOVEA.L rp,A1
4124 MOVE.L apen,D0
4125 MOVE.L bpen,D1
4126 MOVE.L drawmode,D2
4127 MOVEA.L GfxBase,A6
4128 JSR -894(A6)
4129 MOVEA.L (A7)+,A6
4130 END;
4131 END;
4133 PROCEDURE SetAPen(rp : pRastPort; pen : ULONG);
4134 BEGIN
4136 MOVE.L A6,-(A7)
4137 MOVEA.L rp,A1
4138 MOVE.L pen,D0
4139 MOVEA.L GfxBase,A6
4140 JSR -342(A6)
4141 MOVEA.L (A7)+,A6
4142 END;
4143 END;
4145 PROCEDURE SetBPen(rp : pRastPort; pen : ULONG);
4146 BEGIN
4148 MOVE.L A6,-(A7)
4149 MOVEA.L rp,A1
4150 MOVE.L pen,D0
4151 MOVEA.L GfxBase,A6
4152 JSR -348(A6)
4153 MOVEA.L (A7)+,A6
4154 END;
4155 END;
4157 FUNCTION SetChipRev(want : ULONG) : ULONG;
4158 BEGIN
4160 MOVE.L A6,-(A7)
4161 MOVE.L want,D0
4162 MOVEA.L GfxBase,A6
4163 JSR -888(A6)
4164 MOVEA.L (A7)+,A6
4165 MOVE.L D0,@RESULT
4166 END;
4167 END;
4169 PROCEDURE SetCollision(num : ULONG; routine : tPROCEDURE; gelsInfo : pGelsInfo);
4170 BEGIN
4172 MOVE.L A6,-(A7)
4173 MOVE.L num,D0
4174 MOVEA.L routine,A0
4175 MOVEA.L gelsInfo,A1
4176 MOVEA.L GfxBase,A6
4177 JSR -144(A6)
4178 MOVEA.L (A7)+,A6
4179 END;
4180 END;
4182 PROCEDURE SetDrMd(rp : pRastPort; drawMode : ULONG);
4183 BEGIN
4185 MOVE.L A6,-(A7)
4186 MOVEA.L rp,A1
4187 MOVE.L drawMode,D0
4188 MOVEA.L GfxBase,A6
4189 JSR -354(A6)
4190 MOVEA.L (A7)+,A6
4191 END;
4192 END;
4194 FUNCTION SetFont(rp : pRastPort; textFont : pTextFont) : LONGINT;
4195 BEGIN
4197 MOVE.L A6,-(A7)
4198 MOVEA.L rp,A1
4199 MOVEA.L textFont,A0
4200 MOVEA.L GfxBase,A6
4201 JSR -066(A6)
4202 MOVEA.L (A7)+,A6
4203 MOVE.L D0,@RESULT
4204 END;
4205 END;
4207 PROCEDURE SetMaxPen(rp : pRastPort; maxpen : ULONG);
4208 BEGIN
4210 MOVE.L A6,-(A7)
4211 MOVEA.L rp,A0
4212 MOVE.L maxpen,D0
4213 MOVEA.L GfxBase,A6
4214 JSR -990(A6)
4215 MOVEA.L (A7)+,A6
4216 END;
4217 END;
4219 FUNCTION SetOutlinePen(rp : pRastPort; pen : ULONG) : ULONG;
4220 BEGIN
4222 MOVE.L A6,-(A7)
4223 MOVEA.L rp,A0
4224 MOVE.L pen,D0
4225 MOVEA.L GfxBase,A6
4226 JSR -978(A6)
4227 MOVEA.L (A7)+,A6
4228 MOVE.L D0,@RESULT
4229 END;
4230 END;
4232 PROCEDURE SetRast(rp : pRastPort; pen : ULONG);
4233 BEGIN
4235 MOVE.L A6,-(A7)
4236 MOVEA.L rp,A1
4237 MOVE.L pen,D0
4238 MOVEA.L GfxBase,A6
4239 JSR -234(A6)
4240 MOVEA.L (A7)+,A6
4241 END;
4242 END;
4244 PROCEDURE SetRGB32(vp : pViewPort; n : ULONG; r : ULONG; g : ULONG; b : ULONG);
4245 BEGIN
4247 MOVE.L A6,-(A7)
4248 MOVEA.L vp,A0
4249 MOVE.L n,D0
4250 MOVE.L r,D1
4251 MOVE.L g,D2
4252 MOVE.L b,D3
4253 MOVEA.L GfxBase,A6
4254 JSR -852(A6)
4255 MOVEA.L (A7)+,A6
4256 END;
4257 END;
4259 PROCEDURE SetRGB32CM(cm : pColorMap; n : ULONG; r : ULONG; g : ULONG; b : ULONG);
4260 BEGIN
4262 MOVE.L A6,-(A7)
4263 MOVEA.L cm,A0
4264 MOVE.L n,D0
4265 MOVE.L r,D1
4266 MOVE.L g,D2
4267 MOVE.L b,D3
4268 MOVEA.L GfxBase,A6
4269 JSR -996(A6)
4270 MOVEA.L (A7)+,A6
4271 END;
4272 END;
4274 PROCEDURE SetRGB4(vp : pViewPort; index : LONGINT; red : ULONG; green : ULONG; blue : ULONG);
4275 BEGIN
4277 MOVE.L A6,-(A7)
4278 MOVEA.L vp,A0
4279 MOVE.L index,D0
4280 MOVE.L red,D1
4281 MOVE.L green,D2
4282 MOVE.L blue,D3
4283 MOVEA.L GfxBase,A6
4284 JSR -288(A6)
4285 MOVEA.L (A7)+,A6
4286 END;
4287 END;
4289 PROCEDURE SetRGB4CM(colorMap : pColorMap; index : LONGINT; red : ULONG; green : ULONG; blue : ULONG);
4290 BEGIN
4292 MOVE.L A6,-(A7)
4293 MOVEA.L colorMap,A0
4294 MOVE.L index,D0
4295 MOVE.L red,D1
4296 MOVE.L green,D2
4297 MOVE.L blue,D3
4298 MOVEA.L GfxBase,A6
4299 JSR -630(A6)
4300 MOVEA.L (A7)+,A6
4301 END;
4302 END;
4304 PROCEDURE SetRPAttrsA(rp : pRastPort; tags : pTagItem);
4305 BEGIN
4307 MOVE.L A6,-(A7)
4308 MOVEA.L rp,A0
4309 MOVEA.L tags,A1
4310 MOVEA.L GfxBase,A6
4311 JSR -1038(A6)
4312 MOVEA.L (A7)+,A6
4313 END;
4314 END;
4316 FUNCTION SetSoftStyle(rp : pRastPort; style : ULONG; enable : ULONG) : ULONG;
4317 BEGIN
4319 MOVE.L A6,-(A7)
4320 MOVEA.L rp,A1
4321 MOVE.L style,D0
4322 MOVE.L enable,D1
4323 MOVEA.L GfxBase,A6
4324 JSR -090(A6)
4325 MOVEA.L (A7)+,A6
4326 MOVE.L D0,@RESULT
4327 END;
4328 END;
4330 FUNCTION SetWriteMask(rp : pRastPort; msk : ULONG) : ULONG;
4331 BEGIN
4333 MOVE.L A6,-(A7)
4334 MOVEA.L rp,A0
4335 MOVE.L msk,D0
4336 MOVEA.L GfxBase,A6
4337 JSR -984(A6)
4338 MOVEA.L (A7)+,A6
4339 MOVE.L D0,@RESULT
4340 END;
4341 END;
4343 PROCEDURE SortGList(rp : pRastPort);
4344 BEGIN
4346 MOVE.L A6,-(A7)
4347 MOVEA.L rp,A1
4348 MOVEA.L GfxBase,A6
4349 JSR -150(A6)
4350 MOVEA.L (A7)+,A6
4351 END;
4352 END;
4354 PROCEDURE StripFont(font : pTextFont);
4355 BEGIN
4357 MOVE.L A6,-(A7)
4358 MOVEA.L font,A0
4359 MOVEA.L GfxBase,A6
4360 JSR -822(A6)
4361 MOVEA.L (A7)+,A6
4362 END;
4363 END;
4365 PROCEDURE SyncSBitMap(layer : pLayer);
4366 BEGIN
4368 MOVE.L A6,-(A7)
4369 MOVEA.L layer,A0
4370 MOVEA.L GfxBase,A6
4371 JSR -444(A6)
4372 MOVEA.L (A7)+,A6
4373 END;
4374 END;
4376 FUNCTION Text(rp : pRastPort; string_ : pCHAR; count : ULONG) : LONGINT;
4377 BEGIN
4379 MOVE.L A6,-(A7)
4380 MOVEA.L rp,A1
4381 MOVEA.L string_,A0
4382 MOVE.L count,D0
4383 MOVEA.L GfxBase,A6
4384 JSR -060(A6)
4385 MOVEA.L (A7)+,A6
4386 MOVE.L D0,@RESULT
4387 END;
4388 END;
4390 FUNCTION TextExtent(rp : pRastPort; string_ : pCHAR; count : LONGINT; textExtent : pTextExtent) : INTEGER;
4391 BEGIN
4393 MOVE.L A6,-(A7)
4394 MOVEA.L rp,A1
4395 MOVEA.L string_,A0
4396 MOVE.L count,D0
4397 MOVEA.L textExtent,A2
4398 MOVEA.L GfxBase,A6
4399 JSR -690(A6)
4400 MOVEA.L (A7)+,A6
4401 MOVE.L D0,@RESULT
4402 END;
4403 END;
4405 FUNCTION TextFit(rp : pRastPort; string_ : pCHAR; strLen : ULONG; textExtent : pTextExtent; constrainingExtent : pTextExtent; strDirection : LONGINT; constrainingBitWidth : ULONG; constrainingBitHeight : ULONG) : ULONG;
4406 BEGIN
4408 MOVE.L A6,-(A7)
4409 MOVEA.L rp,A1
4410 MOVEA.L string_,A0
4411 MOVE.L strLen,D0
4412 MOVEA.L textExtent,A2
4413 MOVEA.L constrainingExtent,A3
4414 MOVE.L strDirection,D1
4415 MOVE.L constrainingBitWidth,D2
4416 MOVE.L constrainingBitHeight,D3
4417 MOVEA.L GfxBase,A6
4418 JSR -696(A6)
4419 MOVEA.L (A7)+,A6
4420 MOVE.L D0,@RESULT
4421 END;
4422 END;
4424 FUNCTION TextLength(rp : pRastPort; string_ : pCHAR; count : ULONG) : INTEGER;
4425 BEGIN
4427 MOVE.L A6,-(A7)
4428 MOVEA.L rp,A1
4429 MOVEA.L string_,A0
4430 MOVE.L count,D0
4431 MOVEA.L GfxBase,A6
4432 JSR -054(A6)
4433 MOVEA.L (A7)+,A6
4434 MOVE.L D0,@RESULT
4435 END;
4436 END;
4438 FUNCTION UCopperListInit(uCopList : pUCopList; n : LONGINT) : pCopList;
4439 BEGIN
4441 MOVE.L A6,-(A7)
4442 MOVEA.L uCopList,A0
4443 MOVE.L n,D0
4444 MOVEA.L GfxBase,A6
4445 JSR -594(A6)
4446 MOVEA.L (A7)+,A6
4447 MOVE.L D0,@RESULT
4448 END;
4449 END;
4451 PROCEDURE UnlockLayerRom(layer : pLayer);
4452 BEGIN
4454 MOVE.L A6,-(A7)
4455 MOVEA.L layer,A5
4456 MOVEA.L GfxBase,A6
4457 JSR -438(A6)
4458 MOVEA.L (A7)+,A6
4459 END;
4460 END;
4462 FUNCTION VBeamPos : LONGINT;
4463 BEGIN
4465 MOVE.L A6,-(A7)
4466 MOVEA.L GfxBase,A6
4467 JSR -384(A6)
4468 MOVEA.L (A7)+,A6
4469 MOVE.L D0,@RESULT
4470 END;
4471 END;
4473 FUNCTION VideoControl(colorMap : pColorMap; tagarray : pTagItem) : BOOLEAN;
4474 BEGIN
4476 MOVE.L A6,-(A7)
4477 MOVEA.L colorMap,A0
4478 MOVEA.L tagarray,A1
4479 MOVEA.L GfxBase,A6
4480 JSR -708(A6)
4481 MOVEA.L (A7)+,A6
4482 TST.W D0
4483 BEQ.B @end
4484 MOVEQ #1,D0
4485 @end: MOVE.B D0,@RESULT
4486 END;
4487 END;
4489 PROCEDURE WaitBlit;
4490 BEGIN
4492 MOVE.L A6,-(A7)
4493 MOVEA.L GfxBase,A6
4494 JSR -228(A6)
4495 MOVEA.L (A7)+,A6
4496 END;
4497 END;
4499 PROCEDURE WaitBOVP(vp : pViewPort);
4500 BEGIN
4502 MOVE.L A6,-(A7)
4503 MOVEA.L vp,A0
4504 MOVEA.L GfxBase,A6
4505 JSR -402(A6)
4506 MOVEA.L (A7)+,A6
4507 END;
4508 END;
4510 PROCEDURE WaitTOF;
4511 BEGIN
4513 MOVE.L A6,-(A7)
4514 MOVEA.L GfxBase,A6
4515 JSR -270(A6)
4516 MOVEA.L (A7)+,A6
4517 END;
4518 END;
4520 FUNCTION WeighTAMatch(reqTextAttr : pTextAttr; targetTextAttr : pTextAttr; targetTags : pTagItem) : INTEGER;
4521 BEGIN
4523 MOVE.L A6,-(A7)
4524 MOVEA.L reqTextAttr,A0
4525 MOVEA.L targetTextAttr,A1
4526 MOVEA.L targetTags,A2
4527 MOVEA.L GfxBase,A6
4528 JSR -804(A6)
4529 MOVEA.L (A7)+,A6
4530 MOVE.L D0,@RESULT
4531 END;
4532 END;
4534 PROCEDURE WriteChunkyPixels(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; bytesperrow : LONGINT);
4535 BEGIN
4537 MOVE.L A6,-(A7)
4538 MOVEA.L rp,A0
4539 MOVE.L xstart,D0
4540 MOVE.L ystart,D1
4541 MOVE.L xstop,D2
4542 MOVE.L ystop,D3
4543 MOVEA.L array_,A2
4544 MOVE.L bytesperrow,D4
4545 MOVEA.L GfxBase,A6
4546 JSR -1056(A6)
4547 MOVEA.L (A7)+,A6
4548 END;
4549 END;
4551 FUNCTION WritePixel(rp : pRastPort; x : LONGINT; y : LONGINT) : LONGINT;
4552 BEGIN
4554 MOVE.L A6,-(A7)
4555 MOVEA.L rp,A1
4556 MOVE.L x,D0
4557 MOVE.L y,D1
4558 MOVEA.L GfxBase,A6
4559 JSR -324(A6)
4560 MOVEA.L (A7)+,A6
4561 MOVE.L D0,@RESULT
4562 END;
4563 END;
4565 FUNCTION WritePixelArray8(rp : pRastPort; xstart : ULONG; ystart : ULONG; xstop : ULONG; ystop : ULONG; array_ : pCHAR; temprp : pRastPort) : LONGINT;
4566 BEGIN
4568 MOVE.L A6,-(A7)
4569 MOVEA.L rp,A0
4570 MOVE.L xstart,D0
4571 MOVE.L ystart,D1
4572 MOVE.L xstop,D2
4573 MOVE.L ystop,D3
4574 MOVEA.L array_,A2
4575 MOVEA.L temprp,A1
4576 MOVEA.L GfxBase,A6
4577 JSR -786(A6)
4578 MOVEA.L (A7)+,A6
4579 MOVE.L D0,@RESULT
4580 END;
4581 END;
4583 FUNCTION WritePixelLine8(rp : pRastPort; xstart : ULONG; ystart : ULONG; width : ULONG; array_ : pCHAR; tempRP : pRastPort) : LONGINT;
4584 BEGIN
4586 MOVE.L A6,-(A7)
4587 MOVEA.L rp,A0
4588 MOVE.L xstart,D0
4589 MOVE.L ystart,D1
4590 MOVE.L width,D2
4591 MOVEA.L array_,A2
4592 MOVEA.L tempRP,A1
4593 MOVEA.L GfxBase,A6
4594 JSR -774(A6)
4595 MOVEA.L (A7)+,A6
4596 MOVE.L D0,@RESULT
4597 END;
4598 END;
4600 FUNCTION XorRectRegion(region : pRegion; rectangle : pRectangle) : BOOLEAN;
4601 BEGIN
4603 MOVE.L A6,-(A7)
4604 MOVEA.L region,A0
4605 MOVEA.L rectangle,A1
4606 MOVEA.L GfxBase,A6
4607 JSR -558(A6)
4608 MOVEA.L (A7)+,A6
4609 TST.W D0
4610 BEQ.B @end
4611 MOVEQ #1,D0
4612 @end: MOVE.B D0,@RESULT
4613 END;
4614 END;
4616 FUNCTION XorRegionRegion(srcRegion : pRegion; destRegion : pRegion) : BOOLEAN;
4617 BEGIN
4619 MOVE.L A6,-(A7)
4620 MOVEA.L srcRegion,A0
4621 MOVEA.L destRegion,A1
4622 MOVEA.L GfxBase,A6
4623 JSR -618(A6)
4624 MOVEA.L (A7)+,A6
4625 TST.W D0
4626 BEQ.B @end
4627 MOVEQ #1,D0
4628 @end: MOVE.B D0,@RESULT
4629 END;
4630 END;
4632 END. (* UNIT GRAPHICS *)