Skip to content

Commit

Permalink
Add Falcon Centscreen extension support
Browse files Browse the repository at this point in the history
  • Loading branch information
pmandin committed May 18, 2005
1 parent 5a4b449 commit 8d5f0f5
Show file tree
Hide file tree
Showing 5 changed files with 176 additions and 3 deletions.
3 changes: 2 additions & 1 deletion README.MiNT
Expand Up @@ -156,7 +156,8 @@ Xbios video:
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.

Expand Down
2 changes: 2 additions & 0 deletions src/video/xbios/Makefile.am
Expand Up @@ -10,5 +10,7 @@ XBIOS_SRCS = \
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
6 changes: 4 additions & 2 deletions src/video/xbios/SDL_xbios.c
Expand Up @@ -56,6 +56,7 @@ static char rcsid =
#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"
Expand Down Expand Up @@ -261,7 +262,7 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
{
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));
Expand Down Expand Up @@ -415,8 +416,9 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
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;
}

Expand Down
53 changes: 53 additions & 0 deletions src/video/xbios/SDL_xbios_centscreen.c
@@ -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 changes: 115 additions & 0 deletions src/video/xbios/SDL_xbios_centscreen.h
@@ -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 */

0 comments on commit 8d5f0f5

Please sign in to comment.