|
|
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.