Add new Scale mode. Thanks Gregory Montoir.

svn-id: r4069
This commit is contained in:
James Brown 2002-04-24 07:42:29 +00:00
parent c8cfb1e25a
commit 4cc43b3679
5 changed files with 42 additions and 5 deletions

View File

@ -731,3 +731,33 @@ void Scale_2xSaI(uint8 *srcPtr, uint32 srcPitch, uint8 * /* deltaPtr */ ,
dstPtr += dstPitch;
}
}
void AdvMame2x(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 nextlineDst = dstPitch / sizeof(short);
short* q = (short*)dstPtr;
for(int j = 0; j < height; ++j) {
for(int i = 0; i < width; ++i) {
short A = *(p + i - nextlineSrc - 1);
short B = *(p + i - nextlineSrc);
short C = *(p + i - nextlineSrc + 1);
short D = *(p + i - 1);
short E = *(p + i );
short F = *(p + i + 1);
short G = *(p + i + nextlineSrc - 1);
short H = *(p + i + nextlineSrc);
short I = *(p + i + nextlineSrc + 1);
*(q + (i << 1)) = D == B && B != F && D != H ? D : E;
*(q + (i << 1) + 1) = B == F && B != D && F != H ? F : E;
*(q + (i << 1) + nextlineDst) = D == H && D != B && H != F ? D : E;
*(q + (i << 1) + nextlineDst + 1) = H == F && D != H && B != F ? F : E;
}
p += nextlineSrc;
q += nextlineDst << 1;
}
}

View File

@ -46,7 +46,7 @@ static const char USAGE_STRING[] =
"\te<mode> - set music engine. see readme.txt for details\n"
"\tr - emulate roland mt32 instruments\n"
"\tf - fullscreen mode\n"
"\tg<mode> - graphics mode. normal,2x,3x,2xsai,super2xsai,supereagle\n"
"\tg<mode> - graphics mode. normal,2x,3x,2xsai,super2xsai,supereagle.advmame2x\n"
"\ta - specify game is amiga version\n"
;
@ -179,6 +179,7 @@ int GameDetector::parseGraphicsMode(const char *s) {
{"2xsai",GFX_2XSAI},
{"super2xsai",GFX_SUPER2XSAI},
{"supereagle",GFX_SUPEREAGLE},
{"advmame2x",GFX_ADVMAME2X}
};
const GraphicsModes *gm = gfx_modes;

View File

@ -92,11 +92,8 @@ listed here, nor in the compatibility table on the website, please see below.
Sam and Max:
- Subgames are not fully functional.
- Some overlap may occur in graphics, expecially the intro
- Music isn't perfect. Some overlap may occur
Loom (256 Talkie):
- CD music and voices are not totally syncronised
- If you are having random crashes, this is a Windows bug.
Try copying the data files from CD to your harddisk.
@ -227,6 +224,7 @@ They are:
-g2xsai - 2xsai filtering, double screen/window size to 640x480
-gsuper2xsai - Enhanced 2xsai filtering. 640x480 screen/window size
-gsupereagle - Less blurry than 2xsai, but slower. Also 640x480
-gadvmame2x - 640x480 scaling. Doesn't rely on blurring like 2xSAI.
Note that filters are very slow when ScummVM is compiled in a debug
configuration without optimisations. And there is always a speed impact when
@ -349,11 +347,12 @@ Credits:
Claudio Matsuoka - Daily builds (http://scummvm.sf.net/daily/)
Janne Huttunen - Zak256/Indy256/LoomCD actor mask support
Jeroen Janssen - Numerous readability and bugfix patches
Gregory Montoir - AdvanceMAME Scale-2X implementation
Edward Rudd - Fixes for playing MP3 versions of MI1/Loom Audio
Daniel Schepler - Final MI1 CD music support
Tim 'realmz' - Initial MI1 CD music support
Jonathan 'khalek' - Expert weaver in the Loom
And to all the contributors, users, and beta testers we've missed.
Thanks!

View File

@ -188,6 +188,9 @@ void Super2xSaI(uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
void SuperEagle(uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
void AdvMame2x(uint8 *srcPtr, uint32 srcPitch, uint8 *null,
uint8 *dstPtr, uint32 dstPitch, int width, int height);
void atexit_proc() {
@ -251,6 +254,9 @@ void OSystem_SDL::load_gfx_mode() {
case GFX_SUPEREAGLE:
_sai_func = SuperEagle;
break;
case GFX_ADVMAME2X:
_sai_func = AdvMame2x;
break;
case GFX_DOUBLESIZE:
scaling = 2;

View File

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