[Scummvm-cvs-logs] CVS: scummvm/sky cd_intro.cpp,1.11,1.12 intro.cpp,1.24,1.25 screen.cpp,1.19,1.20 sky.cpp,1.49,1.50 sky.h,1.28,1.29

Robert G?ffringmann lavosspawn at users.sourceforge.net
Sun Jun 1 15:54:04 CEST 2003


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv29221/sky

Modified Files:
	cd_intro.cpp intro.cpp screen.cpp sky.cpp sky.h 
Log Message:
remove useless screen updates, make non-seq intro parts escapable.

Index: cd_intro.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/cd_intro.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- cd_intro.cpp	1 Jun 2003 21:21:06 -0000	1.11
+++ cd_intro.cpp	1 Jun 2003 22:53:44 -0000	1.12
@@ -217,7 +217,7 @@
 
 	bgVocBuffer = _skyDisk->loadFile(59499, NULL);
 	bgVocSize = _skyDisk->_lastLoadedFileSize;
-	delay(2000); //keep gibbons screen up for 2 seconds
+	escDelay(2000); //keep gibbons screen up for 2 seconds
 	_skyScreen->fnFadeDown(0); //and fade out
 
 	START_VOICE;

Index: intro.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/intro.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- intro.cpp	1 Jun 2003 21:21:07 -0000	1.24
+++ intro.cpp	1 Jun 2003 22:53:44 -0000	1.25
@@ -191,6 +191,16 @@
 	_skyScreen->showScreen(60110);
 }
 
+void SkyState::escDelay(uint32 pDelay) {
+
+	pDelay /= 50;
+	while (pDelay) {
+		delay(50);
+		if (_key_pressed == 27) pDelay = 0;
+		else pDelay--;
+	}
+}
+
 void SkyState::intro(void) {
 
 	uint32 *commandPtr = (uint32 *)zeroCommands;
@@ -201,13 +211,13 @@
 	_skyMusic->loadSection(0);
 	_skySound->loadSection(0);
 	
-	delay(3000); //keep virgin screen up for 3 seconds
+	escDelay(3000); //keep virgin screen up for 3 seconds
 	CHECK_ESC
 	
 	if (!isCDVersion())
 		_skyMusic->startMusic(1);
 	
-	delay(3000); //and another 3 seconds.
+	escDelay(3000); //and another 3 seconds.
 	CHECK_ESC
 	
 	_skyScreen->fnFadeDown(0); //remove virgin screen
@@ -224,7 +234,7 @@
 
 	_skyText->getText(77);
 	
-	delay(8000); // keep revolution up for 8 seconds
+	escDelay(8000); // keep revolution up for 8 seconds
 	CHECK_ESC
 	
 	_skyScreen->fnFadeDown(0);
@@ -240,7 +250,7 @@
 		_skyDisk->prefetchFile(FN_1A);
 
 		//keep gibbo up for 2 seconds
-		delay(2000);
+		escDelay(2000);
 		CHECK_ESC
 		_skyScreen->fnFadeDown(0);
 

Index: screen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/screen.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- screen.cpp	1 Jun 2003 21:21:09 -0000	1.19
+++ screen.cpp	1 Jun 2003 22:53:44 -0000	1.20
@@ -190,6 +190,7 @@
 					copySrc += GAME_SCREEN_WIDTH;
 					copyDest += GAME_SCREEN_WIDTH;
 				}
+				_system->copy_rect(screenPos, GAME_SCREEN_WIDTH, cntx * GRID_W, cnty * GRID_H, GRID_W, GRID_H);
 			}
 			backPos += GRID_W;
 			screenPos += GRID_W;
@@ -209,7 +210,7 @@
 	recreate();
 	spriteEngine();
 	flip();
-	showScreen(_currentScreen);
+	_system->update_screen();
 	fnFadeUp(palette, scroll);
 }
 
@@ -227,7 +228,7 @@
 			palette_fadedown_helper((uint32 *)_palette, GAME_COLOURS);
 			_system->set_palette(_palette, 0, GAME_COLOURS);
 			_system->update_screen();
-			waitForTimer();
+			_system->delay_msecs(20);
 		}
 	}
 }
@@ -275,7 +276,7 @@
 		}
 		_system->set_palette(_palette, 0, GAME_COLOURS);
 		_system->update_screen();
-		waitForTimer();
+		_system->delay_msecs(20);
 	}	
 }
 
@@ -371,6 +372,7 @@
 void SkyScreen::processSequence(void) {
 
 	uint32 screenPos = 0;
+	uint32 rectX, rectY, oldScreenPos;
 
 	_seqInfo.delay--;
 	if (_seqInfo.delay == 0) {
@@ -386,14 +388,28 @@
 			do {
 				nrToDo = _seqInfo.seqDataPos[0];
 				_seqInfo.seqDataPos++;
+
+				rectX = screenPos % GAME_SCREEN_WIDTH;
+				rectY = screenPos / GAME_SCREEN_WIDTH;
+				oldScreenPos = screenPos;
+
 				for (cnt = 0; cnt < nrToDo; cnt++) {
 					_currentScreen[screenPos] = _seqInfo.seqDataPos[0];
 					_seqInfo.seqDataPos++;
 					screenPos++;
 				}
+				if (nrToDo > 0) {
+					if (rectX + nrToDo <= GAME_SCREEN_WIDTH)
+	                    _system->copy_rect(_currentScreen + oldScreenPos, GAME_SCREEN_WIDTH, rectX, rectY, nrToDo, 1);
+					else {
+						_system->copy_rect(_currentScreen + oldScreenPos, GAME_SCREEN_WIDTH, rectX, rectY, 320 - rectX, 1);
+						oldScreenPos += 320 - rectX;
+						_system->copy_rect(_currentScreen + oldScreenPos, GAME_SCREEN_WIDTH, 0, rectY + 1, nrToDo - (320 - rectX), 1);
+					}
+				}
 			} while (nrToDo == 0xFF);
 		} while (screenPos < (GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT));
-		showScreen(_currentScreen);
+		_system->update_screen();
 		_seqInfo.framesLeft--;
 	}
 	if (_seqInfo.framesLeft == 0) {

Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- sky.cpp	1 Jun 2003 21:21:09 -0000	1.49
+++ sky.cpp	1 Jun 2003 22:53:44 -0000	1.50
@@ -152,7 +152,7 @@
 		_skyScreen->recreate();
 		_skyScreen->spriteEngine();
 		_skyScreen->flip();
-		_skyScreen->showScreen(_skyScreen->giveCurrent());
+		_system->update_screen();
 	}
 }
 

Index: sky.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- sky.h	1 Jun 2003 21:21:09 -0000	1.28
+++ sky.h	1 Jun 2003 22:53:44 -0000	1.29
@@ -127,6 +127,7 @@
 	static uint8 fosterPal[256 * 3];
 	void checkCommands(uint32 *&cmdPtr);
 	void introFrame(uint8 **diffPtr, uint8 **vgaPtr, uint8 *screenData);
+	void escDelay(uint32 pDelay);
 
 	SkyText *getSkyText();
 	void initialise();





More information about the Scummvm-git-logs mailing list