home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / GameSmith1-Hisoft-System.DMS / in.adf / GDS_System.lha / include / display / display.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-09  |  9.1 KB  |  146 lines

  1. #ifndef GS_DISPLAY
  2. #define GS_DISPLAY
  3.  
  4. struct gs_rectangle           /* same as Commodore's Rectangle struct */
  5.   {                           /* guarenteed usable even with old 1.3 gfx.h */
  6.   short MinX,MinY;
  7.   short MaxX,MaxY;
  8.   };
  9.  
  10. struct gs_viewport
  11.   {
  12.   struct gs_viewport *next;   /* pointer to next viewport in display */
  13.   unsigned long *color_table; /* ptr to color table for viewport */
  14.   int num_colors;             /* number of color table entries */
  15.   unsigned short *ucop;       /* ptr to user copper list (or NULL if none) */
  16.   int height;                 /* height of viewport in scan lines */
  17.   int width;                  /* width of viewport in pixels */
  18.   int depth;                  /* number of bitplanes to use for viewport */
  19.   int bmheight;               /* bitmap height (in rows) (used only if allocating bitmap) */
  20.   int bmwidth;                /* bitmap width (in pixels) (used only if allocating bitmap) */
  21.   int top;                    /* viewport Y offset (in rows) from display start */
  22.   int left;                   /* viewport X offset (in pixels) from display start */
  23.   int xoff;                   /* X offset within bitmap (in pixels) */
  24.   int yoff;                   /* Y offset within bitmap (in pixels) */
  25.   unsigned long flags;        /* flags for display routines */
  26.   void *vpe1;                 /* ptr to 2.xx & up ViewPortExtra struct (SYSTEM USE) */
  27.   void *vpe2;                 /* ptr to 2.xx & up ViewPortExtra struct (SYSTEM USE) */
  28.   struct BitMap *bitmap1;     /* ptr to 1st bitmap struct */
  29.   struct BitMap *bitmap2;     /* ptr to 2nd bitmap struct */
  30.   void *extension;            /* reserved for future expansion */
  31.   struct gs_rectangle dclip;  /* display clip for 2.xx and up displays */
  32.  /* ALL REMAINING FIELDS ARE USED ONLY BY THE GAMESMITH DISPLAY SYSTEM */
  33.  /* HOWEVER, YOU MAY REFERENCE THE VIEWPORT AND RASINFO STRUCTS IN YOUR PROGRAM */
  34.   struct ViewPort *viewport1; /* system ViewPort struct for 1st display page */
  35.   struct ViewPort *viewport2; /* system ViewPort struct for 2nd display page */
  36.   struct RasInfo *rasinfo1;   /* system RasInfo struct for 1st viewport */
  37.   struct RasInfo *rasinfo2;   /* system RasInfo struct for 2nd viewport */
  38.   unsigned short LOF_BPLCON1; /* offset to horizontal shift register copper instruction */
  39.   unsigned short LOF_BPLPTR1; /* offset to 1st bitplane pointer copper instruction */
  40.   unsigned short SHF_BPLCON1; /* offset to horizontal shift register copper instruction */
  41.   unsigned short SHF_BPLPTR1; /* offset to 1st bitplane pointer copper instruction */
  42.   unsigned short LOF_BPLCON2; /* offset to horizontal shift register copper instruction */
  43.   unsigned short LOF_BPLPTR2; /* offset to 1st bitplane pointer copper instruction */
  44.   unsigned short SHF_BPLCON2; /* offset to horizontal shift register copper instruction */
  45.   unsigned short SHF_BPLPTR2; /* offset to 1st bitplane pointer copper instruction */
  46.   unsigned short pf1_scroll;  /* horizontal scroll value, playfield 1 */
  47.   unsigned short pf2_scroll;  /* horizontal scroll value, playfield 2 */
  48.   int xoff2;                  /* playfield 2 X offset within bitmap (system use ONLY!) */
  49.   int yoff2;                  /* playfield 2 Y offset within bitmap (system use ONLY!) */
  50.   unsigned short LOF_cop1;    /* offset to viewport copper list within display list */
  51.   unsigned short SHF_cop1;
  52.   unsigned short LOF_cop2;
  53.   unsigned short SHF_cop2;
  54.   unsigned short LOF_usercop1;   /* offset to viewport user copper list load */
  55.   unsigned short SHF_usercop1;
  56.   unsigned short LOF_usercop2;
  57.   unsigned short SHF_usercop2;
  58.   unsigned short *LOF_ucop1;     /* ptr to hardware user copper list for this viewport */
  59.   unsigned short *SHF_ucop1;
  60.   unsigned short *LOF_ucop2;
  61.   unsigned short *SHF_ucop2;
  62.   unsigned long ucoplen;      /* byte length of hardware user copper list */
  63.   unsigned short bplcon0;     /* contents of bitplane control reg 0 for this viewport */
  64.   unsigned short bplcon3;     /* contents of bitplane control reg 3 for this viewport */
  65.   unsigned char *LOF_planes1[8]; /* bitplane pointers for scroll reload */
  66.   unsigned char *SHF_planes1[8]; /* bitplane pointers for scroll reload */
  67.   unsigned char *LOF_planes2[8]; /* bitplane pointers for scroll reload */
  68.   unsigned char *SHF_planes2[8]; /* bitplane pointers for scroll reload */
  69.   };
  70.  
  71. #define GSVP_ALLOCBM    0x01  /* let the display setup routine allocate bitmap(s) */
  72. #define GSVP_DCLIP      0x02  /* user specified display clip */
  73. #define GSVP_DPF        0x04  /* set viewport to operate in dual playfield mode */
  74. #define GSVP_TOP        0x08  /* (SYSTEM FLAG) tagged top of viewport copper list */
  75. #define GSVP_NOCOLOR    0x10  /* don't set up a color palette for this viewport */
  76. #define GSVP_NOWAIT     0x20  /* for 1st viewport only, don't wait for top of display */
  77.  
  78. struct display_struct
  79.   {
  80.   struct View *oldview;       /* ptr to previous display view */
  81.   void *ve1;                  /* 2.xx & up ViewExtra struct */
  82.   void *ve2;                  /* 2.xx & up ViewExtra struct */
  83.   int DxOffset;               /* display X offset (in pixels) for 1.3 OS */
  84.   int DyOffset;               /* display Y offset (in rows) for 1.3 OS */
  85.   int modes;                  /* display mode ID */
  86.   unsigned char sprpri_pf1;   /* sprite priorities relative to playfield 1 (see ref manual) */
  87.   unsigned char sprpri_pf2;   /* sprite priorities relative to playfield 2 (0 - 4 possible) */
  88.   unsigned long flags;        /* flags for display routines */
  89.   struct gs_viewport *vp;     /* pointer to 1st viewport in display */
  90.   void *extension;            /* reserved for future expansion (fill with NULL) */
  91.   /* SYSTEM FIELDS: */
  92.   int interlace_bmdiff;       /* byte diff between LOF & SHF bitmap ptrs this display */
  93.   struct View *view1;         /* system View struct for 1st display page */
  94.   struct View *view2;         /* system View struct for 2nd display page */
  95.   struct gs_pvp *pvp;            /* ptr to parallax viewport list for this display */
  96.   unsigned short *LOF_cop1;   /* ptr to long frame hardware copper list for view 1 */
  97.   unsigned short *SHF_cop1;   /* ptr to short frame hardware copper list for view 1 */
  98.   unsigned short *LOF_cop2;   /* ptr to long frame hardware copper list for view 2 */
  99.   unsigned short *SHF_cop2;   /* ptr to short frame hardware copper list for view 2 */
  100.   unsigned long LOF_len1;     /* number of words in 1st long frame copper list */
  101.   unsigned long SHF_len1;     /* number of words in 1st short frame copper list */
  102.   unsigned long LOF_len2;     /* number of words in 2nd long frame copper list */
  103.   unsigned long SHF_len2;     /* number of words in 2nd short frame copper list */
  104.   unsigned short LOF_top;     /* 1st scan line of LOF display (copper wait) */
  105.   unsigned short SHF_top;     /* 1st scan line of SHF display (copper wait) */
  106.   };
  107.  
  108. #define GSV_DOUBLE      0x0001   /* double buffered display */
  109. #define GSV_PAGE1       0x0002   /* SYSTEM FLAG: page 1 currently displayed */
  110. #define GSV_EASY        0x0004   /* SYSTEM FLAG: display set up through easy call */
  111. #define GSV_DISPLAYED   0x0008   /* SYSTEM FLAG: custom display has been shown on screen */
  112. #define GSV_FLIP        0x0010   /* set by gs_flip_display & cleared when new page shown */
  113. #define GSV_SCROLL1     0x0020   /* SYSTEM FLAG: reload copper list with new scroll values */
  114. #define GSV_SCROLL2     0x0040   /* SYSTEM FLAG: reload copper list with new scroll values */
  115. #define GSV_ECSENA      0x0080   /* SYSTEM FLAG: used by AGA chipset scroll handling */
  116. #define GSV_BPAGEM      0x0100   /* SYSTEM FLAG: used by AGA chipset scroll handling */
  117. #define GSV_BPL32       0x0200   /* SYSTEM FLAG: used by AGA chipset scroll handling */
  118. #define GSV_DBLSCAN     0x0400   /* SYSTEM FLAG: used by AGA chipset scroll handling */
  119. #define GSV_AGA_SCROLL  0x0800   /* SYSTEM FLAG: use enhanced AGA scrolling methods */
  120. #define GSV_SUPER       0x1000   /* SYSTEM FLAG: used by AGA chipset scroll handling */
  121. #define GSV_SCROLLABLE  0x2000   /* allow view to be scrolled */
  122. #define GSV_DDFADJUST   0x4000   /* display system adjusted data fetch for smooth scrolling */
  123. #define GSV_HARDX       0x8000   /* use supplied DxOffset even under 2.x+ */
  124. #define GSV_HARDY       0x010000 /* use supplied DyOffset even under 2.x+ */
  125. #define GSV_PF2PRI      0x020000 /* playfield 2 appears in front of playfield 1 */
  126. #define GSV_BRDRBLNK    0x040000 /* blank borders on AGA/ECS machines instead of showing color 0 */
  127.  
  128. /* return values for gs_scroll_vp: */
  129.  
  130. #define GSVP_PF1_LEFT   0x01  /* playfield 1 display at leftmost edge */
  131. #define GSVP_PF1_RIGHT  0x02  /* playfield 1 display at rightmost edge */
  132. #define GSVP_PF1_TOP    0x04  /* playfield 1 display at topmost edge */
  133. #define GSVP_PF1_BOTTOM 0x08  /* playfield 1 display at bottom most edge */
  134. #define GSVP_PF2_LEFT   0x10  /* playfield 2 display at leftmost edge */
  135. #define GSVP_PF2_RIGHT  0x20  /* playfield 2 display at rightmost edge */
  136. #define GSVP_PF2_TOP    0x40  /* playfield 2 display at topmost edge */
  137. #define GSVP_PF2_BOTTOM 0x80  /* playfield 2 display at bottom most edge */
  138. #define GSVP_NOVP       -1    /* invalid viewport specified */
  139.  
  140. /* return values from LoadRGB and SetRGB */
  141.  
  142. /* GSVP_NOVP */
  143. #define GSVP_RANGE      -2    /* color register out of range */
  144.  
  145. #endif
  146.