Home | History | Annotate | Download | only in xbios
      1 /*
      2     SDL - Simple DirectMedia Layer
      3     Copyright (C) 1997-2004 Sam Lantinga
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Library General Public
      7     License as published by the Free Software Foundation; either
      8     version 2 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Library General Public License for more details.
     14 
     15     You should have received a copy of the GNU Library General Public
     16     License along with this library; if not, write to the Free
     17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     18 
     19     Sam Lantinga
     20     slouken (at) libsdl.org
     21 */
     22 #include "SDL_config.h"
     23 
     24 /*
     25 	ScreenBlaster 3 functions
     26 
     27 	Patrice Mandin
     28 */
     29 
     30 /*--- Includes ---*/
     31 
     32 #include "SDL_stdinc.h"
     33 #include "SDL_xbios.h"
     34 #include "SDL_xbios_sb3.h"
     35 
     36 /*--- Defines ---*/
     37 
     38 const int SDL_XBIOS_scpn_planes_device[]={
     39 	SCPN_DEV_1BPP,
     40 	SCPN_DEV_4BPP,
     41 	SCPN_DEV_8BPP,
     42 	SCPN_DEV_16BPP,
     43 	SCPN_DEV_2BPP,
     44 	SCPN_DEV_4BPP,
     45 	SCPN_DEV_1BPP
     46 };
     47 
     48 /*--- Functions ---*/
     49 
     50 int SDL_XBIOS_SB3Usable(scpn_cookie_t *cookie_scpn)
     51 {
     52 	scpn_screeninfo_t *scrinfo;
     53 	int bpp;
     54 
     55 	/* Check if current SB3 mode is usable, i.e. 8 or 16bpp */
     56 	scrinfo = cookie_scpn->screen_info;
     57 	bpp = 1<<(SDL_XBIOS_scpn_planes_device[scrinfo->device]);
     58 
     59 	if ((bpp==8) || (bpp==16)) {
     60 		return 1;
     61 	}
     62 
     63 	return 0;
     64 }
     65 
     66 void SDL_XBIOS_SB3Init(_THIS, scpn_cookie_t *cookie_scpn)
     67 {
     68 	scpn_screeninfo_t *scrinfo;
     69 
     70 	/* SB3 prevent changing video modes, we can only use current one */
     71 	if (XBIOS_modelist) {
     72 		SDL_free(XBIOS_modelist);
     73 		XBIOS_nummodes = 0;
     74 		XBIOS_modelist = NULL;
     75 	}
     76 
     77 	scrinfo = cookie_scpn->screen_info;
     78 	scrinfo->h_pos = scrinfo->v_pos = 0;
     79 
     80 	SDL_XBIOS_AddMode(this,
     81 		-1,
     82 		scrinfo->virtual_width, scrinfo->virtual_height,
     83 		1<<(SDL_XBIOS_scpn_planes_device[scrinfo->device]),
     84 		SDL_FALSE
     85 	);
     86 }
     87