[Scummvm-devel] New GFX mode

Gregory Montoir Gregory.Montoir at ens.insa-rennes.fr
Tue Apr 23 11:47:03 CEST 2002


Hi,

well, I have just added a new GFX mode to scummVM:
the AdvanceMAME scale2x... Not as spectacular as
2xSai and co. but still pretty...

See the patch.

Cheers,

Cyx
-------------- next part --------------
diff -u scummvm/2xsai.cpp scummvm_mod/2xsai.cpp
--- scummvm/2xsai.cpp	Thu Apr 18 08:34:48 2002
+++ scummvm_mod/2xsai.cpp	Tue Apr 23 15:46:20 2002
@@ -23,6 +23,39 @@
 #include "stdafx.h"
 #include "scummsys.h"
 
+
+/* AdvanceMAME Scale2x effect */
+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;
+  }
+}
+
+
 /********** 2XSAI Filter *****************/
 static uint32 colorMask = 0xF7DEF7DE;
 static uint32 lowPixelMask = 0x08210821;
Common subdirectories: scummvm/PocketSCUMM and scummvm_mod/PocketSCUMM
Only in scummvm_mod: Release
Common subdirectories: scummvm/dc and scummvm_mod/dc
Common subdirectories: scummvm/debian and scummvm_mod/debian
diff -u scummvm/gameDetector.cpp scummvm_mod/gameDetector.cpp
--- scummvm/gameDetector.cpp	Mon Apr 22 03:04:58 2002
+++ scummvm_mod/gameDetector.cpp	Tue Apr 23 15:02:20 2002
@@ -46,7 +46,7 @@
 	"\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"
 ;
 
@@ -174,6 +174,7 @@
 		{"2xsai",GFX_2XSAI},
 		{"super2xsai",GFX_SUPER2XSAI},
 		{"supereagle",GFX_SUPEREAGLE},
+    {"advmame2x",GFX_ADVMAME2X}
 	};
 
 	const GraphicsModes *gm = gfx_modes;
Common subdirectories: scummvm/mac and scummvm_mod/mac
Common subdirectories: scummvm/macosclassic and scummvm_mod/macosclassic
Common subdirectories: scummvm/morphos and scummvm_mod/morphos
diff -u scummvm/scummvm.dsp scummvm_mod/scummvm.dsp
--- scummvm/scummvm.dsp	Wed Apr 17 20:49:58 2002
+++ scummvm_mod/scummvm.dsp	Tue Apr 23 15:46:46 2002
@@ -52,7 +52,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib sdl.lib winmm.lib wsock32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib sdl.lib winmm.lib wsock32.lib /nologo /subsystem:console /machine:I386 /out:"../../scummvm6.exe"
 
 !ELSEIF  "$(CFG)" == "scummvm - Win32 Debug"
 
Only in scummvm_mod: scummvm.ncb
Only in scummvm_mod: scummvm.opt
Only in scummvm_mod: scummvm___Win32_MP3_Enabled_Debug
diff -u scummvm/sdl.cpp scummvm_mod/sdl.cpp
--- scummvm/sdl.cpp	Sun Apr 21 17:46:42 2002
+++ scummvm_mod/sdl.cpp	Tue Apr 23 15:40:02 2002
@@ -188,7 +188,8 @@
 								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() {
 	SDL_ShowCursor(SDL_ENABLE);
@@ -250,6 +251,9 @@
 		break;
 	case GFX_SUPEREAGLE:
 		_sai_func = SuperEagle;
+		break;
+  case GFX_ADVMAME2X:
+		_sai_func = AdvMame2x;
 		break;
 
 	case GFX_DOUBLESIZE:
Common subdirectories: scummvm/simon and scummvm_mod/simon
Common subdirectories: scummvm/sound and scummvm_mod/sound
diff -u scummvm/system.h scummvm_mod/system.h
--- scummvm/system.h	Sun Apr 21 17:46:42 2002
+++ scummvm_mod/system.h	Tue Apr 23 15:34:36 2002
@@ -153,6 +153,7 @@
 	GFX_2XSAI = 3,
 	GFX_SUPER2XSAI = 4,
 	GFX_SUPEREAGLE = 5,
+  GFX_ADVMAME2X = 6,
 };
 
 
Common subdirectories: scummvm/v3 and scummvm_mod/v3
Common subdirectories: scummvm/v4 and scummvm_mod/v4
Common subdirectories: scummvm/wince and scummvm_mod/wince


More information about the Scummvm-devel mailing list