[Scummvm-git-logs] scummvm master -> bfe61c83ae6732aa8dfd8dea02397282e83f9446
Strangerke
noreply at scummvm.org
Mon Feb 3 23:49:55 UTC 2025
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:
bfe61c83ae M4: RIDDLE: Partial implementation of Room809::daemon (up to trigger 32)
Commit: bfe61c83ae6732aa8dfd8dea02397282e83f9446
https://github.com/scummvm/scummvm/commit/bfe61c83ae6732aa8dfd8dea02397282e83f9446
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-04T00:49:24+01:00
Commit Message:
M4: RIDDLE: Partial implementation of Room809::daemon (up to trigger 32)
Changed paths:
engines/m4/riddle/rooms/section8/room809.cpp
engines/m4/riddle/rooms/section8/room809.h
diff --git a/engines/m4/riddle/rooms/section8/room809.cpp b/engines/m4/riddle/rooms/section8/room809.cpp
index fec23236ee9..6af223269ff 100644
--- a/engines/m4/riddle/rooms/section8/room809.cpp
+++ b/engines/m4/riddle/rooms/section8/room809.cpp
@@ -160,6 +160,219 @@ void Room809::parser() {
}
void Room809::daemon() {
+ switch (_G(kernel).trigger) {
+ case 2:
+ player_set_commands_allowed(true);
+ series_unload(S8_SHADOW_DIRS2[3]);
+ series_unload(S8_SHADOW_DIRS2[4]);
+ series_unload(S8_SHADOW_DIRS1[3]);
+ series_unload(S8_SHADOW_DIRS1[4]);
+
+ setGlobals3(_mcHandsBehindBackSeries, 1, 17);
+ sendWSMessage_3840000(_mcTrekMach, 38);
+ kernel_timing_trigger(60, 36, "verify mc's position");
+ _byte1A1988 = "MEI CHEN";
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN ", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN ", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN ", false);
+
+ break;
+
+ case 3:
+ g_engine->adv_camera_pan_step(2);
+ g_engine->camera_shift_xy(0, 0);
+ kernel_timing_trigger(60, 4, "finished pan?");
+
+ break;
+
+ case 4:
+ if (g_engine->game_camera_panning())
+ kernel_timing_trigger(60, 4, "finished pan?");
+ else
+ kernel_trigger_dispatchx(kernel_trigger_create(5));
+
+ break;
+
+ case 5:
+ ws_walk(_G(my_walker), 150, 315, nullptr, -1, 3, true);
+ DisposePath(_mcTrekMach->walkPath);
+ _mcTrekMach->walkPath = CreateCustomPath(106, 318, 160, 323, -1);
+ ws_custom_walk(_mcTrekMach, 3, 6, true);
+ _G(camera_reacts_to_player) = true;
+ g_engine->adv_camera_pan_step(10);
+ _dword1A1984 = 255;
+
+ break;
+
+ case 6:
+ if (_dword1A1984 <= 100) {
+ kernel_trigger_dispatchx(kernel_trigger_create(7));
+ } else {
+ _dword1A1984 = imath_max(100, _dword1A1984 - 10);
+ digi_change_panning(3, _dword1A1984);
+ kernel_timing_trigger(10, 6, "fade music");
+ }
+
+ break;
+
+ case 7:
+ kernel_timing_trigger(120, 8, nullptr);
+ break;
+
+ case 8:
+ digi_play("809_s01", 1, 120, -1, -1);
+ kernel_timing_trigger(45, 9, nullptr);
+
+ break;
+
+ case 9:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 10, 4, true);
+
+ break;
+
+ case 10:
+ kernel_timing_trigger(7, 11, nullptr);
+ break;
+
+ case 11:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 12, 5, true);
+
+ break;
+
+ case 12:
+ kernel_timing_trigger(7, 13, nullptr);
+ break;
+
+ case 13:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 14, 6, true);
+
+ break;
+
+ case 14:
+ kernel_timing_trigger(7, 15, nullptr);
+ break;
+
+ case 15:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 16, 7, true);
+
+ break;
+
+ case 16:
+ kernel_timing_trigger(7, 17, nullptr);
+ break;
+
+ case 17:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 18, 8, true);
+
+ break;
+
+ case 18:
+ kernel_timing_trigger(7, 19, nullptr);
+ break;
+
+ case 19:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 20, 9, true);
+
+ break;
+
+ case 20:
+ kernel_timing_trigger(60, 21, nullptr);
+ break;
+
+ case 21:
+ _809hallMach = series_play("809hall", 0, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+ kernel_timing_trigger(300, 22, nullptr);
+
+ break;
+
+ case 22:
+ terminateMachine(_809hallMach);
+ _809hallMach = series_play("809hall", 0, 2, 23, 5, 0, 100, 0, 0, 0, -1);
+
+ break;
+
+ case 23:
+ series_unload(_809hallSeries);
+ kernel_timing_trigger(30, 24, nullptr);
+
+ break;
+
+ case 24:
+ digi_play("809m01", 1, 255, 29, -1);
+ kernel_timing_trigger(90, 25, nullptr);
+
+ break;
+
+ case 25:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, -1, 8, true);
+ kernel_timing_trigger(7, 26, nullptr);
+
+ break;
+
+ case 26:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, -1, 7, true);
+ kernel_timing_trigger(7, 27, nullptr);
+
+ break;
+
+ case 27:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, -1, 6, true);
+ kernel_timing_trigger(7, 28, nullptr);
+
+ break;
+
+ case 28:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, -1, 5, true);
+
+ break;
+
+ case 29:
+ setGlobals1(_ripTalkerPos5Series, 1, 4, 1, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("809r01", 1, 255, 30, -1);
+
+ break;
+
+ case 30:
+ sendWSMessage_150000(_G(my_walker), -1);
+ setGlobals3(_ripTrekHeadTurnPos5Series, 8, 12);
+ sendWSMessage_3840000(_G(my_walker), -1);
+ kernel_timing_trigger(120, 31, nullptr);
+
+ break;
+
+ case 31:
+ setGlobals3(_ripTrekHeadTurnPos5Series, 12, 8);
+ sendWSMessage_3840000(_G(my_walker), 32);
+
+ break;
+
+ case 32:
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_walk(_G(my_walker), _G(player_info).x + 30, _G(player_info).y, nullptr, 34, 3, true);
+ series_unload(_ripTrekHeadTurnPos5Series);
+
+ break;
+
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ default:
+ break;
+ }
// TODO Not implemented yet
}
diff --git a/engines/m4/riddle/rooms/section8/room809.h b/engines/m4/riddle/rooms/section8/room809.h
index 8f82956b569..bc0ba60b676 100644
--- a/engines/m4/riddle/rooms/section8/room809.h
+++ b/engines/m4/riddle/rooms/section8/room809.h
@@ -47,6 +47,7 @@ private:
const char *_byte1A1988 = nullptr;
byte _byte1A1990[12]; // random size for the moment, enough for facings
+ int32 _dword1A1984 = 0;
int32 _dword1A1998 = 0;
@@ -56,8 +57,9 @@ private:
int32 _ripTrekHeadTurnPos5Series = 0;
machine *_809rp01Mach = nullptr;
+ machine *_809hallMach = nullptr;
machine *_mcTrekMach = nullptr;
-
+
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list