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 **********************************************************************}
21 uses exec
, hardware
, utility
;
32 pRectangle
= ^tRectangle
;
58 Planes
: Array [0..7] of PLANEPTR
;
60 {* flags for AllocBitMap, etc. *}
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() *}
81 { structures used by and constructed by windowlib.a }
82 { understood by rom software }
84 pClipRect
= ^tClipRect
;
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)}
90 bounds
: tRectangle
; { set up by windowlib, used by roms }
92 _p2
: Pointer; { system reserved }
93 reserved
: Longint; { system use }
94 Flags
: Longint; { only exists in layer allocation }
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
110 { else damage cliprect list for refresh }
111 Window
: Pointer; { reserved for user interface use }
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
;
123 ClipRegion
: Pointer;
124 saveClipRects
: Pointer; { used to back out when in trouble}
127 reserved2
: Array [0..17] of Byte;
128 { this must stay here }
129 DamageList
: Pointer; { list of rectangles to refresh
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 }
149 {------ Font Styles ------------------------------------------------}
151 FS_NORMAL
= 0; { normal text (no style bits set) }
152 FSB_EXTENDED
= 3; { extended face (wider than normal) }
154 FSB_ITALIC
= 2; { italic (slanted 1:2 right) }
156 FSB_BOLD
= 1; { bold face text (ORed w/ shifted) }
158 FSB_UNDERLINED
= 0; { underlined (under baseline) }
161 FSB_COLORFONT
= 6; { this uses ColorTextFont structure }
163 FSB_TAGGED
= 7; { the TextAttr is really an TTextAttr, }
167 {------ Font Flags -------------------------------------------------}
168 FPB_ROMFONT
= 0; { font is in rom }
170 FPB_DISKFONT
= 1; { font is from diskfont.library }
172 FPB_REVPATH
= 2; { designed path is reversed (e.g. left) }
174 FPB_TALLDOT
= 3; { designed for hires non-interlaced }
176 FPB_WIDEDOT
= 4; { designed for lores interlaced }
178 FPB_PROPORTIONAL
= 5; { character sizes can vary from nominal }
179 FPF_PROPORTIONAL
= 32;
180 FPB_DESIGNED
= 6; { size is "designed", not constructed }
182 FPB_REMOVED
= 7; { the font has been removed }
185 {***** TextAttr node, matches text attributes in RastPort *********}
189 pTextAttr
= ^tTextAttr
;
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 }
197 pTTextAttr
= ^tTTextAttr
;
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 }
206 {***** Text Tags **************************************************}
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 *********************************************}
218 pTextFont
= ^tTextFont
;
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 }
243 {----- tfe_Flags0 (partial definition) ----------------------------}
245 TE0B_NOREMFONT
= 0; { disallow RemFont for this font }
246 TE0F_NOREMFONT
= $01;
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 }
263 {***** ColorTextFont node *****************************************}
264 {----- ctf_Flags --------------------------------------------------}
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 --------------------------------------------}
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 }
284 {----- ColorTextFont ----------------------------------------------}
286 pColorTextFont
= ^tColorTextFont
;
287 tColorTextFont
= record
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 }
300 {***** TextExtent node ********************************************}
302 pTextExtent
= ^tTextExtent
;
304 te_Width
, { same as TextLength }
305 te_Height
: Word; { same as tf_YSize }
306 te_Extent
: tRectangle
; { relative to CP }
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 }
320 { Note: The combination VWaitAddr and HWaitAddr replace a three way
321 union in C. The three possibilities are:
323 nxtList : CopListPtr; or
326 HWaitPos : Longint; or
334 OpCode
: Integer; { 0 = move, 1 = wait }
335 VWaitAddr
: Integer; { vertical or horizontal wait position }
336 HWaitData
: Integer; { destination Pointer or data to send }
339 { structure of cprlist that points to list that hardware actually executes }
341 pcprlist
= ^tcprlist
;
344 start
: pInteger
; { start of copper list }
345 MaxCount
: Integer; { number of long instructions }
348 pCopList
= ^tCopList
;
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 }
364 pUCopList
= ^tUCopList
;
367 FirstCopList
: pCopList
; { head node of this copper list }
368 CopList
: pCopList
; { node in use }
371 pcopinit
= ^tcopinit
;
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;
389 pAreaInfo
= ^tAreaInfo
;
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}
398 FirstY
: Integer; { first point for this polygon }
407 { unoptimized for 32bit alignment of pointers }
409 pGelsInfo
= ^tGelsInfo
;
411 sprRsrvd
: Shortint
; { flag of which sprites to reserve from
413 Flags
: Byte; { system use }
415 gelTail
: Pointer; { (VSpritePtr) dummy vSprites for list management}
417 { pointer to array of 8 WORDS for sprite available lines }
421 { pointer to array of 8 pointers for color-last-assigned to vSprites }
424 collHandler
: Pointer; { (collTablePtr) Pointeres of collision routines }
428 bottommost
: Integer;
430 lastBlissObj
: Pointer; { system use only }
433 pRastPort
= ^tRastPort
;
435 Layer
: pLayer
; { LayerPtr }
436 BitMap
: pBitMap
; { BitMapPtr }
437 AreaPtrn
: Pointer; { ptr to areafill pattern }
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 }
449 Flags
: Word; { miscellaneous control bits }
450 LinePtrn
: Word; { 16 bits for textured lines }
452 cp_y
: Integer; { current pen position }
453 minterms
: Array [0..7] of Byte;
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) }
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 }
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 }
499 BltClearWait
= 1; { Waits for blit to finish }
500 BltClearXY
= 2; { Use Row/Bytes per row method }
504 StraightCopy
= $C0; { Vanilla copy }
505 InvertAndCopy
= $30; { Invert the source before copy }
506 InvertDest
= $50; { Forget source, invert dest }
509 { mode coercion definitions }
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.
521 { Ensure that the mode coerced to is not interlaced. }
524 { Coercion should ignore monitor compatibility issues. }
528 BIDTAG_COERCE
= 1; { Private }
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!) }
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 }
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
581 VUserStuff
= Integer; { Sprite user stuff }
582 BUserStuff
= Integer; { Bob user stuff }
583 AUserStuff
= Integer; { AnimOb user stuff }
585 {********************** GEL STRUCTURES **********************************}
587 pVSprite
= ^tVSprite
;
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 }
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) }
642 VSBob
: Pointer; { (BobPtr) points home if this VSprite
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 }
666 { dBufPacket defines the values needed to be saved across buffer to buffer
667 * when in double-buffer mode
670 pDBufPacket
= ^tDBufPacket
;
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 }
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 }
719 pAnimComp
= ^tAnimComp
;
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
735 { --------------------- USER VARIABLES ----------------------------------- }
736 { initial value for timer when the AnimComp is activated by the system }
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 }
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 }
763 { --------------------- SYSTEM VARIABLES --------------------------------- }
768 { number of calls to Animate this AnimOb has endured }
773 AnOldX
: Integer; { old y,x coordinates }
775 { --------------------- COMMON VARIABLES --------------------------------- }
778 AnX
: Integer; { y,x coordinates of the AnimOb }
780 { --------------------- USER VARIABLES ----------------------------------- }
783 XVel
: Integer; { velocities of this object }
785 XAccel
: Integer; { accelerations of this object }
788 RingXTrans
: Integer; { ring translation values }
790 AnimORoutine
: Pointer; { Pointer of special animation
793 HeadComp
: pAnimComp
; { pointer to first component }
795 AUserExt
: AUserStuff
; { AnimOb user extension }
801 { ************************************************************************ }
809 { ************************************************************************ }
813 { a structure to contain the 16 collision procedure addresses }
815 collTable
= Array [0..15] of Pointer;
816 pcollTable
= ^collTable
;
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.
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
845 pExtendedNode
= ^tExtendedNode
;
846 tExtendedNode
= record
852 xln_Subsystem
: Byte;
854 xln_Library
: Longint;
862 VIEWPORT_EXTRA_TYPE
= 2;
863 SPECIAL_MONITOR_TYPE
= 3;
864 MONITOR_SPEC_TYPE
= 4;
868 { structure used by AddTOFTask }
870 pIsrvstr
= ^tIsrvstr
;
873 Iptr
: pIsrvstr
; { passed to srvr by os }
880 pAnalogSignalInterval
= ^tAnalogSignalInterval
;
881 tAnalogSignalInterval
= record
886 pSpecialMonitor
= ^tSpecialMonitor
;
887 tSpecialMonitor
= record
888 spm_Node
: tExtendedNode
;
897 vsync
: tAnalogSignalInterval
;
901 pMonitorSpec
= ^tMonitorSpec
;
902 tMonitorSpec
= record
903 ms_Node
: tExtendedNode
;
909 DeniseMaxDisplayColumn
,
912 ms_Special
: pSpecialMonitor
;
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
;
928 ms_KillView
: Longint;
934 STANDARD_XOFFSET
= 9;
935 STANDARD_YOFFSET
= 0;
937 MSB_REQUEST_NTSC
= 0;
939 MSB_REQUEST_SPECIAL
= 2;
940 MSB_REQUEST_A2024
= 3;
941 MSB_DOUBLE_SPRITES
= 4;
942 MSF_REQUEST_NTSC
= 1;
944 MSF_REQUEST_SPECIAL
= 4;
945 MSF_REQUEST_A2024
= 8;
946 MSF_DOUBLE_SPRITES
= 16;
949 { obsolete, v37 compatible definitions follow }
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
);
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 ;
996 VGA_MONITOR_NAME
: PChar
= 'vga.monitor';
998 { NOTE: VGA70 definitions are obsolete - a VGA70 monitor has never been
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;
1032 pRasInfo
= ^tRasInfo
;
1033 tRasInfo
= record { used by callers to and InitDspC() }
1034 Next
: pRasInfo
; { used for dualpf }
1037 RyOffset
: Integer; { scroll offsets in this BitMap }
1043 ViewPort
: Pointer; { ViewPortPtr }
1044 LOFCprList
: pcprlist
; { used for interlaced and noninterlaced }
1045 SHFCprList
: pcprlist
; { only used during interlace }
1047 DxOffset
: Integer; { for complete View positioning }
1048 { offsets are +- adjustments to standard #s }
1049 Modes
: WORD; { such as INTERLACE, GENLOC }
1052 { these structures are obtained via GfxNew }
1053 { and disposed by GfxFree }
1055 pViewExtra
= ^tViewExtra
;
1058 View
: pView
; { backwards link } { view in C-Includes }
1059 Monitor
: pMonitorSpec
; { monitors for this view }
1064 pViewPort
= ^tViewPort
;
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 }
1078 SpritePriorities
: Byte; { used by makevp }
1084 { this structure is obtained via GfxNew }
1085 { and disposed by GfxFree }
1087 pViewPortExtra
= ^tViewPortExtra
;
1088 tViewPortExtra
= record
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;
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 }
1104 pColorMap
= ^tColorMap
;
1107 CType
: Byte; { This is "Type" in C includes }
1109 ColorTable
: Pointer;
1110 cm_vpe
: pViewPortExtra
;
1111 LowColorBits
: Pointer;
1116 cm_vp
: pViewPort
; { ViewPortPtr }
1118 CoerceDisplayInfo
: Pointer;
1119 cm_batch_items
: pTagItem
;
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 }
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;
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;
1149 EXTEND_VSTRUCT
= $1000; { unused bit in Modes field of View }
1152 { defines used for Modes in IVPargs }
1155 GENLOCK_VIDEO
= $0002;
1159 EXTRA_HALFBRITE
= $0080;
1160 GENLOCK_AUDIO
= $0100;
1163 EXTENDED_MODE
= $1000;
1172 BORDERSPRITES
= $40;
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;
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;
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. }
1210 { flags values for ObtainPen }
1213 PENB_NO_SETCOLOR
= 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;
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
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
1261 MCOP_NOP
= 2; { MrgCop() did not merge any copper lists
1262 * (eg, no ViewPorts in the list, or all marked as
1266 pDBufInfo
= ^tDBufInfo
;
1268 dbi_Link1
: Pointer;
1270 dbi_SafeMessage
: tMessage
; { replied to when safe to write to old bitmap }
1271 dbi_UserData1
: Pointer; { first user data }
1273 dbi_Link2
: Pointer;
1275 dbi_DispMessage
: tMessage
; { replied to when new bitmap has been displayed at least
1277 dbi_UserData2
: Pointer; { second user data }
1278 dbi_MatchLong
: ULONG
;
1281 dbi_CopPtr3
: Pointer;
1283 dbi_BeamPos2
: WORD;
1288 { include define file for graphics display mode IDs. }
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;
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
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
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;
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 }
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. }
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; { / }
1642 BIDTAG_GfxPrivate
= $8000000e; { Private }
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 }
1657 INTERLACE
= 4; { interlace mode for 400 }
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 }
1679 { include define file for displayinfo database }
1681 { the "public" handle to a DisplayInfoRecord }
1684 DisplayInfoHandle
= APTR
;
1686 { datachunk type identifiers }
1689 DTAG_DISP
= $80000000;
1690 DTAG_DIMS
= $80001000;
1691 DTAG_MNTR
= $80002000;
1692 DTAG_NAME
= $80003000;
1693 DTAG_VEC
= $80004000; { internal use only }
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 }
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;
1719 pad2
: array [0..4] of Byte;
1720 reserved
: Array[0..1] of ULONG
; { terminator }
1726 DI_AVAIL_NOCHIPS
=$0001;
1727 DI_AVAIL_NOMONITOR
=$0002;
1728 DI_AVAIL_NOTWITHGENLOCK
=$0004;
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.
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 }
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 }
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 }
1809 { monitor compatibility }
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;
1819 pNameInfo
= ^tNameInfo
;
1821 Header
: tQueryHeader
;
1822 Name
: Array[0..DISPLAYNAMELEN
-1] of Char;
1823 reserved
: Array[0..1] of ULONG
; { terminator }
1827 {****************************************************************************}
1829 { The following VecInfo structure is PRIVATE, for our use only
1830 * Touch these, and burn! (V39)
1833 pVecInfo
= ^tVecInfo
;
1835 Header
: tQueryHeader
;
1838 vi_Type
: WORD; { Type in C Includes }
1839 pad
: Array[0..2] of WORD;
1840 reserved
: Array[0..1] of ULONG
;
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
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
1941 When this flag is turned on, colors will be loaded for
1942 the viewport as if it were a single viewport of depth
1944 VC_DUALPF_Disable_Query
= $80000085;
1949 SPRITE_ATTACHED
= $80;
1953 pSimpleSprite
= ^tSimpleSprite
;
1954 tSimpleSprite
= record
1955 posctldata
: Pointer;
1957 x
,y
: Word; { current position }
1961 pExtSprite
= ^tExtSprite
;
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 }
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. }
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 }
2000 bsa_Reserved2
: Longint;
2003 { tag definitions for GetRPAttr, SetRPAttr }
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 }
2021 pRegionRectangle
= ^tRegionRectangle
;
2022 tRegionRectangle
= record
2023 Next
, Prev
: pRegionRectangle
;
2024 bounds
: tRectangle
;
2029 bounds
: tRectangle
;
2030 RegionRectangle
: pRegionRectangle
;
2035 pGfxBase
= ^tGfxBase
;
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 }
2047 bsblttl
: pbltnode
; { Previous four are (bltnodeptr) }
2050 bltsrv
: tInterrupt
;
2052 DefaultFont
: pTextFont
; { TextFontPtr }
2053 Modes
: Word; { copy of current first bplcon0 }
2057 system_bplcon0
: Integer; { it is ored into each bplcon0 for display }
2058 SpriteReserved
: Byte;
2059 bytereserved
: Byte;
2065 BlitOwner
: pTask
; { TaskPtr }
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 }
2083 MicrosPerLine
: Word; { 256 time usec/line }
2084 MinDisplayColumn
: Word;
2085 ChipRevBits0
: 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;
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;
2110 ActiViewCprSemaphore
: pSignalSemaphore
;
2111 UtilityBase
: Pointer; { for hook AND tag utilities }
2112 ExecBase
: Pointer; { to link with rom.lib }
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
;
2127 gb_LayersBase
: Pointer;
2131 SpecialCounter
: ULONG
; { special for double buffering }
2133 MonitorFlags
: WORD;
2136 MonitorVBlank
: tAnalogSignalInterval
;
2137 natural_monitor
: pMonitorSpec
;
2143 HashTableSemaphore
: pSignalSemaphore
;
2144 HWEmul
: Array[0..8] of Pointer;
2156 { bits defs for ChipRevBits }
2157 GFXB_BIG_BLITS
= 0 ;
2159 GFXB_HR_DENISE
= 1 ;
2162 GFXB_AA_MLISA
= 4 ; { internal use only. }
2164 GFXF_BIG_BLITS
= 1 ;
2166 GFXF_HR_DENISE
= 2 ;
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;
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) }
2190 GRAPHICSNAME
: PChar
= 'graphics.library';
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;
2350 PROCEDURE WaitBOVP(vp
: pViewPort
);
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;
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
);
2382 PROCEDURE BNDRYOFF (w
: pRastPort
);
2385 Flags
:= Flags
AND (NOT AREAOUTLINE
);
2389 PROCEDURE InitAnimate (animkey
: ppAnimOb
);
2394 PROCEDURE SetAfPt(w
: pRastPort
;p
: Pointer; n
: Byte);
2403 PROCEDURE SetDrPt(w
: pRastPort
;p
: Word);
2408 Flags
:= Flags
OR FRST_DOT
;
2413 PROCEDURE SetOPen(w
: pRastPort
;c
: Byte);
2418 Flags
:= Flags
OR AREAOUTLINE
;
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);
2430 PROCEDURE SafeSetOutlinePen(w
: pRastPort
; c
: byte);
2432 IF pGfxBase(GfxBase
)^.LibNode
.Lib_Version
< 39 THEN begin
2434 w
^.Flags
:= w
^.Flags
OR AREAOUTLINE
;
2436 c
:= SetOutlinePen(w
,c
);
2440 PROCEDURE SafeSetWriteMask( w
: pRastPort
; m
: Integer ) ;
2443 IF pGfxBase(GfxBase
)^.LibNode
.Lib_Version
< 39 THEN w
^.Mask
:= BYTE(m
)
2444 ELSE x
:= SetWriteMask( w
, m
);
2447 PROCEDURE OFF_DISPLAY (cust
: pCustom
);
2449 cust
^.dmacon
:= BITCLR
OR DMAF_RASTER
;
2452 PROCEDURE ON_DISPLAY (cust
: pCustom
);
2454 cust
^.dmacon
:= BITSET
OR DMAF_RASTER
;
2457 PROCEDURE OFF_SPRITE (cust
: pCustom
);
2459 cust
^.dmacon
:= BITCLR
OR DMAF_SPRITE
;
2462 PROCEDURE ON_SPRITE (cust
: pCustom
);
2464 cust
^.dmacon
:= BITSET
OR DMAF_SPRITE
;
2467 PROCEDURE OFF_VBLANK (cust
: pCustom
);
2469 cust
^.intena
:= BITCLR
OR INTF_VERTB
;
2472 PROCEDURE ON_VBLANK (cust
: pCustom
);
2474 cust
^.intena
:= BITSET
OR INTF_VERTB
;
2477 PROCEDURE AddAnimOb(anOb
: pAnimOb
; anKey
: ppAnimOb
; rp
: pRastPort
);
2490 PROCEDURE AddBob(bob
: pBob
; rp
: pRastPort
);
2502 PROCEDURE AddFont(textFont
: pTextFont
);
2513 PROCEDURE AddVSprite(vSprite
: pVSprite
; rp
: pRastPort
);
2525 FUNCTION AllocBitMap(sizex
: ULONG
; sizey
: ULONG
; depth
: ULONG
; flags
: ULONG
; friend_bitmap
: pBitMap
) : pBitMap
;
2533 MOVEA
.L friend_bitmap
,A0
2541 FUNCTION AllocDBufInfo(vp
: pViewPort
) : pDBufInfo
;
2553 FUNCTION AllocRaster(width
: ULONG
; height
: ULONG
) : pCHAR
;
2566 FUNCTION AllocSpriteDataA(bm
: pBitMap
; tags
: pTagItem
) : pExtSprite
;
2579 PROCEDURE AndRectRegion(region
: pRegion
; rectangle
: pRectangle
);
2584 MOVEA
.L rectangle
,A1
2591 FUNCTION AndRegionRegion(srcRegion
: pRegion
; destRegion
: pRegion
) : BOOLEAN;
2595 MOVEA
.L srcRegion
,A0
2596 MOVEA
.L destRegion
,A1
2603 @end: MOVE
.B D0
,@RESULT
2607 PROCEDURE Animate(anKey
: ppAnimOb
; rp
: pRastPort
);
2619 FUNCTION AreaDraw(rp
: pRastPort
; x
: LONGINT; y
: LONGINT) : LONGINT;
2633 FUNCTION AreaEllipse(rp
: pRastPort
; xCenter
: LONGINT; yCenter
: LONGINT; a
: LONGINT; b
: LONGINT) : LONGINT;
2649 FUNCTION AreaEnd(rp
: pRastPort
) : LONGINT;
2661 FUNCTION AreaMove(rp
: pRastPort
; x
: LONGINT; y
: LONGINT) : LONGINT;
2675 PROCEDURE AskFont(rp
: pRastPort
; textAttr
: pTextAttr
);
2687 FUNCTION AskSoftStyle(rp
: pRastPort
) : ULONG
;
2699 FUNCTION AttachPalExtra(cm
: pColorMap
; vp
: pViewPort
) : LONGINT;
2712 FUNCTION AttemptLockLayerRom(layer
: pLayer
) : BOOLEAN;
2723 @end: MOVE
.B D0
,@RESULT
2727 FUNCTION BestModeIDA(tags
: pTagItem
) : ULONG
;
2739 PROCEDURE BitMapScale(bitScaleArgs
: pBitScaleArgs
);
2743 MOVEA
.L bitScaleArgs
,A0
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;
2754 MOVEA
.L srcBitMap
,A0
2757 MOVEA
.L destBitMap
,A1
2772 PROCEDURE BltBitMapRastPort(srcBitMap
: pBitMap
; xSrc
: LONGINT; ySrc
: LONGINT; destRP
: pRastPort
; xDest
: LONGINT; yDest
: LONGINT; xSize
: LONGINT; ySize
: LONGINT; minterm
: ULONG
);
2776 MOVEA
.L srcBitMap
,A0
2791 PROCEDURE BltClear(memBlock
: pCHAR
; byteCount
: ULONG
; flags
: ULONG
);
2804 PROCEDURE BltMaskBitMapRastPort(srcBitMap
: pBitMap
; xSrc
: LONGINT; ySrc
: LONGINT; destRP
: pRastPort
; xDest
: LONGINT; yDest
: LONGINT; xSize
: LONGINT; ySize
: LONGINT; minterm
: ULONG
; bltMask
: pCHAR
);
2808 MOVEA
.L srcBitMap
,A0
2824 PROCEDURE BltPattern(rp
: pRastPort
; mask
: pCHAR
; xMin
: LONGINT; yMin
: LONGINT; xMax
: LONGINT; yMax
: LONGINT; maskBPR
: ULONG
);
2841 PROCEDURE BltTemplate(source
: pCHAR
; xSrc
: LONGINT; srcMod
: LONGINT; destRP
: pRastPort
; xDest
: LONGINT; yDest
: LONGINT; xSize
: LONGINT; ySize
: LONGINT);
2859 FUNCTION CalcIVG(v
: pView
; vp
: pViewPort
) : WORD;
2872 PROCEDURE CBump(copList
: pUCopList
);
2883 FUNCTION ChangeExtSpriteA(vp
: pViewPort
; oldsprite
: pExtSprite
; newsprite
: pExtSprite
; tags
: pTagItem
) : LONGINT;
2888 MOVEA
.L oldsprite
,A1
2889 MOVEA
.L newsprite
,A2
2898 PROCEDURE ChangeSprite(vp
: pViewPort
; sprite
: pSimpleSprite
; newData
: pCHAR
);
2911 PROCEDURE ChangeVPBitMap(vp
: pViewPort
; bm
: pBitMap
; db
: pDBufInfo
);
2924 PROCEDURE ClearEOL(rp
: pRastPort
);
2935 FUNCTION ClearRectRegion(region
: pRegion
; rectangle
: pRectangle
) : BOOLEAN;
2940 MOVEA
.L rectangle
,A1
2947 @end: MOVE
.B D0
,@RESULT
2951 PROCEDURE ClearRegion(region
: pRegion
);
2962 PROCEDURE ClearScreen(rp
: pRastPort
);
2973 PROCEDURE ClipBlit(srcRP
: pRastPort
; xSrc
: LONGINT; ySrc
: LONGINT; destRP
: pRastPort
; xDest
: LONGINT; yDest
: LONGINT; xSize
: LONGINT; ySize
: LONGINT; minterm
: ULONG
);
2992 PROCEDURE CloseFont(textFont
: pTextFont
);
3003 FUNCTION CloseMonitor(monitorSpec
: pMonitorSpec
) : BOOLEAN;
3007 MOVEA
.L monitorSpec
,A0
3014 @end: MOVE
.B D0
,@RESULT
3018 PROCEDURE CMove(copList
: pUCopList
; destination
: POINTER; data
: LONGINT);
3023 MOVE
.L destination
,D0
3031 FUNCTION CoerceMode(vp
: pViewPort
; monitorid
: ULONG
; flags
: ULONG
) : ULONG
;
3045 PROCEDURE CopySBitMap(layer
: pLayer
);
3056 PROCEDURE CWait(copList
: pUCopList
; v
: LONGINT; h
: LONGINT);
3069 PROCEDURE DisownBlitter
;
3079 PROCEDURE DisposeRegion(region
: pRegion
);
3090 PROCEDURE DoCollision(rp
: pRastPort
);
3101 PROCEDURE Draw(rp
: pRastPort
; x
: LONGINT; y
: LONGINT);
3114 PROCEDURE DrawEllipse(rp
: pRastPort
; xCenter
: LONGINT; yCenter
: LONGINT; a
: LONGINT; b
: LONGINT);
3129 PROCEDURE DrawGList(rp
: pRastPort
; vp
: pViewPort
);
3141 PROCEDURE EraseRect(rp
: pRastPort
; xMin
: LONGINT; yMin
: LONGINT; xMax
: LONGINT; yMax
: LONGINT);
3156 FUNCTION ExtendFont(font
: pTextFont
; fontTags
: pTagItem
) : ULONG
;
3169 FUNCTION FindColor(cm
: pColorMap
; r
: ULONG
; g
: ULONG
; b
: ULONG
; maxcolor
: LONGINT) : LONGINT;
3185 FUNCTION FindDisplayInfo(displayID
: ULONG
) : POINTER;
3197 FUNCTION Flood(rp
: pRastPort
; mode
: ULONG
; x
: LONGINT; y
: LONGINT) : BOOLEAN;
3211 @end: MOVE
.B D0
,@RESULT
3215 PROCEDURE FontExtent(font
: pTextFont
; fontExtent
: pTextExtent
);
3220 MOVEA
.L fontExtent
,A1
3227 PROCEDURE FreeBitMap(bm
: pBitMap
);
3238 PROCEDURE FreeColorMap(colorMap
: pColorMap
);
3249 PROCEDURE FreeCopList(copList
: pCopList
);
3260 PROCEDURE FreeCprList(cprList
: pcprlist
);
3271 PROCEDURE FreeDBufInfo(dbi
: pDBufInfo
);
3282 PROCEDURE FreeGBuffers(anOb
: pAnimOb
; rp
: pRastPort
; flag
: LONGINT);
3295 PROCEDURE FreeRaster(p
: pCHAR
; width
: ULONG
; height
: ULONG
);
3308 PROCEDURE FreeSprite(num
: LONGINT);
3319 PROCEDURE FreeSpriteData(sp
: pExtSprite
);
3330 PROCEDURE FreeVPortCopLists(vp
: pViewPort
);
3341 FUNCTION GetAPen(rp
: pRastPort
) : ULONG
;
3353 FUNCTION GetBitMapAttr(bm
: pBitMap
; attrnum
: ULONG
) : ULONG
;
3366 FUNCTION GetBPen(rp
: pRastPort
) : ULONG
;
3378 FUNCTION GetColorMap(entries
: LONGINT) : pColorMap
;
3390 FUNCTION GetDisplayInfoData(handle
: POINTER; buf
: pCHAR
; size
: ULONG
; tagID
: ULONG
; displayID
: ULONG
) : ULONG
;
3406 FUNCTION GetDrMd(rp
: pRastPort
) : ULONG
;
3418 FUNCTION GetExtSpriteA(ss
: pExtSprite
; tags
: pTagItem
) : LONGINT;
3431 FUNCTION GetGBuffers(anOb
: pAnimOb
; rp
: pRastPort
; flag
: LONGINT) : BOOLEAN;
3444 @end: MOVE
.B D0
,@RESULT
3448 FUNCTION GetOutlinePen(rp
: pRastPort
) : ULONG
;
3460 PROCEDURE GetRGB32(cm
: pColorMap
; firstcolor
: ULONG
; ncolors
: ULONG
; table
: POINTER);
3465 MOVE
.L firstcolor
,D0
3474 FUNCTION GetRGB4(colorMap
: pColorMap
; entry
: LONGINT) : ULONG
;
3487 PROCEDURE GetRPAttrsA(rp
: pRastPort
; tags
: pTagItem
);
3499 FUNCTION GetSprite(sprite
: pSimpleSprite
; num
: LONGINT) : INTEGER;
3512 FUNCTION GetVPModeID(vp
: pViewPort
) : LONGINT;
3524 PROCEDURE GfxAssociate(associateNode
: POINTER; gfxNodePtr
: POINTER);
3528 MOVEA
.L associateNode
,A0
3529 MOVEA
.L gfxNodePtr
,A1
3536 PROCEDURE GfxFree(gfxNodePtr
: POINTER);
3540 MOVEA
.L gfxNodePtr
,A0
3547 FUNCTION GfxLookUp(associateNode
: POINTER) : POINTER;
3551 MOVEA
.L associateNode
,A0
3559 FUNCTION GfxNew(gfxNodeType
: ULONG
) : POINTER;
3563 MOVE
.L gfxNodeType
,D0
3571 PROCEDURE InitArea(areaInfo
: pAreaInfo
; vectorBuffer
: POINTER; maxVectors
: LONGINT);
3576 MOVEA
.L vectorBuffer
,A1
3577 MOVE
.L maxVectors
,D0
3584 PROCEDURE InitBitMap(bitMap
: pBitMap
; depth
: LONGINT; width
: LONGINT; height
: LONGINT);
3598 PROCEDURE InitGels(head
: pVSprite
; tail
: pVSprite
; gelsInfo
: pGelsInfo
);
3611 PROCEDURE InitGMasks(anOb
: pAnimOb
);
3622 PROCEDURE InitMasks(vSprite
: pVSprite
);
3633 PROCEDURE InitRastPort(rp
: pRastPort
);
3644 FUNCTION InitTmpRas(tmpRas
: pTmpRas
; buffer
: pCHAR
; size
: LONGINT) : pTmpRas
;
3658 PROCEDURE InitView(view
: pView
);
3669 PROCEDURE InitVPort(vp
: pViewPort
);
3680 PROCEDURE LoadRGB32(vp
: pViewPort
; table
: POINTER);
3692 PROCEDURE LoadRGB4(vp
: pViewPort
; colors
: POINTER; count
: LONGINT);
3705 PROCEDURE LoadView(view
: pView
);
3716 PROCEDURE LockLayerRom(layer
: pLayer
);
3727 FUNCTION MakeVPort(view
: pView
; vp
: pViewPort
) : ULONG
;
3740 FUNCTION ModeNotAvailable(modeID
: ULONG
) : LONGINT;
3752 PROCEDURE Move(rp
: pRastPort
; x
: LONGINT; y
: LONGINT);
3765 PROCEDURE MoveSprite(vp
: pViewPort
; sprite
: pSimpleSprite
; x
: LONGINT; y
: LONGINT);
3779 FUNCTION MrgCop(view
: pView
) : ULONG
;
3791 FUNCTION NewRegion
: pRegion
;
3802 FUNCTION NextDisplayInfo(displayID
: ULONG
) : ULONG
;
3814 FUNCTION ObtainBestPenA(cm
: pColorMap
; r
: ULONG
; g
: ULONG
; b
: ULONG
; tags
: pTagItem
) : LONGINT;
3830 FUNCTION ObtainPen(cm
: pColorMap
; n
: ULONG
; r
: ULONG
; g
: ULONG
; b
: ULONG
; f
: LONGINT) : ULONG
;
3847 FUNCTION OpenFont(textAttr
: pTextAttr
) : pTextFont
;
3859 FUNCTION OpenMonitor(monitorName
: pCHAR
; displayID
: ULONG
) : pMonitorSpec
;
3863 MOVEA
.L monitorName
,A1
3872 FUNCTION OrRectRegion(region
: pRegion
; rectangle
: pRectangle
) : BOOLEAN;
3877 MOVEA
.L rectangle
,A1
3884 @end: MOVE
.B D0
,@RESULT
3888 FUNCTION OrRegionRegion(srcRegion
: pRegion
; destRegion
: pRegion
) : BOOLEAN;
3892 MOVEA
.L srcRegion
,A0
3893 MOVEA
.L destRegion
,A1
3900 @end: MOVE
.B D0
,@RESULT
3904 PROCEDURE OwnBlitter
;
3914 PROCEDURE PolyDraw(rp
: pRastPort
; count
: LONGINT; polyTable
: POINTER);
3920 MOVEA
.L polyTable
,A0
3927 PROCEDURE QBlit(blit
: pbltnode
);
3938 PROCEDURE QBSBlit(blit
: pbltnode
);
3949 FUNCTION ReadPixel(rp
: pRastPort
; x
: LONGINT; y
: LONGINT) : ULONG
;
3963 FUNCTION ReadPixelArray8(rp
: pRastPort
; xstart
: ULONG
; ystart
: ULONG
; xstop
: ULONG
; ystop
: ULONG
; array_
: pCHAR
; temprp
: pRastPort
) : LONGINT;
3981 FUNCTION ReadPixelLine8(rp
: pRastPort
; xstart
: ULONG
; ystart
: ULONG
; width
: ULONG
; array_
: pCHAR
; tempRP
: pRastPort
) : LONGINT;
3998 PROCEDURE RectFill(rp
: pRastPort
; xMin
: LONGINT; yMin
: LONGINT; xMax
: LONGINT; yMax
: LONGINT);
4013 PROCEDURE ReleasePen(cm
: pColorMap
; n
: ULONG
);
4025 PROCEDURE RemFont(textFont
: pTextFont
);
4036 PROCEDURE RemIBob(bob
: pBob
; rp
: pRastPort
; vp
: pViewPort
);
4049 PROCEDURE RemVSprite(vSprite
: pVSprite
);
4060 FUNCTION ScalerDiv(factor
: ULONG
; numerator
: ULONG
; denominator
: ULONG
) : WORD;
4066 MOVE
.L denominator
,D2
4074 PROCEDURE ScrollRaster(rp
: pRastPort
; dx
: LONGINT; dy
: LONGINT; xMin
: LONGINT; yMin
: LONGINT; xMax
: LONGINT; yMax
: LONGINT);
4091 PROCEDURE ScrollRasterBF(rp
: pRastPort
; dx
: LONGINT; dy
: LONGINT; xMin
: LONGINT; yMin
: LONGINT; xMax
: LONGINT; yMax
: LONGINT);
4108 PROCEDURE ScrollVPort(vp
: pViewPort
);
4119 PROCEDURE SetABPenDrMd(rp
: pRastPort
; apen
: ULONG
; bpen
: ULONG
; drawmode
: ULONG
);
4133 PROCEDURE SetAPen(rp
: pRastPort
; pen
: ULONG
);
4145 PROCEDURE SetBPen(rp
: pRastPort
; pen
: ULONG
);
4157 FUNCTION SetChipRev(want
: ULONG
) : ULONG
;
4169 PROCEDURE SetCollision(num
: ULONG
; routine
: tPROCEDURE
; gelsInfo
: pGelsInfo
);
4182 PROCEDURE SetDrMd(rp
: pRastPort
; drawMode
: ULONG
);
4194 FUNCTION SetFont(rp
: pRastPort
; textFont
: pTextFont
) : LONGINT;
4207 PROCEDURE SetMaxPen(rp
: pRastPort
; maxpen
: ULONG
);
4219 FUNCTION SetOutlinePen(rp
: pRastPort
; pen
: ULONG
) : ULONG
;
4232 PROCEDURE SetRast(rp
: pRastPort
; pen
: ULONG
);
4244 PROCEDURE SetRGB32(vp
: pViewPort
; n
: ULONG
; r
: ULONG
; g
: ULONG
; b
: ULONG
);
4259 PROCEDURE SetRGB32CM(cm
: pColorMap
; n
: ULONG
; r
: ULONG
; g
: ULONG
; b
: ULONG
);
4274 PROCEDURE SetRGB4(vp
: pViewPort
; index
: LONGINT; red
: ULONG
; green
: ULONG
; blue
: ULONG
);
4289 PROCEDURE SetRGB4CM(colorMap
: pColorMap
; index
: LONGINT; red
: ULONG
; green
: ULONG
; blue
: ULONG
);
4304 PROCEDURE SetRPAttrsA(rp
: pRastPort
; tags
: pTagItem
);
4316 FUNCTION SetSoftStyle(rp
: pRastPort
; style
: ULONG
; enable
: ULONG
) : ULONG
;
4330 FUNCTION SetWriteMask(rp
: pRastPort
; msk
: ULONG
) : ULONG
;
4343 PROCEDURE SortGList(rp
: pRastPort
);
4354 PROCEDURE StripFont(font
: pTextFont
);
4365 PROCEDURE SyncSBitMap(layer
: pLayer
);
4376 FUNCTION Text(rp
: pRastPort
; string_
: pCHAR
; count
: ULONG
) : LONGINT;
4390 FUNCTION TextExtent(rp
: pRastPort
; string_
: pCHAR
; count
: LONGINT; textExtent
: pTextExtent
) : INTEGER;
4397 MOVEA
.L textExtent
,A2
4405 FUNCTION TextFit(rp
: pRastPort
; string_
: pCHAR
; strLen
: ULONG
; textExtent
: pTextExtent
; constrainingExtent
: pTextExtent
; strDirection
: LONGINT; constrainingBitWidth
: ULONG
; constrainingBitHeight
: ULONG
) : ULONG
;
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
4424 FUNCTION TextLength(rp
: pRastPort
; string_
: pCHAR
; count
: ULONG
) : INTEGER;
4438 FUNCTION UCopperListInit(uCopList
: pUCopList
; n
: LONGINT) : pCopList
;
4451 PROCEDURE UnlockLayerRom(layer
: pLayer
);
4462 FUNCTION VBeamPos
: LONGINT;
4473 FUNCTION VideoControl(colorMap
: pColorMap
; tagarray
: pTagItem
) : BOOLEAN;
4485 @end: MOVE
.B D0
,@RESULT
4499 PROCEDURE WaitBOVP(vp
: pViewPort
);
4520 FUNCTION WeighTAMatch(reqTextAttr
: pTextAttr
; targetTextAttr
: pTextAttr
; targetTags
: pTagItem
) : INTEGER;
4524 MOVEA
.L reqTextAttr
,A0
4525 MOVEA
.L targetTextAttr
,A1
4526 MOVEA
.L targetTags
,A2
4534 PROCEDURE WriteChunkyPixels(rp
: pRastPort
; xstart
: ULONG
; ystart
: ULONG
; xstop
: ULONG
; ystop
: ULONG
; array_
: pCHAR
; bytesperrow
: LONGINT);
4544 MOVE
.L bytesperrow
,D4
4551 FUNCTION WritePixel(rp
: pRastPort
; x
: LONGINT; y
: LONGINT) : LONGINT;
4565 FUNCTION WritePixelArray8(rp
: pRastPort
; xstart
: ULONG
; ystart
: ULONG
; xstop
: ULONG
; ystop
: ULONG
; array_
: pCHAR
; temprp
: pRastPort
) : LONGINT;
4583 FUNCTION WritePixelLine8(rp
: pRastPort
; xstart
: ULONG
; ystart
: ULONG
; width
: ULONG
; array_
: pCHAR
; tempRP
: pRastPort
) : LONGINT;
4600 FUNCTION XorRectRegion(region
: pRegion
; rectangle
: pRectangle
) : BOOLEAN;
4605 MOVEA
.L rectangle
,A1
4612 @end: MOVE
.B D0
,@RESULT
4616 FUNCTION XorRegionRegion(srcRegion
: pRegion
; destRegion
: pRegion
) : BOOLEAN;
4620 MOVEA
.L srcRegion
,A0
4621 MOVEA
.L destRegion
,A1
4628 @end: MOVE
.B D0
,@RESULT
4632 END. (* UNIT GRAPHICS *)