Skip to content
Permalink
Browse files

atari:xbios: Move all TT specific stuff to specific backend file.

  • Loading branch information
pmandin committed Jul 30, 2014
1 parent 016083d commit daecd780b262329627ad2fc9e5a099781f28a1e0
Showing with 135 additions and 55 deletions.
  1. +7 −55 src/video/xbios/SDL_xbios.c
  2. +3 −0 src/video/xbios/SDL_xbios.h
  3. +125 −0 src/video/xbios/SDL_xbios_tt.c
@@ -92,11 +92,6 @@ static void XBIOS_GL_SwapBuffers(_THIS);

/* Default list of video modes */

static const xbiosmode_t ttmodes[2]={
{TT_LOW,320,480,8, XBIOSMODE_C2P},
{TT_LOW,320,240,8, XBIOSMODE_C2P|XBIOSMODE_DOUBLELINE}
};

static const xbiosmode_t falconrgbmodes[16]={
{BPS16|COL80|OVERSCAN|VERTFLAG,768,480,16,0},
{BPS16|COL80|OVERSCAN,768,240,16,0},
@@ -254,6 +249,8 @@ static SDL_VideoDevice *XBIOS_CreateDevice(int devindex)
/* Already done as default */
break;
case VDO_TT:
SDL_XBIOS_VideoInit_TT(device);
break;
case VDO_F30:
device->SetColors = XBIOS_SetColors;
break;
@@ -327,15 +324,6 @@ void SDL_XBIOS_AddMode(_THIS, int actually_add, const xbiosmode_t *modeinfo)
}
}

static void XBIOS_ListTTModes(_THIS, int actually_add)
{
int i;

for (i=0; i<2; i++) {
SDL_XBIOS_AddMode(this, actually_add, &ttmodes[i]);
}
}

static void XBIOS_ListFalconRgbModes(_THIS, int actually_add)
{
int i;
@@ -410,29 +398,8 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
(*XBIOS_listModes)(this, 0);
break;
case VDO_TT:
XBIOS_oldvmode=EgetShift();

switch(XBIOS_oldvmode & ES_MODE) {
case TT_LOW:
XBIOS_oldnumcol=256;
break;
case ST_LOW:
case TT_MED:
XBIOS_oldnumcol=16;
break;
case ST_MED:
XBIOS_oldnumcol=4;
break;
case ST_HIGH:
case TT_HIGH:
XBIOS_oldnumcol=2;
break;
}
if (XBIOS_oldnumcol) {
EgetPalette(0, XBIOS_oldnumcol, XBIOS_oldpalette);
}

XBIOS_ListTTModes(this, 0);
(*XBIOS_saveMode)(this, vformat);
(*XBIOS_listModes)(this, 0);
break;
case VDO_F30:
XBIOS_oldvmode=VsetMode(-1);
@@ -523,7 +490,7 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
(*XBIOS_listModes)(this, 1);
break;
case VDO_TT:
XBIOS_ListTTModes(this, 1);
(*XBIOS_listModes)(this, 1);
break;
case VDO_F30:
/* ScreenBlaster 3 ? */
@@ -725,7 +692,7 @@ static SDL_Surface *XBIOS_SetVideoMode(_THIS, SDL_Surface *current,
(*XBIOS_setMode)(this, new_video_mode);
break;
case VDO_TT:
EsetShift(new_video_mode->number);
(*XBIOS_setMode)(this, new_video_mode);
break;
case VDO_F30:
if (XBIOS_centscreen) {
@@ -878,17 +845,6 @@ static int XBIOS_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors
int r,v,b;

switch( XBIOS_cvdo >> 16) {
case VDO_TT:
for(i = 0; i < ncolors; i++)
{
r = colors[i].r;
v = colors[i].g;
b = colors[i].b;

TT_palette[i]=((r>>4)<<8)|((v>>4)<<4)|(b>>4);
}
EsetPalette(firstcolor,ncolors,TT_palette);
break;
case VDO_F30:
for(i = 0; i < ncolors; i++)
{
@@ -923,11 +879,7 @@ static void XBIOS_VideoQuit(_THIS)
(*XBIOS_restoreMode)(this);
break;
case VDO_TT:
Setscreen(-1,XBIOS_oldvbase,-1);
EsetShift(XBIOS_oldvmode);
if (XBIOS_oldnumcol) {
EsetPalette(0, XBIOS_oldnumcol, XBIOS_oldpalette);
}
(*XBIOS_restoreMode)(this);
break;
case VDO_F30:
Setscreen(-1, XBIOS_oldvbase, -1);
@@ -135,6 +135,9 @@ void SDL_XBIOS_AddMode(_THIS, int actually_add, const xbiosmode_t *modeinfo);
/* SDL_xbios_st.c */
void SDL_XBIOS_VideoInit_ST(_THIS, unsigned long cookie_cvdo);

/* SDL_xbios_tt.c */
void SDL_XBIOS_VideoInit_TT(_THIS);

/* SDL_xbios_milan.c */
void SDL_XBIOS_VideoInit_Milan(_THIS);

@@ -0,0 +1,125 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2012 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
*/
#include "SDL_config.h"

/*
TT Xbios video functions
Patrice Mandin
*/

#include <mint/cookie.h>
#include <mint/osbind.h>

#include "../SDL_sysvideo.h"

#include "SDL_xbios.h"

static const xbiosmode_t ttmodes[]={
{TT_LOW,320,480,8, XBIOSMODE_C2P},
{TT_LOW,320,240,8, XBIOSMODE_C2P|XBIOSMODE_DOUBLELINE}
};

static void listModes(_THIS, int actually_add);
static void saveMode(_THIS, SDL_PixelFormat *vformat);
static void setMode(_THIS, xbiosmode_t *new_video_mode);
static void restoreMode(_THIS);
static int setColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors);

void SDL_XBIOS_VideoInit_TT(_THIS)
{
XBIOS_listModes = listModes;
XBIOS_saveMode = saveMode;
XBIOS_setMode = setMode;
XBIOS_restoreMode = restoreMode;

this->SetColors = setColors;
}

static void listModes(_THIS, int actually_add)
{
int i;

for (i=0; i<sizeof(ttmodes)/sizeof(xbiosmode_t); i++) {
SDL_XBIOS_AddMode(this, actually_add, &ttmodes[i]);
}
}

static void saveMode(_THIS, SDL_PixelFormat *vformat)
{
XBIOS_oldvbase=Physbase();
XBIOS_oldvmode=EgetShift();

switch(XBIOS_oldvmode & ES_MODE) {
case TT_LOW:
XBIOS_oldnumcol=256;
break;
case ST_LOW:
case TT_MED:
XBIOS_oldnumcol=16;
break;
case ST_MED:
XBIOS_oldnumcol=4;
break;
case ST_HIGH:
case TT_HIGH:
XBIOS_oldnumcol=2;
break;
}

if (XBIOS_oldnumcol) {
EgetPalette(0, XBIOS_oldnumcol, XBIOS_oldpalette);
}
}

static void setMode(_THIS, xbiosmode_t *new_video_mode)
{
Setscreen(-1,XBIOS_screens[0],-1);

EsetShift(new_video_mode->number);
}

static void restoreMode(_THIS)
{
Setscreen(-1,XBIOS_oldvbase,-1);

EsetShift(XBIOS_oldvmode);
if (XBIOS_oldnumcol) {
EsetPalette(0, XBIOS_oldnumcol, XBIOS_oldpalette);
}
}

static int setColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
{
int i, r,g,b;

for(i = 0; i < ncolors; i++) {
r = colors[i].r;
g = colors[i].g;
b = colors[i].b;

TT_palette[i]=((r>>4)<<8)|((g>>4)<<4)|(b>>4);
}
EsetPalette(firstcolor,ncolors,TT_palette);

return(1);
}

0 comments on commit daecd78

Please sign in to comment.