diff options
-rw-r--r-- | engines/scumm/script_v6.cpp | 3 | ||||
-rw-r--r-- | engines/titanic/carry/central_core.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/core/game_object.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/core/game_object.h | 2 | ||||
-rw-r--r-- | engines/titanic/game/broken_pell_base.cpp | 16 | ||||
-rw-r--r-- | engines/titanic/game/broken_pell_base.h | 10 | ||||
-rw-r--r-- | engines/titanic/game/broken_pellerator.cpp | 30 | ||||
-rw-r--r-- | engines/titanic/game/broken_pellerator_froz.cpp | 65 | ||||
-rw-r--r-- | engines/titanic/game/broken_pellerator_froz.h | 8 | ||||
-rw-r--r-- | engines/titanic/game/pickup/pick_up_hose.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/game/television.cpp | 26 | ||||
-rw-r--r-- | engines/titanic/game/transport/pellerator.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/moves/call_pellerator.cpp | 36 | ||||
-rw-r--r-- | engines/titanic/moves/call_pellerator.h | 7 | ||||
-rw-r--r-- | engines/titanic/true_talk/parrot_script.cpp | 2 | ||||
-rw-r--r-- | engines/wage/detection_tables.h | 12 |
16 files changed, 143 insertions, 86 deletions
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp index 62c62c0b4a..5cbbd93265 100644 --- a/engines/scumm/script_v6.cpp +++ b/engines/scumm/script_v6.cpp @@ -1636,6 +1636,9 @@ void ScummEngine_v6::o6_roomOps() { c = pop(); b = pop(); a = pop(); + // Prevent assert() error with corner case, fixes bug #9871 + if (_game.id == GID_FT && _roomResource == 0) + break; darkenPalette(a, a, a, b, c); break; diff --git a/engines/titanic/carry/central_core.cpp b/engines/titanic/carry/central_core.cpp index 457428ccfc..8b1e24d654 100644 --- a/engines/titanic/carry/central_core.cpp +++ b/engines/titanic/carry/central_core.cpp @@ -74,6 +74,8 @@ bool CCentralCore::DropZoneLostObjectMsg(CDropZoneLostObjectMsg *msg) { bool CCentralCore::DropZoneGotObjectMsg(CDropZoneGotObjectMsg *msg) { CString name = msg->_object->getName(); if (name == "PerchCoreHolder") { + CParrot::_takeOff = false; + if (isEquals("CentralCore")) { CParrot::_coreReplaced = true; CActMsg actMsg("CoreReplaced"); diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index 5abc9f0f76..11b8b58451 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -912,7 +912,7 @@ bool CGameObject::compareViewNameTo(const CString &name) const { return !getViewFullName().compareToIgnoreCase(name); } -int CGameObject::compareRoomNameTo(const CString &name) { +bool CGameObject::compareRoomNameTo(const CString &name) { CRoomItem *room = getGameManager()->getRoom(); return !room->getName().compareToIgnoreCase(name); } diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h index 619c56bc50..f79c9e1d1e 100644 --- a/engines/titanic/core/game_object.h +++ b/engines/titanic/core/game_object.h @@ -329,7 +329,7 @@ protected: /** * Compare the name of the parent room to the item to a passed string */ - int compareRoomNameTo(const CString &name); + bool compareRoomNameTo(const CString &name); /** * Gets the first object under the system MailMan diff --git a/engines/titanic/game/broken_pell_base.cpp b/engines/titanic/game/broken_pell_base.cpp index a3825d503e..973c558253 100644 --- a/engines/titanic/game/broken_pell_base.cpp +++ b/engines/titanic/game/broken_pell_base.cpp @@ -26,22 +26,22 @@ namespace Titanic { EMPTY_MESSAGE_MAP(CBrokenPellBase, CBackground); -bool CBrokenPellBase::_v1; -int CBrokenPellBase::_v2; +bool CBrokenPellBase::_pelleratorOpen; +bool CBrokenPellBase::_gottenHose; void CBrokenPellBase::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_v1, indent); - file->writeNumberLine(_v2, indent); - file->writeNumberLine(_exitAction, indent); + file->writeNumberLine(_pelleratorOpen, indent); + file->writeNumberLine(_gottenHose, indent); + file->writeNumberLine(_closeAction, indent); CBackground::save(file, indent); } void CBrokenPellBase::load(SimpleFile *file) { file->readNumber(); - _v1 = file->readNumber(); - _v2 = file->readNumber(); - _exitAction = file->readNumber(); + _pelleratorOpen = file->readNumber(); + _gottenHose = file->readNumber(); + _closeAction = (CloseAction)file->readNumber(); CBackground::load(file); } diff --git a/engines/titanic/game/broken_pell_base.h b/engines/titanic/game/broken_pell_base.h index c5b27d88bf..2d42f143ef 100644 --- a/engines/titanic/game/broken_pell_base.h +++ b/engines/titanic/game/broken_pell_base.h @@ -27,16 +27,18 @@ namespace Titanic { +enum CloseAction { CLOSE_NONE = 0, CLOSE_LEFT = 1, CLOSE_RIGHT = 2 }; + class CBrokenPellBase : public CBackground { DECLARE_MESSAGE_MAP; protected: - static bool _v1; - static int _v2; + static bool _pelleratorOpen; + static bool _gottenHose; - int _exitAction; + CloseAction _closeAction; public: CLASSDEF; - CBrokenPellBase() : CBackground(), _exitAction(0) {} + CBrokenPellBase() : CBackground(), _closeAction(CLOSE_NONE) {} /** * Save the data for the class to file diff --git a/engines/titanic/game/broken_pellerator.cpp b/engines/titanic/game/broken_pellerator.cpp index d3664acccd..5de728481b 100644 --- a/engines/titanic/game/broken_pellerator.cpp +++ b/engines/titanic/game/broken_pellerator.cpp @@ -53,16 +53,16 @@ void CBrokenPellerator::load(SimpleFile *file) { } bool CBrokenPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { - if (_v1) { - changeView(_v2 ? _string5 : _string4); + if (_pelleratorOpen) { + changeView(_gottenHose ? _string5 : _string4); } else { - if (_v2) { + if (_gottenHose) { playMovie(28, 43, 0); } else { playMovie(0, 14, MOVIE_NOTIFY_OBJECT); } - _v1 = true; + _pelleratorOpen = true; } return true; @@ -71,7 +71,7 @@ bool CBrokenPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { bool CBrokenPellerator::LeaveViewMsg(CLeaveViewMsg *msg) { CString name = msg->_newView->getNodeViewName(); if (name == "Node 3.S" || name == "Node 3.N") { - _v1 = false; + _pelleratorOpen = false; loadFrame(0); } @@ -80,32 +80,32 @@ bool CBrokenPellerator::LeaveViewMsg(CLeaveViewMsg *msg) { bool CBrokenPellerator::ActMsg(CActMsg *msg) { if (msg->_action == "PlayerGetsHose") { - _v2 = 1; + _gottenHose = true; loadFrame(43); CStatusChangeMsg statusMsg; statusMsg.execute("PickupHose"); } else { - _exitAction = 0; + _closeAction = CLOSE_NONE; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; - _exitAction = 1; + _closeAction = CLOSE_LEFT; } if (msg->_action == "CloseRight") { closeFlag = true; - _exitAction = 2; + _closeAction = CLOSE_RIGHT; } if (closeFlag) { - if (_v1) { - _v1 = false; - if (_v2) + if (_pelleratorOpen) { + _pelleratorOpen = false; + if (_gottenHose) playMovie(43, 57, MOVIE_NOTIFY_OBJECT); else playMovie(14, 28, MOVIE_NOTIFY_OBJECT); } else { - switch (_exitAction) { + switch (_closeAction) { case 1: changeView(_exitLeftView); break; @@ -116,7 +116,7 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) { break; } - _exitAction = 0; + _closeAction = CLOSE_NONE; } } } @@ -139,7 +139,7 @@ bool CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) { statusMsg.execute("PickUpHose"); } - switch (_exitAction) { + switch (_closeAction) { case 1: changeView(_exitLeftView); break; diff --git a/engines/titanic/game/broken_pellerator_froz.cpp b/engines/titanic/game/broken_pellerator_froz.cpp index 7025b37a0c..c4439aad43 100644 --- a/engines/titanic/game/broken_pellerator_froz.cpp +++ b/engines/titanic/game/broken_pellerator_froz.cpp @@ -34,30 +34,30 @@ END_MESSAGE_MAP() void CBrokenPelleratorFroz::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeQuotedLine(_string2, indent); - file->writeQuotedLine(_string3, indent); - file->writeQuotedLine(_string4, indent); - file->writeQuotedLine(_string5, indent); + file->writeQuotedLine(_exitLeft, indent); + file->writeQuotedLine(_exitRight, indent); + file->writeQuotedLine(_closeUpWithoutHose, indent); + file->writeQuotedLine(_closeUpWithHose, indent); CBrokenPellBase::save(file, indent); } void CBrokenPelleratorFroz::load(SimpleFile *file) { file->readNumber(); - _string2 = file->readString(); - _string3 = file->readString(); - _string4 = file->readString(); - _string5 = file->readString(); + _exitLeft = file->readString(); + _exitRight = file->readString(); + _closeUpWithoutHose = file->readString(); + _closeUpWithHose = file->readString(); CBrokenPellBase::load(file); } bool CBrokenPelleratorFroz::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { - if (_v1) { - changeView(_v2 ? _string5 : _string4); + if (_pelleratorOpen) { + changeView(_gottenHose ? _closeUpWithHose : _closeUpWithoutHose); } else { - _v1 = true; - if (_v2) { + _pelleratorOpen = true; + if (_gottenHose) { playMovie(0, 13, 0); } else { playMovie(43, 55, MOVIE_NOTIFY_OBJECT); @@ -71,7 +71,7 @@ bool CBrokenPelleratorFroz::LeaveViewMsg(CLeaveViewMsg *msg) { CString name = msg->_newView->getNodeViewName(); if (name == "Node 3.S" || name == "Node 3.E") { - _v1 = false; + _pelleratorOpen = false; loadFrame(0); } @@ -80,42 +80,43 @@ bool CBrokenPelleratorFroz::LeaveViewMsg(CLeaveViewMsg *msg) { bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { if (msg->_action == "PlayerGetsHose") { - _v2 = 1; + _gottenHose = true; + loadFrame(29); CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("FPickUpHose"); } else { - _exitAction = 0; + _closeAction = CLOSE_NONE; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; - _exitAction = 1; + _closeAction = CLOSE_LEFT; } if (msg->_action == "CloseRight") { closeFlag = true; - _exitAction = 2; + _closeAction = CLOSE_RIGHT; } if (closeFlag) { - if (_v1) { - _v1 = false; - if (_v2) + if (_pelleratorOpen) { + _pelleratorOpen = false; + if (_gottenHose) playMovie(29, 42, MOVIE_NOTIFY_OBJECT); else playMovie(72, 84, MOVIE_NOTIFY_OBJECT); } else { - switch (_exitAction) { - case 1: - changeView(_string2); + switch (_closeAction) { + case CLOSE_LEFT: + changeView(_exitLeft); break; - case 2: - changeView(_string3); + case CLOSE_RIGHT: + changeView(_exitRight); break; default: break; } - _exitAction = 0; + _closeAction = CLOSE_NONE; } } } @@ -136,12 +137,12 @@ bool CBrokenPelleratorFroz::MovieEndMsg(CMovieEndMsg *msg) { statusMsg.execute("FPickUpHose"); } - if (_exitAction == 1) { - changeView(_string2); - _exitAction = 0; - } else if (_exitAction == 2) { - changeView(_string3); - _exitAction = 0; + if (_closeAction == CLOSE_LEFT) { + changeView(_exitLeft); + _closeAction = CLOSE_NONE; + } else if (_closeAction == CLOSE_RIGHT) { + changeView(_exitRight); + _closeAction = CLOSE_NONE; } return true; diff --git a/engines/titanic/game/broken_pellerator_froz.h b/engines/titanic/game/broken_pellerator_froz.h index ccdae6ffa8..c198d02213 100644 --- a/engines/titanic/game/broken_pellerator_froz.h +++ b/engines/titanic/game/broken_pellerator_froz.h @@ -34,10 +34,10 @@ class CBrokenPelleratorFroz : public CBrokenPellBase { bool ActMsg(CActMsg *msg); bool MovieEndMsg(CMovieEndMsg *msg); private: - CString _string2; - CString _string3; - CString _string4; - CString _string5; + CString _exitLeft; + CString _exitRight; + CString _closeUpWithoutHose; + CString _closeUpWithHose; public: CLASSDEF; diff --git a/engines/titanic/game/pickup/pick_up_hose.cpp b/engines/titanic/game/pickup/pick_up_hose.cpp index 442c43f9b0..548caaf48f 100644 --- a/engines/titanic/game/pickup/pick_up_hose.cpp +++ b/engines/titanic/game/pickup/pick_up_hose.cpp @@ -21,6 +21,7 @@ */ #include "titanic/game/pickup/pick_up_hose.h" +#include "titanic/game/broken_pell_base.h" #include "titanic/core/project_item.h" #include "titanic/core/room_item.h" #include "titanic/core/view_item.h" @@ -95,7 +96,8 @@ bool CPickUpHose::StatusChangeMsg(CStatusChangeMsg *msg) { } bool CPickUpHose::EnterViewMsg(CEnterViewMsg *msg) { - _cursorId = CURSOR_IGNORE; + if (msg->_oldView) + _cursorId = CURSOR_IGNORE; return true; } diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp index 1380b441d7..80404fa9d3 100644 --- a/engines/titanic/game/television.cpp +++ b/engines/titanic/game/television.cpp @@ -236,23 +236,31 @@ bool CTelevision::MovieEndMsg(CMovieEndMsg *msg) { } if (_channelNum == 3 && compareRoomNameTo("SGTState") && getPassengerClass() == THIRD_CLASS) { - // You may be a winner - CProximity prox1, prox2; - prox1._soundType = prox2._soundType = Audio::Mixer::kSpeechSoundType; - playSound("z#47.wav", prox1); - _soundHandle = playSound("b#20.wav", prox2); - CMagazine *magazine = dynamic_cast<CMagazine *>(getRoot()->findByName("Magazine")); + // WORKAROUND: The original allowed the magazine to be "won" multiple times. We + // now search for magazine within the room (which is it's initial, hidden location). + // That way, when it's 'Won', it's no longer present and can't be won again + CMagazine *magazine = dynamic_cast<CMagazine *>(findRoom()->findByName("Magazine")); if (magazine) { + // You may be a winner + CProximity prox1, prox2; + prox1._soundType = prox2._soundType = Audio::Mixer::kSpeechSoundType; + playSound("z#47.wav", prox1); + _soundHandle = playSound("b#20.wav", prox2); + + // Get the room flags for the SGT floor we're on CPetControl *pet = getPetControl(); uint roomFlags = pet->getRoomFlags(); - debugC(kDebugScripts, "Assigned room - %d", roomFlags); + // Send the magazine to the SuccUBus + debugC(DEBUG_INTERMEDIATE, kDebugScripts, "Assigned room - %d", roomFlags); magazine->addMail(roomFlags); magazine->sendMail(roomFlags, roomFlags); - } - loadFrame(561); + loadFrame(561); + } else { + petDisplayMessage(NOTHING_ON_CHANNEL); + } } else if (_channelNum == 2) { loadFrame(_seasonFrame); } else if (_channelNum == 4 && _channel4Glyph) { diff --git a/engines/titanic/game/transport/pellerator.cpp b/engines/titanic/game/transport/pellerator.cpp index 8a94e82803..4ef5314592 100644 --- a/engines/titanic/game/transport/pellerator.cpp +++ b/engines/titanic/game/transport/pellerator.cpp @@ -155,7 +155,7 @@ bool CPellerator::StatusChangeMsg(CStatusChangeMsg *msg) { case 5: playMovie(315, 323, 0); for (int idx = 0; idx < 7; ++idx) - playMovie(229, 304, 0); + playMovie(299, 304, 0); for (int idx = 0; idx < 12; ++idx) playMovie(245, 255, 0); for (int idx = 0; idx < 3; ++idx) @@ -229,7 +229,7 @@ bool CPellerator::StatusChangeMsg(CStatusChangeMsg *msg) { } } } else { - for (--_destination; _destination > newDest; --_destination) { + for (--_destination; _destination >= newDest; --_destination) { switch (_destination) { case 0: case 1: diff --git a/engines/titanic/moves/call_pellerator.cpp b/engines/titanic/moves/call_pellerator.cpp index e894dd8d4f..cc29f01c1a 100644 --- a/engines/titanic/moves/call_pellerator.cpp +++ b/engines/titanic/moves/call_pellerator.cpp @@ -21,6 +21,7 @@ */ #include "titanic/moves/call_pellerator.h" +#include "titanic/pet_control/pet_control.h" namespace Titanic { @@ -29,6 +30,7 @@ BEGIN_MESSAGE_MAP(CCallPellerator, CGameObject) ON_MESSAGE(LeaveViewMsg) ON_MESSAGE(PETActivateMsg) ON_MESSAGE(MouseButtonDownMsg) + ON_MESSAGE(TimerMsg) END_MESSAGE_MAP() void CCallPellerator::save(SimpleFile *file, int indent) { @@ -42,15 +44,18 @@ void CCallPellerator::load(SimpleFile *file) { } bool CCallPellerator::EnterViewMsg(CEnterViewMsg *msg) { - petSetArea(PET_REMOTE); - petHighlightGlyph(1); - CString name = getFullViewName(); - - if (name == "TopOfWell.Node 6.S") { - petDisplayMessage(2, STANDING_OUTSIDE_PELLERATOR); + CString viewName = msg->_newView->getFullViewName(); + if (viewName == "MusicRoomLobby.Node 1.N") { + // WORKAROUND: In original, the Remote tab icons don't get loaded + // until after the EnterViewMsg call is made when entering a new + // room. So in the special case of the Music Room Lobby, since + // you're immediately at the Pellerator when you enter, set up a + // quick timer to not select the Call glyph until the remote is loaded + addTimer(10); + } else { + showCallPellerator(); } - petSetRemoteTarget(); return true; } @@ -81,4 +86,21 @@ bool CCallPellerator::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { return true; } +bool CCallPellerator::TimerMsg(CTimerMsg *msg) { + showCallPellerator(); + return true; +} + +void CCallPellerator::showCallPellerator() { + petSetArea(PET_REMOTE); + petHighlightGlyph(1); + CString name = getFullViewName(); + + if (name == "TopOfWell.Node 6.S") { + petDisplayMessage(2, STANDING_OUTSIDE_PELLERATOR); + } + + petSetRemoteTarget(); +} + } // End of namespace Titanic diff --git a/engines/titanic/moves/call_pellerator.h b/engines/titanic/moves/call_pellerator.h index 3a1ef3823a..e03150dbce 100644 --- a/engines/titanic/moves/call_pellerator.h +++ b/engines/titanic/moves/call_pellerator.h @@ -34,6 +34,13 @@ class CCallPellerator : public CGameObject { bool LeaveViewMsg(CLeaveViewMsg *msg); bool PETActivateMsg(CPETActivateMsg *msg); bool MouseButtonDownMsg(CMouseButtonDownMsg *msg); + bool TimerMsg(CTimerMsg *msg); +private: + /** + * Switches to the PET Remote tab, and selects the 'Call Pellerator' + * glyph by default + */ + void showCallPellerator(); public: CLASSDEF; diff --git a/engines/titanic/true_talk/parrot_script.cpp b/engines/titanic/true_talk/parrot_script.cpp index f44b9d3be2..95ebbb5bfb 100644 --- a/engines/titanic/true_talk/parrot_script.cpp +++ b/engines/titanic/true_talk/parrot_script.cpp @@ -52,7 +52,7 @@ int ParrotScript::chooseResponse(const TTroomScript *roomScript, const TTsentenc } int ParrotScript::process(const TTroomScript *roomScript, const TTsentence *sentence) { - if (processEntries(roomScript, sentence) == 2) { + if (processEntries(roomScript, sentence) != 2) { int tagId = g_vm->_trueTalkManager->_quotes.find(sentence->_normalizedLine); if (!tagId || chooseResponse(roomScript, sentence, tagId) != 2) { addResponse(getDialogueId(sentence->checkCategory() ? 280248 : 280235)); diff --git a/engines/wage/detection_tables.h b/engines/wage/detection_tables.h index 2b7278c50e..b207946882 100644 --- a/engines/wage/detection_tables.h +++ b/engines/wage/detection_tables.h @@ -79,6 +79,8 @@ static const ADGameDescription gameDescriptions[] = { FANGAME("Find the Heart", "08de3248b8c691d9a08af984bdcfa872", 105885), // From Joshua's Worlds. Alt version FANGAME("Find the Heart", "73935d313b666763e50d2cdc6b3b7908", 105871), // Standalone FANGAMEN("Fortune Teller", "Fortune Teller 1.1", "3c09329fc3c92a70e5c8874cc763f5cb", 73931), + FANGAMEN("Fred Rogers - Terrorist", "Terrorist", "4398f711bc2a456e6d730641308593f0", 524469), // Original file name "Terrorist†" + FANGAME("Fred Rogers - Terrorist", "8597a77619847efbce3f1f8b2ceb3258", 524455), // Original file name "Terrorist†" FANGAMEN("Haunted House", "Haunted House 1.5", "5e34e9fa13f4c90876f10a40ea1d1c79", 177500), FANGAMEN("The Hotel Caper", "The Hotel Caper V1.0", "c9b3c75814fc6b14feae044157bef252", 231969), FANGAMEN("The Hotel Caper", "The Hotel Caper V1.0", "4658ece81a6f211a828e747125482f48", 231969), // alt version @@ -95,12 +97,15 @@ static const ADGameDescription gameDescriptions[] = { FANGAMEN("Little Pythagoras", "Little Pythagoras 1.1.1", "66a5d2ac1a0df2ee84cbee583c1f1dfe", 628821), FANGAME("Lost Crystal", "945a1cf1ead6dd298305935b5ccb21d2", 771072), FANGAMEN("Lost In Kookyville", "Lost In Kookyville 1.2.4", "89ecb4cef5cc4036e54f8bc45ce7520e", 721569), + FANGAME("Lost Princess", "29d9889b566286506ded7d8bec7b75ce", 166758), + FANGAME("Mac Spudd!", "eaba9195dd27c2a26b809a730417122b", 782115), FANGAME("Magic Rings", "263e2c90af61f0798bf41f6a1e3f6345", 109044), // No way to click on the house FANGAME("Messy House", "32ca71f2ff37997407cead590c2dd306", 177120), FANGAME("Midnight Snack", "70ba8a5a1f0304669c9987360bba236f", 67952), FANGAME("Midnight Snack", "24973af10822979e23866d88a7d2e15c", 67966), // Alt version FANGAME("Mike's House", "591b5a4d52ecf9a7d87256e83b78b0fd", 87357), + FANGAME("Mike's House", "e4c0b836a21799db3995a921a447c28e", 87343), // Alt version FANGAME("Minitorian", "c728dfccdca12571e275a4113b3db343", 586464), FANGAME("M'Lord's Warrior", "e0a0622ce2023984e3118141a9688ec5", 465639), // Original file name is "M'Lord's Warrior †" FANGAMEN("Mormonoids from the Deep", "Mormonoids 1.25", "4730d0c47d13401d73353e980f91a304", 645318), @@ -116,10 +121,13 @@ static const ADGameDescription gameDescriptions[] = { FANGAMEN("Pencils", "Pencils.99", "09dbcdbefe20536c2db1b1a4fb4e5ed3", 408551), // Polygons with byte 1 FANGAME("Periapt", "7e26a7827c694232624321a5a6844511", 406006), + FANGAME("Periapt", "bc36e40de279d5f0844577fe702d9f64", 406006), // alt version // Invalid rect in scene "Access Tube 1" FANGAMEN("The Phoenix v1.2", "The Phoenix", "fee9f1de7ad9096d084461d6066192b1", 431640), FANGAME("The Phoenix", "bd6dabf7a19d2ab7902498a8513f8c71", 431643), FANGAME("Psychotic!", "d6229615b71b189f6ef71399a0856cd2", 367309), + FANGAME("Psychotic!", "c7608f67592563b44f2f48fe5fec63ce", 367323), // alt version + FANGAME("Psychotic!", "51aa5f2744ceb5666c9556bccee797d6", 367429), // another alt version FANGAME("Puzzle Piece Search", "6c21c1e0c6afef9300941abd7782dd16", 247693), // From Joshua's Worlds 1.0 FANGAME("The Puzzle Piece Search", "8fa1d80dd3f1ed69f45d15d774968995", 247338), // From Joshua's Worlds FANGAME("The Puzzle Piece Search", "fb839ac4f22427f44e99bcc5afd57a0b", 247324), // Stnadalone @@ -146,15 +154,16 @@ static const ADGameDescription gameDescriptions[] = { FANGAMEN("Space Adventure", "SpaceAdventure", "3908c75d639989a28993c59931fbe1ec", 155356), FANGAMEN("Space Adventure", "SpaceAdventure", "e38d524cb778ed0beb77ee9299f0ed45", 155356), // alt version FANGAMEN("Spear of Destiny", "SpearOfDestiny", "ac00a26f04f83b47c278cc1d226f48df", 333665), // Original file name "SpearOfDestiny†" + FANGAME("Spear of Destiny", "ea90bddd0925742351340cf88dd1c7a6", 620606), // alt version, normal file name FANGAME("Star Trek", "3067332e6f0bb0314579f9bf102e1b56", 53320), FANGAME("Strange Disappearance", "9d6e41b61c0fc90400e5da2fcb653a4a", 772282), FANGAME("The Sultan's Palace", "fde31cbcc77b66969b4cfcd43075341e", 456855), // Code 0x03 in text FANGAME("Swamp Witch", "bd8c8394be31f7845d55785b7ccfbbde", 739781), // Original file name "Swamp Witch†" + FANGAME("Swamp Witch", "07463c8b3b908b0c493a41b949ac1ff5", 740131), // alt version, normal file name FANGAME("Sweetspace Now!", "574dc7dd25543f7a516d6524f0c5ab33", 123813), // Comes with Jumble // Wrong scrolling in the first console text FANGAMEN("Sword of Siegfried", "Sword of Siegfried 1.0", "2ae8f21cfb228ce58ee47b767bdd8820", 234763), - FANGAME("Terrorist", "4398f711bc2a456e6d730641308593f0", 524469), // Original file name "Terrorist†" FANGAME("Time Bomb", "e96f3e2efd1e3db6ad0be22180f5473c", 64564), FANGAME("Time Bomb", "976180f9be0d1029aaba7774fec9767c", 64578), // Alt version // Admission for on 3rd screen is messed up @@ -172,6 +181,7 @@ static const ADGameDescription gameDescriptions[] = { FANGAMEN("Wizard's Warehouse 2", "WizWarehouse 2.0", "e67ac67548236a73897a85cd12b30492", 230870), FANGAME("ZikTuria", "a91559e6f04a67dcb9023a98a0faed77", 52972), FANGAME("Zoony", "3f7418ea8672ea558521c178188cfce5", 154990), // original filename "Zoony™" + FANGAME("Zoony", "55d3d42b5dca9630eb28ad464f343c67", 154990), // original filename "Zoony™", alt version AD_TABLE_END_MARKER }; |