146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL - Simple DirectMedia Layer 346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Copyright (C) 1997-2006 Sam Lantinga 446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner This library is free software; you can redistribute it and/or 646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner modify it under the terms of the GNU Lesser General Public 746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License as published by the Free Software Foundation; either 846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner version 2.1 of the License, or (at your option) any later version. 946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner This library is distributed in the hope that it will be useful, 1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner but WITHOUT ANY WARRANTY; without even the implied warranty of 1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Lesser General Public License for more details. 1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner You should have received a copy of the GNU Lesser General Public 1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License along with this library; if not, write to the Free Software 1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Sam Lantinga 2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner slouken@libsdl.org 2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h" 2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef _SDL_xbios_h 2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _SDL_xbios_h 2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_stdinc.h" 2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../SDL_sysvideo.h" 2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden "this" pointer for the video functions */ 3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _THIS SDL_VideoDevice *this 3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* TT video modes: 2 3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Falcon RVB: 16 (could be *2 by adding PAL/NTSC modes) 3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Falcon VGA: 6 3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner ST low: 1 3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_NUMMODES 16 3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnertypedef struct 4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner{ 4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 number; /* Video mode number */ 4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 width; /* Size */ 4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 height; 4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 depth; /* bits per plane */ 4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool doubleline; /* Double the lines ? */ 4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner} xbiosmode_t; 4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Private display data */ 5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define NUM_MODELISTS 2 /* 8 and 16 bits-per-pixel */ 5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct SDL_PrivateVideoData { 5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner long cookie_vdo; 5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int old_video_mode; /* Old video mode before entering SDL */ 5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *old_video_base; /* Old pointer to screen buffer */ 5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *old_palette; /* Old palette */ 5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint32 old_num_colors; /* Nb of colors in saved palette */ 5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int num_modes; /* Number of xbios video modes */ 5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner xbiosmode_t *mode_list; /* List of xbios video modes */ 6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *screens[2]; /* Pointers to aligned screen buffer */ 6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *screensmem[2]; /* Pointers to screen buffer */ 6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner void *shadowscreen; /* Shadow screen for c2p conversion */ 6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int doubleline; /* Double line mode ? */ 6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int frame_number; /* Number of frame for double buffer */ 6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int pitch; /* Destination line width for C2P */ 6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner int width, height; /* Screen size for centered C2P */ 6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_bool centscreen; /* Centscreen extension present ? */ 7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL_Rect *SDL_modelist[NUM_MODELISTS][SDL_NUMMODES+1]; 7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner xbiosmode_t *videomodes[NUM_MODELISTS][SDL_NUMMODES+1]; 7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}; 7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* _VDO cookie values */ 7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerenum { 7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDO_ST=0, 7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDO_STE, 7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDO_TT, 8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner VDO_F30 8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}; 8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Monitor types */ 8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerenum { 8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MONITOR_MONO=0, 8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MONITOR_TV, 8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MONITOR_VGA, 8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MONITOR_RGB 8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner}; 9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* EgetShift masks */ 9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ES_BANK 0x000f 9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ES_MODE 0x0700 9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ES_GRAY 0x1000 9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ES_SMEAR 0x8000 9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* TT shifter modes */ 9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ST_LOW 0x0000 9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ST_MED 0x0100 10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define ST_HIGH 0x0200 10146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define TT_LOW 0x0700 10246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define TT_MED 0x0300 10346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define TT_HIGH 0x0600 10446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden structure -> variables names */ 10646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define SDL_modelist (this->hidden->SDL_modelist) 10746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_mutex (this->hidden->mutex) 10846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_cvdo (this->hidden->cookie_vdo) 10946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_oldpalette (this->hidden->old_palette) 11046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_oldnumcol (this->hidden->old_num_colors) 11146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_oldvbase (this->hidden->old_video_base) 11246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_oldvmode (this->hidden->old_video_mode) 11346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_nummodes (this->hidden->num_modes) 11446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_modelist (this->hidden->mode_list) 11546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_screens (this->hidden->screens) 11646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_screensmem (this->hidden->screensmem) 11746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_shadowscreen (this->hidden->shadowscreen) 11846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_videomodes (this->hidden->videomodes) 11946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_doubleline (this->hidden->doubleline) 12046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_fbnum (this->hidden->frame_number) 12146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_pitch (this->hidden->pitch) 12246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_width (this->hidden->width) 12346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_height (this->hidden->height) 12446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define XBIOS_centscreen (this->hidden->centscreen) 12546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 12646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/*--- Functions prototypes ---*/ 12746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 12846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid SDL_XBIOS_AddMode(_THIS, Uint16 modecode, Uint16 width, Uint16 height, 12946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Uint16 depth, SDL_bool flags); 13046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* _SDL_xbios_h */ 132