[Scummvm-git-logs] scummvm master -> 60ddbb34248eb97f25acdced058c3bda46bca708
dreammaster
noreply at scummvm.org
Fri Jul 26 05:14:34 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e8dabad377 M4: RIDDLE: In progress room 301 daemon
60ddbb3424 M4: RIDDLE: More room 301 daemon
Commit: e8dabad377fd10070eee3d5af90c5ab687ae25b9
https://github.com/scummvm/scummvm/commit/e8dabad377fd10070eee3d5af90c5ab687ae25b9
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-07-25T22:14:26-07:00
Commit Message:
M4: RIDDLE: In progress room 301 daemon
Changed paths:
engines/m4/riddle/rooms/room.cpp
engines/m4/riddle/rooms/room.h
engines/m4/riddle/rooms/section3/room301.cpp
engines/m4/riddle/rooms/section3/room301.h
diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 649fb267802..1418486f291 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -209,6 +209,15 @@ void Room::sendWSMessage_140000(int trigger) {
sendWSMessage_140000(_G(my_walker), trigger);
}
+void Room::sendWSMessage_150000(machine *walker, int trigger) {
+ _G(globals)[V023] = kernel_trigger_create(trigger);
+ sendWSMessage(0x150000, 0, walker, 0, nullptr, 1);
+}
+
+void Room::sendWSMessage_150000(int trigger) {
+ sendWSMessage_150000(_G(my_walker), trigger);
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index a8db601df32..d64bf3f2608 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -53,10 +53,10 @@ protected:
* Sets a bunch of globals. Sooooo many globals.
*/
void setGlobals1(int val1, int val2, int val3, int val4, int val5,
- int val6, int val7, int val8, int val9, int val10,
- int val11, int val12, int val13, int val14, int val15,
- int val16, int val17, int val18, int val19, int val20,
- int val21);
+ int val6, int val7 = 0, int val8 = 0, int val9 = 0, int val10 = 0,
+ int val11 = 0, int val12 = 0, int val13 = 0, int val14 = 0, int val15 = 0,
+ int val16 = 0, int val17 = 0, int val18 = 0, int val19 = 0, int val20 = 0,
+ int val21 = 0);
void sendWSMessage_10000(int val1, machine *recv, int val2, int val3,
int val4, int trigger, int val9, int val6, int val7, int val8);
@@ -66,6 +66,8 @@ protected:
void sendWSMessage_110000(int trigger);
void sendWSMessage_140000(machine *walker, int trigger);
void sendWSMessage_140000(int trigger);
+ void sendWSMessage_150000(machine *walker, int trigger);
+ void sendWSMessage_150000(int trigger);
int _roomVal1 = 0; // TODO: deprecate
diff --git a/engines/m4/riddle/rooms/section3/room301.cpp b/engines/m4/riddle/rooms/section3/room301.cpp
index 1fe02699d21..c34362154b8 100644
--- a/engines/m4/riddle/rooms/section3/room301.cpp
+++ b/engines/m4/riddle/rooms/section3/room301.cpp
@@ -35,14 +35,14 @@ void Room301::preload() {
}
void Room301::init() {
- _G(flags)[V000] = 1;
+ _G(globals)[V000] = 1;
digi_preload("950_s01");
if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
_val1 = 0;
_val2 = 0;
_soundName = nullptr;
- _val4 = 0;
+ _nextSound = nullptr;
_val5 = -1;
_val6 = 2;
_val7 = 2;
@@ -81,7 +81,7 @@ void Room301::init() {
player_set_commands_allowed(false);
ws_demand_location(55, 270, 3);
- if (_val12 || (!player_been_here(401) && _G(flags)[V092] && !_G(flags)[V093])) {
+ if (_val12 || (!player_been_here(401) && _G(globals)[V092] && !_G(globals)[V093])) {
ws_walk(352, 269, nullptr, 60, 3);
} else if (!player_been_here(301)) {
digi_preload("301r37");
@@ -96,7 +96,165 @@ void Room301::init() {
}
void Room301::daemon() {
- // TODO
+ switch (_G(kernel).trigger) {
+ case 203:
+ setGlobals1(_ripTrekArms, 1, 15, 15, 15, 1);
+ sendWSMessage_110000(-1);
+ digi_play("301r22", 1, 255, 204);
+ break;
+
+ case 204:
+ digi_play("301s02", 1, 255, 205);
+ _val17 = 1;
+ break;
+
+ case 205:
+ _val17 = 0;
+ kernel_timing_trigger(60, 206);
+ break;
+
+ case 206:
+ disable_player_commands_and_fade_init(207);
+ break;
+
+ case 207:
+ sendWSMessage_150000(208);
+ break;
+
+ case 208:
+ ws_demand_facing(3);
+ kernel_timing_trigger(1, 209);
+ break;
+
+ case 209:
+ _G(game).setRoom(413);
+ break;
+
+ case 300:
+ terminateMachineAndNull(_machine1);
+ _machine4 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, 0,
+ triggerMachineByHashCallbackNegative, "rip");
+ sendWSMessage_10000(1, _machine4, _agentStander, 7,
+ 1, 304, _agentStander, 1, 1, 0);
+ break;
+
+ case 304:
+ ws_hide_walker();
+ sendWSMessage(1, _machine4, _agentTakesTelegram,
+ 1, 53, 305, _agentTakesTelegram, 53, 53, 0);
+ break;
+
+ case 305:
+ kernel_timing_trigger(1, 990);
+ inv_give_to_player("MESSAGE LOG");
+ break;
+
+ case 320:
+ sendWSMessage(1, _machine4, _agentTakesTelegram,
+ 54, 63, 322, _agentTakesTelegram, 63, 63, 0);
+ break;
+
+ case 322:
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ 10, 1, 324, _ripTrekTravel, 1, 1, 0);
+ _machine1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, 0,
+ triggerMachineByHashCallbackNegative, "guy behind desk");
+ _val13 = 0;
+ _val14 = 0;
+ sendWSMessage_10000(1, _machine1, _agentStander, 1,
+ 1, 10, _agentStander, 1, 1, 0);
+ break;
+
+ case 324:
+ terminateMachineAndNull(_machine4);
+ ws_unhide_walker();
+ kernel_timing_trigger(1, 1000);
+ break;
+
+ case 990:
+ _digiSound1 = _digiSound2 = 0;
+ _digiSound3 = _digiSound4 = 0;
+
+ if (_val12 <= 0) {
+ kernel_timing_trigger(1, 320);
+ } else if (_nextSound) {
+ _digiSound1 = _nextSound;
+ _nextSound = nullptr;
+ kernel_timing_trigger(1, 991);
+ } else if (_G(globals)[V365] == 1) {
+ _digiSound1 = "201R61";
+ _G(globals)[V365] = 0;
+ kernel_timing_trigger(1, 991);
+ } else if (_G(globals)[V366] == 1) {
+ _digiSound1 = "401R31";
+ _G(globals)[V366] = 0;
+ kernel_timing_trigger(1, 991);
+ } else if (_G(globals)[V373] == 1) {
+ _digiSound1 = "401R36";
+ _G(globals)[V373] = 0;
+ kernel_timing_trigger(1, 991);
+ } else if (_G(globals)[V371] == 1) {
+ _digiSound1 = "501R03C";
+ _G(globals)[V371] = 0;
+ kernel_timing_trigger(1, 991);
+ } else if (_G(globals)[V372] == 1) {
+ _digiSound1 = "701R39";
+ _digiSound2 = "701R39A";
+ _G(globals)[V372] = 0;
+ kernel_timing_trigger(1, 991);
+ }
+ break;
+
+ case 991:
+ if (_digiSound1)
+ digi_play(_digiSound1, 1, 255, 993);
+ else
+ kernel_timing_trigger(1, 993);
+ break;
+
+ case 993:
+ if (_digiSound2)
+ digi_play(_digiSound2, 1, 255, 994);
+ else
+ kernel_timing_trigger(1, 994);
+ break;
+
+ case 994:
+ if (_digiSound3)
+ digi_play(_digiSound3, 1, 255, 995);
+ else
+ kernel_timing_trigger(1, 995);
+ break;
+
+ case 995:
+ if (_digiSound4)
+ digi_play(_digiSound4, 1, 255, 996);
+ else
+ kernel_timing_trigger(1, 996);
+ break;
+
+ case 996:
+ if (--_val12 == 0)
+ kernel_timing_trigger(1, 320);
+ else
+ kernel_timing_trigger(1, 990);
+ break;
+
+ case 999:
+ kernel_timing_trigger(1, !_val12 ? 1000 : 300);
+ break;
+
+ case 1000:
+ if (!player_been_here(401) && _G(globals)[V092]
+ && !_G(globals)[V093]) {
+ _G(globals)[V092] = 0;
+ _G(globals)[V093] = 1;
+ kernel_timing_trigger(30, 65);
+ }
+
+ player_set_commands_allowed(true);
+ break;
+ }
}
void Room301::pre_parser() {
diff --git a/engines/m4/riddle/rooms/section3/room301.h b/engines/m4/riddle/rooms/section3/room301.h
index 1333b65aa3a..f9df7d1ccd3 100644
--- a/engines/m4/riddle/rooms/section3/room301.h
+++ b/engines/m4/riddle/rooms/section3/room301.h
@@ -33,7 +33,7 @@ private:
int _val1 = 0;
int _val2 = 0;
const char *_soundName = nullptr;
- int _val4 = 0;
+ const char *_nextSound = nullptr;
int _val5 = -1;
int _val6 = 2;
int _val7 = 2;
@@ -65,6 +65,10 @@ private:
machine *_machine2 = nullptr;
machine *_machine3 = nullptr;
machine *_machine4 = nullptr;
+ const char *_digiSound1 = nullptr;
+ const char *_digiSound2 = nullptr;
+ const char *_digiSound3 = nullptr;
+ const char *_digiSound4 = nullptr;
void conv301a();
Commit: 60ddbb34248eb97f25acdced058c3bda46bca708
https://github.com/scummvm/scummvm/commit/60ddbb34248eb97f25acdced058c3bda46bca708
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-07-25T22:14:26-07:00
Commit Message:
M4: RIDDLE: More room 301 daemon
Changed paths:
engines/m4/riddle/rooms/room.cpp
engines/m4/riddle/rooms/room.h
engines/m4/riddle/rooms/section3/room301.cpp
engines/m4/riddle/rooms/section3/room301.h
engines/m4/riddle/vars.h
diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 1418486f291..a41696f1bb8 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -218,6 +218,16 @@ void Room::sendWSMessage_150000(int trigger) {
sendWSMessage_150000(_G(my_walker), trigger);
}
+void Room::sendWSMessage_190000(machine *recv, int trigger) {
+ _G(globals)[V023] = trigger << 16;
+ sendWSMessage(0x190000, 0, recv, 0, nullptr, 1);
+}
+
+void Room::sendWSMessage_1a0000(machine *recv, int trigger) {
+ _G(globals)[V024] = trigger << 16;
+ sendWSMessage(0x1a0000, 0, recv, 0, nullptr, 1);
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index d64bf3f2608..00c589745d5 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -68,6 +68,8 @@ protected:
void sendWSMessage_140000(int trigger);
void sendWSMessage_150000(machine *walker, int trigger);
void sendWSMessage_150000(int trigger);
+ void sendWSMessage_190000(machine *recv, int trigger);
+ void sendWSMessage_1a0000(machine *recv, int trigger);
int _roomVal1 = 0; // TODO: deprecate
diff --git a/engines/m4/riddle/rooms/section3/room301.cpp b/engines/m4/riddle/rooms/section3/room301.cpp
index c34362154b8..299dcbd2972 100644
--- a/engines/m4/riddle/rooms/section3/room301.cpp
+++ b/engines/m4/riddle/rooms/section3/room301.cpp
@@ -96,7 +96,234 @@ void Room301::init() {
}
void Room301::daemon() {
+ int frame;
+
switch (_G(kernel).trigger) {
+ // TODO: More cases
+
+ case 21:
+ if (!_val19) {
+ switch (_val15) {
+ case 0:
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ 10, 10, 20, _ripTrekTravel, 10, 10, 0);
+ break;
+
+ case 1:
+ frame = imath_ranged_rand(11, 19);
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ frame, frame, 20, _ripTrekTravel, frame, frame, 0);
+ sendWSMessage_190000(_machine4, 13);
+ sendWSMessage_1a0000(_machine4, 13);
+ break;
+
+ case 2:
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ 20, 26, 20, _ripTrekTravel, 10, 10, 0);
+ break;
+
+ case 3:
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ 37, 50, 20, _ripTrekTravel, 10, 10, 0);
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _machine4, _ripTrekTravel,
+ 9, 1, 22, _ripTrekTravel, 1, 1, 0);
+ break;
+
+ case 5:
+ _G(kernel).trigger_mode = KT_PARSE;
+ conv_load("conv301a", 10, 10, 747, player_commands_allowed());
+ _val1 = 0;
+
+ conv_export_value(conv_get_handle(), _G(globals)[V088] >= 3 ? 1 : 0, 0);
+ conv_export_value(conv_get_handle(), _G(globals)[V056], 1);
+ conv_export_value(conv_get_handle(), _G(globals)[V110], 2);
+ conv_export_pointer(conv_get_handle(), &_val1, 5);
+
+ if (player_been_here(201))
+ conv_export_value(conv_get_handle(), 2, 6);
+
+ conv_play(conv_get_handle());
+ _val15 = 0;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 20);
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case 22:
+ terminateMachineAndNull(_machine4);
+ terminateMachineAndNull(_machine3);
+ ws_unhide_walker();
+ player_set_commands_allowed(true);
+ break;
+
+ case 25:
+ sendWSMessage_10000(1, _machine1, _agentSlidesPaper, 50, 64, 26,
+ _agentSlidesPaper, 64, 64, 0);
+ digi_play("950_s35", 2);
+ break;
+
+ case 26:
+ sendWSMessage_10000(1, _machine1, _agentSlidesPaper, 49, 1, 27,
+ _agentStander, 1, 1, 0);
+ break;
+
+ case 27:
+ sendWSMessage_10000(1, _machine1, _agentTakesMoney, 52, 9, 28,
+ _agentTakesMoney, 9, 9, 0);
+ _val14 = 4;
+ _val13 = 4;
+ _val8 = 0;
+ _val15 = 0;
+ break;
+
+ case 28:
+ conv_resume();
+ kernel_timing_trigger(1, 13);
+ break;
+
+ case 51:
+ digi_unload("301r37");
+ setGlobals1(_ripTrekHandTalk3, 1, 7, 7, 7, 1);
+ sendWSMessage_110000(52);
+ digi_play("301r01", 1, 255, 53);
+ break;
+
+ case 52:
+ sendWSMessage_140000(-1);
+ break;
+
+ case 53:
+ _val14 = 6;
+ _soundName = "301a01";
+ _val16 = 56;
+ break;
+
+ case 56:
+ _val14 = 3;
+ kernel_timing_trigger(1, 11);
+ player_set_commands_allowed(true);
+ break;
+
+ case 60:
+ setGlobals1(_ripTrekHandTalk3, 1, 7, 7, 7, 1);
+ sendWSMessage_110000(62);
+ digi_play("301r01", 1);
+ break;
+
+ case 62:
+ sendWSMessage_140000(63);
+ break;
+
+ case 63:
+ _val14 = 6;
+ _val7 = 2;
+ _soundName = "301a01";
+ _val16 = 72;
+ break;
+
+ case 64:
+ if (_val12) {
+ _val14 = 5;
+ _soundName = (_val12 == 1) ? "301a03" : "301a04";
+ _val7 = 2;
+ _val16 = 71;
+ } else if (!player_been_here(401) && _G(globals)[V092] &&
+ !_G(globals)[V093]) {
+ kernel_timing_trigger(1, 1000);
+ }
+ break;
+
+ case 65:
+ _G(global301) = 0;
+ setGlobals1(_ripTrekTalker3, 1, 1, 1, 5, 1);
+ sendWSMessage_110000(68);
+ digi_play("301r01a", 1, 255, 68);
+ break;
+
+ case 68:
+ if (_G(global301) >= 1) {
+ _G(global301) = 0;
+ sendWSMessage_140000(-1);
+ _val14 = 0;
+ _soundName = "301a04a";
+ _val16 = 70;
+ } else {
+ ++_G(global301);
+ }
+ break;
+
+ case 70:
+ _val14 = 0;
+ player_set_commands_allowed(true);
+ break;
+
+ case 71:
+ _val14 = 0;
+ kernel_timing_trigger(1, 999);
+ break;
+
+ case 72:
+ _val14 = 4;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 11);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(10, 64);
+ break;
+
+ case 100:
+ sendWSMessage_10000(1, _machine1, _agentCheckingList, 8,
+ 1, 10, _agentStander, 1, 1, 0);
+ break;
+
+ case 200:
+ if (_val18 || _val17 || _val5 == -1) {
+ kernel_timing_trigger(1, 201);
+ } else {
+ kernel_trigger_dispatchx(_val5);
+ _val5 = -1;
+ }
+
+ case 201:
+ if (_val18 <= 0) {
+ if (_val17 <= 0) {
+ kernel_timing_trigger(30, 201);
+ } if (_val17 == 1) {
+ sendWSMessage_10000(1, _machine2, _marshalMatt, 17, 51, 201,
+ _marshalMatt, 51, 51, 0);
+ _val18 = 1;
+ _val17 = 1;
+ }
+ } else if (_val18 == 1) {
+ if (_val17 == 1) {
+ frame = imath_ranged_rand(52, 55);
+ sendWSMessage_10000(1, _machine2, _marshalMatt, frame, frame, 201,
+ _marshalMatt, frame, frame, 0);
+ sendWSMessage_190000(_machine2, 13);
+ sendWSMessage_1a0000(_machine2, 13);
+
+ } else {
+ sendWSMessage_10000(1, _machine2, _marshalMatt, 52, 52, 200,
+ _marshalMatt, 52, 52, 0);
+ }
+ }
+ break;
+
+ case 202:
+ digi_play("301s01", 1, 255, 203);
+ sendWSMessage_10000(1, _machine2, _marshalMatt, 4, 16, 201,
+ _marshalMatt, 16, 16, 0);
+ _val17 = 0;
+ _val18 = 0;
+ break;
+
case 203:
setGlobals1(_ripTrekArms, 1, 15, 15, 15, 1);
sendWSMessage_110000(-1);
diff --git a/engines/m4/riddle/rooms/section3/room301.h b/engines/m4/riddle/rooms/section3/room301.h
index f9df7d1ccd3..01bd4839191 100644
--- a/engines/m4/riddle/rooms/section3/room301.h
+++ b/engines/m4/riddle/rooms/section3/room301.h
@@ -30,7 +30,7 @@ namespace Rooms {
class Room301 : public Room {
private:
- int _val1 = 0;
+ int32 _val1 = 0;
int _val2 = 0;
const char *_soundName = nullptr;
const char *_nextSound = nullptr;
diff --git a/engines/m4/riddle/vars.h b/engines/m4/riddle/vars.h
index 7b1967f66da..00599689a06 100644
--- a/engines/m4/riddle/vars.h
+++ b/engines/m4/riddle/vars.h
@@ -53,6 +53,7 @@ public:
Riddle::Walker _walker;
Riddle::Hotkeys _hotkeys;
Riddle::GUI::Interface _interface;
+ int _global301 = 0;
public:
Vars();
More information about the Scummvm-git-logs
mailing list