diff options
| author | strangerke | 2011-04-13 07:42:58 +0200 | 
|---|---|---|
| committer | strangerke | 2011-04-13 07:42:58 +0200 | 
| commit | a2d1fdd3655a27e23a3df0bb68f32d27cd4b3319 (patch) | |
| tree | 94c8b83ec8393efd1f9f98e8649fba0304ee8c7d /engines | |
| parent | c1e58c1415f75e90fd5ff5041541a801f33e2180 (diff) | |
| download | scummvm-rg350-a2d1fdd3655a27e23a3df0bb68f32d27cd4b3319.tar.gz scummvm-rg350-a2d1fdd3655a27e23a3df0bb68f32d27cd4b3319.tar.bz2 scummvm-rg350-a2d1fdd3655a27e23a3df0bb68f32d27cd4b3319.zip  | |
TSAGE: Fix a crash using the new palette effect. It still doesn't show much...
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/tsage/core.cpp | 17 | ||||
| -rw-r--r-- | engines/tsage/core.h | 2 | ||||
| -rw-r--r-- | engines/tsage/ringworld_scenes10.cpp | 22 | 
3 files changed, 22 insertions, 19 deletions
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index d6f4ab8078..5ccb48f05b 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1203,12 +1203,15 @@ void PaletteUnknown::signal() {  }  void PaletteUnknown::remove() { -	for (int i = 0; i < 256; i++) -		_scenePalette->_palette[i] = _palette[i]; -	_scenePalette->refresh(); -	if (_scenePalette->_listeners.contains(this)) -		_scenePalette->_listeners.remove(this); -	delete this; +	if (_scenePalette) { +		for (int i = 0; i < 256; i++) +			_scenePalette->_palette[i] = _palette[i]; +		_scenePalette->refresh(); +		if (_scenePalette->_listeners.contains(this)) +			_scenePalette->_listeners.remove(this); +		delete this; +	} +  	if (_action)  		_action->signal();  } @@ -1356,7 +1359,7 @@ PaletteRotation *ScenePalette::addRotation(int start, int end, int rotationMode,  	return obj;  } -PaletteUnknown *ScenePalette::addUnkPal(byte *arrBufferRGB, int unkNumb, bool disabled, Action *action) { +PaletteUnknown *ScenePalette::addUnkPal(uint32 *arrBufferRGB, int unkNumb, bool disabled, Action *action) {  	PaletteUnknown *paletteUnk = new PaletteUnknown();  	paletteUnk->_action = action;  	for (int i = 0; i < 256; i++) { diff --git a/engines/tsage/core.h b/engines/tsage/core.h index 78f5fcf276..5e3da6a170 100644 --- a/engines/tsage/core.h +++ b/engines/tsage/core.h @@ -385,7 +385,7 @@ public:  	void clearListeners();  	void fade(const byte *adjustData, bool fullAdjust, int percent);  	PaletteRotation *addRotation(int start, int end, int rotationMode, int duration = 0, Action *action = NULL); -	PaletteUnknown *addUnkPal(byte *arrBufferRGB, int unkNumb, bool disabled, Action *action); +	PaletteUnknown *addUnkPal(uint32 *arrBufferRGB, int unkNumb, bool disabled, Action *action);  	static void changeBackground(const Rect &bounds, FadeMode fadeMode); diff --git a/engines/tsage/ringworld_scenes10.cpp b/engines/tsage/ringworld_scenes10.cpp index ae1e290189..5ea5077b74 100644 --- a/engines/tsage/ringworld_scenes10.cpp +++ b/engines/tsage/ringworld_scenes10.cpp @@ -1633,8 +1633,8 @@ void Scene9850::postInit(SceneObjectList *OwnerList) {   *   *--------------------------------------------------------------------------*/  void Scene9900::strAction1::signal() { -	static byte mask1[3]= {0xFF, 0xFF, 0xFF}; -	static byte mask2[3]= {0x00, 0x00, 0x00}; +	static uint32 mask1 = 0xFFFFFF00; +	static uint32 mask2 = 0x00000000;  	Scene9900 *scene = (Scene9900 *)_globals->_sceneManager._scene; @@ -1652,18 +1652,18 @@ void Scene9900::strAction1::signal() {  		break;  	case 1:  		_palette1.getPalette(); -		_globals->_scenePalette.addUnkPal(mask1, 1, true /*10*/, this); +		_globals->_scenePalette.addUnkPal(&mask1, 1, true /*10*/, this);  		break;  	case 2:  		_object9.remove(); -		_globals->_scenePalette.addUnkPal(mask2, 1, true /*5*/, this); +		_globals->_scenePalette.addUnkPal(&mask2, 1, true /*5*/, this);  		break;  	case 3:  		_globals->_soundHandler.startSound(377, 0, 127);  		setDelay(120);  		break;  	case 4: -		_globals->_scenePalette.addUnkPal((byte *)_palette1._palette, 256, 1, this); +		_globals->_scenePalette.addUnkPal(_palette1._palette, 256, 1, this);  		break;  	case 5:  		remove(); @@ -1769,25 +1769,25 @@ void Scene9900::strAction2::dispatch() {  }  void Scene9900::strAction3::signal() { -	static byte mask3[3]= {0xFF, 0x00, 0x00}; -	static byte mask4[3]= {0x00, 0x00, 0x00}; +	static uint32 mask3 = 0xFF000000; +	static uint32 mask4 = 0x00000000;  	switch (_actionIndex++) {  	case 0:  		_palette2.getPalette();  		_palette3.loadPalette(2003); -		_globals->_scenePalette.addUnkPal((byte *)_palette3._palette, 256, true /*5*/, this); +		_globals->_scenePalette.addUnkPal(_palette3._palette, 256, true /*5*/, this);  		break;  	case 1: -		_globals->_scenePalette.addUnkPal(mask3, 1, true /*10*/, this); +		_globals->_scenePalette.addUnkPal(&mask3, 1, true /*10*/, this);  		break;  	case 2: -		_globals->_scenePalette.addUnkPal(mask4, 1, true /*1*/, this); +		_globals->_scenePalette.addUnkPal(&mask4, 1, true /*1*/, this);  		break;  	case 3:  		_palette2.loadPalette(17);  		_globals->_sceneManager._scene->loadScene(17); -		_globals->_scenePalette.addUnkPal((byte *)_palette2._palette, 256, true /*5*/, this); +		_globals->_scenePalette.addUnkPal(_palette2._palette, 256, true /*5*/, this);  		break;  	case 4:  		_globals->_game.endGame(9900, 61);  | 
