diff options
| author | Colin Snover | 2016-09-14 14:00:12 -0500 | 
|---|---|---|
| committer | Colin Snover | 2016-09-29 19:39:16 -0500 | 
| commit | b5d0fffb8b111c5d8154a37ba9a0d7b18866c7dd (patch) | |
| tree | 12bba6c41bc031c570c2777ad6c1c0c0f7d4b688 | |
| parent | a96dc1a7b879994ab5111ed223e9831ea81054b9 (diff) | |
| download | scummvm-rg350-b5d0fffb8b111c5d8154a37ba9a0d7b18866c7dd.tar.gz scummvm-rg350-b5d0fffb8b111c5d8154a37ba9a0d7b18866c7dd.tar.bz2 scummvm-rg350-b5d0fffb8b111c5d8154a37ba9a0d7b18866c7dd.zip | |
SCI: Replace magic numbers for globals with named constants
| -rw-r--r-- | engines/sci/engine/kscripts.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/engine/state.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/engine/vm.cpp | 6 | ||||
| -rw-r--r-- | engines/sci/engine/vm.h | 15 | ||||
| -rw-r--r-- | engines/sci/graphics/animate.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/graphics/frameout.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/sci.cpp | 10 | 
7 files changed, 31 insertions, 16 deletions
| diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index 6fd130bceb..749af67580 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -238,8 +238,8 @@ reg_t kScriptID(EngineState *s, int argc, reg_t *argv) {  	// initialized to 0, whereas it's 6 in other versions. Thus, we assign it  	// to 6 here, fixing the speed of the introduction. Refer to bug #3102071.  	if (g_sci->getGameId() == GID_PQ2 && script == 200 && -		s->variables[VAR_GLOBAL][3].isNull()) { -		s->variables[VAR_GLOBAL][3] = make_reg(0, 6); +		s->variables[VAR_GLOBAL][kSpeed].isNull()) { +		s->variables[VAR_GLOBAL][kSpeed] = make_reg(0, 6);  	}  	return make_reg(scriptSeg, address); diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp index d253d316ca..5d4eba7c95 100644 --- a/engines/sci/engine/state.cpp +++ b/engines/sci/engine/state.cpp @@ -159,11 +159,11 @@ void EngineState::initGlobals() {  }  uint16 EngineState::currentRoomNumber() const { -	return variables[VAR_GLOBAL][13].toUint16(); +	return variables[VAR_GLOBAL][kNewRoomNo].toUint16();  }  void EngineState::setRoomNumber(uint16 roomNumber) { -	variables[VAR_GLOBAL][13] = make_reg(0, roomNumber); +	variables[VAR_GLOBAL][kNewRoomNo] = make_reg(0, roomNumber);  }  void EngineState::shrinkStackToBase() { diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 72e340dd5c..7c7f75c180 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -179,7 +179,7 @@ static void write_var(EngineState *s, int type, int index, reg_t value) {  		// stopGroop object, which points to ego, to the new ego object. If this is not  		// done, ego's movement will not be updated properly, so the result is  		// unpredictable (for example in LSL5, Patti spins around instead of walking). -		if (index == 0 && type == VAR_GLOBAL && getSciVersion() > SCI_VERSION_0_EARLY) {	// global 0 is ego +		if (index == kEgo && type == VAR_GLOBAL && getSciVersion() > SCI_VERSION_0_EARLY) {  			reg_t stopGroopPos = s->_segMan->findObjectByName("stopGroop");  			if (!stopGroopPos.isNull()) {	// does the game have a stopGroop object?  				// Find the "client" member variable of the stopGroop object, and update it @@ -200,9 +200,9 @@ static void write_var(EngineState *s, int type, int index, reg_t value) {  		s->variables[type][index] = value; -		if (type == VAR_GLOBAL && index == 90) { +		if (type == VAR_GLOBAL && index == kMessageType) {  			// The game is trying to change its speech/subtitle settings -			if (!g_sci->getEngineState()->_syncedAudioOptions || s->variables[VAR_GLOBAL][4] == TRUE_REG) { +			if (!g_sci->getEngineState()->_syncedAudioOptions || s->variables[VAR_GLOBAL][kQuit] == TRUE_REG) {  				// ScummVM audio options haven't been applied yet, so apply them.  				// We also force the ScummVM audio options when loading a game from  				// the launcher. diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index c41060dc32..e127706d58 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -136,6 +136,21 @@ enum {  	VAR_PARAM = 3  }; +enum GlobalVar { +	kEgo            = 0, +	kGame           = 1, +	kCurrentRoom    = 2, +	kSpeed          = 3,  // SCI16 +	kDefaultPlane   = 3,  // SCI32 +	kQuit           = 4, +	kPlanes         = 10, // SCI32 +	kCurrentRoomNo  = 11, +	kPreviousRoomNo = 12, +	kNewRoomNo      = 13, +	kFastCast       = 84, // SCI16 +	kMessageType    = 90 +}; +  /** Number of kernel calls in between gcs; should be < 50000 */  enum {  	GC_INTERVAL = 0x8000 diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp index 98278397b7..e593484d8b 100644 --- a/engines/sci/graphics/animate.cpp +++ b/engines/sci/graphics/animate.cpp @@ -145,7 +145,7 @@ bool GfxAnimate::invoke(List *list, int argc, reg_t *argv) {  		if (_fastCastEnabled) {  			// Check if the game has a fastCast object set  			//  if we don't abort kAnimate processing, at least in kq5 there will be animation cels drawn into speech boxes. -			if (!_s->variables[VAR_GLOBAL][84].isNull()) { +			if (!_s->variables[VAR_GLOBAL][kFastCast].isNull()) {  				// This normally points to an object called "fastCast",  				// but for example in Eco Quest 1 it may also point to an object called "EventHandler" (see bug #5170)  				// Original SCI only checked, if this global was not 0. @@ -338,7 +338,7 @@ void GfxAnimate::applyGlobalScaling(AnimateList::iterator entry, GfxView *view)  	int16 maxScale = readSelectorValue(_s->_segMan, entry->object, SELECTOR(maxScale));  	int16 celHeight = view->getHeight(entry->loopNo, entry->celNo);  	int16 maxCelHeight = (maxScale * celHeight) >> 7; -	reg_t globalVar2 = _s->variables[VAR_GLOBAL][2]; // current room object +	reg_t globalVar2 = _s->variables[VAR_GLOBAL][kCurrentRoom]; // current room object  	int16 vanishingY = readSelectorValue(_s->_segMan, globalVar2, SELECTOR(vanishingY));  	int16 fixedPortY = _ports->getPort()->rect.bottom - vanishingY; diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 7d38d01f02..7410bdabac 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -141,7 +141,7 @@ void GfxFrameout::syncWithScripts(bool addElements) {  		return;  	// Get planes list object -	reg_t planesListObject = engineState->variables[VAR_GLOBAL][10]; +	reg_t planesListObject = engineState->variables[VAR_GLOBAL][kPlanes];  	reg_t planesListElements = readSelector(segMan, planesListObject, SELECTOR(elements));  	List *planesList = segMan->lookupList(planesListElements); @@ -565,7 +565,7 @@ void GfxFrameout::palMorphFrameOut(const int8 *styleRanges, PlaneShowStyle *show  	Palette sourcePalette(_palette->getNextPalette());  	alterVmap(sourcePalette, sourcePalette, -1, styleRanges); -	int16 prevRoom = g_sci->getEngineState()->variables[VAR_GLOBAL][12].toSint16(); +	int16 prevRoom = g_sci->getEngineState()->variables[VAR_GLOBAL][kPreviousRoomNo].toSint16();  	Common::Rect rect(_currentBuffer.screenWidth, _currentBuffer.screenHeight);  	_showList.add(rect); diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index eb314a9208..bdfb6ccc9c 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -1088,9 +1088,9 @@ void SciEngine::syncIngameAudioOptions() {  		if (useGlobal90) {  			if (subtitlesOn && !speechOn) { -				_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 1);	// subtitles +				_gamestate->variables[VAR_GLOBAL][kMessageType] = make_reg(0, 1);	// subtitles  			} else if (!subtitlesOn && speechOn) { -				_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 2);	// speech +				_gamestate->variables[VAR_GLOBAL][kMessageType] = make_reg(0, 2);	// speech  			} else if (subtitlesOn && speechOn) {  				// Is it a game that supports simultaneous speech and subtitles?  				switch (_gameId) { @@ -1111,11 +1111,11 @@ void SciEngine::syncIngameAudioOptions() {  				// Phantasmagoria does not support simultaneous speech + subtitles  				// Mixed Up Mother Goose Deluxe does not support simultaneous speech + subtitles  #endif // ENABLE_SCI32 -					_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 3);	// speech + subtitles +					_gamestate->variables[VAR_GLOBAL][kMessageType] = make_reg(0, 3);	// speech + subtitles  					break;  				default:  					// Game does not support speech and subtitles, set it to speech -					_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 2);	// speech +					_gamestate->variables[VAR_GLOBAL][kMessageType] = make_reg(0, 2);	// speech  				}  			}  		} @@ -1126,7 +1126,7 @@ void SciEngine::updateScummVMAudioOptions() {  	// Update ScummVM's speech/subtitles settings for SCI1.1 CD games,  	// depending on the in-game settings  	if (isCD() && getSciVersion() == SCI_VERSION_1_1) { -		uint16 ingameSetting = _gamestate->variables[VAR_GLOBAL][90].getOffset(); +		uint16 ingameSetting = _gamestate->variables[VAR_GLOBAL][kMessageType].getOffset();  		switch (ingameSetting) {  		case 1: | 
