[Scummvm-cvs-logs] CVS: scummvm scumm.h,1.75,1.76 sdl.cpp,1.39,1.40

James Brown ender at users.sourceforge.net
Sun Mar 10 00:10:06 CET 2002


Update of /cvsroot/scummvm/scummvm
In directory usw-pr-cvs1:/tmp/cvs-serv31606

Modified Files:
	scumm.h sdl.cpp 
Log Message:
Add SuperSai (-g2) and SuperEagle (-g3) modes. Much bugfixing and optimisation needed. Maybe an asm language version.



Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm.h,v
retrieving revision 1.75
retrieving revision 1.76
diff -C2 -d -r1.75 -r1.76
*** scumm.h	10 Mar 2002 07:48:01 -0000	1.75
--- scumm.h	10 Mar 2002 08:09:44 -0000	1.76
***************
*** 837,841 ****
  enum VideoMode {
  	VIDEO_SCALE = 0,
! 	VIDEO_2XSAI = 1
  };
  
--- 837,843 ----
  enum VideoMode {
  	VIDEO_SCALE = 0,
! 	VIDEO_2XSAI = 1,
! 	VIDEO_SUPERSAI = 2,
! 	VIDEO_SUPEREAGLE = 3
  };
  

Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sdl.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** sdl.cpp	10 Mar 2002 07:48:01 -0000	1.39
--- sdl.cpp	10 Mar 2002 08:09:44 -0000	1.40
***************
*** 45,48 ****
--- 45,51 ----
  int Init_2xSaI (uint32 BitFormat);	
  void _2xSaI (uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr, uint8 *dstPtr, uint32 dstPitch, int width, int height);
+ 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);
+ 
  
  static int current_shake_pos;
***************
*** 394,398 ****
  }
  
! void Draw2xSaI(SDL_Rect *r) {
  	if (SDL_BlitSurface(screen, r, sdl_tmpscreen, r) != 0)
  		error("SDL_BlitSurface failed");
--- 397,401 ----
  }
  
! void Draw2xSaI(SDL_Rect *r, int vidmode) {
  	if (SDL_BlitSurface(screen, r, sdl_tmpscreen, r) != 0)
  		error("SDL_BlitSurface failed");
***************
*** 401,408 ****
  	SDL_LockSurface(sdl_hwscreen);
  
! 	/* Apply the 2xsai algorithm */
! 	_2xSaI((byte*)sdl_tmpscreen->pixels + r->x*2 + r->y*640, 640, NULL, 
! 		(byte*)sdl_hwscreen->pixels + r->x*4 + r->y*640*4, 640*2, r->w, r->h);
! 
  	/* scale the rect to fit in SDL_UpdateRects */
  	r->x <<= 1;
--- 404,425 ----
  	SDL_LockSurface(sdl_hwscreen);
  
! 	switch(vidmode) {
! 		case VIDEO_2XSAI:
! 				_2xSaI((byte*)sdl_tmpscreen->pixels + r->x*2 + r->y*640, 640, NULL, 
! 						(byte*)sdl_hwscreen->pixels + r->x*4 + r->y*640*4, 640*2, r->w, r->h);
! 				break;
! 		case VIDEO_SUPERSAI:
! 				Super2xSaI((byte*)sdl_tmpscreen->pixels + r->x*2 + r->y*640, 640, NULL, 
! 						(byte*)sdl_hwscreen->pixels + r->x*4 + r->y*640*4, 640*2, r->w, r->h);
! 				break;
! 		case VIDEO_SUPEREAGLE:
! 				SuperEagle((byte*)sdl_tmpscreen->pixels + r->x*2 + r->y*640, 640, NULL, 
! 						(byte*)sdl_hwscreen->pixels + r->x*4 + r->y*640*4, 640*2, r->w, r->h);
! 				break;
! 		default:
! 				error("Unknown graphics mode %d", vidmode);
! 				break;
! 	}
! 	
  	/* scale the rect to fit in SDL_UpdateRects */
  	r->x <<= 1;
***************
*** 435,439 ****
  		r.w = 320;
  		r.h = 200;
! 		Draw2xSaI(&r);
  		fullRedraw = false;
  
--- 452,456 ----
  		r.w = 320;
  		r.h = 200;
! 		Draw2xSaI(&r, s->_videoMode);
  		fullRedraw = false;
  
***************
*** 445,449 ****
  		for (i = 0; i <= numDirtyRects; i++) {
  			dr = &dirtyRects[i];
! 			Draw2xSaI(dr);
  		}
  	}
--- 462,466 ----
  		for (i = 0; i <= numDirtyRects; i++) {
  			dr = &dirtyRects[i];
! 			Draw2xSaI(dr, s->_videoMode);
  		}
  	}
***************
*** 479,486 ****
  	if (s->_videoMode == VIDEO_SCALE)
  		updateScreenScale(s);
- 	else if (s->_videoMode == VIDEO_2XSAI)
- 		updateScreen2xSaI(s);
  	else
! 		error("Unknown graphics mode!");
  }
  
--- 496,501 ----
  	if (s->_videoMode == VIDEO_SCALE)
  		updateScreenScale(s);
  	else
! 		updateScreen2xSaI(s);	
  }
  
***************
*** 714,718 ****
  	}
  
! 	if (s->_videoMode == VIDEO_2XSAI) {
  		uint16 *tmp_screen = (uint16*)calloc(320*202 + 8,sizeof(uint16));
  		Init_2xSaI(565);
--- 729,735 ----
  	}
  
! 	if (s->_videoMode == VIDEO_SCALE) {
! 				screen = SDL_SetVideoMode(320 * scale, 200 * scale, 8, fullScreen ? (SDL_SWSURFACE | SDL_FULLSCREEN) : (SDL_SWSURFACE | SDL_DOUBLEBUF));
! 	} else {
  		uint16 *tmp_screen = (uint16*)calloc(320*202 + 8,sizeof(uint16));
  		Init_2xSaI(565);
***************
*** 725,730 ****
  
  		scale = 1;
- 	} else {
- 		screen = SDL_SetVideoMode(320 * scale, 200 * scale, 8, fullScreen ? (SDL_SWSURFACE | SDL_FULLSCREEN) : (SDL_SWSURFACE | SDL_DOUBLEBUF));
  	}
  
--- 742,745 ----
***************
*** 1311,1315 ****
      uint8  *dP;
      uint16 *bP;
-     uint16 *xP;
      uint32 inc_bP;
  
--- 1326,1329 ----
***************
*** 1322,1326 ****
  	{
  	    bP = (uint16 *) srcPtr;
- 	    xP = (uint16 *) deltaPtr;
  	    dP = dstPtr;
  	    for (uint32 finish = width; finish; finish -= inc_bP)
--- 1336,1339 ----
***************
*** 1355,1359 ****
  			product1a = INTERPOLATE (color2, color5);
  			product1a = INTERPOLATE (color2, product1a);
- //                       product1a = color2;
  		    }
  		    else
--- 1368,1371 ----
***************
*** 1366,1370 ****
  			product2b = INTERPOLATE (color2, color3);
  			product2b = INTERPOLATE (color2, product2b);
- //                       product2b = color2;
  		    }
  		    else
--- 1378,1381 ----
***************
*** 1381,1385 ****
  			product1b = INTERPOLATE (color5, color6);
  			product1b = INTERPOLATE (color5, product1b);
- //                       product1b = color5;
  		    }
  		    else
--- 1392,1395 ----
***************
*** 1392,1396 ****
  			product2a = INTERPOLATE (color5, color2);
  			product2a = INTERPOLATE (color5, product2a);
- //                       product2a = color5;
  		    }
  		    else
--- 1402,1405 ----
***************
*** 1434,1446 ****
  
  		    product2a = product1b = INTERPOLATE (color5, color3);
! 		    product2a =
! 			Q_INTERPOLATE (color2, color2, color2, product2a);
! 		    product1b =
! 			Q_INTERPOLATE (color6, color6, color6, product1b);
! 
! //                    product1a = color5;
! //                    product1b = color6;
! //                    product2a = color2;
! //                    product2b = color3;
  		}
  		product1a = product1a | (product1b << 16);
--- 1443,1448 ----
  
  		    product2a = product1b = INTERPOLATE (color5, color3);
! 		    product2a = Q_INTERPOLATE (color2, color2, color2, product2a);
! 		    product1b = Q_INTERPOLATE (color6, color6, color6, product1b);
  		}
  		product1a = product1a | (product1b << 16);
***************
*** 1449,1456 ****
  		*((uint32 *) dP) = product1a;
  		*((uint32 *) (dP + dstPitch)) = product2a;
- 		*xP = color5;
  
  		bP += inc_bP;
- 		xP += inc_bP;
  		dP += sizeof (uint32);
  	    }			// end of for ( finish= width etc..)
--- 1451,1456 ----





More information about the Scummvm-git-logs mailing list