diff options
author | Gregory Montoir | 2007-11-18 06:25:23 +0000 |
---|---|---|
committer | Gregory Montoir | 2007-11-18 06:25:23 +0000 |
commit | 0867e09a8129775de703516ca37108237b5d5c77 (patch) | |
tree | 34c092df2fb0db11eed2d478e7c84f880bb75a7a /engines/igor/parts | |
parent | c0cebe93bb189d0aa94ceb9fc9eca26a8b2242e4 (diff) | |
download | scummvm-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.cpp | 9 | ||||
-rw-r--r-- | engines/igor/parts/part_13.cpp | 1 | ||||
-rw-r--r-- | engines/igor/parts/part_14.cpp | 1 | ||||
-rw-r--r-- | engines/igor/parts/part_16.cpp | 1 | ||||
-rw-r--r-- | engines/igor/parts/part_17.cpp | 1 | ||||
-rw-r--r-- | engines/igor/parts/part_95.cpp | 102 | ||||
-rw-r--r-- | engines/igor/parts/part_main.cpp | 16 |
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 |