aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/kyra/kyra_lok.h63
-rw-r--r--engines/kyra/scene_lok.cpp60
-rw-r--r--engines/kyra/script_lok.cpp61
3 files changed, 95 insertions, 89 deletions
diff --git a/engines/kyra/kyra_lok.h b/engines/kyra/kyra_lok.h
index b7fd56010f..e22cc0d997 100644
--- a/engines/kyra/kyra_lok.h
+++ b/engines/kyra/kyra_lok.h
@@ -522,35 +522,35 @@ protected:
const uint8 *_seq_Demo4;
const uint8 *_seq_Reunion;
- const char * const*_seq_WSATable;
- const char * const*_seq_CPSTable;
- const char * const*_seq_COLTable;
- const char * const*_seq_textsTable;
+ const char * const *_seq_WSATable;
+ const char * const *_seq_CPSTable;
+ const char * const *_seq_COLTable;
+ const char * const *_seq_textsTable;
int _seq_WSATable_Size;
int _seq_CPSTable_Size;
int _seq_COLTable_Size;
int _seq_textsTable_Size;
- const char * const*_itemList;
- const char * const*_takenList;
- const char * const*_placedList;
- const char * const*_droppedList;
- const char * const*_noDropList;
- const char * const*_putDownFirst;
- const char * const*_waitForAmulet;
- const char * const*_blackJewel;
- const char * const*_poisonGone;
- const char * const*_healingTip;
- const char * const*_thePoison;
- const char * const*_fluteString;
- const char * const*_wispJewelStrings;
- const char * const*_magicJewelString;
- const char * const*_flaskFull;
- const char * const*_fullFlask;
- const char * const*_veryClever;
- const char * const*_homeString;
- const char * const*_newGameString;
+ const char * const *_itemList;
+ const char * const *_takenList;
+ const char * const *_placedList;
+ const char * const *_droppedList;
+ const char * const *_noDropList;
+ const char * const *_putDownFirst;
+ const char * const *_waitForAmulet;
+ const char * const *_blackJewel;
+ const char * const *_poisonGone;
+ const char * const *_healingTip;
+ const char * const *_thePoison;
+ const char * const *_fluteString;
+ const char * const *_wispJewelStrings;
+ const char * const *_magicJewelString;
+ const char * const *_flaskFull;
+ const char * const *_fullFlask;
+ const char * const *_veryClever;
+ const char * const *_homeString;
+ const char * const *_newGameString;
int _itemList_Size;
int _takenList_Size;
@@ -572,13 +572,13 @@ protected:
int _homeString_Size;
int _newGameString_Size;
- const char * const*_characterImageTable;
+ const char * const *_characterImageTable;
int _characterImageTableSize;
- const char * const*_guiStrings;
+ const char * const *_guiStrings;
int _guiStringsSize;
- const char * const*_configStrings;
+ const char * const *_configStrings;
int _configStringsSize;
Shape *_defaultShapeTable;
@@ -616,16 +616,16 @@ protected:
Room *_roomTable;
int _roomTableSize;
- const char * const*_roomFilenameTable;
+ const char * const *_roomFilenameTable;
int _roomFilenameTableSize;
const uint8 *_amuleteAnim;
- const uint8 * const*_specialPalettes;
+ const uint8 * const *_specialPalettes;
- const char *const *_soundFiles;
+ const char * const *_soundFiles;
int _soundFilesSize;
- const char *const *_soundFilesIntro;
+ const char * const *_soundFilesIntro;
int _soundFilesIntroSize;
const int32 *_cdaTrackTable;
int _cdaTrackTableSize;
@@ -648,6 +648,9 @@ protected:
static const uint16 _amuletY[];
static const uint16 _amuletX2[];
static const uint16 _amuletY2[];
+
+ // special palette handling for AMIGA
+ void setupZanthiaPalette(int pal);
protected:
void setupOpcodeTable();
diff --git a/engines/kyra/scene_lok.cpp b/engines/kyra/scene_lok.cpp
index fc1ca41189..04da69df6c 100644
--- a/engines/kyra/scene_lok.cpp
+++ b/engines/kyra/scene_lok.cpp
@@ -1203,6 +1203,66 @@ bool KyraEngine_LoK::lineIsPassable(int x, int y) {
#pragma mark -
+void KyraEngine_LoK::setupZanthiaPalette(int pal) {
+ uint8 r, g, b;
+
+ switch (pal - 17) {
+ case 0:
+ // 0x88F
+ r = 33;
+ g = 33;
+ b = 63;
+ break;
+
+ case 1:
+ // 0x00F
+ r = 0;
+ g = 0;
+ b = 63;
+ break;
+
+ case 2:
+ // 0xF88
+ r = 63;
+ g = 33;
+ b = 33;
+ break;
+
+ case 3:
+ // 0xF00
+ r = 63;
+ g = 0;
+ b = 0;
+ break;
+
+ case 4:
+ // 0xFF9
+ r = 63;
+ g = 63;
+ b = 37;
+ break;
+
+ case 5:
+ // 0xFF1
+ r = 63;
+ g = 63;
+ b = 4;
+ break;
+
+ default:
+ // 0xFFF
+ r = 63;
+ g = 63;
+ b = 63;
+ }
+
+ _screen->getPalette(4)[12 * 3 + 0] = r;
+ _screen->getPalette(4)[12 * 3 + 1] = g;
+ _screen->getPalette(4)[12 * 3 + 2] = b;
+}
+
+#pragma mark -
+
void KyraEngine_LoK::setupSceneResource(int sceneId) {
if (!_flags.isTalkie)
return;
diff --git a/engines/kyra/script_lok.cpp b/engines/kyra/script_lok.cpp
index 6dcb636ceb..fb977625c2 100644
--- a/engines/kyra/script_lok.cpp
+++ b/engines/kyra/script_lok.cpp
@@ -231,12 +231,11 @@ int KyraEngine_LoK::o1_fadeSpecialPalette(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_LoK::o1_fadeSpecialPalette(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
if (_currentCharacter->sceneId != 45) {
if (stackPos(0) == 13) {
- // TODO: Check this!
_screen->copyPalette(0, 12);
_screen->setScreenPalette(_screen->getPalette(0));
}
} else {
- warning("KyraEngine_LoK::o1_fadeSpecialPalette not implemented");
+ setupZanthiaPalette(stackPos(0));
}
} else {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_LoK::o1_fadeSpecialPalette(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
@@ -581,63 +580,7 @@ int KyraEngine_LoK::o1_setCustomPaletteRange(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_LoK::o1_setCustomPaletteRange(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
if (_flags.platform == Common::kPlatformAmiga) {
if (_currentCharacter->sceneId == 45) {
- const int palette = stackPos(0) - 17;
-
- uint8 r, g, b;
-
- switch (palette) {
- case 0:
- // 0x88F
- r = 33;
- g = 33;
- b = 63;
- break;
-
- case 1:
- // 0x00F
- r = 0;
- g = 0;
- b = 63;
- break;
-
- case 2:
- // 0xF88
- r = 63;
- g = 33;
- b = 33;
- break;
-
- case 3:
- // 0xF00
- r = 63;
- g = 0;
- b = 0;
- break;
-
- case 4:
- // 0xFF9
- r = 63;
- g = 63;
- b = 37;
- break;
-
- case 5:
- // 0xFF1
- r = 63;
- g = 63;
- b = 4;
- break;
-
- default:
- // 0xFFF
- r = 63;
- g = 63;
- b = 63;
- }
-
- _screen->getPalette(4)[12 * 3 + 0] = r;
- _screen->getPalette(4)[12 * 3 + 1] = g;
- _screen->getPalette(4)[12 * 3 + 2] = b;
+ setupZanthiaPalette(stackPos(0));
} else if (stackPos(0) == 29) {
_screen->copyPalette(0, 11);
} else if (stackPos(0) == 13) {