Annotation of uae/src/include/picasso96.h, revision 1.1.1.6

1.1       root        1: /*
                      2:  * UAE - The U*nix Amiga Emulator
                      3:  *
                      4:  * Picasso96 Support Module Header
                      5:  *
                      6:  * Copyright 1997 Brian King <[email protected], [email protected]>
                      7:  */
                      8: 
                      9: #if defined PICASSO96_SUPPORTED
                     10: 
                     11: #define PICASSO96
                     12: 
                     13: #define JAM1 0
                     14: #define JAM2 1
                     15: #define COMP 2
                     16: #define INVERS 4
                     17: 
1.1.1.4   root       18: typedef enum {
                     19:     BLIT_FALSE,
                     20:     BLIT_NOR,
                     21:     BLIT_ONLYDST,
                     22:     BLIT_NOTSRC,
                     23:     BLIT_ONLYSRC,
                     24:     BLIT_NOTDST,
                     25:     BLIT_EOR,
                     26:     BLIT_NAND,
                     27:     BLIT_AND,
                     28:     BLIT_NEOR,
                     29:     BLIT_DST,
                     30:     BLIT_NOTONLYSRC,
                     31:     BLIT_SRC,
                     32:     BLIT_NOTONLYDST,
                     33:     BLIT_OR,
                     34:     BLIT_TRUE,
                     35:     BLIT_LAST
                     36: } BLIT_OPCODE;
                     37: 
1.1.1.5   root       38: /************************************************************************/
                     39: /* Types for BoardType Identification
                     40:  */
                     41: typedef enum {
                     42:        BT_NoBoard,
                     43:        BT_oMniBus,
                     44:        BT_Graffity,
                     45:        BT_CyberVision,
                     46:        BT_Domino,
                     47:        BT_Merlin,
                     48:        BT_PicassoII,
                     49:        BT_Piccolo,
                     50:        BT_RetinaBLT,
                     51:        BT_Spectrum,
                     52:        BT_PicassoIV,
                     53:        BT_PiccoloSD64,
                     54:        BT_A2410,
                     55:        BT_Pixel64,
                     56:        BT_uaegfx,
                     57:        BT_CVision3D,
                     58:        BT_Altais,
                     59:        BT_Prototype1,
                     60:        BT_Prototype2,
                     61:        BT_Prototype3,
                     62:        BT_Prototype4,
                     63:        BT_Prototype5,
                     64:        BT_MaxBoardTypes
                     65: } BTYPE;
                     66: 
1.1       root       67: struct ScreenResolution
                     68: {
                     69:     uae_u32 width;  /* in pixels */
                     70:     uae_u32 height; /* in pixels */
                     71: };
                     72: 
                     73: #define MAX_PICASSO_MODES 64
                     74: 
                     75: struct PicassoResolution
                     76: {
                     77:     struct Resolutions *next;
                     78:     struct ScreenResolution res;
                     79:     int depth;
                     80:     int refresh;
                     81:     char name[25];
                     82: };
                     83: extern struct PicassoResolution DisplayModes[MAX_PICASSO_MODES];
                     84: 
                     85: 
                     86: /* Types for RGBFormat used */
                     87: typedef enum {
                     88:     RGBFB_NONE,                /* no valid RGB format (should not happen) */
                     89:     RGBFB_CLUT,                /* palette mode, set colors when opening screen using
                     90:                           tags or use SetRGB32/LoadRGB32(...) */
                     91:     RGBFB_R8G8B8,      /* TrueColor RGB (8 bit each) */
                     92:     RGBFB_B8G8R8,      /* TrueColor BGR (8 bit each) */
                     93:     RGBFB_R5G6B5PC,    /* HiColor16 (5 bit R, 6 bit G, 5 bit B),
                     94:                           format: gggbbbbbrrrrrggg */
                     95:     RGBFB_R5G5B5PC,    /* HiColor15 (5 bit each), format: gggbbbbb0rrrrrgg */
                     96:     RGBFB_A8R8G8B8,    /* 4 Byte TrueColor ARGB (A unused alpha channel) */
                     97:     RGBFB_A8B8G8R8,    /* 4 Byte TrueColor ABGR (A unused alpha channel) */
                     98:     RGBFB_R8G8B8A8,    /* 4 Byte TrueColor RGBA (A unused alpha channel) */
                     99:     RGBFB_B8G8R8A8,    /* 4 Byte TrueColor BGRA (A unused alpha channel) */
                    100:     RGBFB_R5G6B5,      /* HiColor16 (5 bit R, 6 bit G, 5 bit B),
                    101:                           format: rrrrrggggggbbbbb */
                    102:     RGBFB_R5G5B5,      /* HiColor15 (5 bit each), format: 0rrrrrgggggbbbbb */
                    103:     RGBFB_B5G6R5PC,    /* HiColor16 (5 bit R, 6 bit G, 5 bit B),
                    104:                           format: gggrrrrrbbbbbggg */
                    105:     RGBFB_B5G5R5PC,    /* HiColor15 (5 bit each), format: gggrrrrr0bbbbbbgg */
                    106: 
                    107:     /* By now, the following formats are for use with a hardware window only
                    108:        (bitmap operations may be implemented incompletely) */
                    109: 
                    110:     RGBFB_Y4U2V2,      /* 2 Byte TrueColor YUV (CCIR recommendation CCIR601).
                    111:                           Each two-pixel unit is stored as one longword
                    112:                           containing luminance (Y) for each of the two pixels,
                    113:                           and chrominance (U,V) for alternate pixels.
                    114:                           The missing chrominance values are generated by
                    115:                           interpolation. (Y1-U0-Y0-V0) */
                    116:     RGBFB_Y4U1V1,      /* 1 Byte TrueColor ACCUPAK. Four adjacent pixels form
                    117:                           a packet of 5 bits Y (luminance) each pixel and 6 bits
                    118:                           U and V (chrominance) shared by the four pixels */
                    119: 
                    120:     RGBFB_MaxFormats
                    121: } RGBFTYPE;
                    122: 
                    123: #define RGBFF_NONE     (1<<RGBFB_NONE)
                    124: #define RGBFF_CLUT     (1<<RGBFB_CLUT)
                    125: #define RGBFF_R8G8B8   (1<<RGBFB_R8G8B8)
                    126: #define RGBFF_B8G8R8   (1<<RGBFB_B8G8R8)
                    127: #define RGBFF_R5G6B5PC (1<<RGBFB_R5G6B5PC)
                    128: #define RGBFF_R5G5B5PC (1<<RGBFB_R5G5B5PC)
                    129: #define RGBFF_A8R8G8B8 (1<<RGBFB_A8R8G8B8)
                    130: #define RGBFF_A8B8G8R8 (1<<RGBFB_A8B8G8R8)
                    131: #define RGBFF_R8G8B8A8 (1<<RGBFB_R8G8B8A8)
                    132: #define RGBFF_B8G8R8A8 (1<<RGBFB_B8G8R8A8)
                    133: #define RGBFF_R5G6B5   (1<<RGBFB_R5G6B5)
                    134: #define RGBFF_R5G5B5   (1<<RGBFB_R5G5B5)
                    135: #define RGBFF_B5G6R5PC (1<<RGBFB_B5G6R5PC)
                    136: #define RGBFF_B5G5R5PC (1<<RGBFB_B5G5R5PC)
                    137: #define RGBFF_Y4U2V2   (1<<RGBFB_Y4U2V2)
                    138: #define RGBFF_Y4U1V1   (1<<RGBFB_Y4U1V1)
                    139: 
1.1.1.2   root      140: #define RGBMASK_8BIT RGBFF_CLUT
                    141: #define RGBMASK_16BIT (RGBFF_R5G6B5PC | RGBFF_B5G6R5PC | RGBFF_R5G6B5)
                    142: #define RGBMASK_15BIT (RGBFF_R5G5B5PC | RGBFF_B5G5R5PC | RGBFF_R5G5B5)
                    143: #define RGBMASK_24BIT (RGBFF_R8G8B8 | RGBFF_B8G8R8)
                    144: #define RGBMASK_32BIT (RGBFF_A8R8G8B8 | RGBFF_A8B8G8R8 | RGBFF_R8G8B8A8 | RGBFF_B8G8R8A8)
                    145: 
1.1       root      146: /************************************************************************/
                    147: 
1.1.1.5   root      148: #define RGBFF_PLANAR   RGBFF_NONE
                    149: #define RGBFF_CHUNKY   RGBFF_CLUT
1.1       root      150: 
1.1.1.5   root      151: #define RGBFB_PLANAR   RGBFB_NONE
                    152: #define RGBFB_CHUNKY   RGBFB_CLUT
1.1       root      153: 
                    154: /************************************************************************/
                    155: 
1.1.1.2   root      156: enum {
1.1       root      157:     PLANAR,
                    158:     CHUNKY,
                    159:     HICOLOR,
                    160:     TRUECOLOR,
                    161:     TRUEALPHA,
                    162:     MAXMODES
                    163: };
                    164: 
                    165: /************************************************************************/
                    166: struct MyCLUTEntry {
                    167:     uae_u8 Red;
                    168:     uae_u8 Green;
                    169:     uae_u8 Blue;
                    170:     uae_u8 Pad;
                    171: };
                    172: 
                    173: struct ColorIndexMapping {
                    174:     uae_u32 ColorMask;
                    175:     uae_u32 Colors[256];
                    176: };
                    177: 
                    178: struct CLUTEntry {
                    179:     uae_u8 Red;
                    180:     uae_u8 Green;
                    181:     uae_u8 Blue;
                    182: };
                    183: 
                    184: #define PSSO_BitMap_BytesPerRow 0
                    185: #define PSSO_BitMap_Rows 2
                    186: #define PSSO_BitMap_Flags 4
                    187: #define PSSO_BitMap_Depth 5
                    188: #define PSSO_BitMap_pad 6
                    189: #define PSSO_BitMap_Planes 8
                    190: #define PSSO_BitMap_sizeof 40
                    191: 
                    192: struct BitMap
                    193: {
                    194:     uae_u16 BytesPerRow;
                    195:     uae_u16 Rows;
                    196:     uae_u8 Flags;
                    197:     uae_u8 Depth;
                    198:     uae_u16 pad;
                    199:     uae_u8 *Planes[8];
                    200: };
                    201: 
                    202: /************************************************************************/
                    203: 
1.1.1.5   root      204: #define SETTINGSNAMEMAXCHARS           30
                    205: #define BOARDNAMEMAXCHARS              30
1.1       root      206: 
1.1.1.2   root      207: struct Settings {
1.1       root      208:     uae_u32                                    BoardType;
                    209:     /* a value discribing assignment to nth board local to boardtype
                    210:      * to be used for reassignment when boards are added or removed.  */
                    211:     uae_u16                                    LocalOrdering;
                    212:     uae_s16                                    LastSelected;
                    213:     char                                       NameField[SETTINGSNAMEMAXCHARS];
                    214:     /* neu! */
                    215:     char                                       *BoardName;
                    216: };
                    217: 
                    218: #define MAXRESOLUTIONNAMELENGTH 22
                    219: 
                    220: /********************************
                    221:  * only used within rtg.library *
                    222:  ********************************/
                    223: 
                    224: #define PSSO_LibResolution_P96ID 14
                    225: #define PSSO_LibResolution_Name 20
                    226: #define PSSO_LibResolution_DisplayID 42 /* Name + MAXRESOLUTIONNAMELENGTH */
                    227: #define PSSO_LibResolution_Width 46
                    228: #define PSSO_LibResolution_Height 48
                    229: #define PSSO_LibResolution_Flags 50
                    230: #define PSSO_LibResolution_Modes 52
                    231: #define PSSO_LibResolution_BoardInfo (52 + MAXMODES*4)
                    232: #define PSSO_LibResolution_sizeof (60 + MAXMODES*4)
                    233: 
1.1.1.2   root      234: struct LibResolution {
1.1       root      235:     char P96ID[6];
                    236:     char Name[MAXRESOLUTIONNAMELENGTH];
                    237:     uae_u32 DisplayID;
                    238:     uae_u16 Width;
                    239:     uae_u16 Height;
                    240:     uae_u16 Flags;
                    241:     uaecptr Modes[MAXMODES];
                    242:     uaecptr BoardInfo;
                    243: };
                    244: 
1.1.1.5   root      245: #define P96B_FAMILY    0                       /* obsolete (Resolution is an entire family) */
                    246: #define P96B_PUBLIC    1                       /* Resolution should be added to the public */
                    247: #define P96B_MONITOOL  2
                    248: 
                    249: #define P96F_FAMILY    (1<<P96B_FAMILY)        /* obsolete */
                    250: #define P96F_PUBLIC    (1<<P96B_PUBLIC)
                    251: #define P96F_MONITOOL  (1<<P96B_MONITOOL)
1.1       root      252: 
                    253: #define PSSO_ModeInfo_OpenCount 14
                    254: #define PSSO_ModeInfo_Active 16
                    255: #define PSSO_ModeInfo_Width 18
                    256: #define PSSO_ModeInfo_Height 20
                    257: #define PSSO_ModeInfo_Depth 22
                    258: #define PSSO_ModeInfo_Flags 23
                    259: #define PSSO_ModeInfo_HorTotal 24
                    260: #define PSSO_ModeInfo_HorBlankSize 26
                    261: #define PSSO_ModeInfo_HorSyncStart 28
                    262: #define PSSO_ModeInfo_HorSyncSize 30
                    263: #define PSSO_ModeInfo_HorSyncSkew 32
                    264: #define PSSO_ModeInfo_HorEnableSkew 33
                    265: #define PSSO_ModeInfo_VerTotal 34
                    266: #define PSSO_ModeInfo_VerBlankSize 36
                    267: #define PSSO_ModeInfo_VerSyncStart 38
                    268: #define PSSO_ModeInfo_VerSyncSize 40
                    269: #define PSSO_ModeInfo_first_union 42
                    270: #define PSSO_ModeInfo_second_union 43
                    271: #define PSSO_ModeInfo_PixelClock 44
                    272: #define PSSO_ModeInfo_sizeof 48
                    273: 
                    274: #define PSSO_RenderInfo_Memory 0
                    275: #define PSSO_RenderInfo_BytesPerRow 4
                    276: #define PSSO_RenderInfo_pad 6
                    277: #define PSSO_RenderInfo_RGBFormat 8
1.1.1.3   root      278: #define PSSO_RenderInfo_sizeof 12
1.1       root      279: 
                    280: struct RenderInfo {
                    281:     uae_u8 *Memory;
                    282:     uae_s16 BytesPerRow;
                    283:     uae_s16 pad;
                    284:     RGBFTYPE RGBFormat;
                    285: };
                    286: 
                    287: #define PSSO_Pattern_Memory 0
                    288: #define PSSO_Pattern_XOffset 4
                    289: #define PSSO_Pattern_YOffset 6
                    290: #define PSSO_Pattern_FgPen 8
                    291: #define PSSO_Pattern_BgPen 12
                    292: #define PSSO_Pattern_Size 16
                    293: #define PSSO_Pattern_DrawMode 17
                    294: #define PSSO_Pattern_sizeof 18
                    295: struct Pattern {
1.1.1.6 ! root      296:     uae_u8 *Memory;
1.1       root      297:     uae_u16 XOffset, YOffset;
                    298:     uae_u32 FgPen, BgPen;
                    299:     uae_u8 Size;                                       /* Width: 16, Height: (1<<pat_Size) */
                    300:     uae_u8 DrawMode;
                    301: };
                    302: 
                    303: #define PSSO_Template_Memory 0
                    304: #define PSSO_Template_BytesPerRow 4
                    305: #define PSSO_Template_XOffset 6
                    306: #define PSSO_Template_DrawMode 7
                    307: #define PSSO_Template_FgPen 8
                    308: #define PSSO_Template_BgPen 12
                    309: #define PSSO_Template_sizeof 16
                    310: 
                    311: struct Template {
1.1.1.6 ! root      312:     uae_u8 *Memory;
1.1.1.2   root      313:     uae_s16 BytesPerRow;
                    314:     uae_u8 XOffset;
                    315:     uae_u8 DrawMode;
                    316:     uae_u32 FgPen;
                    317:     uae_u32 BgPen;
1.1       root      318: };
                    319: 
1.1.1.5   root      320: #define PSSO_BitMapExtra_BoardNode       0
                    321: #define PSSO_BitMapExtra_HashChain       8 /* BoardNode is 8-bytes */
                    322: #define PSSO_BitMapExtra_Match          12
                    323: #define PSSO_BitMapExtra_BitMap                 16
                    324: #define PSSO_BitMapExtra_BoardInfo      20
                    325: #define PSSO_BitMapExtra_MemChunk       24
                    326: #define PSSO_BitMapExtra_RenderInfo     28
                    327: #define PSSO_BitMapExtra_Width          40 /* RenderInfo is 12-bytes */
                    328: #define PSSO_BitMapExtra_Height                 42
                    329: #define PSSO_BitMapExtra_Flags          44
                    330: #define PSSO_BitMapExtra_BaseLevel      46
                    331: #define PSSO_BitMapExtra_CurrentLevel   48
                    332: #define PSSO_BitMapExtra_CompanionMaster 50
                    333: #define PSSO_BitMapExtra_Last           54
                    334: 
                    335: #define PSSO_BoardInfo_RegisterBase               0
                    336: #define PSSO_BoardInfo_MemoryBase                 PSSO_BoardInfo_RegisterBase + 4
                    337: #define PSSO_BoardInfo_MemoryIOBase               PSSO_BoardInfo_MemoryBase + 4
                    338: #define PSSO_BoardInfo_MemorySize                 PSSO_BoardInfo_MemoryIOBase + 4
                    339: #define PSSO_BoardInfo_BoardName                  PSSO_BoardInfo_MemorySize + 4
                    340: #define PSSO_BoardInfo_VBIName                    PSSO_BoardInfo_BoardName + 4
                    341: #define PSSO_BoardInfo_CardBase                           PSSO_BoardInfo_VBIName + 32
                    342: #define PSSO_BoardInfo_ChipBase                           PSSO_BoardInfo_CardBase + 4
                    343: #define PSSO_BoardInfo_ExecBase                           PSSO_BoardInfo_ChipBase + 4
                    344: #define PSSO_BoardInfo_UtilBase                           PSSO_BoardInfo_ExecBase + 4
                    345: #define PSSO_BoardInfo_HardInterrupt              PSSO_BoardInfo_UtilBase + 4
                    346: #define PSSO_BoardInfo_SoftInterrupt              PSSO_BoardInfo_HardInterrupt + 22 /* The HardInterrupt is 22-bytes */
                    347: #define PSSO_BoardInfo_BoardLock                  PSSO_BoardInfo_SoftInterrupt + 22 /* The SoftInterrupt is 22-bytes */
                    348: #define PSSO_BoardInfo_ResolutionsList            PSSO_BoardInfo_BoardLock + 46 /* On the BoardLock, we were having some fun... */
                    349: #define PSSO_BoardInfo_BoardType                  PSSO_BoardInfo_ResolutionsList + 12 /* The ResolutionsList is 12-bytes */
                    350: #define PSSO_BoardInfo_PaletteChipType            PSSO_BoardInfo_BoardType + 4
                    351: #define PSSO_BoardInfo_GraphicsControllerType     PSSO_BoardInfo_PaletteChipType + 4
                    352: #define PSSO_BoardInfo_MoniSwitch                 PSSO_BoardInfo_GraphicsControllerType + 4
                    353: #define PSSO_BoardInfo_BitsPerCannon              PSSO_BoardInfo_MoniSwitch + 2
                    354: #define PSSO_BoardInfo_Flags                      PSSO_BoardInfo_BitsPerCannon + 2
                    355: #define PSSO_BoardInfo_SoftSpriteFlags            PSSO_BoardInfo_Flags + 4
                    356: #define PSSO_BoardInfo_ChipFlags                  PSSO_BoardInfo_SoftSpriteFlags + 2
                    357: #define PSSO_BoardInfo_CardFlags                  PSSO_BoardInfo_ChipFlags + 2
                    358: #define PSSO_BoardInfo_BoardNum                           PSSO_BoardInfo_CardFlags + 4
                    359: #define PSSO_BoardInfo_RGBFormats                 PSSO_BoardInfo_BoardNum + 2
                    360: #define PSSO_BoardInfo_MaxHorValue                PSSO_BoardInfo_RGBFormats + 2
                    361: #define PSSO_BoardInfo_MaxVerValue                PSSO_BoardInfo_MaxHorValue + MAXMODES*2
                    362: #define PSSO_BoardInfo_MaxHorResolution                   PSSO_BoardInfo_MaxVerValue + MAXMODES*2
                    363: #define PSSO_BoardInfo_MaxVerResolution                   PSSO_BoardInfo_MaxHorResolution + MAXMODES*2
                    364: #define PSSO_BoardInfo_MaxMemorySize              PSSO_BoardInfo_MaxVerResolution + MAXMODES*2
                    365: #define PSSO_BoardInfo_MaxChunkSize               PSSO_BoardInfo_MaxMemorySize + 4
                    366: #define PSSO_BoardInfo_MemoryClock                PSSO_BoardInfo_MaxChunkSize + 4
                    367: #define PSSO_BoardInfo_PixelClockCount            PSSO_BoardInfo_MemoryClock + 4
                    368: #define PSSO_BoardInfo_AllocCardMem               PSSO_BoardInfo_PixelClockCount + MAXMODES*4
                    369: #define PSSO_BoardInfo_SpecialFeatures            PSSO_BoardInfo_AllocCardMem + 68*4 /* 68 function pointers */
                    370: #define PSSO_BoardInfo_ModeInfo                           PSSO_BoardInfo_SpecialFeatures + 12 /* SpecialFeatures is 12-bytes */
                    371: #define PSSO_BoardInfo_RGBFormat                  PSSO_BoardInfo_ModeInfo + 4
                    372: #define PSSO_BoardInfo_XOffset                    PSSO_BoardInfo_RGBFormat + 4
                    373: #define PSSO_BoardInfo_YOffset                    PSSO_BoardInfo_XOffset + 2
                    374: #define PSSO_BoardInfo_Depth                      PSSO_BoardInfo_YOffset + 2
                    375: #define PSSO_BoardInfo_ClearMask                  PSSO_BoardInfo_Depth + 1
                    376: #define PSSO_BoardInfo_Border                     PSSO_BoardInfo_ClearMask + 1
                    377: #define PSSO_BoardInfo_Mask                       PSSO_BoardInfo_Border + 2 /* BOOL type is only 2-bytes! */
                    378: #define PSSO_BoardInfo_CLUT                       PSSO_BoardInfo_Mask + 4
                    379: #define PSSO_BoardInfo_ViewPort                           PSSO_BoardInfo_CLUT + 3*256
                    380: #define PSSO_BoardInfo_VisibleBitMap              PSSO_BoardInfo_ViewPort + 4
                    381: #define PSSO_BoardInfo_BitMapExtra                PSSO_BoardInfo_VisibleBitMap + 4
                    382: #define PSSO_BoardInfo_BitMapList                 PSSO_BoardInfo_BitMapExtra + 4
                    383: #define PSSO_BoardInfo_MemList                    PSSO_BoardInfo_BitMapList + 12 /* BitMapList is 12-bytes */
                    384: #define PSSO_BoardInfo_MouseX                     PSSO_BoardInfo_MemList + 12 /* MemList is 12-bytes */
                    385: #define PSSO_BoardInfo_MouseY                     PSSO_BoardInfo_MouseX + 2
                    386: #define PSSO_BoardInfo_MouseWidth                 PSSO_BoardInfo_MouseY + 2
                    387: #define PSSO_BoardInfo_MouseHeight                PSSO_BoardInfo_MouseWidth + 1
                    388: #define PSSO_BoardInfo_MouseXOffset               PSSO_BoardInfo_MouseHeight + 1
                    389: #define PSSO_BoardInfo_MouseYOffset               PSSO_BoardInfo_MouseXOffset + 1
                    390: #define PSSO_BoardInfo_MouseImage                 PSSO_BoardInfo_MouseYOffset + 1
                    391: #define PSSO_BoardInfo_MousePens                  PSSO_BoardInfo_MouseImage + 4
                    392: #define PSSO_BoardInfo_MouseRect                  PSSO_BoardInfo_MousePens + 4
                    393: #define PSSO_BoardInfo_MouseChunky                PSSO_BoardInfo_MouseRect + 8 /* MouseRect is 8-bytes */
                    394: #define PSSO_BoardInfo_MouseRendered              PSSO_BoardInfo_MouseChunky + 4
                    395: #define PSSO_BoardInfo_MouseSaveBuffer            PSSO_BoardInfo_MouseRendered + 4
1.1       root      396: 
1.1.1.2   root      397: struct BoardInfo {
1.1       root      398:     uae_u8 *RegisterBase, *MemoryBase, *MemoryIOBase;
                    399:     uae_u32 MemorySize;
                    400:     char *BoardName, VBIName[32];
                    401: 
                    402:     uae_u16 MoniSwitch;
                    403:     uae_u16 BitsPerCannon;
                    404:     uae_u32 Flags;
                    405:     uae_u16 SoftSpriteFlags;
                    406:     uae_u16 ChipFlags; /* private, chip specific, not touched by RTG */
                    407:     uae_u32 CardFlags; /* private, card specific, not touched by RTG */
                    408: 
                    409:     uae_u16 BoardNum;
                    410:     uae_s16 RGBFormats;
                    411: 
                    412:     uae_u16 MaxHorValue[MAXMODES];
                    413:     uae_u16 MaxVerValue[MAXMODES];
                    414:     uae_u16 MaxHorResolution[MAXMODES];
                    415:     uae_u16 MaxVerResolution[MAXMODES];
                    416:     uae_u32 MaxMemorySize, MaxChunkSize;
                    417: };
                    418: 
                    419: /* BoardInfo flags */
                    420: /*  0-15: hardware flags */
                    421: /* 16-31: user flags */
                    422: #define BIB_HARDWARESPRITE     0       /* board has hardware sprite */
                    423: #define BIB_NOMEMORYMODEMIX    1       /* board does not support modifying planar bitmaps while displaying chunky and vice versa */
                    424: #define BIB_NEEDSALIGNMENT     2       /* bitmaps have to be aligned (not yet supported!) */
                    425: #define BIB_DBLSCANDBLSPRITEY  8       /* hardware sprite y position is doubled on doublescan display modes */
                    426: #define BIB_ILACEHALFSPRITEY   9       /* hardware sprite y position is halved on interlace display modes */
                    427: #define BIB_ILACEDBLROWOFFSET  10      /* doubled row offset in interlaced display modes needs additional horizontal bit */
                    428: 
                    429: #define BIB_FLICKERFIXER       12      /* board can flicker fix Amiga RGB signal */
                    430: #define BIB_VIDEOCAPTURE       13      /* board can capture video data to a memory area */
                    431: #define BIB_VIDEOWINDOW                14      /* board can display a second mem area as a pip */
                    432: #define BIB_BLITTER            15      /* board has blitter */
                    433: 
                    434: #define BIB_HIRESSPRITE                16      /* mouse sprite has double resolution */
                    435: #define BIB_BIGSPRITE          17      /* user wants big mouse sprite */
                    436: #define BIB_BORDEROVERRIDE     18      /* user wants to override system overscan border prefs */
                    437: #define BIB_BORDERBLANK                19      /* user wants border blanking */
                    438: #define BIB_INDISPLAYCHAIN     20      /* board switches Amiga signal */
                    439: #define BIB_QUIET              21      /* not yet implemented */
                    440: #define BIB_NOMASKBLITS                22      /* perform blits without taking care of mask */
                    441: #define BIB_NOC2PBLITS         23      /* use CPU for planar to chunky conversions */
                    442: #define BIB_NOBLITTER          24      /* disable all blitter functions */
                    443: 
                    444: #define BIB_IGNOREMASK BIB_NOMASKBLITS
                    445: 
                    446: #define BIF_HARDWARESPRITE     (1<<BIB_HARDWARESPRITE)
                    447: #define BIF_NOMEMORYMODEMIX    (1<<BIB_NOMEMORYMODEMIX)
                    448: #define BIF_NEEDSALIGNMENT     (1<<BIB_NEEDSALIGNMENT)
                    449: #define BIF_DBLSCANDBLSPRITEY  (1<<BIB_DBLSCANDBLSPRITEY)
                    450: #define BIF_ILACEHALFSPRITEY   (1<<BIB_ILACEHALFSPRITEY)
                    451: #define BIF_ILACEDBLROWOFFSET  (1<<BIB_ILACEDBLROWOFFSET)
                    452: #define BIF_FLICKERFIXER       (1<<BIB_FLICKERFIXER)
                    453: #define BIF_VIDEOCAPTURE       (1<<BIB_VIDEOCAPTURE)
                    454: #define BIF_VIDEOWINDOW                (1<<BIB_VIDEOWINDOW)
                    455: #define BIF_BLITTER            (1<<BIB_BLITTER)
                    456: #define BIF_HIRESSPRITE                (1<<BIB_HIRESSPRITE)
                    457: #define BIF_BIGSPRITE          (1<<BIB_BIGSPRITE)
                    458: #define BIF_BORDEROVERRIDE     (1<<BIB_BORDEROVERRIDE)
                    459: #define BIF_BORDERBLANK                (1<<BIB_BORDERBLANK)
                    460: #define BIF_INDISPLAYCHAIN     (1<<BIB_INDISPLAYCHAIN)
                    461: #define BIF_QUIET              (1<<BIB_QUIET)
                    462: #define BIF_NOMASKBLITS                (1<<BIB_NOMASKBLITS)
                    463: #define BIF_NOC2PBLITS         (1<<BIB_NOC2PBLITS)
                    464: #define BIF_NOBLITTER          (1<<BIB_NOBLITTER)
                    465: 
1.1.1.5   root      466: #define BIF_IGNOREMASK BIF_NOMASKBLITS
1.1       root      467: 
                    468: /************************************************************************/
                    469: struct picasso96_state_struct
                    470: {
1.1.1.5   root      471:     uae_u32            RGBFormat;   /* true-colour, CLUT, hi-colour, etc. */
                    472:     struct MyCLUTEntry CLUT[256];   /* Duh! */
                    473:     uaecptr            Address;     /* Active screen address (Amiga-side) */
                    474:     uaecptr            Extent;      /* End address of screen (Amiga-side) */
                    475:     uae_u16            Width;       /* Active display width  (From SetGC) */
                    476:     uae_u16            VirtualWidth;/* Total screen width (From SetPanning) */
                    477:     uae_u16            BytesPerRow; /* Total screen width in bytes (From SetGC) */
                    478:     uae_u16            Height;      /* Active display height (From SetGC) */
                    479:     uae_u16            VirtualHeight; /* Total screen height */
                    480:     uae_u8             GC_Depth;    /* From SetGC() */
                    481:     uae_u8             GC_Flags;    /* From SetGC() */
                    482:     long               XOffset;     /* From SetPanning() */
                    483:     long               YOffset;     /* From SetPanning() */
                    484:     uae_u8             SwitchState; /* From SetSwitch() - 0 is Amiga, 1 is Picasso */
                    485:     uae_u8             BytesPerPixel;
                    486:     uae_u8             CardFound;
1.1       root      487: };
                    488: 
                    489: extern void InitPicasso96 (void);
                    490: 
                    491: extern uae_u32 picasso_SetDisplay (void);
                    492: extern uae_u32 picasso_WaitVerticalSync (void);
                    493: extern uae_u32 picasso_CalculateBytesPerRow (void);
                    494: extern uae_u32 picasso_FillRect (void);
                    495: extern uae_u32 picasso_BlitRect (void);
                    496: extern uae_u32 picasso_InvertRect (void);
                    497: extern uae_u32 picasso_SetPanning (void);
                    498: extern uae_u32 picasso_SetGC (void);
                    499: extern uae_u32 picasso_SetDAC (void);
                    500: extern uae_u32 picasso_SetColorArray (void);
                    501: extern uae_u32 picasso_SetSwitch (void);
                    502: extern uae_u32 picasso_SetSwitch (void);
                    503: extern uae_u32 picasso_FindCard (void);
                    504: extern uae_u32 picasso_InitCard (void);
                    505: extern uae_u32 picasso_BlitPlanar2Chunky (void);
                    506: extern uae_u32 picasso_BlitPlanar2Direct (void);
                    507: extern uae_u32 picasso_BlitTemplate (void);
                    508: extern uae_u32 picasso_BlitPattern (void);
                    509: extern uae_u32 picasso_BlitRectNoMaskComplete (void);
                    510: 
                    511: extern uae_u32 gfxmem_mask;
                    512: extern uae_u8 *gfxmemory;
                    513: 
                    514: extern int uaegfx_card_found;
                    515: 
                    516: extern struct picasso96_state_struct picasso96_state;
                    517: 
                    518: #ifdef _WIN32
                    519: extern unsigned int timer_id;
                    520: #endif
                    521: 
1.1.1.2   root      522: extern int DX_FillRect (uaecptr mem, uae_u16 X, uae_u16 Y, uae_u16 Width, uae_u16 Height, uae_u32 Pen, uae_u8 Bpp);
                    523: extern void DX_BlitRect (struct RenderInfo *ri, uae_u16 srcx, uae_u16 srcy, uae_u16 dstx, uae_u16 dsty, uae_u16 w, uae_u16 h);
                    524: extern void DX_BlitRectFromBuffer (struct RenderInfo *ri, uae_u8* buffer, uae_u16 dstx, uae_u16 dsty, uae_u16 w, uae_u16 h);
                    525: extern void DX_InvertRect (struct RenderInfo *ri, uae_u16 X, uae_u16 Y, uae_u16 Width, uae_u16 Height);
                    526: extern void DX_SetPalette (int start, int count);
1.1       root      527: extern int DX_FillResolutions (uae_u16 *);
                    528: extern int DX_BitsPerCannon (void);
                    529: extern void DX_Invalidate (int first, int last);
                    530: extern void picasso_enablescreen (int on);
1.1.1.2   root      531: extern void picasso_refresh (void);
1.1.1.4   root      532: extern void picasso_handle_vsync (void);
1.1       root      533: 
                    534: extern uae_u8 *gfxmemory;
                    535: 
1.1.1.2   root      536: /* This structure describes the UAE-side framebuffer for the Picasso
                    537:  * screen.  */
1.1       root      538: struct picasso_vidbuf_description {
                    539:     int width, height, depth;
                    540:     int rowbytes, pixbytes;
                    541:     int extra_mem; /* nonzero if there's a second buffer that must be updated */
1.1.1.2   root      542:     uae_u32 rgbformat;
                    543:     uae_u32 selected_rgbformat;
                    544:     uae_u32 clut[256];
1.1       root      545: };
                    546: 
                    547: extern struct picasso_vidbuf_description picasso_vidinfo;
                    548: 
1.1.1.2   root      549: extern void gfx_set_picasso_modeinfo (int w, int h, int d, int rgbfmt);
1.1       root      550: extern void gfx_set_picasso_baseaddr (uaecptr);
                    551: extern void gfx_set_picasso_state (int on);
1.1.1.2   root      552: extern uae_u8 *gfx_lock_picasso (void);
                    553: extern void gfx_unlock_picasso (void);
1.1.1.4   root      554: extern int picasso_display_mode_index (uae_u32 x, uae_u32 y, uae_u32 d);
                    555: extern int picasso_nr_resolutions (void);
1.1.1.5   root      556: extern void picasso_clip_mouse (int *, int *);
1.1       root      557: 
                    558: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.