[Scummvm-git-logs] scummvm master -> d0ae2bfd2bf9216b33c6d94cc68ee10b0b02293f
Strangerke
noreply at scummvm.org
Wed Oct 23 07:08:36 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:
d0ae2bfd2b M4: RIDDLE: Partial implementation of room 806 (daemon)
Commit: d0ae2bfd2bf9216b33c6d94cc68ee10b0b02293f
https://github.com/scummvm/scummvm/commit/d0ae2bfd2bf9216b33c6d94cc68ee10b0b02293f
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-10-23T09:08:14+01:00
Commit Message:
M4: RIDDLE: Partial implementation of room 806 (daemon)
Changed paths:
engines/m4/riddle/rooms/section8/room806.cpp
engines/m4/riddle/rooms/section8/room806.h
diff --git a/engines/m4/riddle/rooms/section8/room806.cpp b/engines/m4/riddle/rooms/section8/room806.cpp
index 250ea1b6f33..7ca2cd9b86e 100644
--- a/engines/m4/riddle/rooms/section8/room806.cpp
+++ b/engines/m4/riddle/rooms/section8/room806.cpp
@@ -321,6 +321,478 @@ void Room806::parser() {
}
void Room806::daemon() {
+ switch (_G(kernel).trigger) {
+ case 101:
+ ws_hide_walker(_mcTrekMach);
+ _candlemanShadow3Mach = series_show("CANDLEMAN SHADOW3", 32767, 16, -1, -1, 0, 84, 225, 306);
+ series_play("806MC01", 1792, 0, 102, 5, 0, 100, 0, 0, 0, 23);
+
+ break;
+
+ case 102:
+ digi_play("806m01", 1, 255, 106, -1);
+ series_play("806MC01", 1792, 0, 103, 5, 0, 100, 0, 0, 24, 39);
+
+ break;
+
+ case 103:
+ terminateMachine(_806rp01Mach);
+ _806rp01Mach = series_play("806RP01", 256, 16, -1, 5, 0, 100, 0, 0, 3, 6);
+ _806mc01Mach = series_play("806MC01", 1792, 16, -1, 5, 0, 100, 0, 0, 40, -1);
+
+ break;
+
+ case 106:
+ digi_play("806r01", 1, 255, 107, -1);
+ break;
+
+ case 107:
+ digi_play("806m02", 1, 255, 111, -1);
+ terminateMachine(_806mc01Mach);
+ series_play("806MC01", 1792, 2, 108, 5, 0, 100, 0, 0, 41, -1);
+
+ break;
+
+ case 108:
+ terminateMachine(_806rp01Mach);
+ _806rp01Mach = series_play("806RP01", 256, 16, -1, 5, 0, 100, 0, 0, 7, 14);
+ series_play("806MC01", 1792, 2, 110, 5, 0, 100, 0, 0, 24, 40);
+
+ break;
+
+ case 110:
+ _806mc01Mach = series_show("806MC01", 1792, 16, -1, -1, 24, 100, 0, 0);
+ break;
+
+ case 111:
+ digi_play("806r02", 1, 255, 112, -1);
+ break;
+
+ case 112:
+ digi_play("806m03", 1, 255, 12014, -1);
+ kernel_timing_trigger(1, 114, nullptr);
+ terminateMachine(_806mc01Mach);
+ series_play("806MC01", 1792, 2, 113, 5, 0, 100, 0, 0, 0, 23);
+
+ break;
+
+ case 113:
+ terminateMachine(_candlemanShadow3Mach);
+ ws_unhide_walker(_G(my_walker));
+
+ break;
+
+ case 114:
+ terminateMachine(_806rp01Mach);
+ series_play("806RP01", 256, 0, 115, 5, 0, 100, 0, 0, 14, -1);
+
+ break;
+
+ case 115:
+ terminateMachine(_safariShadow3Mach);
+ setGlobals1(_ripPos3LookAroundSeries, 1, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ ws_unhide_walker(_G(my_walker));
+ sendWSMessage_110000(_G(my_walker), 116);
+
+ break;
+
+ case 116:
+ sendWSMessage_140000(_G(my_walker), 117);
+ break;
+
+ case 117:
+ _G(flags[265]) = 1;
+ _G(flags[256]) = 1;
+ series_unload(_806rp01Series);
+ series_unload(_806mc01Series);
+ digi_unload("806m01");
+ digi_unload("806r01");
+ digi_unload("806m02");
+ digi_unload("806r02");
+ digi_unload("806m03");
+ player_set_commands_allowed(true);
+ _unkVar1 = 0;
+ _unkVar3 = 0;
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 201, nullptr);
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 701, nullptr);
+
+ break;
+
+ case 201:
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (!_unkVar1 && player_commands_allowed() && checkStrings()) {
+ _unkVar1 = 1;
+ player_set_commands_allowed(false);
+ intr_cancel_sentence();
+ switch (imath_ranged_rand(1, 4)) {
+ case 1:
+ digi_play("950_s15", 2, 255, -1);
+ break;
+
+ case 2:
+ digi_play("950_s16", 2, 255, -1);
+ break;
+
+ case 3:
+ digi_play("950_s17", 2, 255, -1);
+ break;
+
+ case 4:
+ digi_play("950_s18", 2, 255, -1);
+ break;
+
+ default:
+ break;
+ }
+
+ if (_G(player_info).facing >= 1 && _G(player_info).facing <= 5)
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 205, 3, true);
+ else if (_G(player_info).facing > 5 && _G(player_info).facing <= 11)
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 205, 9, true);
+
+ } else if (_G(flags[269]))
+ kernel_timing_trigger(60, 201, nullptr);
+
+ break;
+
+ case 205:
+ switch (imath_ranged_rand(1, 5)) {
+ case 1:
+ _unkVar4 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+
+ break;
+
+ case 2:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 1, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 210);
+
+ break;
+
+ case 3:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 6, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 211);
+
+ break;
+
+ case 4:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 1, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 212);
+
+ break;
+
+ case 5:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 1, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 220);
+
+ break;
+
+ default:
+ break;
+ }
+
+ if (_unkVar2) {
+ sendWSMessage_140000(_mcTrekMach, 50);
+ _unkVar5 = 1;
+ } else {
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ _unkVar5 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+ break;
+
+ case 2:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 1, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 213);
+ break;
+
+ case 3:
+ setGlobals1(_meiTrekHeadTurnPos3Series, 6, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 214);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ break;
+
+ case 210:
+ sendWSMessage_140000(_G(my_walker), 215);
+ break;
+
+ case 211:
+ sendWSMessage_140000(_G(my_walker), 216);
+ break;
+
+ case 212:
+ _unkVar4 = 1;
+ sendWSMessage_150000(_G(my_walker), 250);
+ break;
+
+ case 213:
+ sendWSMessage_140000(_mcTrekMach, 218);
+ break;
+
+ case 214:
+ sendWSMessage_140000(_mcTrekMach, 219);
+ break;
+
+ case 215:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ setGlobals1(_ripTrekHeadTurnPos3Series, 6, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 220);
+
+ break;
+
+ case 2:
+ _unkVar4 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 216:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ setGlobals1(_ripTrekHeadTurnPos3Series, 1, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 220);
+
+ break;
+
+ case 2:
+ _unkVar4 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 218:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ setGlobals1(_ripTrekHeadTurnPos3Series, 6, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 223);
+
+ break;
+
+ case 2:
+ _unkVar5 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 219:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ setGlobals1(_ripTrekHeadTurnPos3Series, 1, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 224);
+
+ break;
+
+ case 2:
+ _unkVar5 = 1;
+ kernel_timing_trigger(1, 250, nullptr);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 220:
+ _unkVar4 = 1;
+ sendWSMessage_140000(_G(my_walker), 250);
+
+ break;
+
+ case 223:
+ case 224:
+ _unkVar5 = 1;
+ sendWSMessage_140000(_mcTrekMach, 250);
+ break;
+
+ case 250:
+ player_set_commands_allowed(true);
+ if (_unkVar4 && _unkVar5) {
+ _unkVar4 = 0;
+ _unkVar5 = 0;
+ kernel_timing_trigger(1, imath_ranged_rand(260, 263));
+ }
+
+ break;
+
+ case 260:
+ setGlobals1(_meiTalkPos3Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, -1);
+ digi_play("com052", 1, 255, 270, 997);
+
+ break;
+
+ case 261:
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("com054", 1, 255, 271, 997);
+
+ break;
+
+ case 262:
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("com056", 1, 255, 272, 997);
+
+ break;
+
+ case 263:
+ setGlobals1(_meiTalkPos3Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, -1);
+ digi_play("com057", 1, 255, 273, 997);
+
+ break;
+
+ case 270:
+ sendWSMessage_150000(_mcTrekMach, 280);
+ break;
+
+ case 271:
+ sendWSMessage_150000(_G(my_walker), 281);
+ break;
+
+ case 272:
+ case 290:
+ case 293:
+ sendWSMessage_150000(_G(my_walker), 299);
+ break;
+
+ case 273:
+ sendWSMessage_150000(_mcTrekMach, 283);
+ break;
+
+ case 280:
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("com053", 1, 255, 290, 997);
+
+ break;
+
+ case 281:
+ setGlobals1(_meiTalkPos3Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, -1);
+ digi_play("com055", 1, 255, 291, 997);
+
+ break;
+
+ case 283:
+ setGlobals1(_ripTrekTalkerPos3Series, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ digi_play("com058", 1, 255, 293, 997);
+
+ break;
+
+ case 291:
+ sendWSMessage_150000(_mcTrekMach, 299);
+ break;
+
+ case 299:
+ player_set_commands_allowed(true);
+ _unkVar1 = 0;
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 201);
+
+ break;
+
+ case 501:
+ sendWSMessage_10000(_mcTrekMach, 200, 296, 0, 502, 0);
+ break;
+
+ case 502:
+ terminateMachine(_806ChartMach);
+ _806ChartMach = series_show("806chart", 3840, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags[265]))
+ sendWSMessage_10000(_mcTrekMach, 225, 306, 3, -1, 1);
+ else
+ sendWSMessage_10000(_mcTrekMach, 225, 306, 3, 101, 1);
+
+ _unkVar3 = 0;
+
+ break;
+
+ case 701:
+ if (!_unkVar2 && !_unkVar1) {
+ setGlobals1(_unkSeries1, 1, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcTrekMach, 703);
+ _unkVar2 = 1;
+ }
+
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 702, nullptr);
+
+ break;
+
+ case 702:
+ if (_unkVar2) {
+ sendWSMessage_140000(_mcTrekMach, 703);
+ _unkVar2 = 0;
+ }
+
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 701, nullptr);
+
+ break;
+
+ case 703:
+ _unkVar1 = 0;
+ break;
+
+ case 999:
+ if (_G(flags[265])) {
+ player_set_commands_allowed(true);
+ _unkVar1 = 0;
+ }
+
+ break;
+
+ case 12001:
+ ws_hide_walker(_G(my_walker));
+ player_update_info(_G(my_walker), &_G(player_info));
+ _safariShadow3Mach = series_show("SAFARI SHADOW 3", 32767, 16, -1, -1, 0, _G(player_info).scale + 1, 221, 316);
+ series_play("806RP01", 256, 2, 12002, 5, 0, 100, 0, 0, 12, 16);
+
+ break;
+
+ case 12002:
+ _806rp01Mach = series_show("806RP01", 256, 16, -1, -1, 12, 100, 0, 0);
+ break;
+
+ case 12014:
+ digi_play("806r03", 1, 255, 12016, -1);
+ break;
+
+ case 12016:
+ digi_unload("806r03");
+ break;
+
+ default:
+ break;
+ }
+
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room806.h b/engines/m4/riddle/rooms/section8/room806.h
index ce2b6a9f218..1a62918336d 100644
--- a/engines/m4/riddle/rooms/section8/room806.h
+++ b/engines/m4/riddle/rooms/section8/room806.h
@@ -40,9 +40,13 @@ public:
void daemon() override;
private:
+ int32 _unkSeries1 = 0;
+
int32 _unkVar1 = 0;
int32 _unkVar2 = 0;
int32 _unkVar3 = 0;
+ int32 _unkVar4 = 0;
+ int32 _unkVar5 = 0;
int32 _806mc01Series = 0;
int32 _806mc02Series = 0;
@@ -64,7 +68,12 @@ private:
machine *_806CrankMach = nullptr;
machine *_806ChartMach = nullptr;
+ machine *_candlemanShadow3Mach = nullptr;
machine *_mcTrekMach = nullptr;
+ machine *_806rp01Mach = nullptr;
+ machine *_806mc01Mach = nullptr;
+
+ machine *_safariShadow3Mach = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list