add new tv scanlines graphics scaler from Gregory Montoir, use -g tv2x to try it

svn-id: r6462
This commit is contained in:
Jonathan Gray 2003-01-15 02:11:37 +00:00
parent bd1b0d53ef
commit c08d736d1d
7 changed files with 39 additions and 5 deletions

View file

@ -481,9 +481,9 @@ bool OSystem_SDL_Common::poll_event(Event *event) {
quit();
break;
}
// Ctr-Alt-1 till Ctrl-Alt-7 will change the GFX mode
// Ctr-Alt-1 till Ctrl-Alt-8 will change the GFX mode
if (b == (KBD_CTRL|KBD_ALT) &&
(ev.key.keysym.sym>='1') && (ev.key.keysym.sym<='7')) {
(ev.key.keysym.sym>='1') && (ev.key.keysym.sym<='8')) {
Property prop;
prop.gfx_mode = ev.key.keysym.sym - '1';
property(PROP_SET_GFX_MODE, &prop);

View file

@ -99,6 +99,10 @@ void OSystem_SDL::load_gfx_mode() {
_scaleFactor = 2;
_scaler_proc = AdvMame2x;
break;
case GFX_TV2X:
_scaleFactor = 2;
_scaler_proc = TV2x;
break;
case GFX_DOUBLESIZE:
_scaleFactor = 2;
@ -341,7 +345,7 @@ uint32 OSystem_SDL::property(int param, Property *value) {
#endif
return 1;
} else if (param == PROP_SET_GFX_MODE) {
if (value->gfx_mode >= 7)
if (value->gfx_mode >= 8)
return 0;
_mode = value->gfx_mode;

View file

@ -47,7 +47,7 @@ static const char USAGE_STRING[] =
"\t-p<path> - look for game in <path>\n"
"\t-x[<num>] - load this savegame (default: 0 - autosave)\n"
"\t-f - fullscreen mode\n"
"\t-g<mode> - graphics mode (normal,2x,3x,2xsai,super2xsai,supereagle,advmame2x)\n"
"\t-g<mode> - graphics mode (normal,2x,3x,2xsai,super2xsai,supereagle,advmame2x,tv2x)\n"
"\t-e<mode> - set music engine (see README for details)\n"
"\t-a - specify game is amiga version\n"
"\n"
@ -182,6 +182,7 @@ static const struct GraphicsModes gfx_modes[] = {
{"super2xsai", "Super2xSAI", GFX_SUPER2XSAI},
{"supereagle", "SuperEagle", GFX_SUPEREAGLE},
{"advmame2x", "AdvMAME2x", GFX_ADVMAME2X},
{"tv2x", "TV2x", GFX_TV2X},
{0, 0}
};

View file

@ -810,3 +810,28 @@ void Normal3x(uint8 *srcPtr, uint32 srcPitch, uint8 *null, uint8 *dstPtr, uint32
dstPtr += dstPitch3;
}
}
void TV2x(uint8 *srcPtr, uint32 srcPitch, uint8 *null, uint8 *dstPtr, uint32 dstPitch,
int width, int height)
{
unsigned int nextlineSrc = srcPitch / sizeof(short);
short *p = (short *)srcPtr;
unsigned int nextlineDst = dstPitch / sizeof(short);
short *q = (short *)dstPtr;
while(height--) {
for (int i = 0, j = 0; i < width; ++i, j += 2) {
unsigned short p1 = *(p + i);
unsigned short p2 = *(p + i + nextlineSrc);
unsigned short pi = (unsigned short)((INTERPOLATE(p1, p2) & colorMask) >> 1);
*(q + j) = p1;
*(q + j + 1) = p1;
*(q + j + nextlineDst) = pi;
*(q + j + nextlineDst + 1) = pi;
}
p += nextlineSrc;
q += nextlineDst << 1;
}
}

View file

@ -36,5 +36,7 @@ extern void Normal2x(uint8 *srcPtr, uint32 srcPitch, uint8 *null,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
extern void Normal3x(uint8 *srcPtr, uint32 srcPitch, uint8 *null,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
extern void TV2x(uint8 *srcPtr, uint32 srcPitch, uint8 *null,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
#endif

View file

@ -220,7 +220,8 @@ enum {
GFX_2XSAI = 3,
GFX_SUPER2XSAI = 4,
GFX_SUPEREAGLE = 5,
GFX_ADVMAME2X = 6
GFX_ADVMAME2X = 6,
GFX_TV2X = 7
};

View file

@ -69,6 +69,7 @@ GlobalOptionsDialog::GlobalOptionsDialog(NewGui *gui)
gfxPopUp->appendEntry("Super2xSAI");
gfxPopUp->appendEntry("SuperEagle");
gfxPopUp->appendEntry("AdvMAME2x");
gfxPopUp->appendEntry("TV2x");
gfxPopUp->setSelected(0);
// The MIDI mode popup & a label