[Scummvm-cvs-logs] CVS: scummvm/sky timer.cpp,NONE,1.1 cd_intro.cpp,1.1,1.2 disk.cpp,1.13,1.14 module.mk,1.3,1.4 sky.cpp,1.8,1.9 sky.h,1.8,1.9 sound.cpp,1.1,1.2 sound.h,1.1,1.2

Joost Peters joostp at users.sourceforge.net
Tue Mar 11 10:34:02 CET 2003


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

Modified Files:
	cd_intro.cpp disk.cpp module.mk sky.cpp sky.h sound.cpp 
	sound.h 
Added Files:
	timer.cpp 
Log Message:
added timers, full cd-intro and fixed some minor issues

--- NEW FILE: timer.cpp ---
/* ScummVM - Scumm Interpreter
 * Copyright (C) 2003 The ScummVM project
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * $Header: /cvsroot/scummvm/scummvm/sky/timer.cpp,v 1.1 2003/03/11 18:32:58 joostp Exp $
 *
 */

#include "stdafx.h"
#include "sky/sky.h"
#include "sky/skydefs.h"


void SkyState::initTimer(void) {

	_tseqFrames = 0;
	_timer = Engine::_timer; 
	_timer->installProcedure(&timerHandler, 1000000 / 50); //call 50 times per second
	
}
	
void SkyState::timerHandler(void *ptr) {

	SkyState *_this = (SkyState *)ptr;
	
	//music_command(0x300);
	_this->doTimerSequence();
}

void SkyState::startTimerSequence(byte *sequence) {

	_tseqFrames = *sequence++;
	_tseqData = sequence;
	_tseqCounter = SEQUENCE_COUNT;
	debug(1, "Starting new sequence of %d frames.", _tseqFrames);
	
}

void SkyState::doTimerSequence(void) {

	byte  nrToSkip, nrToDo, tmp;
	byte *scrPtr = _workScreen;
	
	if (_tseqFrames == 0)
		return;
	
	_tseqCounter--;
	if (_tseqCounter != 0)
		return;

	_tseqCounter = SEQUENCE_COUNT;

	debug(2, "Number of frames left: %d\n", _tseqFrames);
	
	do {
		do {
			nrToSkip = *_tseqData++;
			scrPtr += nrToSkip;
		} while (nrToSkip == 255);
		do {
			nrToDo = *_tseqData++;
			tmp = nrToDo;
			while (tmp--) {
				*scrPtr++ = *_tseqData++;
			}
		} while (nrToDo == 255);
	} while ((scrPtr - _workScreen) < (GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT));

	showScreen();
	_tseqFrames--;
		
}

Index: cd_intro.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/cd_intro.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cd_intro.cpp	8 Mar 2003 12:46:51 -0000	1.1
+++ cd_intro.cpp	11 Mar 2003 18:32:54 -0000	1.2
@@ -190,12 +190,22 @@
 #define cd_104	60097
 #define cd_105	60098
 
+#define START_VOICE	( delay(200), _sound->playVoice(vocBuffer, loadedVocSize) )
+#define START_BG	( _sound->playBgSound(bgVocBuffer, bgVocSize) )
+#define LOAD_NEW_VOICE(num)	( free (vocBuffer), vocBuffer = (byte *)loadFile(num, NULL), loadedVocSize = _lastLoadedFileSize ) 
+#define LOAD_NEW_BG(num)	( free (bgVocBuffer), bgVocBuffer = (byte *)loadFile(num, NULL), bgVocSize = _lastLoadedFileSize )
+#define WAIT_VOICE	while (_sound->_voiceHandle != 0) { delay(50); }
+#define WAIT_SEQUENCE	while (_tseqFrames != 0) { delay(50); }
+#define WAIT_RELATIVE(x)	( delay(20 * (x)) )
+#define COPY_SCREEN	( memcpy(_workScreen, workScreen2, GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT) )
 
 void SkyState::doCDIntro() {
 
 	uint32 loadedVocSize, bgVocSize;
-	byte *vocBuffer, *bgVocBuffer, *cd2_seq_data_1;
+	byte *vocBuffer, *bgVocBuffer, *cd2_seq_data_1, *cd2_seq_data_2;
 
+	assert(_isCDVersion);
+	
 	vocBuffer = (byte *)loadFile(cdv_00, NULL);
 	loadedVocSize = _lastLoadedFileSize;
 
@@ -209,22 +219,623 @@
 	delay(2000); //keep gibbons screen up for 2 seconds
 	fn_fade_down(0); //and fade out
 
-	_sound->playVoice(vocBuffer, loadedVocSize);
-	_sound->playVoice(bgVocBuffer, bgVocSize);
+	START_VOICE;
+	START_BG; 
 	free (vocBuffer);
 
 	vocBuffer = (byte *)loadFile(cdv_01, NULL);
 	loadedVocSize = _lastLoadedFileSize;
 	
-	//waitForVoc(0);
-	delay(5500); //hack!
+	WAIT_VOICE; //wait for the voice to finish
+	START_VOICE;
+	START_BG; 
+	showScreen();
+	paletteFadeUp(_tempPal);
+	startTimerSequence(cd2_seq_data_1);
+	LOAD_NEW_VOICE(cdv_02);
+	WAIT_VOICE;
+	START_VOICE;
+	START_BG; 
+	cd2_seq_data_2 = (byte *)loadFile(cd_2, NULL); //load seq 2 while 1 is playing
+	LOAD_NEW_VOICE(cdv_03);
+	//WAIT_SEQUENCE;
+	WAIT_VOICE;
+	startTimerSequence(cd2_seq_data_2); //start second sequence
+	START_VOICE; //03
+	START_BG;
+	
+	LOAD_NEW_VOICE(cdv_04);
+	
+	WAIT_VOICE; //03
+	START_VOICE; //04
+	START_BG;
 
-	_sound->playVoice(vocBuffer, loadedVocSize);
-	_sound->playVoice(bgVocBuffer, bgVocSize);
-	free (vocBuffer);	
+	free(cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_3, NULL);
+	LOAD_NEW_VOICE(cdv_05);
+	
+	WAIT_SEQUENCE; //2
+	WAIT_VOICE; //4
+
+	START_VOICE; //5
+	START_BG;
+	
+	WAIT_RELATIVE(100); 
+
+	startTimerSequence(cd2_seq_data_1);
+	LOAD_NEW_VOICE(cdv_06);
+	WAIT_VOICE; //5
+	START_VOICE; //6
+	START_BG;
+
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_5, NULL);
+	LOAD_NEW_VOICE(cdv_07);
+
+	WAIT_SEQUENCE; //3
+	WAIT_VOICE; //6
+
+	START_VOICE; //7
+	startTimerSequence(cd2_seq_data_2); //5
+	START_BG;
+
+	LOAD_NEW_VOICE(cdv_08);
+	WAIT_VOICE; //7
+	START_VOICE; //8
+	START_BG;
+	LOAD_NEW_VOICE(cdv_09);
+	WAIT_VOICE; //8
+	START_VOICE; //9
+	START_BG;
+
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_7, NULL);
+	LOAD_NEW_VOICE(cdv_10);
+
+	WAIT_SEQUENCE; //5
+	WAIT_VOICE; //9
+
+	START_VOICE; //10
+	startTimerSequence(cd2_seq_data_1); //7
+	START_BG;
 	
+	loadFile(cd_11_pal, _tempPal);
+	byte *workScreen2 = (byte *)loadFile(cd_11_log, NULL); //need an extra screen or else the sequence will get messed up
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_11, NULL);
+	LOAD_NEW_VOICE(cdv_11);
+
+	WAIT_VOICE; //10
+	START_VOICE; //11
+	START_BG;
+
+	fn_fade_down(0);
+	COPY_SCREEN;
 	showScreen();
 	paletteFadeUp(_tempPal);
-}
 
+	LOAD_NEW_VOICE(cdv_12);
+	WAIT_SEQUENCE; //7
+	WAIT_VOICE; //11
+	START_VOICE; //12
+	START_BG;
+
+	WAIT_RELATIVE(80);
+	startTimerSequence(cd2_seq_data_2); //11
+
+	LOAD_NEW_VOICE(cdv_13);
+	WAIT_VOICE; //12
+	START_VOICE; //13
+	START_BG;
+
+	free(cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_13, NULL);
+	LOAD_NEW_VOICE(cdv_14);
+
+	LOAD_NEW_BG(59498);
+
+	WAIT_SEQUENCE; //11
+	WAIT_VOICE; //13
+
+	START_VOICE; //14
+	startTimerSequence(cd2_seq_data_1); //13
+	START_BG;
+
+	LOAD_NEW_VOICE(cdv_15);
+	loadFile(cd_15_pal, _tempPal);
+	loadFile(cd_15_log, workScreen2);
+
+	WAIT_SEQUENCE; //13
+	WAIT_VOICE; //14
+
+	START_VOICE; //15
+	START_BG;
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	LOAD_NEW_VOICE(cdv_16);
+	WAIT_VOICE; //15
+	START_VOICE; //16
+	START_BG;
+
+	loadFile(cd_17_log, workScreen2);
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_17, NULL);
+	LOAD_NEW_VOICE(cdv_17);
+
+	WAIT_VOICE; //16
+	START_VOICE; //17
+
+	WAIT_RELATIVE(40);
+	COPY_SCREEN;
+	showScreen();
+
+	LOAD_NEW_VOICE(cdv_18);
+	LOAD_NEW_BG(59497); //Loud heli
+	
+	WAIT_VOICE; //17
+	startTimerSequence(cd2_seq_data_2); //17
+	START_VOICE; //18
+	START_BG;
+
+	LOAD_NEW_VOICE(cdv_19);
+	loadFile(cd_19_pal, _tempPal);
+	loadFile(cd_19_log, workScreen2);
+	START_BG;
+	LOAD_NEW_BG(59496); //loud heli to quiet
+
+	WAIT_SEQUENCE; //17
+	WAIT_VOICE; //18
+
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	START_VOICE; //19
+	START_BG;
+	LOAD_NEW_VOICE(cdv_20);
+	loadFile(cd_20_log, workScreen2);
+	LOAD_NEW_BG(59496); //quiet heli
+
+	WAIT_VOICE; //19
+	START_VOICE; //20
+	START_BG;
+
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	LOAD_NEW_VOICE(cdv_21);
+	loadFile(cd_21_log, workScreen2);
+
+	START_BG;
+	WAIT_SEQUENCE; //19
+	WAIT_VOICE; //20
+	START_VOICE; //21
+	START_BG;
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	LOAD_NEW_VOICE(cdv_22);
+	LOAD_NEW_BG(59494); //heli whine
+
+	WAIT_SEQUENCE; //20
+	WAIT_VOICE; //21
+
+	START_VOICE; //22
+	START_BG;
+	LOAD_NEW_VOICE(cdv_23);
+	WAIT_VOICE; //22
+	START_VOICE; //23
+	fn_fade_down(0);
+
+	loadFile(cd_23_pal, _tempPal);
+	loadFile(cd_24_log, workScreen2);
+	LOAD_NEW_VOICE(cdv_24);
+	WAIT_VOICE; //23
+
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	START_VOICE; //24
+	showScreen();
+	LOAD_NEW_VOICE(cdv_25);
+	WAIT_VOICE; //24
+	START_VOICE; //25
+	LOAD_NEW_VOICE(cdv_26);
+	WAIT_VOICE; //25
+	START_VOICE; //26
+
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_27, NULL);
+	LOAD_NEW_VOICE(cdv_27);
+	loadFile(cd_27_pal, _tempPal);
+	loadFile(cd_27_log, workScreen2);
+	WAIT_VOICE; //26
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();	
+	paletteFadeUp(_tempPal);
+	START_VOICE; //27
+	LOAD_NEW_VOICE(cdv_29);
+	WAIT_VOICE; //27
+	START_VOICE; //29
+	LOAD_NEW_VOICE(cdv_30);
+	WAIT_VOICE; //29
+	START_VOICE; //30
+	LOAD_NEW_VOICE(cdv_31);
+	WAIT_VOICE; //30
+	startTimerSequence(cd2_seq_data_1);
+	START_VOICE; //31
+	LOAD_NEW_VOICE(cdv_32);
+	WAIT_VOICE; //31
+	START_VOICE; //32
+	LOAD_NEW_VOICE(cdv_33);
+	WAIT_VOICE; //32
+	START_VOICE; //33
+	LOAD_NEW_VOICE(cdv_34);
+	WAIT_VOICE; //33
+	START_VOICE; //34
+	LOAD_NEW_VOICE(cdv_35);
+	WAIT_SEQUENCE; //27
+	WAIT_VOICE; //34
+	START_VOICE; //35
+
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_35, NULL);
+	LOAD_NEW_VOICE(cdv_36);
+	loadFile(cd_35_pal, _tempPal);
+	loadFile(cd_35_log, workScreen2);
+	WAIT_VOICE; //35
+	START_VOICE; //36
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	
+	LOAD_NEW_VOICE(cdv_37);
+	WAIT_VOICE; //36
+	startTimerSequence(cd2_seq_data_2);
+	START_VOICE; //37
+
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_37, NULL);
+	LOAD_NEW_VOICE(cdv_38);
+
+	WAIT_SEQUENCE; //35
+	WAIT_VOICE; //37
+	START_VOICE; //38
+	startTimerSequence(cd2_seq_data_1);
+	LOAD_NEW_VOICE(cdv_39);
+	WAIT_SEQUENCE; //37
+	WAIT_VOICE; //38
+	START_VOICE; //39
+
+	LOAD_NEW_VOICE(cdv_40);
+	loadFile(cd_40_pal, _tempPal);
+	loadFile(cd_40_log, workScreen2);
+	WAIT_VOICE; //39
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	START_VOICE; //40
+	LOAD_NEW_VOICE(cdv_41);
+	WAIT_VOICE; //40
+	START_VOICE; //41
+	LOAD_NEW_VOICE(cdv_42);
+	WAIT_VOICE; //41
+	START_VOICE; //42
+	LOAD_NEW_VOICE(cdv_43);
+
+	loadFile(cd_43_pal, _tempPal);
+	loadFile(cd_43_log, workScreen2);
+	WAIT_VOICE; //42
+
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	START_VOICE; //43
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_43, NULL);
+	WAIT_VOICE; //43
+	startTimerSequence(cd2_seq_data_2);
+	LOAD_NEW_VOICE(cdv_45);
+	loadFile(cd_45_pal, _tempPal);
+	loadFile(cd_45_log, workScreen2);
+	WAIT_SEQUENCE; //43
+	START_VOICE; //45
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_45, NULL);
+	LOAD_NEW_VOICE(cdv_46);
+	WAIT_VOICE; //45
+	startTimerSequence(cd2_seq_data_1);
+	START_VOICE; //46
+	LOAD_NEW_VOICE(cdv_47);
+
+	loadFile(cd_47_pal, _tempPal);
+	loadFile(cd_47_log, workScreen2);
+
+	WAIT_SEQUENCE; //45
+	WAIT_VOICE; //46
+
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	START_VOICE; //47
+	LOAD_NEW_VOICE(cdv_48);
+	loadFile(cd_48_pal, _tempPal);
+	loadFile(cd_48_log, workScreen2);
+	WAIT_VOICE; //47
+	START_VOICE; //48
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_48, NULL);
+	LOAD_NEW_VOICE(cdv_49);
+	WAIT_VOICE; //48
+	startTimerSequence(cd2_seq_data_2);
+	START_VOICE; //49
+	LOAD_NEW_VOICE(cdv_50);
+	WAIT_VOICE; //49
+	START_VOICE; //50
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_49, NULL);
+	LOAD_NEW_VOICE(cdv_51);
+	WAIT_SEQUENCE; //48
+	WAIT_VOICE; //50
+	START_VOICE; //51
+	startTimerSequence(cd2_seq_data_1);
+	LOAD_NEW_VOICE(cdv_52);
+	WAIT_VOICE; //51
+	START_VOICE; //52
+	LOAD_NEW_VOICE(cdv_53);
+	WAIT_VOICE; //52
+	START_VOICE; //53
+	LOAD_NEW_VOICE(cdv_54);
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_50, NULL);
+	WAIT_VOICE; //53
+	WAIT_SEQUENCE; //49
+
+	START_VOICE; //54
+	startTimerSequence(cd2_seq_data_2);
+	LOAD_NEW_VOICE(cdv_55);
+	WAIT_SEQUENCE; //50
+	WAIT_VOICE; //54
+	START_VOICE; //55
+
+	loadFile(cd_55_pal, _tempPal);
+	loadFile(cd_55_log, workScreen2);
+	LOAD_NEW_VOICE(cdv_56);
+	WAIT_VOICE; //55
+	START_VOICE; //56
+
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	LOAD_NEW_VOICE(cdv_57);
+	WAIT_VOICE; //56
+	START_VOICE; //57
+
+	LOAD_NEW_VOICE(cdv_58);
+	loadFile(cd_58_pal, _tempPal);
+	loadFile(cd_58_log, workScreen2);
+
+	WAIT_VOICE; //57
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	START_VOICE; //58
+	LOAD_NEW_VOICE(cdv_59);
+	WAIT_VOICE; //48
+	START_VOICE; //59
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_58, NULL);
+	WAIT_VOICE; //59
+	LOAD_NEW_VOICE(cdv_60);
+	START_VOICE; //60
+	LOAD_NEW_VOICE(cdv_61);
+	WAIT_VOICE; //60
+	START_VOICE; //61
+	LOAD_NEW_VOICE(cdv_62);
+	WAIT_VOICE; //61
+	START_VOICE; //62
+	startTimerSequence(cd2_seq_data_1); //58
+	LOAD_NEW_VOICE(cdv_63);
+	WAIT_VOICE; //62
+	START_VOICE; //63
+	LOAD_NEW_VOICE(cdv_64);
+	WAIT_VOICE; //63
+	START_VOICE; //64
+	LOAD_NEW_VOICE(cdv_65);
+	WAIT_SEQUENCE; //58
+	WAIT_VOICE; //64
+	START_VOICE; //65
+	fn_fade_down(0);
+	LOAD_NEW_VOICE(cdv_66);
+	loadFile(cd_66_pal, _tempPal);
+	loadFile(cd_66_log, _workScreen);
+	WAIT_VOICE; //65
+	showScreen();
+	paletteFadeUp(_tempPal);
+	START_VOICE; //66
+	LOAD_NEW_VOICE(cdv_67);
+	WAIT_VOICE; //66
+	START_VOICE; //67
+	loadFile(cd_67_pal, _tempPal);
+	loadFile(cd_67_log, workScreen2);
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	LOAD_NEW_VOICE(cdv_68);
+	WAIT_VOICE; //67
+	START_VOICE; //68
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_69, NULL);
+	LOAD_NEW_VOICE(cdv_69);
+	loadFile(cd_69_pal, _tempPal);
+	loadFile(cd_69_log, workScreen2);
+	WAIT_VOICE; //68
+	START_VOICE; //69
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	LOAD_NEW_VOICE(cdv_70);
+	WAIT_VOICE; //69
+	startTimerSequence(cd2_seq_data_2);
+	START_VOICE; //70
+	LOAD_NEW_VOICE(cdv_71);
+	WAIT_VOICE; //70
+	fn_fade_down(0);
+	START_VOICE; //71
+	loadFile(cd_72_pal, _tempPal);
+	loadFile(cd_72_log, _workScreen);
+	WAIT_VOICE; //71
+	showScreen();
+	paletteFadeUp(_tempPal);
+	LOAD_NEW_VOICE(cdv_72);
+	START_VOICE; //72
+
+	loadFile(cd_73_pal, _tempPal);
+	loadFile(cd_73_log, _workScreen);
+	LOAD_NEW_VOICE(cdv_73);
+	WAIT_VOICE; //72
+	fn_fade_down(0);
+	showScreen();
+	paletteFadeUp(_tempPal);
+	START_VOICE; //73
+	LOAD_NEW_VOICE(cdv_74);
+	WAIT_VOICE; //73
+	START_VOICE; //74
+	LOAD_NEW_VOICE(cdv_75);
+	WAIT_VOICE; //74
+	START_VOICE; //75
+	loadFile(cd_76_pal, _tempPal);
+	free (workScreen2);
+	workScreen2 = (byte *)loadFile(cd_76_log, NULL);
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+
+	LOAD_NEW_VOICE(cdv_76);
+	WAIT_VOICE; //75
+	START_VOICE; //76
+	LOAD_NEW_VOICE(cdv_77);
+	WAIT_VOICE; //76
+	START_VOICE; //77
+
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_100, NULL);
+	loadFile(cd_78_pal, _tempPal);
+	free (workScreen2);
+	workScreen2 = (byte *)loadFile(cd_78_log, NULL);
+	LOAD_NEW_VOICE(cdv_78);
+	WAIT_VOICE; //77
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();	
+	paletteFadeUp(_tempPal);
+	START_VOICE; //78
+	LOAD_NEW_VOICE(cdv_79);
+	WAIT_VOICE; //78
+	START_VOICE; //79
+	LOAD_NEW_VOICE(cdv_80);
+	WAIT_VOICE; //79
+	START_VOICE; //80
+	startTimerSequence(cd2_seq_data_1);
+	LOAD_NEW_VOICE(cdv_81);
+	WAIT_VOICE; //80
+	START_VOICE; //81
+	LOAD_NEW_VOICE(cdv_82);
+	WAIT_VOICE; //81
+	START_VOICE; //82
+	LOAD_NEW_VOICE(cdv_83);
+	WAIT_VOICE; //82
+	loadFile(cd_101_log, workScreen2);
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_101, NULL);
+	WAIT_SEQUENCE; //100
+	COPY_SCREEN;
+	showScreen();
+	startTimerSequence(cd2_seq_data_2);
+	START_VOICE; //83
+	LOAD_NEW_VOICE(cdv_84);
+	WAIT_VOICE; //83
+	START_VOICE; //84
+	LOAD_NEW_VOICE(cdv_85);
+	WAIT_VOICE; //84
+	START_VOICE; //85
+	LOAD_NEW_VOICE(cdv_86);
+	WAIT_VOICE; //85
+
+	free (workScreen2);
+	workScreen2 = (byte *)loadFile(cd_102_log, NULL);
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_102, NULL);
+	WAIT_SEQUENCE; //101
+	COPY_SCREEN;
+	showScreen();
+	startTimerSequence(cd2_seq_data_1);
+	START_VOICE; //86
+	LOAD_NEW_VOICE(cdv_87);
+	loadFile(cd_103_pal, _tempPal);
+	free (workScreen2);
+	workScreen2 = (byte *)loadFile(cd_103_log, NULL);
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_103, NULL);
+	WAIT_SEQUENCE; //102
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	startTimerSequence(cd2_seq_data_2);
+	WAIT_VOICE; //86
+	START_VOICE; //87
+	loadFile(cd_104_pal, _tempPal);
+	free (workScreen2);
+	workScreen2 = (byte *)loadFile(cd_104_log, NULL);
+	free (cd2_seq_data_1);
+	cd2_seq_data_1 = (byte *)loadFile(cd_104, NULL);
+	WAIT_SEQUENCE; //103
+
+	//fn_start_music(2);
+	fn_fade_down(0);
+	COPY_SCREEN;
+	showScreen();
+	paletteFadeUp(_tempPal);
+	startTimerSequence(cd2_seq_data_1);
+	free (cd2_seq_data_2);
+	cd2_seq_data_2 = (byte *)loadFile(cd_105, NULL);
+	WAIT_SEQUENCE; //104
+	startTimerSequence(cd2_seq_data_2);
+	WAIT_SEQUENCE; //105
+	
+	free (cd2_seq_data_1);
+	free (cd2_seq_data_2);
+	free (workScreen2);
+}
 

Index: disk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/disk.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- disk.cpp	11 Mar 2003 07:19:16 -0000	1.13
+++ disk.cpp	11 Mar 2003 18:32:55 -0000	1.14
@@ -87,7 +87,7 @@
 	#endif
 
 	compFile = fileNr;
-	debug(1, "load file %d,%d (%d)", (fileNr >> 11), (fileNr & 2047), fileNr); 
+	debug(2, "load file %d,%d (%d)", (fileNr >> 11), (fileNr & 2047), fileNr); 
 
 	filePtr = (uint8 *)getFileInfo(fileNr);
 	if (filePtr == NULL) {
@@ -131,11 +131,11 @@
 	//if cflag == 0 then file is compressed, 1 == uncompressed
 
 	if (!cflag) {
-		debug(1, "File is compressed...");
+		debug(2, "File is compressed...");
 
 		memcpy(&fileHeader, fileDest, sizeof(struct dataFileHeader));
 		if ( (uint8)((FROM_LE_16(fileHeader.flag) >> 7) & 0x1)	 ) {
-			debug(1, "with RNC!");
+			debug(2, "with RNC!");
 
 			decompSize = (FROM_LE_16(fileHeader.flag) & 0xFFFFFF00) << 8;
 			decompSize |= FROM_LE_16((uint16)fileHeader.s_tot_size);
@@ -157,7 +157,7 @@
 			RncDecoder rncDecoder;
 			int32 unPackLen = rncDecoder.unpackM1(inputPtr, outputPtr, 0);
 
-			debug(2, "UnpackM1 returned: %d", unPackLen);
+			debug(3, "UnpackM1 returned: %d", unPackLen);
 
 			if (unPackLen == 0) { //Unpack returned 0: file was probably not packed.
 				if (fixedDest == NULL)
@@ -180,7 +180,7 @@
 				free(fileDest);
 
 		} else
-			debug(1, "but not with RNC! (?!)");
+			debug(2, "but not with RNC! (?!)");
 	} else
 		return (uint16 *)fileDest;
 
@@ -194,7 +194,7 @@
 
 	for (i = 0; i < dinnerTableEntries; i++) {
 		if (READ_LE_UINT16(dnrTbl16Ptr + (i * 4)) == fileNr) {
-			debug(1, "file %d found!", fileNr);
+			debug(2, "file %d found!", fileNr);
 			return (dnrTbl16Ptr + (i * 4));
 		}
 	}

Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/module.mk,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- module.mk	8 Mar 2003 12:46:51 -0000	1.3
+++ module.mk	11 Mar 2003 18:32:56 -0000	1.4
@@ -4,6 +4,7 @@
 	sky/sky.o \
 	sky/disk.o \
 	sky/screen.o \
+	sky/timer.o \
 	sky/intro.o \
 	sky/cd_intro.o \
 	sky/rnc_deco.o \

Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- sky.cpp	9 Mar 2003 00:50:02 -0000	1.8
+++ sky.cpp	11 Mar 2003 18:32:57 -0000	1.9
@@ -94,7 +94,7 @@
 void SkyState::initialise(void) {
 
 	//initialise_memory();
-	//init_timer();
+	initTimer();
 	//init_music(); 
 
 	_sound = new SkySound(_mixer);

Index: sky.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- sky.h	11 Mar 2003 07:18:49 -0000	1.8
+++ sky.h	11 Mar 2003 18:32:57 -0000	1.9
@@ -25,6 +25,7 @@
 #include <stdio.h>
 #include "common/engine.h"
 #include "common/util.h"
+#include "common/timer.h"
 #include "sound/mixer.h"
 #include "sky/sound.h"
 
@@ -36,6 +37,10 @@
 	bool _isDemo;
 	byte _key_pressed;
 
+	uint32 _tseqFrames;
+	byte *_tseqData;
+	uint32 _tseqCounter;
+	
 	uint16 _debugMode;
 	uint16 _debugLevel;
 	uint16 _language;
@@ -50,7 +55,8 @@
 
 	uint32 _lastLoadedFileSize;
 	
-//	int _timer_id;
+	Timer *_timer;
+	//int _timer_id;
 
 	FILE *_dump_file;
 
@@ -81,6 +87,7 @@
 	void convertPalette(uint8 *inpal, uint8* outpal);
 
 	void initialise();
+	void initTimer();
 	void initialiseDisk();
 	void initialiseScreen();
 	void initialiseGrids();
@@ -96,7 +103,10 @@
 	void intro();
 	void doCDIntro();
 	void showScreen();
-
+	void startTimerSequence(byte *sequence);
+	static void timerHandler(void *ptr);
+	void doTimerSequence();
+	
 	static int CDECL game_thread_proc(void *param);
 
 	void shutdown();

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sound.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- sound.cpp	8 Mar 2003 12:46:51 -0000	1.1
+++ sound.cpp	11 Mar 2003 18:32:57 -0000	1.2
@@ -27,17 +27,30 @@
 
 SkySound::SkySound(SoundMixer *mixer) {
 	_mixer = mixer;
+	_voiceHandle = 0;
+	_effectHandle = 0;
+	_bgSoundHandle = 0;
 }
 
 int SkySound::playVoice(byte *sound, uint32 size) {
 
+	return playSound(sound, size, &_voiceHandle);
+}
+
+
+int SkySound::playBgSound(byte *sound, uint32 size) {
+
+	size -= 512; //Hack to get rid of the annoying pop at the end of some bg sounds 
+	return playSound(sound, size, &_bgSoundHandle);
+}
+
+int SkySound::playSound(byte *sound, uint32 size, PlayingSoundHandle *handle) {
+
 	byte flags = 0;
 	flags |= SoundMixer::FLAG_UNSIGNED|SoundMixer::FLAG_AUTOFREE;
 	size -= sizeof(struct dataFileHeader);
 	byte *buffer = (byte *)malloc(size); 
 	memcpy(buffer, sound+sizeof(struct dataFileHeader), size);	
 	
-	return _mixer->playRaw(NULL, buffer, size, 11025, flags);
-
+	return _mixer->playRaw(handle, buffer, size, 11025, flags);
 }
-

Index: sound.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sound.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- sound.h	8 Mar 2003 12:46:51 -0000	1.1
+++ sound.h	11 Mar 2003 18:32:57 -0000	1.2
@@ -25,19 +25,21 @@
 class SkySound {
 protected:
 
-	bool _voiceIsPlaying;
-
 public:
 
 	SoundMixer *_mixer;
-
+	PlayingSoundHandle _voiceHandle;
+	PlayingSoundHandle _effectHandle;
+	PlayingSoundHandle _bgSoundHandle;
 
 protected:
 
+	int playSound(byte *sound, uint32 size, PlayingSoundHandle *handle);
 
 public:
 	SkySound(SoundMixer *mixer);
 	int playVoice(byte *sound, uint32 size);
+	int playBgSound(byte *sound, uint32 size);
 
 };
 





More information about the Scummvm-git-logs mailing list