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/tsage | |
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/tsage')
-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); |