Annotation of hatari/src/includes/screen.h, revision 1.1.1.10

1.1       root        1: /*
1.1.1.5   root        2:   Hatari - screen.h
                      3: 
                      4:   This file is distributed under the GNU Public License, version 2 or at your
                      5:   option any later version. Read the file gpl.txt for details.
1.1       root        6: */
                      7: 
1.1.1.5   root        8: #ifndef HATARI_SCREEN_H
                      9: #define HATARI_SCREEN_H
1.1.1.3   root       10: 
                     11: #include <SDL_video.h>    /* for SDL_Surface */
                     12: 
1.1       root       13: 
1.1.1.10! root       14: /* Assumes 32 pixels left+right */
        !            15: #define SCREENBYTES_LEFT    16          /* Bytes for left border in ST screen */
        !            16: #define SCREENBYTES_MIDDLE  160         /* Middle (320 pixels) */
        !            17: #define SCREENBYTES_RIGHT   16          /* right border */
        !            18: #define SCREENBYTES_LINE    (SCREENBYTES_LEFT+SCREENBYTES_MIDDLE+SCREENBYTES_RIGHT)
        !            19: #define SCREENBYTES_MONOLINE 80         /* Byte per line in ST-high resolution */
        !            20: 
        !            21: /* Overscan values */
        !            22: #define OVERSCAN_LEFT       (SCREENBYTES_LEFT*2)    /* Number of pixels in each border */
        !            23: #define OVERSCAN_RIGHT      (SCREENBYTES_RIGHT*2)
        !            24: #define OVERSCAN_TOP        29
        !            25: #define OVERSCAN_BOTTOM     47
        !            26: 
        !            27: /* Number of visible screen lines including top/bottom borders */
        !            28: #define NUM_VISIBLE_LINES  (OVERSCAN_TOP+200+OVERSCAN_BOTTOM)
        !            29: 
        !            30: 
1.1       root       31: /* Frame buffer, used to store details in screen conversion */
1.1.1.5   root       32: typedef struct
                     33: {
1.1.1.9   root       34:   Uint16 HBLPalettes[(NUM_VISIBLE_LINES+1)*16];   /* 1x16 colour palette per screen line, +1 line as may write after line 200 */
                     35:   Uint32 HBLPaletteMasks[NUM_VISIBLE_LINES+1];    /* Bit mask of palette colours changes, top bit set is resolution change */
                     36:   Uint8 *pSTScreen;             /* Copy of screen built up during frame (copy each line on HBL to simulate monitor raster) */
                     37:   Uint8 *pSTScreenCopy;         /* Previous frames copy of above  */
                     38:   int OverscanModeCopy;         /* Previous screen overscan mode */
                     39:   BOOL bFullUpdate;             /* Set TRUE to cause full update on next draw */
1.1       root       40: } FRAMEBUFFER;
1.1.1.5   root       41: 
1.1.1.6   root       42: /* Number of frame buffers (1 or 2) - should be 2 for supporting screen flipping */
                     43: #define NUM_FRAMEBUFFERS  2
1.1       root       44: 
                     45: 
                     46: /* ST Resolution defines */
1.1.1.5   root       47: enum
                     48: {
1.1       root       49:   ST_LOW_RES,
                     50:   ST_MEDIUM_RES,
                     51:   ST_HIGH_RES,
                     52:   ST_LOWMEDIUM_MIX_RES
                     53: };
                     54: 
                     55: /* Update Palette defines */
1.1.1.5   root       56: enum
                     57: {
1.1       root       58:   UPDATE_PALETTE_NONE,
                     59:   UPDATE_PALETTE_UPDATE,
                     60:   UPDATE_PALETTE_FULLUPDATE
                     61: };
                     62: 
                     63: /* Palette mask values for 'HBLPaletteMask[]' */
                     64: #define PALETTEMASK_RESOLUTION  0x00040000
1.1.1.2   root       65: #define PALETTEMASK_PALETTE     0x0000ffff
                     66: #define PALETTEMASK_UPDATERES   0x20000000
                     67: #define PALETTEMASK_UPDATEPAL   0x40000000
1.1       root       68: #define PALETTEMASK_UPDATEFULL  0x80000000
                     69: #define PALETTEMASK_UPDATEMASK  (PALETTEMASK_UPDATEFULL|PALETTEMASK_UPDATEPAL|PALETTEMASK_UPDATERES)
                     70: 
                     71: /* Overscan values */
1.1.1.5   root       72: enum
                     73: {
1.1.1.2   root       74:   OVERSCANMODE_NONE,     /* 0x00 */
                     75:   OVERSCANMODE_TOP,      /* 0x01 */
                     76:   OVERSCANMODE_BOTTOM    /* 0x02 (Top+Bottom) 0x03 */
1.1       root       77: };
                     78: 
1.1.1.2   root       79: /* Available fullscreen modes */
                     80: #define NUM_DISPLAYMODEOPTIONS 6
1.1.1.5   root       81: enum
                     82: {
1.1.1.7   root       83:   DISPLAYMODE_LOWCOL_LOWRES,     /* low color, low resolution (fastest) */
                     84:   DISPLAYMODE_LOWCOL_HIGHRES,    /* low color, zoomed resolution */
                     85:   DISPLAYMODE_LOWCOL_DUMMY,      /* unused */
                     86:   DISPLAYMODE_HICOL_LOWRES,      /* high color, low resolution */
                     87:   DISPLAYMODE_HICOL_HIGHRES,     /* high color, zoomed resolution (slowest) */
                     88:   DISPLAYMODE_HICOL_DUMMY        /* unused */
1.1.1.2   root       89: };
                     90: 
                     91: 
1.1.1.9   root       92: extern BOOL bGrabMouse;
1.1       root       93: extern BOOL bInFullScreen;
                     94: extern int STRes,PrevSTRes;
1.1.1.9   root       95: extern int STScreenStartHorizLine;
                     96: extern int STScreenLeftSkipBytes;
                     97: extern FRAMEBUFFER *pFrameBuffer;
                     98: extern Uint8 *pSTScreen;
1.1.1.3   root       99: extern SDL_Surface *sdlscrn;
1.1.1.9   root      100: extern Uint32 STRGBPalette[16];
                    101: extern Uint32 ST2RGB[4096];
1.1       root      102: 
                    103: extern void Screen_Init(void);
                    104: extern void Screen_UnInit(void);
                    105: extern void Screen_Reset(void);
                    106: extern void Screen_SetFullUpdate(void);
                    107: extern void Screen_EnterFullScreen(void);
                    108: extern void Screen_ReturnFromFullScreen(void);
1.1.1.6   root      109: extern void Screen_DidResolutionChange(void);
1.1       root      110: extern void Screen_Draw(void);
1.1.1.3   root      111: 
1.1.1.5   root      112: #endif  /* ifndef HATARI_SCREEN_H */

unix.superglobalmegacorp.com

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