[Scummvm-git-logs] scummvm master -> c6e4e222218036530a361894082e513968341c8d
dreammaster
noreply at scummvm.org
Sat Aug 17 20:57:22 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c6e4e22221 M4: Added room 405 daemon
Commit: c6e4e222218036530a361894082e513968341c8d
https://github.com/scummvm/scummvm/commit/c6e4e222218036530a361894082e513968341c8d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-17T13:57:17-07:00
Commit Message:
M4: Added room 405 daemon
Changed paths:
engines/m4/riddle/rooms/section4/room405.cpp
engines/m4/riddle/rooms/section4/room405.h
diff --git a/engines/m4/riddle/rooms/section4/room405.cpp b/engines/m4/riddle/rooms/section4/room405.cpp
index a7b8433f2a3..831958fbb8c 100644
--- a/engines/m4/riddle/rooms/section4/room405.cpp
+++ b/engines/m4/riddle/rooms/section4/room405.cpp
@@ -112,6 +112,492 @@ void Room405::init() {
}
void Room405::daemon() {
+ int frame;
+
+ switch (_G(kernel).trigger) {
+ case 20:
+ digi_preload("405b01a");
+ _baronShakeSit = series_load("BARON SHAKES AND SITS");
+ _baronTalkLoop = series_load("BARON TALK LOOP");
+ _baronLeanForward = series_load("BARON LEAN FORWARD");
+ _baronTurnWalk = series_load("BARON TURNWALK");
+ _ripHandLetter = series_load("RIP HANDS BARON LETTER");
+ _ripTalkGesture = series_load("RIPLEY TALKGESTURE");
+ _ripLeanForward = series_load("RIPLEY LEAN FORWARD");
+ _lowReacher = series_load("RIP TREK MED REACH HAND POS1");
+ _ripHeadTurn = series_load("RIP TREK HEAD TURN POS3");
+
+ digi_preload("13_05n03");
+ digi_preload("13_03n01");
+ digi_preload("13_09p03");
+ setGlobals1(_ripHeadTurn, 6, 9, 9, 9, 0, 9, 6, 6, 6);
+ sendWSMessage_110000(-1);
+ kernel_timing_trigger(50, 21);
+ sendWSMessage_10000(_baron, 284, 324, 1, 22, 1);
+ break;
+
+ case 21:
+ sendWSMessage_120000(-1);
+ break;
+
+ case 22:
+ ws_demand_location(286, 324, 7);
+ ws_hide_walker();
+ sendWSMessage_150000(-1);
+ _baronWalker = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0x600, 0,
+ triggerMachineByHashCallbackNegative, "BARON talks rip");
+ sendWSMessage_10000(1, _baronWalker, _baronShakeSit, 1, 48, 23,
+ _baronShakeSit, 48, 48, 0);
+ digi_play("405b01", 1);
+ break;
+
+ case 23:
+ sendWSMessage_10000(1, _baronWalker, _baronShakeSit, 48, 100, 24,
+ _baronShakeSit, 100, 100, 0);
+ break;
+ digi_play("405b01a", 1, 255, 25);
+ break;
+
+ case 24:
+ _ripTalksBaron = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0x600, 0,
+ triggerMachineByHashCallbackNegative, "rip talks baron");
+ _val5 = 1000;
+ _val6 = 1103;
+ kernel_timing_trigger(1, 102);
+ _val7 = 2000;
+ _val8 = 2101;
+ kernel_timing_trigger(1, 110);
+ break;
+
+
+ case 25:
+ digi_play("405b02", 1, 255, 26);
+ break;
+
+ case 26:
+ _val8 = 2102;
+ _val6 = 1102;
+ digi_play("405r01", 1, 255, 27);
+ break;
+
+ case 27:
+ _val6 = 1104;
+ _val8 = 2101;
+ digi_play("405b03", 1, 255, 28);
+ break;
+
+ case 28:
+ _val8 = 2103;
+ kernel_timing_trigger(10, 29);
+ break;
+
+ case 29:
+ terminateMachineAndNull(_baronWalker);
+ sendWSMessage_10000(1, _ripTalksBaron, _ripHandLetter, 1, 15, 30,
+ _ripHandLetter, 15, 15, 0);
+ break;
+
+ case 30:
+ digi_preload("950_s06");
+ sendWSMessage_10000(1, _ripTalksBaron, _ripHandLetter, 16, 29, -1,
+ _ripHandLetter, 29, 29, 0);
+ digi_play("405r02", 1, 255, 31);
+ digi_play("950_s06", 2, 255, -1, 950);
+ break;
+
+ case 31:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripHandLetter, 30, 84, -1,
+ _ripHandLetter, 84, 84, 0);
+ break;
+
+ case 32:
+ digi_play("405b04", 1, 255, 33);
+ break;
+
+ case 33:
+ digi_play("405b03", 1, 255, 34);
+ break;
+
+ case 34:
+ digi_play("405b05", 1, 255, 35);
+ break;
+
+ case 35:
+ digi_play("950_s06", 2, 255, -1, 950);
+ sendWSMessage_10000(1, _ripTalksBaron, _ripHandLetter, 85, 98, 36,
+ _ripHandLetter, 98, 98, 0);
+ break;
+
+ case 36:
+ _baronWalker = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0x600, 0,
+ triggerMachineByHashCallbackNegative, "BARON talks rip");
+ sendWSMessage_10000(1, _baronWalker, _baronTalkLoop, 1, 1, 110,
+ _baronTalkLoop, 1, 1, 0);
+ kernel_timing_trigger(1, 37);
+ break;
+
+ case 37:
+ digi_play("405b05a", 1, 255, 38);
+ _val8 = 2101;
+ kernel_timing_trigger(1, 110);
+ break;
+
+ case 38:
+ _val8 = 2102;
+ sendWSMessage_10000(1, _ripTalksBaron, _ripHandLetter, 15, 1, 39,
+ _ripHandLetter, 1, 1, 0);
+ break;
+
+ case 39:
+ _val5 = 1000;
+ _val6 = 1100;
+ kernel_timing_trigger(1, 102);
+ break;
+
+ case 40:
+ kernel_timing_trigger(1, 60);
+ break;
+
+ case 50:
+ case 69:
+ player_set_commands_allowed(true);
+ break;
+
+ case 61:
+ digi_play("13_15n07", 1, 255, 62);
+ break;
+
+ case 62:
+ sendWSMessage_10000(1, _baronWalker, _baronTurnWalk, 58, 79, 63,
+ _baronTurnWalk, 80, 82, 4);
+ sendWSMessage_1a0000(_baronWalker, 11);
+ break;
+
+ case 63:
+ digi_play("13_20p01", 1, 255, 64);
+ break;
+
+ case 64:
+ sendWSMessage_10000(1, _baronWalker, _baronTurnWalk, 83, 99, 65,
+ _baronTurnWalk, 99, 99, 0);
+ break;
+
+ case 65:
+ ws_unhide_walker(_baron);
+ ws_unhide_walker();
+ setGlobals1(_ripHeadTurn, 6, 9, 9, 9, 0, 9, 6, 6, 6);
+ sendWSMessage_110000(-1);
+ terminateMachineAndNull(_baronWalker);
+ sendWSMessage_10000(_baron, 185, 365, 9, 66, 1);
+ break;
+
+ case 66:
+ sendWSMessage_60000(_baron);
+ digi_play("13_20n01", 1, 255, 67);
+ sendWSMessage_120000(68);
+ break;
+
+ case 67:
+ digi_play("405_s01", 2, 255, 69);
+ break;
+
+ case 68:
+ sendWSMessage_150000(-1);
+ break;
+
+ case 100:
+ kernel_timing_trigger(1, 102);
+ break;
+
+ case 101:
+ _val8 = 2163;
+ break;
+
+ case 102:
+ if (_val2 != -1) {
+ kernel_timing_trigger(1, _val2);
+ _val2 = -1;
+ } else {
+ kernel_timing_trigger(1, 103);
+ }
+ break;
+
+ case 103:
+ if (_val5 == 1000) {
+ switch (_val6) {
+ case 1100:
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _ripTalksBaron, _ripTalkGesture, 13, 13, 102,
+ _ripTalkGesture, 13, 13, 0);
+ _val6 = 1101;
+ _val7 = 2000;
+ _val8 = 2100;
+ kernel_timing_trigger(1, 110);
+ break;
+
+ case 1101:
+ _val6 = 1103;
+ kernel_timing_trigger(1, 102);
+
+ conv_load("conv405a", 10, 10, 101);
+ conv_export_pointer_curr(&_G(flags)[V115], 0);
+ conv_export_pointer_curr(&_G(flags)[V314], 1);
+ conv_play();
+ break;
+
+ case 1102:
+ frame = imath_ranged_rand(13, 16);
+ sendWSMessage_10000(1, _ripTalksBaron, _ripTalkGesture, frame, frame, 102,
+ _ripTalkGesture, frame, frame, 0);
+ break;
+
+ case 1103:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripTalkGesture, 13, 13, 102,
+ _ripTalkGesture, 13, 13, 0);
+ break;
+
+ case 1104:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripTalkGesture, 13, 13, -1,
+ _ripTalkGesture, 13, 13, 0);
+ break;
+
+ case 1220:
+ _G(kernel).call_daemon_every_loop = true;
+ _response = series_stream("RIP DONT I KNOW", 4, 0, 103);
+ series_stream_break_on_frame(_response, 9, 103);
+ _val6 = 1221;
+ break;
+
+ case 1221:
+ if (!_sound2.empty()) {
+ digi_play(_sound2.c_str(), 1);
+ _sound2.clear();
+ }
+
+ _G(kernel).call_daemon_every_loop = false;
+ _val6 = 1222;
+ break;
+
+ case 1222:
+ _val6 = 1103;
+ kernel_timing_trigger(1, 102);
+ conv_resume();
+ break;
+
+ case 1230:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripLeanForward, 1, 16, 103,
+ _ripLeanForward, 16, 16, 0);
+ _val6 = 1232;
+ break;
+
+ case 1232:
+ _val6 = 1233;
+
+ if (!_sound2.empty()) {
+ digi_play(_sound2.c_str(), 1, 255, 103);
+ _sound2.clear();
+ }
+ break;
+
+ case 1233:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripLeanForward, 16, 1, 102,
+ _ripLeanForward, 1, 1, 0);
+ _val6 = 1103;
+ conv_resume();
+ break;
+
+ case 2110:
+ sendWSMessage_10000(1, _ripTalksBaron, _ripTalkGesture, 13, 42, 103,
+ _ripTalkGesture, 42, 42, 0);
+ _val6 = 2112;
+
+ if (!_sound2.empty()) {
+ _G(kernel).trigger_mode = KT_PARSE;
+ digi_play(_sound2.c_str(), 1);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ _sound2.clear();
+ }
+ break;
+
+ case 2112:
+ _val6 = 1102;
+ kernel_timing_trigger(1, 102);
+ conv_resume();
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case 110:
+ if (_val7 == 2000) {
+ if (_val4 != -1) {
+ kernel_timing_trigger(1, _val4);
+ _val4 = -1;
+ } else {
+ kernel_timing_trigger(1, 111);
+ }
+ }
+ break;
+
+ case 111:
+ if (_val7 == 2000) {
+ switch (_val8) {
+ case 2100:
+ case 2102:
+ sendWSMessage_10000(1, _baronWalker, _baronTalkLoop, 1, 1, 110,
+ _baronTalkLoop, 1, 1, 0);
+ _val8 = 2102;
+ break;
+
+ case 2101:
+ frame = imath_ranged_rand(4, 9);
+ sendWSMessage_10000(1, _baronWalker, _baronTalkLoop, frame, frame, 110,
+ _baronTalkLoop, frame, frame, 0);
+ break;
+
+ case 2103:
+ sendWSMessage_10000(1, _baronWalker, _baronTalkLoop, 1, 1, -1,
+ _baronTalkLoop, 1, 1, 0);
+
+ case 2110:
+ _G(kernel).call_daemon_every_loop = true;
+ _response = series_stream("Baron sport is life", 5, 0, 111);
+ series_stream_break_on_frame(_response, 3, 111);
+ _val8 = 2111;
+ break;
+
+ case 2111:
+ if (!_sound1.empty()) {
+ digi_play(_sound1.c_str(), 1);
+ _sound1.clear();
+ }
+
+ _G(kernel).call_daemon_every_loop = false;
+ _val8 = 2112;
+ break;
+
+ case 2112:
+ case 2153:
+ _val8 = 2102;
+ kernel_timing_trigger(1, 110);
+ conv_resume();
+ break;
+
+ case 2120:
+ _G(kernel).call_daemon_every_loop = true;
+ _response = series_stream("BARON WORLD WAR", 6, 0, 111);
+ series_stream_break_on_frame(_response, 4, 111);
+ _val8 = 2121;
+ break;
+
+ case 2121:
+ if (!_sound1.empty()) {
+ digi_play(_sound1.c_str(), 1);
+ _sound1.clear();
+ }
+
+ _val8 = 2122;
+ _G(kernel).call_daemon_every_loop = false;
+ break;
+
+ case 2122:
+ kernel_timing_trigger(1, 666);
+ break;
+
+ case 2123:
+ _val8 = 2152;
+ kernel_timing_trigger(1, 110);
+ _val6 = 1103;
+ kernel_timing_trigger(1, 102);
+ break;
+
+ case 2140:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 1, 11, -1,
+ _baronLeanForward, 12, 18, 1);
+ _val8 = 2142;
+
+ if (!_sound1.empty()) {
+ digi_play(_sound1.c_str(), 1, 255, 111);
+ _sound1.clear();
+ }
+ break;
+
+ case 2142:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 11, 11, 111,
+ _baronLeanForward, 11, 11, 0);
+ _val8 = 2162;
+ break;
+
+ case 2150:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 11, 11, -1,
+ _baronLeanForward, 12, 18, 1);
+
+ if (!_sound1.empty()) {
+ digi_play(_sound1.c_str(), 1, 255, 111);
+ _sound1.clear();
+ }
+ break;
+
+ case 2152:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 12, 1, 111,
+ _baronLeanForward, 1, 1, 0);
+ _val8 = 2153;
+ break;
+
+ case 2161:
+ frame = imath_ranged_rand(12, 18);
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, frame, frame, 110,
+ _baronLeanForward, frame, frame, 0);
+ break;
+
+ case 2162:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 11, 11, 111,
+ _baronLeanForward, 11, 11, 0);
+ _val8 = 2162;
+ break;
+
+ case 2163:
+ terminateMachineAndNull(_ripTalksBaron);
+ sendWSMessage_10000(1, _baronWalker, _baronTurnWalk, 1, 57, 61,
+ _baronTurnWalk, 77, 79, 4);
+ sendWSMessage_1a0000(_baronWalker, 11);
+ break;
+
+ case 2171:
+ sendWSMessage_10000(1, _baronWalker, _baronLeanForward, 12, 1, 111,
+ _baronLeanForward, 1, 1, 0);
+ _val8 = 2102;
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case 666:
+ _response = series_stream("RIP WAR REACTION", 5, 0, 111);
+ series_stream_break_on_frame(_response, 4, 667);
+ _val8 = 2123;
+ break;
+
+ case 667:
+ series_stream_check_series(_response, 15);
+ series_stream_break_on_frame(_response, 10, 668);
+ break;
+
+ case 668:
+ series_stream_check_series(_response, 5);
+ ws_OverrideCrunchTime(_response);
+ break;
+
+ default:
+ break;
+ }
}
void Room405::pre_parser() {
diff --git a/engines/m4/riddle/rooms/section4/room405.h b/engines/m4/riddle/rooms/section4/room405.h
index ed1493a5efb..41ec8dd93fd 100644
--- a/engines/m4/riddle/rooms/section4/room405.h
+++ b/engines/m4/riddle/rooms/section4/room405.h
@@ -46,9 +46,20 @@ private:
machine *_candles = nullptr;
machine *_bankNote = nullptr;
machine *_baron = nullptr;
+ machine *_baronWalker = nullptr;
+ machine *_ripTalksBaron = nullptr;
+ machine *_response = nullptr;
int _currentNode = 0;
Common::String _sound1;
Common::String _sound2;
+ int _baronShakeSit = 0;
+ int _baronTalkLoop = 0;
+ int _baronLeanForward = 0;
+ int _baronTurnWalk = 0;
+ int _ripHandLetter = 0;
+ int _ripTalkGesture = 0;
+ int _ripLeanForward = 0;
+ int _ripHeadTurn = 0;
void conv405a();
void conv405a1();
More information about the Scummvm-git-logs
mailing list