[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