annotate src/video/xbios/SDL_xbios_centscreen.h @ 1076:8d3b95ece376

[PATCH] SDL_GetVideoMode() do not find the best video mode The current GetVideoMode() function stops at the first mode which has any dimensions smaller than the one asked, and gives the previous in the list. If I ask 336x224 with this list: 768x480 768x240 640x400 640x200 384x480 384x240 320x400 320x200 SDL will give me 640x400, because 640x200 as height smaller than what I asked. However the best mode is the smaller which has both dimensions bigger than the one asked (384x240 in my example). This patch fixes this, plus it does not rely on a sorted video mode list.
author Patrice Mandin <patmandin@gmail.com>
date Sun, 12 Jun 2005 16:12:55 +0000
parents fba6b67b4d60
children d910939febfa
rev   line source
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1 /*
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
3 Copyright (C) 1997-2004 Sam Lantinga
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
4
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
9
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
13 Library General Public License for more details.
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
14
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
18
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
19 Sam Lantinga
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
20 slouken@libsdl.org
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
21 */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
22
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
23 /*
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
24 Centscreen extension definitions
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
25
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
26 Patrice Mandin
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
27 */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
28
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
29 #ifndef _SDL_xbios_centscreen_h
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
30 #define _SDL_xbios_centscreen_h
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
31
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
32 #include <mint/falcon.h> /* for trap_14_xxx macros */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
33
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
34 #include "SDL_xbios.h"
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
35
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
36 /*--- Defines ---*/
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
37
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
38 #ifndef C_CNTS
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
39 #define C_CNTS 0x434e5453L
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
40 #endif
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
41
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
42 #define CSCREEN_ENERGYSTAR (1<<9)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
43 #define CSCREEN_SAVER (1<<10)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
44 #define CSCREEN_VIRTUAL (1<<11)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
45 #define CSCREEN_EXTCLOCK_CT2 (1<<12)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
46 #define CSCREEN_EXTCLOCK (1<<13)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
47 #define CSCREEN_STANDARD (1<<14)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
48 #define CSCREEN_DEFAULT (1<<15)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
49
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
50 /*--- Structures ---*/
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
51
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
52 typedef struct {
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
53 unsigned short handle; /* videomode handle */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
54 unsigned short mode; /* Falcon videomode code */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
55 unsigned short physx; /* visible width */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
56 unsigned short physy; /* visible height */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
57 unsigned short plan; /* bitplanes */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
58 unsigned short logx; /* virtual width */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
59 unsigned short logy; /* virtual height */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
60 unsigned short eco; /* screen saver delay */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
61 unsigned short eco2; /* energy star screen saver delay */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
62 unsigned short wsize; /* screen width (mm) */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
63 unsigned short hsize; /* screen height (mm) */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
64 unsigned short dummy[21];
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
65 unsigned char name[32]; /* videomode name */
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
66 } __attribute__((packed)) centscreen_mode_t;
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
67
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
68 /*--- Functions prototypes ---*/
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
69
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
70 #define Vread(current_mode) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
71 (void)trap_14_wl((short)0x41,(long)(current_mode))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
72 #define Vwrite(init_vdi, inparam, outparam) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
73 (long)trap_14_wwll((short)0x42,(short)(init_vdi),(long)(inparam),(long)(outparam))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
74 #define Vattrib(inparam, outparam) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
75 (void)trap_14_wll((short)0x43,(long)(inparam),(long)(outparam))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
76 #define Vcreate(inparam, outparam) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
77 (void)trap_14_wll((short)0x44,(long)(inparam),(long)(outparam))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
78 #define Vdelete(handle) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
79 (long)trap_14_ww((short)0x45,(short)(handle))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
80 #define Vfirst(mask,mode) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
81 (long)trap_14_wll((short)0x46,(long)(mask),(long)(mode))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
82 #define Vnext(mask,mode) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
83 (long)trap_14_wll((short)0x47,(long)(mask),(long)(mode))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
84 #define Vvalid(handle) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
85 (long)trap_14_ww((short)0x48,(short)(handle))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
86 #define Vload() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
87 (long)trap_14_w((short)0x49)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
88 #define Vsave() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
89 (long)trap_14_w((short)0x4a)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
90 #define Vopen() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
91 (long)trap_14_w((short)0x4b)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
92 #define Vclose() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
93 (long)trap_14_w((short)0x4c)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
94 #define Vscroll(scrollmode) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
95 (long)trap_14_ww((short)0x4d,(short)(scrollmode))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
96 #define Voffset() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
97 (long)trap_14_w((short)0x4e)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
98 #define Vseek() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
99 (long)trap_14_w((short)0x4f)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
100 #define Vlock(cmd) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
101 (long)trap_14_ww((short)0x50,(short)(cmd))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
102 #define SetMon(montype) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
103 (long)trap_14_ww((short)0x51,(short)(montype))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
104 #define MultiMon(cmd) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
105 (long)trap_14_ww((short)0x52,(short)(cmd))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
106 #define VSizeComp() \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
107 (long)trap_14_w((short)0x53)
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
108 #define Vsize(mode) \
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
109 (long)trap_14_wl((short)0x54,(long)(mode))
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
110
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
111 /*--- Functions prototypes ---*/
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
112
1064
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
113 int SDL_XBIOS_CentscreenInit(_THIS);
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
114 void SDL_XBIOS_CentscreenSetmode(_THIS, int width, int height, int planes);
fba6b67b4d60 Add Centscreen extended modes support
Patrice Mandin <patmandin@gmail.com>
parents: 1061
diff changeset
115 void SDL_XBIOS_CentscreenRestore(_THIS, int prev_handle);
1061
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
116
5023cde12cbd Add Falcon Centscreen extension support
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
117 #endif /* _SDL_xbios_centscreen_h */