Add Falcon Centscreen extension support
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401062
This commit is contained in:
parent
78aeed71c4
commit
901bb54c0c
5 changed files with 176 additions and 3 deletions
|
@ -156,7 +156,8 @@ Xbios video:
|
||||||
320x480x8 and 320x240x8 (software double-lined mode).
|
320x480x8 and 320x240x8 (software double-lined mode).
|
||||||
Falcon:
|
Falcon:
|
||||||
All modes supported by the current monitor (RVB or VGA).
|
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:
|
Clones and any machine with monochrome monitor:
|
||||||
Not supported.
|
Not supported.
|
||||||
|
|
||||||
|
|
|
@ -10,5 +10,7 @@ XBIOS_SRCS = \
|
||||||
SDL_xbios.h \
|
SDL_xbios.h \
|
||||||
SDL_xbios_blowup.c \
|
SDL_xbios_blowup.c \
|
||||||
SDL_xbios_blowup.h \
|
SDL_xbios_blowup.h \
|
||||||
|
SDL_xbios_centscreen.c \
|
||||||
|
SDL_xbios_centscreen.h \
|
||||||
SDL_xbios_sb3.c \
|
SDL_xbios_sb3.c \
|
||||||
SDL_xbios_sb3.h
|
SDL_xbios_sb3.h
|
||||||
|
|
|
@ -56,6 +56,7 @@ static char rcsid =
|
||||||
#include "SDL_atarigl_c.h"
|
#include "SDL_atarigl_c.h"
|
||||||
#include "SDL_xbios.h"
|
#include "SDL_xbios.h"
|
||||||
#include "SDL_xbios_blowup.h"
|
#include "SDL_xbios_blowup.h"
|
||||||
|
#include "SDL_xbios_centscreen.h"
|
||||||
#include "SDL_xbios_sb3.h"
|
#include "SDL_xbios_sb3.h"
|
||||||
|
|
||||||
#define XBIOS_VID_DRIVER_NAME "xbios"
|
#define XBIOS_VID_DRIVER_NAME "xbios"
|
||||||
|
@ -261,7 +262,7 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
||||||
{
|
{
|
||||||
int i,j8,j16;
|
int i,j8,j16;
|
||||||
xbiosmode_t *current_mode;
|
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 */
|
/* Initialize all variables that we clean on shutdown */
|
||||||
memset (SDL_modelist, 0, sizeof(SDL_modelist));
|
memset (SDL_modelist, 0, sizeof(SDL_modelist));
|
||||||
|
@ -415,8 +416,9 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
||||||
SDL_XBIOS_BlowupInit(this, (blow_cookie_t *)cookie_blow);
|
SDL_XBIOS_BlowupInit(this, (blow_cookie_t *)cookie_blow);
|
||||||
} else if (Getcookie(C_SCPN, &cookie_scpn) == C_FOUND) {
|
} else if (Getcookie(C_SCPN, &cookie_scpn) == C_FOUND) {
|
||||||
SDL_XBIOS_SB3Init(this, (scpn_cookie_t *)cookie_scpn);
|
SDL_XBIOS_SB3Init(this, (scpn_cookie_t *)cookie_scpn);
|
||||||
|
} else if (Getcookie(C_CNTS, &cookie_cnts) == C_FOUND) {
|
||||||
|
SDL_XBIOS_CentscreenInit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
53
src/video/xbios/SDL_xbios_centscreen.c
Normal file
53
src/video/xbios/SDL_xbios_centscreen.c
Normal file
|
@ -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
|
||||||
|
);
|
||||||
|
}
|
115
src/video/xbios/SDL_xbios_centscreen.h
Normal file
115
src/video/xbios/SDL_xbios_centscreen.h
Normal file
|
@ -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 */
|
Loading…
Add table
Add a link
Reference in a new issue