[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

#ifndef GRAPHICS_MODEID_H
#define GRAPHICS_MODEID_H
/*
**      $VER: modeid.h 39.9 (27.5.1993)
**      Includes Release 44.1
**
**      include define file for graphics display mode IDs.
**
**      (C) Copyright 1985-1999 Amiga, Inc.
**          All Rights Reserved
*/

#ifndef GRAPHICS_DISPLAYINFO_H
#include <graphics/displayinfo.h>
#endif

#define INVALID_ID                      ~0

/* With all the new modes that are available under V38 and V39, it is highly
 * recommended that you use either the asl.library screenmode requester,
 * and/or the V39 graphics.library function BestModeIDA().
 *
 * DO NOT interpret the any of the bits in the ModeID for its meaning. For
 * example, do not interpret bit 3 (0x4) as meaning the ModeID is interlaced.
 * Instead, use GetDisplayInfoData() with DTAG_DISP, and examine the DIPF_...
 * flags to determine a ModeID's characteristics. The only exception to
 * this rule is that bit 7 (0x80) will always mean the ModeID is
 * ExtraHalfBright, and bit 11 (0x800) will always mean the ModeID is HAM.
 */

/* normal identifiers */

#define MONITOR_ID_MASK                 0xFFFF1000

#define DEFAULT_MONITOR_ID              0x00000000
#define NTSC_MONITOR_ID                 0x00011000
#define PAL_MONITOR_ID                  0x00021000

/* the following 22 composite keys are for Modes on the default Monitor.
 * NTSC & PAL "flavors" of these particular keys may be made by or'ing
 * the NTSC or PAL MONITOR_ID with the desired MODE_KEY...
 *
 * For example, to specifically open a PAL HAM interlaced ViewPort
 * (or intuition screen), you would use the modeid of
 * (PAL_MONITOR_ID | HAMLACE_KEY)
 */

#define LORES_KEY                       0x00000000
#define HIRES_KEY                       0x00008000
#define SUPER_KEY                       0x00008020
#define HAM_KEY                         0x00000800
#define LORESLACE_KEY                   0x00000004
#define HIRESLACE_KEY                   0x00008004
#define SUPERLACE_KEY                   0x00008024
#define HAMLACE_KEY                     0x00000804
#define LORESDPF_KEY                    0x00000400
#define HIRESDPF_KEY                    0x00008400
#define SUPERDPF_KEY                    0x00008420
#define LORESLACEDPF_KEY                0x00000404
#define HIRESLACEDPF_KEY                0x00008404
#define SUPERLACEDPF_KEY                0x00008424
#define LORESDPF2_KEY                   0x00000440
#define HIRESDPF2_KEY                   0x00008440
#define SUPERDPF2_KEY                   0x00008460
#define LORESLACEDPF2_KEY               0x00000444
#define HIRESLACEDPF2_KEY               0x00008444
#define SUPERLACEDPF2_KEY               0x00008464
#define EXTRAHALFBRITE_KEY              0x00000080
#define EXTRAHALFBRITELACE_KEY          0x00000084
/* New for AA ChipSet (V39) */
#define HIRESHAM_KEY                    0x00008800
#define SUPERHAM_KEY                    0x00008820
#define HIRESEHB_KEY                    0x00008080
#define SUPEREHB_KEY                    0x000080a0
#define HIRESHAMLACE_KEY                0x00008804
#define SUPERHAMLACE_KEY                0x00008824
#define HIRESEHBLACE_KEY                0x00008084
#define SUPEREHBLACE_KEY                0x000080a4
/* Added for V40 - may be useful modes for some games or animations. */
#define LORESSDBL_KEY                   0x00000008
#define LORESHAMSDBL_KEY                0x00000808
#define LORESEHBSDBL_KEY                0x00000088
#define HIRESHAMSDBL_KEY                0x00008808


/* VGA identifiers */

#define VGA_MONITOR_ID                  0x00031000

#define VGAEXTRALORES_KEY               0x00031004
#define VGALORES_KEY                    0x00039004
#define VGAPRODUCT_KEY                  0x00039024
#define VGAHAM_KEY                      0x00031804
#define VGAEXTRALORESLACE_KEY           0x00031005
#define VGALORESLACE_KEY                0x00039005
#define VGAPRODUCTLACE_KEY              0x00039025
#define VGAHAMLACE_KEY                  0x00031805
#define VGAEXTRALORESDPF_KEY            0x00031404
#define VGALORESDPF_KEY                 0x00039404
#define VGAPRODUCTDPF_KEY               0x00039424
#define VGAEXTRALORESLACEDPF_KEY        0x00031405
#define VGALORESLACEDPF_KEY             0x00039405
#define VGAPRODUCTLACEDPF_KEY           0x00039425
#define VGAEXTRALORESDPF2_KEY           0x00031444
#define VGALORESDPF2_KEY                0x00039444
#define VGAPRODUCTDPF2_KEY              0x00039464
#define VGAEXTRALORESLACEDPF2_KEY       0x00031445
#define VGALORESLACEDPF2_KEY            0x00039445
#define VGAPRODUCTLACEDPF2_KEY          0x00039465
#define VGAEXTRAHALFBRITE_KEY           0x00031084
#define VGAEXTRAHALFBRITELACE_KEY       0x00031085
/* New for AA ChipSet (V39) */
#define VGAPRODUCTHAM_KEY               0x00039824
#define VGALORESHAM_KEY                 0x00039804
#define VGAEXTRALORESHAM_KEY            VGAHAM_KEY
#define VGAPRODUCTHAMLACE_KEY           0x00039825
#define VGALORESHAMLACE_KEY             0x00039805
#define VGAEXTRALORESHAMLACE_KEY        VGAHAMLACE_KEY
#define VGAEXTRALORESEHB_KEY            VGAEXTRAHALFBRITE_KEY
#define VGAEXTRALORESEHBLACE_KEY        VGAEXTRAHALFBRITELACE_KEY
#define VGALORESEHB_KEY                 0x00039084
#define VGALORESEHBLACE_KEY             0x00039085
#define VGAEHB_KEY                      0x000390a4
#define VGAEHBLACE_KEY                  0x000390a5
/* These ModeIDs are the scandoubled equivalents of the above, with the
 * exception of the DualPlayfield modes, as AA does not allow for scandoubling
 * dualplayfield.
 */
#define VGAEXTRALORESDBL_KEY            0x00031000
#define VGALORESDBL_KEY                 0x00039000
#define VGAPRODUCTDBL_KEY               0x00039020
#define VGAEXTRALORESHAMDBL_KEY         0x00031800
#define VGALORESHAMDBL_KEY              0x00039800
#define VGAPRODUCTHAMDBL_KEY            0x00039820
#define VGAEXTRALORESEHBDBL_KEY         0x00031080
#define VGALORESEHBDBL_KEY              0x00039080
#define VGAPRODUCTEHBDBL_KEY            0x000390a0

/* a2024 identifiers */

#define A2024_MONITOR_ID                0x00041000

#define A2024TENHERTZ_KEY               0x00041000
#define A2024FIFTEENHERTZ_KEY           0x00049000

/* prototype identifiers (private) */

#define PROTO_MONITOR_ID                0x00051000


/* These monitors and modes were added for the V38 release. */

#define EURO72_MONITOR_ID               0x00061000

#define EURO72EXTRALORES_KEY            0x00061004
#define EURO72LORES_KEY                 0x00069004
#define EURO72PRODUCT_KEY               0x00069024
#define EURO72HAM_KEY                   0x00061804
#define EURO72EXTRALORESLACE_KEY        0x00061005
#define EURO72LORESLACE_KEY             0x00069005
#define EURO72PRODUCTLACE_KEY           0x00069025
#define EURO72HAMLACE_KEY               0x00061805
#define EURO72EXTRALORESDPF_KEY         0x00061404
#define EURO72LORESDPF_KEY              0x00069404
#define EURO72PRODUCTDPF_KEY            0x00069424
#define EURO72EXTRALORESLACEDPF_KEY     0x00061405
#define EURO72LORESLACEDPF_KEY          0x00069405
#define EURO72PRODUCTLACEDPF_KEY        0x00069425
#define EURO72EXTRALORESDPF2_KEY        0x00061444
#define EURO72LORESDPF2_KEY             0x00069444
#define EURO72PRODUCTDPF2_KEY           0x00069464
#define EURO72EXTRALORESLACEDPF2_KEY    0x00061445
#define EURO72LORESLACEDPF2_KEY         0x00069445
#define EURO72PRODUCTLACEDPF2_KEY       0x00069465
#define EURO72EXTRAHALFBRITE_KEY        0x00061084
#define EURO72EXTRAHALFBRITELACE_KEY    0x00061085
/* New AA modes (V39) */
#define EURO72PRODUCTHAM_KEY            0x00069824
#define EURO72PRODUCTHAMLACE_KEY        0x00069825
#define EURO72LORESHAM_KEY              0x00069804
#define EURO72LORESHAMLACE_KEY          0x00069805
#define EURO72EXTRALORESHAM_KEY         EURO72HAM_KEY
#define EURO72EXTRALORESHAMLACE_KEY     EURO72HAMLACE_KEY
#define EURO72EXTRALORESEHB_KEY         EURO72EXTRAHALFBRITE_KEY
#define EURO72EXTRALORESEHBLACE_KEY     EURO72EXTRAHALFBRITELACE_KEY
#define EURO72LORESEHB_KEY              0x00069084
#define EURO72LORESEHBLACE_KEY          0x00069085
#define EURO72EHB_KEY                   0x000690a4
#define EURO72EHBLACE_KEY               0x000690a5
/* These ModeIDs are the scandoubled equivalents of the above, with the
 * exception of the DualPlayfield modes, as AA does not allow for scandoubling
 * dualplayfield.
 */
#define EURO72EXTRALORESDBL_KEY         0x00061000
#define EURO72LORESDBL_KEY              0x00069000
#define EURO72PRODUCTDBL_KEY            0x00069020
#define EURO72EXTRALORESHAMDBL_KEY      0x00061800
#define EURO72LORESHAMDBL_KEY           0x00069800
#define EURO72PRODUCTHAMDBL_KEY         0x00069820
#define EURO72EXTRALORESEHBDBL_KEY      0x00061080
#define EURO72LORESEHBDBL_KEY           0x00069080
#define EURO72PRODUCTEHBDBL_KEY         0x000690a0


#define EURO36_MONITOR_ID               0x00071000

/* Euro36 modeids can be ORed with the default modeids a la NTSC and PAL.
 * For example, Euro36 SuperHires is
 * (EURO36_MONITOR_ID | SUPER_KEY)
 */

#define SUPER72_MONITOR_ID              0x00081000

/* Super72 modeids can be ORed with the default modeids a la NTSC and PAL.
 * For example, Super72 SuperHiresLace (800x600) is
 * (SUPER72_MONITOR_ID | SUPERLACE_KEY).
 * The following scandoubled Modes are the exception:
 */
#define SUPER72LORESDBL_KEY             0x00081008
#define SUPER72HIRESDBL_KEY             0x00089008
#define SUPER72SUPERDBL_KEY             0x00089028
#define SUPER72LORESHAMDBL_KEY          0x00081808
#define SUPER72HIRESHAMDBL_KEY          0x00089808
#define SUPER72SUPERHAMDBL_KEY          0x00089828
#define SUPER72LORESEHBDBL_KEY          0x00081088
#define SUPER72HIRESEHBDBL_KEY          0x00089088
#define SUPER72SUPEREHBDBL_KEY          0x000890a8


/* These monitors and modes were added for the V39 release. */

#define DBLNTSC_MONITOR_ID              0x00091000

#define DBLNTSCLORES_KEY                0x00091000
#define DBLNTSCLORESFF_KEY              0x00091004
#define DBLNTSCLORESHAM_KEY             0x00091800
#define DBLNTSCLORESHAMFF_KEY           0x00091804
#define DBLNTSCLORESEHB_KEY             0x00091080
#define DBLNTSCLORESEHBFF_KEY           0x00091084
#define DBLNTSCLORESLACE_KEY            0x00091005
#define DBLNTSCLORESHAMLACE_KEY         0x00091805
#define DBLNTSCLORESEHBLACE_KEY         0x00091085
#define DBLNTSCLORESDPF_KEY             0x00091400
#define DBLNTSCLORESDPFFF_KEY           0x00091404
#define DBLNTSCLORESDPFLACE_KEY         0x00091405
#define DBLNTSCLORESDPF2_KEY            0x00091440
#define DBLNTSCLORESDPF2FF_KEY          0x00091444
#define DBLNTSCLORESDPF2LACE_KEY        0x00091445
#define DBLNTSCHIRES_KEY                0x00099000
#define DBLNTSCHIRESFF_KEY              0x00099004
#define DBLNTSCHIRESHAM_KEY             0x00099800
#define DBLNTSCHIRESHAMFF_KEY           0x00099804
#define DBLNTSCHIRESLACE_KEY            0x00099005
#define DBLNTSCHIRESHAMLACE_KEY         0x00099805
#define DBLNTSCHIRESEHB_KEY             0x00099080
#define DBLNTSCHIRESEHBFF_KEY           0x00099084
#define DBLNTSCHIRESEHBLACE_KEY         0x00099085
#define DBLNTSCHIRESDPF_KEY             0x00099400
#define DBLNTSCHIRESDPFFF_KEY           0x00099404
#define DBLNTSCHIRESDPFLACE_KEY         0x00099405
#define DBLNTSCHIRESDPF2_KEY            0x00099440
#define DBLNTSCHIRESDPF2FF_KEY          0x00099444
#define DBLNTSCHIRESDPF2LACE_KEY        0x00099445
#define DBLNTSCEXTRALORES_KEY           0x00091200
#define DBLNTSCEXTRALORESHAM_KEY        0x00091a00
#define DBLNTSCEXTRALORESEHB_KEY        0x00091280
#define DBLNTSCEXTRALORESDPF_KEY        0x00091600
#define DBLNTSCEXTRALORESDPF2_KEY       0x00091640
#define DBLNTSCEXTRALORESFF_KEY         0x00091204
#define DBLNTSCEXTRALORESHAMFF_KEY      0x00091a04
#define DBLNTSCEXTRALORESEHBFF_KEY      0x00091284
#define DBLNTSCEXTRALORESDPFFF_KEY      0x00091604
#define DBLNTSCEXTRALORESDPF2FF_KEY     0x00091644
#define DBLNTSCEXTRALORESLACE_KEY       0x00091205
#define DBLNTSCEXTRALORESHAMLACE_KEY    0x00091a05
#define DBLNTSCEXTRALORESEHBLACE_KEY    0x00091285
#define DBLNTSCEXTRALORESDPFLACE_KEY    0x00091605
#define DBLNTSCEXTRALORESDPF2LACE_KEY   0x00091645

#define DBLPAL_MONITOR_ID               0x000a1000

#define DBLPALLORES_KEY                 0x000a1000
#define DBLPALLORESFF_KEY               0x000a1004
#define DBLPALLORESHAM_KEY              0x000a1800
#define DBLPALLORESHAMFF_KEY            0x000a1804
#define DBLPALLORESEHB_KEY              0x000a1080
#define DBLPALLORESEHBFF_KEY            0x000a1084
#define DBLPALLORESLACE_KEY             0x000a1005
#define DBLPALLORESHAMLACE_KEY          0x000a1805
#define DBLPALLORESEHBLACE_KEY          0x000a1085
#define DBLPALLORESDPF_KEY              0x000a1400
#define DBLPALLORESDPFFF_KEY            0x000a1404
#define DBLPALLORESDPFLACE_KEY          0x000a1405
#define DBLPALLORESDPF2_KEY             0x000a1440
#define DBLPALLORESDPF2FF_KEY           0x000a1444
#define DBLPALLORESDPF2LACE_KEY         0x000a1445
#define DBLPALHIRES_KEY                 0x000a9000
#define DBLPALHIRESFF_KEY               0x000a9004
#define DBLPALHIRESHAM_KEY              0x000a9800
#define DBLPALHIRESHAMFF_KEY            0x000a9804
#define DBLPALHIRESLACE_KEY             0x000a9005
#define DBLPALHIRESHAMLACE_KEY          0x000a9805
#define DBLPALHIRESEHB_KEY              0x000a9080
#define DBLPALHIRESEHBFF_KEY            0x000a9084
#define DBLPALHIRESEHBLACE_KEY                  0x000a9085
#define DBLPALHIRESDPF_KEY              0x000a9400
#define DBLPALHIRESDPFFF_KEY            0x000a9404
#define DBLPALHIRESDPFLACE_KEY          0x000a9405
#define DBLPALHIRESDPF2_KEY             0x000a9440
#define DBLPALHIRESDPF2FF_KEY           0x000a9444
#define DBLPALHIRESDPF2LACE_KEY         0x000a9445
#define DBLPALEXTRALORES_KEY            0x000a1200
#define DBLPALEXTRALORESHAM_KEY         0x000a1a00
#define DBLPALEXTRALORESEHB_KEY         0x000a1280
#define DBLPALEXTRALORESDPF_KEY         0x000a1600
#define DBLPALEXTRALORESDPF2_KEY        0x000a1640
#define DBLPALEXTRALORESFF_KEY          0x000a1204
#define DBLPALEXTRALORESHAMFF_KEY       0x000a1a04
#define DBLPALEXTRALORESEHBFF_KEY       0x000a1284
#define DBLPALEXTRALORESDPFFF_KEY       0x000a1604
#define DBLPALEXTRALORESDPF2FF_KEY      0x000a1644
#define DBLPALEXTRALORESLACE_KEY        0x000a1205
#define DBLPALEXTRALORESHAMLACE_KEY     0x000a1a05
#define DBLPALEXTRALORESEHBLACE_KEY     0x000a1285
#define DBLPALEXTRALORESDPFLACE_KEY     0x000a1605
#define DBLPALEXTRALORESDPF2LACE_KEY    0x000a1645


/* Use these tags for passing to BestModeID() (V39) */

#define SPECIAL_FLAGS (DIPF_IS_DUALPF | DIPF_IS_PF2PRI | DIPF_IS_HAM | DIPF_IS_EXTRAHALFBRITE)

#define BIDTAG_DIPFMustHave     0x80000001      /* mask of the DIPF_ flags the ModeID must have */
                                /* Default - NULL */
#define BIDTAG_DIPFMustNotHave  0x80000002      /* mask of the DIPF_ flags the ModeID must not have */
                                /* Default - SPECIAL_FLAGS */
#define BIDTAG_ViewPort         0x80000003      /* ViewPort for which a ModeID is sought. */
                                /* Default - NULL */
#define BIDTAG_NominalWidth     0x80000004      /* \ together make the aspect ratio and */
#define BIDTAG_NominalHeight    0x80000005      /* / override the vp->Width/Height. */
                                /* Default - SourceID NominalDimensionInfo,
                                 * or vp->DWidth/Height, or (640 * 200),
                                 * in that preferred order.
                                 */
#define BIDTAG_DesiredWidth     0x80000006      /* \ Nominal Width and Height of the */
#define BIDTAG_DesiredHeight    0x80000007      /* / returned ModeID. */
                                /* Default - same as Nominal */
#define BIDTAG_Depth            0x80000008      /* ModeID must support this depth. */
                                /* Default - vp->RasInfo->BitMap->Depth or 1 */
#define BIDTAG_MonitorID        0x80000009      /* ModeID must use this monitor. */
                                /* Default - use best monitor available */
#define BIDTAG_SourceID         0x8000000a      /* instead of a ViewPort. */
                                /* Default - VPModeID(vp) if BIDTAG_ViewPort is
                                 * specified, else leave the DIPFMustHave and
                                 * DIPFMustNotHave values untouched.
                                 */
#define BIDTAG_RedBits          0x8000000b      /* \                            */
#define BIDTAG_BlueBits         0x8000000c      /* } Match up from the database */
#define BIDTAG_GreenBits        0x8000000d      /* /                            */
                                /* Default - 4 */
#define BIDTAG_GfxPrivate       0x8000000e      /* Private */

#endif /* GRAPHICS_MODEID_H */