# HG changeset patch # User Patrice Mandin # Date 1116435737 0 # Node ID 5023cde12cbd0ce9c603eabac71791c7075893fb # Parent 86885b40a53be1623b158509998eae2ec2088f1c Add Falcon Centscreen extension support diff -r 86885b40a53b -r 5023cde12cbd README.MiNT --- a/README.MiNT Mon May 16 08:23:34 2005 +0000 +++ b/README.MiNT Wed May 18 17:02:17 2005 +0000 @@ -156,7 +156,8 @@ 320x480x8 and 320x240x8 (software double-lined mode). Falcon: All modes supported by the current monitor (RVB or VGA). - BlowUp extended modes, ScreenBlaster 3 current mode. + BlowUp extended modes, ScreenBlaster 3 current mode, Centscreen current + mode. Clones and any machine with monochrome monitor: Not supported. diff -r 86885b40a53b -r 5023cde12cbd src/video/xbios/Makefile.am --- a/src/video/xbios/Makefile.am Mon May 16 08:23:34 2005 +0000 +++ b/src/video/xbios/Makefile.am Wed May 18 17:02:17 2005 +0000 @@ -10,5 +10,7 @@ SDL_xbios.h \ SDL_xbios_blowup.c \ SDL_xbios_blowup.h \ + SDL_xbios_centscreen.c \ + SDL_xbios_centscreen.h \ SDL_xbios_sb3.c \ SDL_xbios_sb3.h diff -r 86885b40a53b -r 5023cde12cbd src/video/xbios/SDL_xbios.c --- a/src/video/xbios/SDL_xbios.c Mon May 16 08:23:34 2005 +0000 +++ b/src/video/xbios/SDL_xbios.c Wed May 18 17:02:17 2005 +0000 @@ -56,6 +56,7 @@ #include "SDL_atarigl_c.h" #include "SDL_xbios.h" #include "SDL_xbios_blowup.h" +#include "SDL_xbios_centscreen.h" #include "SDL_xbios_sb3.h" #define XBIOS_VID_DRIVER_NAME "xbios" @@ -261,7 +262,7 @@ { int i,j8,j16; xbiosmode_t *current_mode; - unsigned long cookie_blow, cookie_scpn; + unsigned long cookie_blow, cookie_scpn, cookie_cnts; /* Initialize all variables that we clean on shutdown */ memset (SDL_modelist, 0, sizeof(SDL_modelist)); @@ -415,8 +416,9 @@ SDL_XBIOS_BlowupInit(this, (blow_cookie_t *)cookie_blow); } else if (Getcookie(C_SCPN, &cookie_scpn) == C_FOUND) { SDL_XBIOS_SB3Init(this, (scpn_cookie_t *)cookie_scpn); + } else if (Getcookie(C_CNTS, &cookie_cnts) == C_FOUND) { + SDL_XBIOS_CentscreenInit(this); } - break; } diff -r 86885b40a53b -r 5023cde12cbd src/video/xbios/SDL_xbios_centscreen.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/video/xbios/SDL_xbios_centscreen.c Wed May 18 17:02:17 2005 +0000 @@ -0,0 +1,53 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2004 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/* + Centscreen extension definitions + + Patrice Mandin +*/ + +#include + +#include + +#include "SDL_xbios.h" +#include "SDL_xbios_centscreen.h" + +void SDL_XBIOS_CentscreenInit(_THIS) +{ + centscreen_mode_t curmode; + + /* Reset current mode list */ + if (XBIOS_modelist) { + free(XBIOS_modelist); + XBIOS_nummodes = 0; + XBIOS_modelist = NULL; + } + + /* Add current active mode */ + Vread(&curmode); + + SDL_XBIOS_AddMode(this, -1, curmode.physx, curmode.physy, curmode.plan, + SDL_FALSE + ); +} diff -r 86885b40a53b -r 5023cde12cbd src/video/xbios/SDL_xbios_centscreen.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/video/xbios/SDL_xbios_centscreen.h Wed May 18 17:02:17 2005 +0000 @@ -0,0 +1,115 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2004 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/* + Centscreen extension definitions + + Patrice Mandin +*/ + +#ifndef _SDL_xbios_centscreen_h +#define _SDL_xbios_centscreen_h + +#include /* for trap_14_xxx macros */ + +#include "SDL_xbios.h" + +/*--- Defines ---*/ + +#ifndef C_CNTS +#define C_CNTS 0x434e5453L +#endif + +#define CSCREEN_ENERGYSTAR (1<<9) +#define CSCREEN_SAVER (1<<10) +#define CSCREEN_VIRTUAL (1<<11) +#define CSCREEN_EXTCLOCK_CT2 (1<<12) +#define CSCREEN_EXTCLOCK (1<<13) +#define CSCREEN_STANDARD (1<<14) +#define CSCREEN_DEFAULT (1<<15) + +/*--- Structures ---*/ + +typedef struct { + unsigned short handle; /* videomode handle */ + unsigned short mode; /* Falcon videomode code */ + unsigned short physx; /* visible width */ + unsigned short physy; /* visible height */ + unsigned short plan; /* bitplanes */ + unsigned short logx; /* virtual width */ + unsigned short logy; /* virtual height */ + unsigned short eco; /* screen saver delay */ + unsigned short eco2; /* energy star screen saver delay */ + unsigned short wsize; /* screen width (mm) */ + unsigned short hsize; /* screen height (mm) */ + unsigned short dummy[21]; + unsigned char name[32]; /* videomode name */ +} __attribute__((packed)) centscreen_mode_t; + +/*--- Functions prototypes ---*/ + +#define Vread(current_mode) \ + (void)trap_14_wl((short)0x41,(long)(current_mode)) +#define Vwrite(init_vdi, inparam, outparam) \ + (long)trap_14_wwll((short)0x42,(short)(init_vdi),(long)(inparam),(long)(outparam)) +#define Vattrib(inparam, outparam) \ + (void)trap_14_wll((short)0x43,(long)(inparam),(long)(outparam)) +#define Vcreate(inparam, outparam) \ + (void)trap_14_wll((short)0x44,(long)(inparam),(long)(outparam)) +#define Vdelete(handle) \ + (long)trap_14_ww((short)0x45,(short)(handle)) +#define Vfirst(mask,mode) \ + (long)trap_14_wll((short)0x46,(long)(mask),(long)(mode)) +#define Vnext(mask,mode) \ + (long)trap_14_wll((short)0x47,(long)(mask),(long)(mode)) +#define Vvalid(handle) \ + (long)trap_14_ww((short)0x48,(short)(handle)) +#define Vload() \ + (long)trap_14_w((short)0x49) +#define Vsave() \ + (long)trap_14_w((short)0x4a) +#define Vopen() \ + (long)trap_14_w((short)0x4b) +#define Vclose() \ + (long)trap_14_w((short)0x4c) +#define Vscroll(scrollmode) \ + (long)trap_14_ww((short)0x4d,(short)(scrollmode)) +#define Voffset() \ + (long)trap_14_w((short)0x4e) +#define Vseek() \ + (long)trap_14_w((short)0x4f) +#define Vlock(cmd) \ + (long)trap_14_ww((short)0x50,(short)(cmd)) +#define SetMon(montype) \ + (long)trap_14_ww((short)0x51,(short)(montype)) +#define MultiMon(cmd) \ + (long)trap_14_ww((short)0x52,(short)(cmd)) +#define VSizeComp() \ + (long)trap_14_w((short)0x53) +#define Vsize(mode) \ + (long)trap_14_wl((short)0x54,(long)(mode)) + +/*--- Functions prototypes ---*/ + +void SDL_XBIOS_CentscreenInit(_THIS); + +#endif /* _SDL_xbios_centscreen_h */