--- hatari/src/includes/screen.h 2019/04/01 07:10:53 1.1.1.5 +++ hatari/src/includes/screen.h 2019/04/01 07:11:49 1.1.1.7 @@ -22,8 +22,8 @@ typedef struct BOOL bFullUpdate; /* Set TRUE to cause full update on next draw */ } FRAMEBUFFER; -/* WinSTon used NUM_FRAMEBUFFERS=2, but =1 seems to be working better in Hatari... */ -#define NUM_FRAMEBUFFERS 1 +/* Number of frame buffers (1 or 2) - should be 2 for supporting screen flipping */ +#define NUM_FRAMEBUFFERS 2 /* Details for each display screen - both Window and FullScreen */ typedef struct @@ -36,17 +36,16 @@ typedef struct typedef struct { void *pDrawFunction; /* Draw function */ - /*int DirectDrawMode;*/ /* Mode required for DirectDraw. eg MODE_320x200x256 */ int Width,Height,BitDepth,VertPixelsPerLine; SCREENDRAW_OVERSCAN Overscan[4]; /* Details for starting offset for each overscan mode(none,top,bottom,both) */ } SCREENDRAW; typedef struct { - SCREENDRAW *pLowRes, *pAltLowRes; - SCREENDRAW *pMediumRes, *pAltMediumRes; - SCREENDRAW *pHighRes, *pAltHighRes; - SCREENDRAW *pLowMediumMixRes, *pAltLowMediumMixRes; + SCREENDRAW *pLowRes; + SCREENDRAW *pMediumRes; + SCREENDRAW *pHighRes; + SCREENDRAW *pLowMediumMixRes; } SCREENDRAW_DISPLAYOPTIONS; /* ST Resolution defines */ @@ -86,12 +85,12 @@ enum #define NUM_DISPLAYMODEOPTIONS 6 enum { - DISPLAYMODE_16COL_LOWRES, /* (fastest) */ - DISPLAYMODE_16COL_HIGHRES, - DISPLAYMODE_16COL_FULL, - DISPLAYMODE_HICOL_LOWRES, - DISPLAYMODE_HICOL_HIGHRES, - DISPLAYMODE_HICOL_FULL /* (slowest) */ + DISPLAYMODE_LOWCOL_LOWRES, /* low color, low resolution (fastest) */ + DISPLAYMODE_LOWCOL_HIGHRES, /* low color, zoomed resolution */ + DISPLAYMODE_LOWCOL_DUMMY, /* unused */ + DISPLAYMODE_HICOL_LOWRES, /* high color, low resolution */ + DISPLAYMODE_HICOL_HIGHRES, /* high color, zoomed resolution (slowest) */ + DISPLAYMODE_HICOL_DUMMY /* unused */ }; @@ -99,16 +98,12 @@ enum #define BASECOLOUR 0x0A #define BASECOLOUR_LONG 0x0A0A0A0A -extern SCREENDRAW ScreenDrawWindow[4]; -extern SCREENDRAW ScreenDrawFullScreen[4]; extern FRAMEBUFFER *pFrameBuffer; -extern unsigned char *pScreenBitmap; extern unsigned char *pSTScreen,*pSTScreenCopy; extern unsigned char *pPCScreenDest; extern int STScreenStartHorizLine,STScreenEndHorizLine; extern int PCScreenBytesPerLine,STScreenWidthBytes,STScreenLeftSkipBytes; extern BOOL bInFullScreen; -extern BOOL bFullScreenHold; extern BOOL bScreenContentsChanged; extern int STRes,PrevSTRes; extern int STScreenLineOffset[NUM_VISIBLE_LINES]; @@ -127,6 +122,7 @@ extern void Screen_EnterFullScreen(void) extern void Screen_ReturnFromFullScreen(void); extern void Screen_ClearScreen(void); extern void Screen_SetDrawModes(void); +extern void Screen_DidResolutionChange(void); extern void Screen_Handle8BitPalettes(void); extern void Screen_Blit(BOOL bSwapScreen); extern void Screen_DrawFrame(BOOL bForceFlip);