From 23b3782b5217e3d08b84c6abce0821e01071c3f7 Mon Sep 17 00:00:00 2001 From: Matthew Stewart Date: Thu, 26 Jul 2018 17:38:44 -0400 Subject: STARTREK: SINS0 --- engines/startrek/awaymission.h | 10 ++ engines/startrek/module.mk | 6 + engines/startrek/room.cpp | 10 ++ engines/startrek/room.h | 45 +++++++ engines/startrek/rooms/function_map.h | 5 + engines/startrek/rooms/sins0.cpp | 246 ++++++++++++++++++++++++++++++++++ engines/startrek/rooms/sins1.cpp | 41 ++++++ engines/startrek/rooms/sins2.cpp | 41 ++++++ engines/startrek/rooms/sins3.cpp | 41 ++++++ engines/startrek/rooms/sins4.cpp | 41 ++++++ engines/startrek/rooms/sins5.cpp | 41 ++++++ engines/startrek/startrek.cpp | 6 +- engines/startrek/text.h | 101 ++++++++++++++ 13 files changed, 629 insertions(+), 5 deletions(-) create mode 100644 engines/startrek/rooms/sins0.cpp create mode 100644 engines/startrek/rooms/sins1.cpp create mode 100644 engines/startrek/rooms/sins2.cpp create mode 100644 engines/startrek/rooms/sins3.cpp create mode 100644 engines/startrek/rooms/sins4.cpp create mode 100644 engines/startrek/rooms/sins5.cpp (limited to 'engines/startrek') diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index a123c09161..8f3e83b2e5 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -518,6 +518,16 @@ struct AwayMission { ser.syncAsByte(gotPointsForBeamingOut); } } trial; + + struct { + byte field39; // 0x39 + bool field3d; // 0x3d + bool field3e; // 0x3e + bool enteredRoom0FirstTime; // 0x42 + bool field43; // 0x43 + bool gotPointsForScanningStatue; // 0x48 + int16 missionScore; // 0x52 + } sins; }; }; // Size: 0x129 bytes diff --git a/engines/startrek/module.mk b/engines/startrek/module.mk index 85250e0813..384e07b156 100644 --- a/engines/startrek/module.mk +++ b/engines/startrek/module.mk @@ -60,6 +60,12 @@ MODULE_OBJS = \ rooms/trial3.o \ rooms/trial4.o \ rooms/trial5.o \ + rooms/sins0.o \ + rooms/sins1.o \ + rooms/sins2.o \ + rooms/sins3.o \ + rooms/sins4.o \ + rooms/sins5.o \ diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp index 08743f7188..bc2015f5d1 100644 --- a/engines/startrek/room.cpp +++ b/engines/startrek/room.cpp @@ -93,6 +93,12 @@ Room::Room(StarTrekEngine *vm, const Common::String &name) : _vm(vm) { ADD_ROOM(trial3); ADD_ROOM(trial4); ADD_ROOM(trial5); + ADD_ROOM(sins0); + ADD_ROOM(sins1); + ADD_ROOM(sins2); + ADD_ROOM(sins3); + ADD_ROOM(sins4); + ADD_ROOM(sins5); if (_roomActionList == nullptr) { warning("Room \"%s\" unimplemented", name.c_str()); @@ -457,6 +463,10 @@ void Room::endMission(int16 score, int16 arg1, int16 arg2) { _vm->_missionToLoad = "FEATHER"; if (_vm->_missionName == "FEATHER") _vm->_missionToLoad = "TRIAL"; + if (_vm->_missionName == "TRIAL") + _vm->_missionToLoad = "SINS"; + if (_vm->_missionName == "SINS") + _vm->_missionToLoad = "VENG"; _vm->_roomIndexToLoad = 0; } diff --git a/engines/startrek/room.h b/engines/startrek/room.h index 9f88f04981..bcccf8fccf 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -2144,6 +2144,51 @@ public: void trial5UseBlueGem3OnHole3(); void trial5UseMedkitAnywhere(); + + // SINS0 + void sins0Tick1(); + void sins0LookAnywhere(); + void sins0LookAtOpenDoor(); + void sins0LookAtClosedDoor(); + void sins0TalkToSpock(); + void sins0TalkToMccoy(); + void sins0TalkToRedshirt(); + void sins0LookAtGround(); + void sins0GetRock(); + void sins0PickedUpRock(); + void sins0UseSTricorderAnywhere(); + void sins0UseSTricorderOnGround(); + void sins0UseSTricorderOnPlanet(); + void sins0Tick40(); + void sins0LookAtStatue(); + void sins0LookAtPlanet(); + void sins0LookAtSky(); + void sins0LookAtKirk(); + void sins0LookAtSpock(); + void sins0LookAtMccoy(); + void sins0LookAtRedshirt(); + void sins0UseSTricorderOnClosedDoor(); + void sins0UseSTricorderOnStatue(); + void sins0UseMedkitOnCrewman(); + void sins0UseMTricorderOnCrewman(); + void sins0UseCommunicator(); + void sins0WalkToDoor(); + + // SINS1 + void sins1Tick1(); + + // SINS2 + void sins2Tick1(); + + // SINS3 + void sins3Tick1(); + + // SINS4 + void sins4Tick1(); + + // SINS5 + void sins5Tick1(); + public: // Room-specific variables. This is memset'ed to 0 when the room is initialized. // NOTE: Any changes here must be reflected in the corresponding serializer functions. diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h index c83dc99700..b44fbf1fb7 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -1790,6 +1790,11 @@ extern const int trial0NumActions, trial1NumActions, trial2NumActions extern const RoomAction trial4ActionList[], trial5ActionList[]; extern const int trial4NumActions, trial5NumActions; +extern const RoomAction sins0ActionList[], sins1ActionList[], sins2ActionList[], sins3ActionList[]; +extern const int sins0NumActions, sins1NumActions, sins2NumActions, sins3NumActions; +extern const RoomAction sins4ActionList[], sins5ActionList[]; +extern const int sins4NumActions, sins5NumActions; + } #endif diff --git a/engines/startrek/rooms/sins0.cpp b/engines/startrek/rooms/sins0.cpp new file mode 100644 index 0000000000..bd93f25033 --- /dev/null +++ b/engines/startrek/rooms/sins0.cpp @@ -0,0 +1,246 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_DOOR 8 + +#define HOTSPOT_DOOR 0x20 +#define HOTSPOT_GROUND 0x21 +#define HOTSPOT_STATUE 0x22 +#define HOTSPOT_PLANET 0x23 +#define HOTSPOT_SKY 0x24 // Not mapped anywhere? + +namespace StarTrek { + +extern const RoomAction sins0ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins0Tick1 }, + + { {ACTION_LOOK, 0xff, 0, 0}, &Room::sins0LookAnywhere }, + { {ACTION_LOOK, OBJECT_DOOR, 0, 0}, &Room::sins0LookAtOpenDoor }, + { {ACTION_LOOK, HOTSPOT_DOOR, 0, 0}, &Room::sins0LookAtClosedDoor }, + { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::sins0TalkToSpock }, + { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::sins0TalkToMccoy }, + { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::sins0TalkToRedshirt }, + { {ACTION_LOOK, HOTSPOT_GROUND, 0, 0}, &Room::sins0LookAtGround }, + { {ACTION_GET, HOTSPOT_GROUND, 0, 0}, &Room::sins0GetRock }, + { {ACTION_DONE_ANIM, 1, 0, 0}, &Room::sins0PickedUpRock }, + + { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::sins0UseSTricorderAnywhere }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_GROUND, 0}, &Room::sins0UseSTricorderOnGround }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_PLANET, 0}, &Room::sins0UseSTricorderOnPlanet }, + + { {ACTION_TICK, 40, 0, 0}, &Room::sins0Tick40 }, + { {ACTION_LOOK, HOTSPOT_STATUE, 0, 0}, &Room::sins0LookAtStatue }, + { {ACTION_LOOK, HOTSPOT_PLANET, 0, 0}, &Room::sins0LookAtPlanet }, + { {ACTION_LOOK, HOTSPOT_SKY, 0, 0}, &Room::sins0LookAtSky }, + { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::sins0LookAtKirk }, + { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::sins0LookAtSpock }, + { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::sins0LookAtMccoy }, + { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::sins0LookAtRedshirt }, + + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_DOOR, 0}, &Room::sins0UseSTricorderOnClosedDoor }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_STATUE, 0}, &Room::sins0UseSTricorderOnStatue }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_KIRK, 0}, &Room::sins0UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_SPOCK, 0}, &Room::sins0UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_MCCOY, 0}, &Room::sins0UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_REDSHIRT, 0}, &Room::sins0UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_KIRK, 0}, &Room::sins0UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_SPOCK, 0}, &Room::sins0UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_MCCOY, 0}, &Room::sins0UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_REDSHIRT, 0}, &Room::sins0UseMTricorderOnCrewman }, + + { {ACTION_USE, OBJECT_ICOMM, 0xff, 0}, &Room::sins0UseCommunicator }, + { {ACTION_WALK, HOTSPOT_DOOR, 0, 0}, &Room::sins0WalkToDoor }, + { {ACTION_WALK, OBJECT_DOOR, 0, 0}, &Room::sins0WalkToDoor }, +}; + + +extern const int sins0NumActions = sizeof(sins0ActionList) / sizeof(RoomAction); + + +void Room::sins0Tick1() { + playVoc("SIN0LOOP"); + + if (!_vm->_awayMission.sins.enteredRoom0FirstTime) + _vm->_awayMission.disableInput = 2; + + if (_vm->_awayMission.sins.field3e) + loadActorAnim2(OBJECT_DOOR, "s0dr2", 0, 0); + if (_vm->_awayMission.sins.field3d) + loadActorAnim2(OBJECT_DOOR, "s0dr1", 0, 0); + + playMidiMusicTracks(MIDITRACK_27, -3); +} + +void Room::sins0LookAnywhere() { + showText(TX_SIN0N009); +} + +void Room::sins0LookAtOpenDoor() { + showText(TX_SIN0N005); +} + +void Room::sins0LookAtClosedDoor() { + showText(TX_SIN0N008); +} + +void Room::sins0TalkToSpock() { + showText(TX_SPEAKER_SPOCK, TX_SIN0_009); +} + +void Room::sins0TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_SIN0_011); +} + +void Room::sins0TalkToRedshirt() { + // ENHANCEMENT: This function had two implementations. The first (the originally used + // one) is a generic "area is secure" text. In the second (which was unused), he + // comments on how the small moon could have an atmosphere. This is more interesting + // and relevant, so that implementation is used instead. + if (false) + showText(TX_SPEAKER_MOSHER, TX_SIN0_024); + else { + showText(TX_SPEAKER_MOSHER, TX_SIN0_026); + showText(TX_SPEAKER_SPOCK, TX_SIN0_022); + showText(TX_SPEAKER_KIRK, TX_SIN0_006); + } +} + +void Room::sins0LookAtGround() { + showText(TX_SIN0N006); +} + +void Room::sins0GetRock() { + _vm->_awayMission.disableInput = true; + loadActorAnimC(OBJECT_KIRK, "kpickw", -1, -1, &Room::sins0PickedUpRock); + _vm->_awayMission.sins.field39 |= 1; +} + +void Room::sins0PickedUpRock() { + _vm->_awayMission.disableInput = false; + loadActorStandAnim(OBJECT_KIRK); + showText(TX_SIN0N010); + giveItem(OBJECT_IS8ROCKS); +} + +void Room::sins0UseSTricorderAnywhere() { + spockScan(DIR_S, TX_SIN0_018); +} + +void Room::sins0UseSTricorderOnGround() { + spockScan(DIR_S, TX_SIN0_017); + _vm->_awayMission.sins.field39 |= 1; +} + +void Room::sins0UseSTricorderOnPlanet() { + spockScan(DIR_S, TX_SIN0_016); +} + +void Room::sins0Tick40() { + if (!_vm->_awayMission.sins.enteredRoom0FirstTime) { + _vm->_awayMission.disableInput = false; + showText(TX_SPEAKER_UHURA, TX_SIN0U082); + showText(TX_SPEAKER_KIRK, TX_SIN0_003); + showText(TX_SPEAKER_SCOTT, TX_SIN0_S48); + showText(TX_SPEAKER_KIRK, TX_SIN0_007); + showText(TX_SPEAKER_SCOTT, TX_SIN0_S50); + showText(TX_SPEAKER_KIRK, TX_SIN0_005); + showText(TX_SPEAKER_SCOTT, TX_SIN0_S49); + showText(TX_SPEAKER_KIRK, TX_SIN0_001); + _vm->_awayMission.sins.enteredRoom0FirstTime = true; + } +} + +void Room::sins0LookAtStatue() { + showText(TX_SIN0N011); + showText(TX_SPEAKER_MCCOY, TX_SIN0_015); + showText(TX_SPEAKER_SPOCK, TX_SIN0_021); + showText(TX_SPEAKER_MOSHER, TX_SIN0_027); + showText(TX_SPEAKER_MCCOY, TX_SIN0_014); +} + +void Room::sins0LookAtPlanet() { + showText(TX_SIN0N007); +} + +void Room::sins0LookAtSky() { + // This seems unused, due to HOTSPOT_SKY not being mapped anywhere? + showText(TX_SIN0N004); +} + +void Room::sins0LookAtKirk() { + showText(TX_SIN0N002); +} + +void Room::sins0LookAtSpock() { + showText(TX_SIN0N003); +} + +void Room::sins0LookAtMccoy() { + showText(TX_SIN0N000); +} + +void Room::sins0LookAtRedshirt() { + showText(TX_SIN0N001); +} + +void Room::sins0UseSTricorderOnClosedDoor() { + spockScan(DIR_S, TX_SIN0_019); + showText(TX_SPEAKER_MOSHER, TX_SIN0_025); + showText(TX_SPEAKER_MCCOY, TX_SIN0_013); + showText(TX_SPEAKER_MOSHER, TX_SIN0_028); +} + +void Room::sins0UseSTricorderOnStatue() { + spockScan(DIR_S, TX_SIN0_020); + showText(TX_SPEAKER_KIRK, TX_SIN0_008); + showText(TX_SPEAKER_SPOCK, TX_SIN0_023); + + if (!_vm->_awayMission.sins.gotPointsForScanningStatue) { + _vm->_awayMission.sins.gotPointsForScanningStatue = true; + _vm->_awayMission.sins.missionScore += 1; + } +} + +void Room::sins0UseMedkitOnCrewman() { + showText(TX_SPEAKER_MCCOY, TX_SIN0_012); +} + +void Room::sins0UseMTricorderOnCrewman() { + mccoyScan(DIR_S, TX_SIN0_010); +} + +void Room::sins0UseCommunicator() { + if (!_vm->_awayMission.sins.field43) { + showText(TX_SPEAKER_KIRK, TX_SIN0_004); + showText(TX_SPEAKER_SCOTT, TX_SIN0_S01); + showText(TX_SPEAKER_KIRK, TX_SIN0_002); + } else + showText(TX_SPEAKER_UHURA, TX_SIN0U069); +} + +void Room::sins0WalkToDoor() { + walkCrewman(OBJECT_KIRK, 0x5f, 0x8c); +} + +} diff --git a/engines/startrek/rooms/sins1.cpp b/engines/startrek/rooms/sins1.cpp new file mode 100644 index 0000000000..fc7827a142 --- /dev/null +++ b/engines/startrek/rooms/sins1.cpp @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_8 8 + +#define HOTSPOT_20 0x20 + +namespace StarTrek { + +extern const RoomAction sins1ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins1Tick1 }, +}; + +extern const int sins1NumActions = sizeof(sins1ActionList) / sizeof(RoomAction); + + +void Room::sins1Tick1() { +} + +} diff --git a/engines/startrek/rooms/sins2.cpp b/engines/startrek/rooms/sins2.cpp new file mode 100644 index 0000000000..976814acab --- /dev/null +++ b/engines/startrek/rooms/sins2.cpp @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_8 8 + +#define HOTSPOT_20 0x20 + +namespace StarTrek { + +extern const RoomAction sins2ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins2Tick1 }, +}; + +extern const int sins2NumActions = sizeof(sins2ActionList) / sizeof(RoomAction); + + +void Room::sins2Tick1() { +} + +} diff --git a/engines/startrek/rooms/sins3.cpp b/engines/startrek/rooms/sins3.cpp new file mode 100644 index 0000000000..81795e4c29 --- /dev/null +++ b/engines/startrek/rooms/sins3.cpp @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_8 8 + +#define HOTSPOT_20 0x20 + +namespace StarTrek { + +extern const RoomAction sins3ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins3Tick1 }, +}; + +extern const int sins3NumActions = sizeof(sins3ActionList) / sizeof(RoomAction); + + +void Room::sins3Tick1() { +} + +} diff --git a/engines/startrek/rooms/sins4.cpp b/engines/startrek/rooms/sins4.cpp new file mode 100644 index 0000000000..05c582021c --- /dev/null +++ b/engines/startrek/rooms/sins4.cpp @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_8 8 + +#define HOTSPOT_20 0x20 + +namespace StarTrek { + +extern const RoomAction sins4ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins4Tick1 }, +}; + +extern const int sins4NumActions = sizeof(sins4ActionList) / sizeof(RoomAction); + + +void Room::sins4Tick1() { +} + +} diff --git a/engines/startrek/rooms/sins5.cpp b/engines/startrek/rooms/sins5.cpp new file mode 100644 index 0000000000..49f9784b62 --- /dev/null +++ b/engines/startrek/rooms/sins5.cpp @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "startrek/room.h" + +#define OBJECT_8 8 + +#define HOTSPOT_20 0x20 + +namespace StarTrek { + +extern const RoomAction sins5ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::sins5Tick1 }, +}; + +extern const int sins5NumActions = sizeof(sins5ActionList) / sizeof(RoomAction); + + +void Room::sins5Tick1() { +} + +} diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp index 9623ccccc8..f5835d2adb 100644 --- a/engines/startrek/startrek.cpp +++ b/engines/startrek/startrek.cpp @@ -90,7 +90,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam _missionToLoad = "DEMON"; _roomIndexToLoad = 0; - _showSubtitles = true; // TODO: test + _showSubtitles = true; Common::fill(_r3List, _r3List + NUM_SPACE_OBJECTS, (R3 *)nullptr); Common::fill(_orderedR3List, _orderedR3List + NUM_SPACE_OBJECTS, (R3 *)nullptr); @@ -901,10 +901,6 @@ void StarTrekEngine::renderBanAboveSprites() { byte *src = (byte *)surface.getPixels() + offset; byte *dest = destPixels + offset; - /* - _banFiles[i]->seek(_banFileOffsets[i], SEEK_SET); - renderBan(destPixels, _banFiles[i]); - */ // This is similar to renderBan(), except it copies pixels from the surface // above instead of drawing directly to it. (Important since sprites may be // drawn on top.) diff --git a/engines/startrek/text.h b/engines/startrek/text.h index e0a0401b99..a7e398fee7 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -120,6 +120,8 @@ enum GameStringIDs { TX_SPEAKER_LIGHT_OF_KNOWLEDGE, TX_SPEAKER_LIGHT_OF_TRAVEL, + TX_SPEAKER_MOSHER, + TX_BRIDU146, TX_G_024, @@ -2429,6 +2431,55 @@ enum GameStringIDs { TX_TRI5N021, + TX_SIN0_001, + TX_SIN0_002, + TX_SIN0_003, + TX_SIN0_004, + TX_SIN0_005, + TX_SIN0_006, + TX_SIN0_007, + TX_SIN0_008, + TX_SIN0_009, + TX_SIN0_010, + TX_SIN0_011, + TX_SIN0_012, + TX_SIN0_013, + TX_SIN0_014, + TX_SIN0_015, + TX_SIN0_016, + TX_SIN0_017, + TX_SIN0_018, + TX_SIN0_019, + TX_SIN0_020, + TX_SIN0_021, + TX_SIN0_022, + TX_SIN0_023, + TX_SIN0_024, + TX_SIN0_025, + TX_SIN0_026, + TX_SIN0_027, + TX_SIN0_028, + // UNUSED: 029 -> 030 + TX_SIN0_S01, + TX_SIN0_S48, + TX_SIN0_S49, + TX_SIN0_S50, + TX_SIN0N000, + TX_SIN0N001, + TX_SIN0N002, + TX_SIN0N003, + TX_SIN0N004, + TX_SIN0N005, + TX_SIN0N006, + TX_SIN0N007, + TX_SIN0N008, + TX_SIN0N009, + TX_SIN0N010, + TX_SIN0N011, + TX_SIN0U069, + TX_SIN0U082, + + TX_SIN3_012, @@ -2498,6 +2549,8 @@ const char *const g_gameStrings[] = { "Light of Knowledge", "Light of Travel", + "Ensign Mosher", + "#BRID\\BRIDU146#Nothing to report, Captain.", "#GENE\\G_024#Fascinating.", @@ -4770,6 +4823,54 @@ const char *const g_gameStrings[] = { "#TRI5\\TRI5N021#This large gem appears to be an emerald of unusual size. This is obviously artificial.", // TYPO + "#SIN0\\SIN0_001#Good Mr. Scott. I'll keep you posted. Kirk out.", + "#SIN0\\SIN0_002#Let me know if things change. Kirk out.", + "#SIN0\\SIN0_003#Mr. Scott?", + "#SIN0\\SIN0_004#Scotty, report on the transporter problem.", + "#SIN0\\SIN0_005#That will still give us plenty of time, Scotty.", + "#SIN0\\SIN0_006#That's what we're here to find out. The unknown.", + "#SIN0\\SIN0_007#We didn't notice anything beaming down.", + "#SIN0\\SIN0_008#Which means that this moon might still be inhabited, Mr. Spock.", + "#SIN0\\SIN0_009#Aside from the security door on what should be a lifeless planetoid, this place is unremarkable.", + "#SIN0\\SIN0_010#It's what I was afraid of, Jim. The thin atmosphere of this moon doesn't provide enough protection from cosmic rays. We shouldn't stay here any more than a few hours.", + "#SIN0\\SIN0_011#The atmosphere is breathable, Jim, but hardly nourishing. We should either get inside or go back to the ship.", + "#SIN0\\SIN0_012#There's not much I can do for cosmic radiation. It's best if we find some cover indoors.", + "#SIN0\\SIN0_013#Do you have Vulcan blood ensign?", + "#SIN0\\SIN0_014#I never realized the Orions ever got past decadence... They hadn't the last time I was there.", + "#SIN0\\SIN0_015#These stones resemble those on Earth, on Easter Island.", + "#SIN0\\SIN0_016#I cannot get readings from this range, Captain. But if we do not hurry there will be nothing left to get a reading on.", + "#SIN0\\SIN0_017#The rocks have a high quantity of Tri-Phosphorate Silver in them.", + "#SIN0\\SIN0_018#Unremarkable except for low grade power emanations from the door area.", + "#SIN0\\SIN0_019#As expected Captain. The source of power emanations lies beyond that door.", + "#SIN0\\SIN0_020#Large quantities of atmosphere are being circulated through these rocks. I would guess there are storage units within this satellite which are constantly replacing the atmosphere that is lost because of this moon's weak gravity.", + "#SIN0\\SIN0_021#Stone monoliths of faces are a common artistic expression in evolving cultures...", + "#SIN0\\SIN0_022#Unknown, ensign.", + "#SIN0\\SIN0_023#We have detected no signs of life, Captain, but the possibility does exist.", + "#SIN0\\SIN0_024#Area secure, Captain.", + "#SIN0\\SIN0_025#A power source that has lasted millenia and endured major catastrophes. That's fascinating, Mr. Spock.", + "#SIN0\\SIN0_026#How can there be an atmosphere on a moon of this size?", + "#SIN0\\SIN0_027#Like the faces on Vandu II. Even the animal face art of the Orion Post-Decadence Movement is similar.", + "#SIN0\\SIN0_028#No, sir.", + "#SIN0\\SIN0_S01#No change Captain. Although why it happened is about as clear as a foggy night in Glasgow.", + "#SIN0\\SIN0_S48#Aye. We've had some slight problems with the transporters.", + "#SIN0\\SIN0_S49#I know. I have the lads in Engineering doing a complete overhaul of the ship's systems.", + "#SIN0\\SIN0_S50#Just a glitch in the main transporter program. Mr. Kyle is loading a back-up, and we're performing tests. The transporters will be down for about an hour.", + "#SIN0\\SIN0N000#Dr. Leonard McCoy, knowing that they aren't likely to encounter any medical problems, is rather annoyed about being dragged yet again into the transporter.", + "#SIN0\\SIN0N001#Ensign Mosher seems to be rather curious about the planet's technology.", + "#SIN0\\SIN0N002#James T. Kirk, worried about the safety of the people of Proxtrey.", + "#SIN0\\SIN0N003#Mr. Spock looks forward to examining the technology of this ancient culture.", + "#SIN0\\SIN0N004#Ten thousand points of light are visible to the naked eye through the thin atmosphere of this moon.", + "#SIN0\\SIN0N005#The heavy-duty security door is now open.", + "#SIN0\\SIN0N006#There are many rocks here.", + "#SIN0\\SIN0N007#This is the planet Proxtrey, currently six hundred thousand kilometers from this moon.", + "#SIN0\\SIN0N008#This looks like a heavy-duty security door built into the side of a hill on this moon.", + "#SIN0\\SIN0N009#This moon has a thin but breathable atmosphere.", + "#SIN0\\SIN0N010#You retrieve a rock.", + "#SIN0\\SIN0N011#These stones look like faces.", + "#SIN0\\SIN0U069#Nothing new to report Captain.", + "#SIN0\\SIN0U082#Captain, Mr. Scott wishes to speak with you.", + + "#SIN3\\SIN3_012#Can't say I like the decor.", -- cgit v1.2.3