--- 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.
--- 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
--- 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;
}
--- /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 <stdlib.h>
+
+#include <mint/falcon.h>
+
+#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
+ );
+}
--- /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 <mint/falcon.h> /* 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 */