home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / inc&ad2.0 / includes / hardware / blit.h < prev    next >
C/C++ Source or Header  |  1992-09-01  |  2KB  |  105 lines

  1. #ifndef    HARDWARE_BLIT_H
  2. #define    HARDWARE_BLIT_H
  3. /*
  4. **    $Filename: hardware/blit.h $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 36.3 $
  7. **    $Date: 90/11/05 $
  8. **
  9. **    Defines for direct hardware use of the blitter.
  10. **
  11. **    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #define HSIZEBITS 6
  16. #define VSIZEBITS 16-HSIZEBITS
  17. #define HSIZEMASK 0x3f          /* 2^6 -- 1 */
  18. #define VSIZEMASK 0x3FF       /* 2^10 - 1 */
  19.  
  20. /* all agnii support horizontal blit of at least 1024 bits (128 bytes) wide */
  21. /* some agnii support horizontal blit of up to 32768 bits (4096 bytes) wide */
  22.  
  23. #ifndef     NO_BIG_BLITS
  24. #define  MINBYTESPERROW 128
  25. #define  MAXBYTESPERROW 4096
  26. #else
  27. #define  MAXBYTESPERROW 128
  28. #endif
  29.  
  30. /* definitions for blitter control register 0 */
  31.  
  32. #define ABC    0x80
  33. #define ABNC   0x40
  34. #define ANBC   0x20
  35. #define ANBNC  0x10
  36. #define NABC   0x8
  37. #define NABNC  0x4
  38. #define NANBC  0x2
  39. #define NANBNC 0x1
  40.  
  41. /* some commonly used operations */
  42. #define A_OR_B      ABC|ANBC|NABC | ABNC|ANBNC|NABNC
  43. #define A_OR_C      ABC|NABC|ABNC | ANBC|NANBC|ANBNC
  44. #define A_XOR_C   NABC|ABNC   | NANBC|ANBNC
  45. #define A_TO_D      ABC|ANBC|ABNC|ANBNC
  46.  
  47. #define BC0B_DEST 8
  48. #define BC0B_SRCC 9
  49. #define BC0B_SRCB   10
  50. #define BC0B_SRCA 11
  51. #define BC0F_DEST 0x100
  52. #define BC0F_SRCC 0x200
  53. #define BC0F_SRCB 0x400
  54. #define BC0F_SRCA 0x800
  55.  
  56. #define BC1F_DESC   2          /* blitter descend direction */
  57.  
  58. #define DEST 0x100
  59. #define SRCC 0x200
  60. #define SRCB 0x400
  61. #define SRCA 0x800
  62.  
  63. #define ASHIFTSHIFT  12       /* bits to right align ashift value */
  64. #define BSHIFTSHIFT  12       /* bits to right align bshift value */
  65.  
  66. /* definations for blitter control register 1 */
  67. #define LINEMODE     0x1
  68. #define FILL_OR      0x8
  69. #define FILL_XOR     0x10
  70. #define FILL_CARRYIN 0x4
  71. #define ONEDOT         0x2      /* one dot per horizontal line */
  72. #define OVFLAG         0x20
  73. #define SIGNFLAG     0x40
  74. #define BLITREVERSE  0x2
  75.  
  76. #define SUD         0x10
  77. #define SUL         0x8
  78. #define AUL         0x4
  79.  
  80. #define OCTANT8   24
  81. #define OCTANT7   4
  82. #define OCTANT6   12
  83. #define OCTANT5   28
  84. #define OCTANT4   20
  85. #define OCTANT3   8
  86. #define OCTANT2   0
  87. #define OCTANT1   16
  88.  
  89. /* stuff for blit qeuer */
  90. struct bltnode
  91. {
  92.     struct  bltnode *n;
  93.     int     (*function)();
  94.     char    stat;
  95.     short   blitsize;
  96.     short   beamsync;
  97.     int     (*cleanup)();
  98. };
  99.  
  100. /* defined bits for bltstat */
  101. #define CLEANUP 0x40
  102. #define CLEANME CLEANUP
  103.  
  104. #endif    /* HARDWARE_BLIT_H */
  105.