ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/include/video.h
Revision: 1.4
Committed: 2004-04-13T22:22:22Z (20 years, 7 months ago) by gbeauche
Content type: text/plain
Branch: MAIN
Changes since 1.3: +1 -0 lines
Log Message:
Fix DGA mode for emulated PPC targets. It currently doesn't work in native
mode as the stack is corrupted and we are jumping to garbage when moving
the mouse. Also add 1152x768 resolution from PBG4, but make timing match
the 1152x870 version.

Cleanups, further merges from Basilisk II tree.

File Contents

# Content
1 /*
2 * video.h - Video/graphics emulation
3 *
4 * SheepShaver (C) 1997-2004 Marc Hellwig and Christian Bauer
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifndef VIDEO_H
22 #define VIDEO_H
23
24 extern bool VideoActivated(void);
25 extern bool VideoSnapshot(int xsize, int ysize, uint8 *p);
26
27 extern int16 VideoDoDriverIO(void *spaceID, void *commandID, void *commandContents, uint32 commandCode, uint32 commandKind);
28
29 // System specific and internal functions/data
30 struct VideoInfo {
31 int viType; // Screen/Window
32 uint32 viRowBytes; // width of each row in memory
33 uint16 viXsize,viYsize; // Window
34 uint32 viAppleMode; // Screen Color Depth
35 uint32 viAppleID; // Screen DisplayID
36 };
37
38 extern struct VideoInfo VModes[]; // List of available video modes
39
40 enum { // viAppleMode
41 APPLE_1_BIT = 0x80,
42 APPLE_2_BIT,
43 APPLE_4_BIT,
44 APPLE_8_BIT,
45 APPLE_16_BIT,
46 APPLE_32_BIT
47 };
48
49 // 1, 2, 4 and 8 bit depths use a color palette
50 inline bool IsDirectMode(int mode)
51 {
52 return mode == APPLE_16_BIT || mode == APPLE_32_BIT;
53 }
54
55 // Return the depth code that corresponds to the specified bits-per-pixel value
56 inline int DepthModeForPixelDepth(int depth)
57 {
58 switch (depth) {
59 case 1: return APPLE_1_BIT;
60 case 2: return APPLE_2_BIT;
61 case 4: return APPLE_4_BIT;
62 case 8: return APPLE_8_BIT;
63 case 15: case 16: return APPLE_16_BIT;
64 case 24: case 32: return APPLE_32_BIT;
65 default: return APPLE_1_BIT;
66 }
67 }
68
69 // Return a bytes-per-row value (assuming no padding) for the specified depth and pixel width
70 inline uint32 TrivialBytesPerRow(uint32 width, int mode)
71 {
72 switch (mode) {
73 case APPLE_1_BIT: return width / 8;
74 case APPLE_2_BIT: return width / 4;
75 case APPLE_4_BIT: return width / 2;
76 case APPLE_8_BIT: return width;
77 case APPLE_16_BIT: return width * 2;
78 case APPLE_32_BIT: return width * 4;
79 default: return width;
80 }
81 }
82
83 enum { // viAppleID
84 APPLE_640x480 = 0x81,
85 APPLE_W_640x480,
86 APPLE_800x600,
87 APPLE_W_800x600,
88 APPLE_1024x768,
89 APPLE_1152x768,
90 APPLE_1152x900,
91 APPLE_1280x1024,
92 APPLE_1600x1200,
93 APPLE_ID_MIN = APPLE_640x480,
94 APPLE_ID_MAX = APPLE_1600x1200
95 };
96
97 enum { // Display type
98 DIS_INVALID,
99 DIS_SCREEN,
100 DIS_WINDOW
101 };
102
103 extern bool video_activated; // Flag: video display activated, mouse and keyboard data valid
104 extern uint32 screen_base; // Frame buffer base address
105 extern int cur_mode; // Number of current video mode (index in VModes array)
106 extern int display_type; // Current display type (see above)
107 extern rgb_color mac_pal[256];
108 extern uint8 remap_mac_be[256];
109 extern uint8 MacCursor[68];
110
111 struct GammaTbl;
112
113 struct VidLocals{
114 uint16 saveMode;
115 uint32 saveData;
116 uint16 savePage;
117 uint32 saveBaseAddr;
118 GammaTbl *gammaTable; // Current gamma table
119 uint32 maxGammaTableSize; // Biggest gamma table allocated
120 uint32 saveVidParms;
121 bool luminanceMapping; // Luminance mapping on/off
122 int32 cursorX; // Hardware cursor state. Unused, but must be remembered
123 int32 cursorY;
124 uint32 cursorVisible;
125 uint32 cursorSet;
126 uint32 vslServiceID; // VSL interrupt service ID
127 bool interruptsEnabled; // VBL interrupts on/off
128 uint32 regEntryID[4];
129 };
130
131 extern VidLocals *private_data; // Pointer to driver local variables (there is only one display, so this is ok)
132
133 extern bool VideoInit(void);
134 extern void VideoExit(void);
135 extern void VideoVBL(void);
136 extern void VideoInstallAccel(void);
137 extern void VideoQuitFullScreen(void);
138
139 extern void video_set_palette(void);
140 extern void video_set_cursor(void);
141 extern int16 video_mode_change(VidLocals *csSave, uint32 ParamPtr);
142
143 extern int16 VSLDoInterruptService(uint32 arg1);
144 extern void NQDMisc(uint32 arg1, void *arg2);
145
146 extern bool keyfile_valid;
147
148 #endif