|
|
1.1 ! root 1: /* ! 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. ! 6: */ ! 7: ! 8: #ifndef HATARI_SCREEN_H ! 9: #define HATARI_SCREEN_H ! 10: ! 11: #include <SDL_video.h> /* for SDL_Surface */ ! 12: ! 13: ! 14: /* WinSTon used NUM_FRAMEBUFFERS=2, but =1 seems to be working better in Hatari... */ ! 15: #define NUM_FRAMEBUFFERS 1 ! 16: ! 17: typedef struct ! 18: { ! 19: void *pDrawFunction; /* Draw function */ ! 20: /*int DirectDrawMode;*/ /* Mode required for DirectDraw. eg MODE_320x200x256 */ ! 21: int Width,Height,BitDepth,VertPixelsPerLine; ! 22: int PCStartHorizLine,PCStartXOffset; /* Source ST lines/bytes to skip, Destination screen lines/bytes to skip */ ! 23: int MouseScale; ! 24: } SCREENDRAW; ! 25: ! 26: /* Update Palette defines */ ! 27: enum ! 28: { ! 29: UPDATE_PALETTE_NONE, ! 30: UPDATE_PALETTE_UPDATE, ! 31: UPDATE_PALETTE_FULLUPDATE ! 32: }; ! 33: ! 34: /* Palette mask values for 'HBLPaletteMask[]' */ ! 35: #define PALETTEMASK_RESOLUTION 0x00040000 ! 36: #define PALETTEMASK_PALETTE 0x0000ffff ! 37: #define PALETTEMASK_UPDATERES 0x20000000 ! 38: #define PALETTEMASK_UPDATEPAL 0x40000000 ! 39: #define PALETTEMASK_UPDATEFULL 0x80000000 ! 40: #define PALETTEMASK_UPDATEMASK (PALETTEMASK_UPDATEFULL|PALETTEMASK_UPDATEPAL|PALETTEMASK_UPDATERES) ! 41: ! 42: /* Available fullscreen modes */ ! 43: #define NUM_DISPLAYMODEOPTIONS 6 ! 44: enum ! 45: { ! 46: DISPLAYMODE_HICOL_1X, ! 47: DISPLAYMODE_HICOL_2X, ! 48: DISPLAYMODE_HICOL_SCALE2X ! 49: }; ! 50: ! 51: ! 52: /* For palette we don't go from colour '0' as the whole background would change, so go from this value */ ! 53: #define BASECOLOUR 0x0A ! 54: #define BASECOLOUR_LONG 0x0A0A0A0A ! 55: ! 56: extern SCREENDRAW ScreenDraw; ! 57: extern unsigned char *pScreenBitmap; ! 58: extern unsigned char *pSTScreen,*pSTScreenCopy; ! 59: extern unsigned char *pPCScreenDest; ! 60: extern int STScreenStartHorizLine,STScreenEndHorizLine; ! 61: extern int PCScreenBytesPerLine,STScreenWidthBytes,STScreenLeftSkipBytes; ! 62: extern BOOL bInFullScreen; ! 63: extern BOOL bFullScreenHold; ! 64: extern BOOL bScreenContentsChanged; ! 65: extern BOOL bTooSlowSoSkipAFlip; ! 66: extern int STScreenLineOffset[SCREEN_HEIGHT_HBL]; ! 67: extern unsigned long MainRGBPalette[256]; ! 68: extern unsigned long CtrlRGBPalette[16]; ! 69: ! 70: extern unsigned long ST2RGB[2048]; ! 71: extern SDL_Surface *sdlscrn; ! 72: extern BOOL bGrabMouse; ! 73: ! 74: /* palette length changes as dynamic colours change */ ! 75: extern int len_main_palette; ! 76: extern unsigned short MainPalette[256]; ! 77: extern unsigned short CtrlPalette[16]; ! 78: ! 79: extern void Screen_Init(void); ! 80: extern void Screen_UnInit(void); ! 81: extern void Screen_Reset(void); ! 82: extern void Screen_SetWindowRes(); ! 83: extern void Screen_SetScreenLineOffsets(void); ! 84: extern void Screen_SetFullUpdate(void); ! 85: extern void Screen_SetupRGBTable(void); ! 86: extern void Screen_EnterFullScreen(void); ! 87: extern void Screen_ReturnFromFullScreen(void); ! 88: extern void Screen_ClearScreen(void); ! 89: extern void Screen_SetDrawModes(void); ! 90: extern void Screen_Blit(BOOL bSwapScreen); ! 91: extern void Screen_DrawFrame(BOOL bForceFlip); ! 92: extern void Screen_Draw(unsigned long _dummy); ! 93: ! 94: #endif /* ifndef HATARI_SCREEN_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.