aboutsummaryrefslogtreecommitdiff
path: root/engines/igor/parts
diff options
context:
space:
mode:
authorGregory Montoir2007-11-18 06:25:23 +0000
committerGregory Montoir2007-11-18 06:25:23 +0000
commit0867e09a8129775de703516ca37108237b5d5c77 (patch)
tree34c092df2fb0db11eed2d478e7c84f880bb75a7a /engines/igor/parts
parentc0cebe93bb189d0aa94ceb9fc9eca26a8b2242e4 (diff)
downloadscummvm-rg350-0867e09a8129775de703516ca37108237b5d5c77.tar.gz
scummvm-rg350-0867e09a8129775de703516ca37108237b5d5c77.tar.bz2
scummvm-rg350-0867e09a8129775de703516ca37108237b5d5c77.zip
- added CTMF music support
- fixed dialogue in PART12 svn-id: r29552
Diffstat (limited to 'engines/igor/parts')
-rw-r--r--engines/igor/parts/part_12.cpp9
-rw-r--r--engines/igor/parts/part_13.cpp1
-rw-r--r--engines/igor/parts/part_14.cpp1
-rw-r--r--engines/igor/parts/part_16.cpp1
-rw-r--r--engines/igor/parts/part_17.cpp1
-rw-r--r--engines/igor/parts/part_95.cpp102
-rw-r--r--engines/igor/parts/part_main.cpp16
7 files changed, 117 insertions, 14 deletions
diff --git a/engines/igor/parts/part_12.cpp b/engines/igor/parts/part_12.cpp
index 055ce1eb1e..3b12480b60 100644
--- a/engines/igor/parts/part_12.cpp
+++ b/engines/igor/parts/part_12.cpp
@@ -32,6 +32,7 @@ static const uint8 PART_12_DATA_ANIM_1[10] = { 0, 1, 2, 1, 2, 1, 2, 1, 2, 3 };
static const uint8 PART_12_DATA_ANIM_2[16] = { 0, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 6, 7 };
void IgorEngine::PART_12_EXEC_ACTION(int action) {
+ debugC(9, kDebugGame, "PART_12_EXEC_ACTION %d", action);
switch (action) {
case 101:
PART_12_ACTION_101();
@@ -141,7 +142,7 @@ void IgorEngine::PART_12_ACTION_104() {
_walkData[0].dxPos = 10;
_walkData[0].yPosChanged = 1;
_walkData[0].dyPos = 3;
- _walkData[0].scaleHeight = 1;
+ _walkData[0].scaleHeight = 50;
_walkDataCurrentIndex = 0;
_walkDataLastIndex = 1;
src = _animFramesBuffer + 0x395B + READ_LE_UINT16(_animFramesBuffer + 0xA448) - 1;
@@ -310,7 +311,7 @@ void IgorEngine::PART_12_UPDATE_ROOM_BACKGROUND() {
}
}
-void IgorEngine::PART_12_UPDATE_DIALOGUE_TOBIAS(int action) {
+void IgorEngine::PART_12_UPDATE_DIALOGUE_CHURCHMAN(int action) {
switch (action) {
case kUpdateDialogueAnimEndOfSentence:
PART_12_HELPER_8();
@@ -326,7 +327,7 @@ void IgorEngine::PART_12_UPDATE_DIALOGUE_TOBIAS(int action) {
void IgorEngine::PART_12_HANDLE_DIALOGUE_CHURCHMAN() {
loadDialogueData(DLG_OutsideChurch);
- _updateDialogue = &IgorEngine::PART_12_UPDATE_DIALOGUE_TOBIAS;
+ _updateDialogue = &IgorEngine::PART_12_UPDATE_DIALOGUE_CHURCHMAN;
handleDialogue(95, 55, 51, 28, 63);
_updateDialogue = 0;
}
@@ -403,7 +404,7 @@ void IgorEngine::PART_12_HELPER_4() {
ADD_DIALOGUE_TEXT(214, 1);
ADD_DIALOGUE_TEXT(215, 1);
SET_DIALOGUE_TEXT(1, 3);
- _updateDialogue = &IgorEngine::PART_12_UPDATE_DIALOGUE_TOBIAS;
+ _updateDialogue = &IgorEngine::PART_12_UPDATE_DIALOGUE_CHURCHMAN;
startCutsceneDialogue(95, 55, 51, 28, 63);
waitForEndOfCutsceneDialogue(95, 55, 51, 28, 63);
_updateDialogue = 0;
diff --git a/engines/igor/parts/part_13.cpp b/engines/igor/parts/part_13.cpp
index 0aafdcbbec..24195a5a63 100644
--- a/engines/igor/parts/part_13.cpp
+++ b/engines/igor/parts/part_13.cpp
@@ -28,6 +28,7 @@
namespace Igor {
void IgorEngine::PART_13_EXEC_ACTION(int action) {
+ debugC(9, kDebugGame, "PART_13_EXEC_ACTION %d", action);
switch (action) {
case 101:
PART_13_ACTION_101_103();
diff --git a/engines/igor/parts/part_14.cpp b/engines/igor/parts/part_14.cpp
index 0ff74cbdb5..22cbc7aed5 100644
--- a/engines/igor/parts/part_14.cpp
+++ b/engines/igor/parts/part_14.cpp
@@ -33,6 +33,7 @@ static int VAR_NEW_CHURCH_MOSAIC_STONE;
static int VAR_CURRENT_CHURCH_MOSAIC_STONE;
void IgorEngine::PART_14_EXEC_ACTION(int action) {
+ debugC(9, kDebugGame, "PART_14_EXEC_ACTION %d", action);
switch (action) {
case 101:
PART_14_ACTION_101();
diff --git a/engines/igor/parts/part_16.cpp b/engines/igor/parts/part_16.cpp
index d5f2e05ccd..aeff170bc5 100644
--- a/engines/igor/parts/part_16.cpp
+++ b/engines/igor/parts/part_16.cpp
@@ -30,6 +30,7 @@ namespace Igor {
static int VAR_CURRENT_TALKING_ACTOR;
void IgorEngine::PART_16_EXEC_ACTION(int action) {
+ debugC(9, kDebugGame, "PART_16_EXEC_ACTION %d", action);
switch (action) {
case 101:
PART_16_ACTION_101();
diff --git a/engines/igor/parts/part_17.cpp b/engines/igor/parts/part_17.cpp
index 45b77b0966..6134c734c9 100644
--- a/engines/igor/parts/part_17.cpp
+++ b/engines/igor/parts/part_17.cpp
@@ -30,6 +30,7 @@ namespace Igor {
static int VAR_CURRENT_TALKING_ACTOR;
void IgorEngine::PART_17_EXEC_ACTION(int action) {
+ debugC(9, kDebugGame, "PART_17_EXEC_ACTION %d", action);
switch (action) {
case 101:
PART_17_ACTION_101();
diff --git a/engines/igor/parts/part_95.cpp b/engines/igor/parts/part_95.cpp
index 0abe2d7149..b32751ec23 100644
--- a/engines/igor/parts/part_95.cpp
+++ b/engines/igor/parts/part_95.cpp
@@ -27,40 +27,142 @@
namespace Igor {
+struct SharewareScreenString {
+ uint8 color;
+ int y;
+ const char *str;
+};
+
+static const SharewareScreenString STR_SHAREWARE[] = {
+ // 950
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 70, "This is SHAREWARE!" },
+ { 228, 81, "You can copy this version!" },
+ { 228, 96, "Pass it around, give it to your friends, family," },
+ { 228, 107, "colleagues and upload it to your favorite BBS." },
+ { 228, 122, "Let everyone enjoy IGOR!" },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" },
+ // 951
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 42, "Shareware version" },
+ { 228, 85, "Order the full IGOR game for only $34.99 US." },
+ { 228, 96, "$5.00 for shipping and handling (US & CANADA)." },
+ { 228, 107, "Please add $3.00 for international shipping." },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" },
+ // 952
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 42, "Shareware version" },
+ { 228, 70, "90 day limited warranty." },
+ { 228, 85, "Please allow 2-4 days for delivery (US only)." },
+ { 228, 96, "Elsewhere, up to a week or two..." },
+ { 228, 111, "Overnight/second day shipping available an" },
+ { 228, 122, "aditional change. Please call for exact pricing." },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" },
+ // 953
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 42, "Shareware version" },
+ { 228, 70, "Three easy ways to order:" },
+ { 228, 85, "- Call 1-800-678-4599 (orders only) and use" },
+ { 228, 96, "Your Visa, Mastercard or Discover card." },
+ { 228, 110, "- Fax your order (please include credit card" },
+ { 228, 121, "information) to (412) 381-1031" },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" },
+ // 954
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 42, "Shareware version" },
+ { 228, 74, "- Mail a check or money order to:" },
+ { 228, 85, "Optik Software Inc." },
+ { 228, 96, "1000 Napor Boulevard" },
+ { 228, 107, "Pittsburgh, PA. 15205" },
+ { 228, 118, "USA" },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" },
+ // 955
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 240, 42, "Shareware version" },
+ { 240, 79, "Optik Software Inc." },
+ { 240, 90, "Orders only: 1-800-OPTIK-99 (67845-99)" },
+ { 240, 101, "Fax: (412) 381-1031" },
+ { 240, 112, "E-mail: optiksoft\xFA""aol.com" },
+ { 240, 161, "To place an order: 1-800-OPTIK-99" },
+ // 956
+ { 255, 30, "\"Igor. Objective Uikokahonia\"" },
+ { 228, 42, "Shareware version" },
+ { 228, 64, "A game by" },
+ { 228, 80, "PENDULO STUDIOS" },
+ { 228, 91, "P.O. Box 21091" },
+ { 228, 102, "28009 Madrid" },
+ { 228, 113, "Spain" },
+ { 228, 128, "E-mail: 100641.1737\xFA""compuserve.com" },
+ { 228, 161, "To place an order: 1-800-OPTIK-99" }
+};
+
void IgorEngine::PART_95() {
memset(_currentPalette, 0, 768);
setPaletteRange(0, 255);
memset(_screenVGA, 0, 64000);
+ int startStr = -1, endStr = -1;
switch (_currentPart) {
case 950:
loadData(PAL_Shareware1, _paletteBuffer);
loadData(IMG_Shareware1, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 0;
+ endStr = 6;
+ }
break;
case 951:
loadData(PAL_Shareware2, _paletteBuffer);
loadData(IMG_Shareware2, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 7;
+ endStr = 12;
+ }
break;
case 952:
loadData(PAL_Shareware3, _paletteBuffer);
loadData(IMG_Shareware3, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 13;
+ endStr = 19;
+ }
break;
case 953:
loadData(PAL_Shareware4, _paletteBuffer);
loadData(IMG_Shareware4, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 20;
+ endStr = 27;
+ }
break;
case 954:
loadData(PAL_Shareware5, _paletteBuffer);
loadData(IMG_Shareware5, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 28;
+ endStr = 35;
+ }
break;
case 955:
loadData(PAL_Shareware6, _paletteBuffer);
loadData(IMG_Shareware6, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 36;
+ endStr = 42;
+ }
break;
case 956:
loadData(PAL_Shareware7, _paletteBuffer);
loadData(IMG_Shareware7, _screenVGA);
+ if (_gameVersion == kIdEngDemo110) {
+ startStr = 43;
+ endStr = 51;
+ }
break;
}
+ for (int i = startStr; i <= endStr; ++i) {
+ const SharewareScreenString *s = &STR_SHAREWARE[i];
+ drawString(_screenVGA, s->str, (320 - getStringWidth(s->str)) / 2, s->y, s->color, 0, 0);
+ }
fadeInPalette(768);
for (int i = 0; !_inputVars[kInputEscape] && i < 3000; ++i) {
waitForTimer();
diff --git a/engines/igor/parts/part_main.cpp b/engines/igor/parts/part_main.cpp
index 09b2454f08..44731b72b8 100644
--- a/engines/igor/parts/part_main.cpp
+++ b/engines/igor/parts/part_main.cpp
@@ -929,15 +929,6 @@ void IgorEngine::PART_MAIN() {
case 904:
PART_90();
break;
- case 950:
- case 951:
- case 952:
- case 953:
- case 954:
- case 955:
- case 956:
- PART_95();
- break;
default:
warning("PART_MAIN() Unhandled part %d", _currentPart);
_currentPart = kInvalidPart;
@@ -974,7 +965,12 @@ void IgorEngine::PART_MAIN() {
}
_gameState.nextMusicCounter = 0;
}
- } while (_currentPart != 255 && !_eventQuitGame);
+ } while (_currentPart != kInvalidPart && !_eventQuitGame);
+ if (_gameVersion == kIdEngDemo100 || _gameVersion == kIdEngDemo110) {
+ for (_currentPart = kSharewarePart; !_eventQuitGame && _currentPart <= kSharewarePart + 6; ++_currentPart) {
+ PART_95();
+ }
+ }
}
} // namespace Igor