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