diff options
| author | Max Horn | 2003-05-09 22:44:16 +0000 | 
|---|---|---|
| committer | Max Horn | 2003-05-09 22:44:16 +0000 | 
| commit | 37724d929721836821065b2a177ae2f298bd1ed5 (patch) | |
| tree | 50ddae26d30216a6230062335129d0d40ef5ed16 | |
| parent | 54a9ad3204140aba204474d186058db627b2584d (diff) | |
| download | scummvm-rg350-37724d929721836821065b2a177ae2f298bd1ed5.tar.gz scummvm-rg350-37724d929721836821065b2a177ae2f298bd1ed5.tar.bz2 scummvm-rg350-37724d929721836821065b2a177ae2f298bd1ed5.zip | |
Patch #735294: AdvMame3x scaler
svn-id: r7409
| -rw-r--r-- | README | 3 | ||||
| -rw-r--r-- | backends/sdl/sdl-common.cpp | 20 | ||||
| -rw-r--r-- | backends/sdl/sdl.cpp | 6 | ||||
| -rw-r--r-- | backends/sdl/sdl_gl.cpp | 2 | ||||
| -rw-r--r-- | common/gameDetector.cpp | 1 | ||||
| -rw-r--r-- | common/scaler.cpp | 38 | ||||
| -rw-r--r-- | common/scaler.h | 6 | 
7 files changed, 64 insertions, 12 deletions
| @@ -346,7 +346,7 @@ simon games.          Ctrl-z OR Alt-x        - quit          Keyboard Arrow Keys    - simulate mouse movement          Ctrl-f                 - runs in fast mode. -        Ctrl-Alt 1-9           - Switch between graphics filters +        Ctrl-Alt 0-9           - Switch between graphics filters          Ctrl-Alt 1             - Switch beetwen bilinear and non-linear filtering [OpenGL backend]          Ctrl-Alt 2             - Don't fit the game in the whole screen (black borders) [OpenGL backend]          Ctrl-Alt 3             - Fit the game in the whole screen (no black borders) [OpenGL backend] @@ -408,6 +408,7 @@ They are:          super2xsai - Enhanced 2xsai filtering. 640x400 screen/window size          supereagle - Less blurry than 2xsai, but slower. Also 640x400          advmame2x  - 640x400 scaling. Doesn't rely on blurring like 2xSAI. +	advmame3x  - 960x600 scaling. Doesn't rely on blurring like 2xSAI.          tv2x       - 640x400 scaling. Horizontal scanlines.          dotmatrix  - 640x400 scaling. Dot matrix effect. diff --git a/backends/sdl/sdl-common.cpp b/backends/sdl/sdl-common.cpp index 2aff1e4b40..e258957cb2 100644 --- a/backends/sdl/sdl-common.cpp +++ b/backends/sdl/sdl-common.cpp @@ -544,13 +544,19 @@ bool OSystem_SDL_Common::poll_event(Event *event) {  				break;  			}  #endif -			// Ctr-Alt-1 till Ctrl-Alt-9 will change the GFX mode -			if (b == (KBD_CTRL|KBD_ALT) &&  -				(ev.key.keysym.sym>='1') && (ev.key.keysym.sym<='9')) { -				Property prop; -				prop.gfx_mode = ev.key.keysym.sym - '1'; -				property(PROP_SET_GFX_MODE, &prop); -				break; +			// Ctr-Alt-<key> will change the GFX mode +			if (b == (KBD_CTRL|KBD_ALT)) { +				char keys[] = "1234567890"; +				char *ptr; + +				ptr = strchr(keys, ev.key.keysym.sym); +				if (ptr != NULL) { +					Property prop; + +					prop.gfx_mode = ptr - keys; +					property(PROP_SET_GFX_MODE, &prop); +					break; +				}  			}  #ifdef QTOPIA diff --git a/backends/sdl/sdl.cpp b/backends/sdl/sdl.cpp index 3c977e20b9..13cf5fe087 100644 --- a/backends/sdl/sdl.cpp +++ b/backends/sdl/sdl.cpp @@ -99,6 +99,10 @@ void OSystem_SDL::load_gfx_mode() {  		_scaleFactor = 2;  		_scaler_proc = AdvMame2x;  		break; +	case GFX_ADVMAME3X: +		_scaleFactor = 3; +		_scaler_proc = AdvMame3x; +		break;  	case GFX_TV2X:  		_scaleFactor = 2;  		_scaler_proc = TV2x; @@ -360,7 +364,7 @@ uint32 OSystem_SDL::property(int param, Property *value) {  #endif  		return 1;  	} else if (param == PROP_SET_GFX_MODE) { -		if (value->gfx_mode >= 9) +		if (value->gfx_mode >= 10)  			return 0;  		_mode = value->gfx_mode; diff --git a/backends/sdl/sdl_gl.cpp b/backends/sdl/sdl_gl.cpp index 9858354004..99b5dc1f12 100644 --- a/backends/sdl/sdl_gl.cpp +++ b/backends/sdl/sdl_gl.cpp @@ -570,7 +570,7 @@ uint32 OSystem_SDL_OpenGL::property(int param, Property *value) {  				_glScreenStart = 0;  				break;  			default: // SDL backend -				if (value->gfx_mode >= 9) +				if (value->gfx_mode >= 10)  				  return 0;  				_mode = value->gfx_mode; diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp index 27c9b7bb05..885a1e5754 100644 --- a/common/gameDetector.cpp +++ b/common/gameDetector.cpp @@ -90,6 +90,7 @@ static const struct GraphicsMode gfx_modes[] = {  	{"super2xsai", "Super2xSAI", GFX_SUPER2XSAI},  	{"supereagle", "SuperEagle", GFX_SUPEREAGLE},  	{"advmame2x", "AdvMAME2x", GFX_ADVMAME2X}, +	{"advmame3x", "AdvMAME3x", GFX_ADVMAME3X},  	{"tv2x", "TV2x", GFX_TV2X},  	{"dotmatrix", "DotMatrix", GFX_DOTMATRIX},  #else diff --git a/common/scaler.cpp b/common/scaler.cpp index 320f67ef5d..96d25f3b3c 100644 --- a/common/scaler.cpp +++ b/common/scaler.cpp @@ -746,6 +746,44 @@ void AdvMame2x(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,  	}  } +void AdvMame3x(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, +							 int width, int height) { +	unsigned int nextlineSrc = srcPitch / sizeof(uint16); +	uint16 *p = (uint16 *)srcPtr; + +	unsigned int nextlineDst = dstPitch / sizeof(uint16); +	uint16 *q = (uint16 *)dstPtr; +	 +	uint16 A, B, C; +	uint16 D, E, F; +	uint16 G, H, I; + +	while (height--) { +		B = C = *(p - nextlineSrc); +		E = F = *(p); +		H = I = *(p + nextlineSrc); +		for (int i = 0; i < width; ++i) { +			p++; +			A = B; B = C; C = *(p - nextlineSrc); +			D = E; E = F; F = *(p); +			G = H; H = I; I = *(p + nextlineSrc); + +			*(q) = D == B && B != F && D != H ? D : E; +			*(q + 1) = E; +			*(q + 2) = B == F && B != D && F != H ? F : E; +			*(q + nextlineDst) = E; +			*(q + nextlineDst + 1) = E; +			*(q + nextlineDst + 2) = E; +			*(q + 2 * nextlineDst) = D == H && D != B && H != F ? D : E; +			*(q + 2 * nextlineDst + 1) = E; +			*(q + 2 * nextlineDst + 2) = H == F && D != H && B != F ? F : E; +			q += 3; +		} +		p += nextlineSrc - width; +		q += (nextlineDst - width) * 3; +	} +} +  void Normal1x(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,  							int width, int height) {  	while (height--) { diff --git a/common/scaler.h b/common/scaler.h index 0b4c6d4186..668b02cb95 100644 --- a/common/scaler.h +++ b/common/scaler.h @@ -31,6 +31,7 @@ DECLARE_SCALER(_2xSaI);  DECLARE_SCALER(Super2xSaI);  DECLARE_SCALER(SuperEagle);  DECLARE_SCALER(AdvMame2x); +DECLARE_SCALER(AdvMame3x);  DECLARE_SCALER(Normal1x);  DECLARE_SCALER(Normal2x);  DECLARE_SCALER(Normal3x); @@ -46,8 +47,9 @@ enum {  	GFX_SUPER2XSAI = 4,  	GFX_SUPEREAGLE = 5,  	GFX_ADVMAME2X = 6, -	GFX_TV2X = 7, -	GFX_DOTMATRIX = 8, +	GFX_ADVMAME3X = 7, +	GFX_TV2X = 8, +	GFX_DOTMATRIX = 9,  	GFX_FLIPPING = 100,	// Palmos  	GFX_DOUBLEBUFFER = 101	// Palmos | 
