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

1.1       root        1: /*
                      2:   Hatari
                      3: */
                      4: 
                      5: /* BMP header */
                      6: /*typedef struct {
                      7:   BITMAPFILEHEADER FileHeader;
                      8:   BITMAPINFOHEADER InfoHeader;
                      9:   RGBQUAD Colours[256];
                     10: } BMP;*/
                     11: 
                     12: /* Frame buffer, used to store details in screen conversion */
                     13: typedef struct {
                     14:   unsigned short int HBLPalettes[(NUM_VISIBLE_LINES+1)*16];  /* 1x16 colour palette per screen line, +1 line as may write after line 200 */
                     15:   unsigned long HBLPaletteMasks[NUM_VISIBLE_LINES+1];        /* Bit mask of palette colours changes, top bit set is resolution change */
                     16:   unsigned char *pSTScreen;          /* Copy of screen built up during frame(copy each line on HBL to simulate monitor raster) */
                     17:   unsigned char *pSTScreenCopy;      /* Previous frames copy of above  */
                     18:   int OverscanModeCopy;              /* Previous screen overscan mode */
                     19:   BOOL bFullUpdate;                  /* Set TRUE to cause full update on next draw */
                     20: } FRAMEBUFFER;
                     21: #define NUM_FRAMEBUFFERS  2
                     22: 
                     23: /* Details for each display screen - both Window and FullScreen */
                     24: typedef struct {
                     25:   int STScreenLeftSkipBytes,STScreenWidthBytes;     /* Bytes to skip on left and number of bytes of screen to draw */
                     26:   int STScreenStartHorizLine,STScreenEndHorizLine;  /* Start/End points in ST screen(28 is top of normal screen) */
                     27:   int PCStartHorizLine,PCStartXOffset;              /* Source ST lines/bytes to skip, Destination screen lines/bytes to skip */
                     28: } SCREENDRAW_OVERSCAN;
                     29: 
                     30: typedef struct {
                     31:   void *pDrawFunction;              /* Draw function */
                     32:   /*int DirectDrawMode;*/           /* Mode required for DirectDraw. eg MODE_320x200x256 */
                     33:   int Width,Height,BitDepth,VertPixelsPerLine;
                     34:   SCREENDRAW_OVERSCAN Overscan[4];  /* Details for starting offset for each overscan mode(none,top,bottom,both) */
                     35: } SCREENDRAW;
                     36: 
                     37: typedef struct {
                     38:   SCREENDRAW *pLowRes, *pAltLowRes;
                     39:   SCREENDRAW *pMediumRes, *pAltMediumRes;
                     40:   SCREENDRAW *pHighRes, *pAltHighRes;
                     41:   SCREENDRAW *pLowMediumMixRes, *pAltLowMediumMixRes;
                     42: } SCREENDRAW_DISPLAYOPTIONS;
                     43: 
                     44: /* ST Resolution defines */
                     45: enum {
                     46:   ST_LOW_RES,
                     47:   ST_MEDIUM_RES,
                     48:   ST_HIGH_RES,
                     49:   ST_LOWMEDIUM_MIX_RES
                     50: };
                     51: 
                     52: /* Update Palette defines */
                     53: enum {
                     54:   UPDATE_PALETTE_NONE,
                     55:   UPDATE_PALETTE_UPDATE,
                     56:   UPDATE_PALETTE_FULLUPDATE
                     57: };
                     58: 
                     59: /* Palette mask values for 'HBLPaletteMask[]' */
                     60: #define PALETTEMASK_RESOLUTION  0x00040000
                     61: #define PALETTEMASK_PALETTE  0x0000ffff
                     62: #define PALETTEMASK_UPDATERES  0x20000000
                     63: #define PALETTEMASK_UPDATEPAL  0x40000000
                     64: #define PALETTEMASK_UPDATEFULL  0x80000000
                     65: #define PALETTEMASK_UPDATEMASK  (PALETTEMASK_UPDATEFULL|PALETTEMASK_UPDATEPAL|PALETTEMASK_UPDATERES)
                     66: 
                     67: /* Overscan values */
                     68: enum {
                     69:   OVERSCANMODE_NONE,     // 0x00
                     70:   OVERSCANMODE_TOP,      // 0x01
                     71:   OVERSCANMODE_BOTTOM    // 0x02 (Top+Bottom) 0x03
                     72: };
                     73: 
                     74: /* For palette we don't go from colour '0' as the whole background would change, so go from this value */
                     75: #define  BASECOLOUR       0x0A
                     76: #define  BASECOLOUR_LONG  0x0A0A0A0A
                     77: 
                     78: /*extern BMP ScreenBMP;*/
                     79: extern SCREENDRAW ScreenDrawWindow[4];
                     80: extern SCREENDRAW ScreenDrawFullScreen[4];
                     81: extern FRAMEBUFFER *pFrameBuffer;
                     82: extern unsigned char *pScreenBitmap;
                     83: extern unsigned char *pSTScreen,*pSTScreenCopy;
                     84: extern unsigned char *pPCScreenDest;
                     85: extern int STScreenStartHorizLine,STScreenEndHorizLine;
                     86: extern int PCScreenBytesPerLine,STScreenWidthBytes,STScreenLeftSkipBytes;
                     87: extern BOOL bInFullScreen;
                     88: extern BOOL bFullScreenHold;
                     89: extern BOOL bScreenContentsChanged;
                     90: extern int STRes,PrevSTRes;
                     91: extern volatile int VBLCounter;
                     92: extern volatile int OldVBLCounter;
                     93: extern int STScreenLineOffset[NUM_VISIBLE_LINES];
                     94: extern unsigned long STRGBPalette[16];
                     95: extern unsigned long ST2RGB[2048];
                     96: 
                     97: extern void Screen_Init(void);
                     98: extern void Screen_UnInit(void);
                     99: extern void Screen_Reset(void);
                    100: extern void Screen_SetScreenLineOffsets(void);
                    101: //extern void Screen_SetBMPHeaders(BMP *pBMP,int Width,int Height,int BitCount);
                    102: extern void Screen_SetFullUpdate(void);
                    103: extern void Screen_SetupRGBTable(BOOL bFullScreen);
                    104: extern void Screen_EnterFullScreen(void);
                    105: extern void Screen_ReturnFromFullScreen(void);
                    106: extern void Screen_Clear_Window(void);
                    107: extern void Screen_SetDrawModes(void);
                    108: extern void Screen_AllocateScreenBitmap(int Width,int Height,int BitCount);
                    109: extern void Screen_Blit(BOOL bSwapScreen);
                    110: extern FRAMEBUFFER *Screen_GetOtherFrameBuffer(void);
                    111: extern void Screen_DrawFrame(BOOL bForceFlip);
                    112: extern void Screen_Draw(void);

unix.superglobalmegacorp.com

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