[Scummvm-git-logs] scummvm master -> 6deeff2fdeb6f915015800eee0a4acf235a353d7
Strangerke
noreply at scummvm.org
Wed Dec 4 23:44:31 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:
6deeff2fde M4: RIDDLE: room 705: Fix issue in init(), implement daemon up to trigger 150
Commit: 6deeff2fdeb6f915015800eee0a4acf235a353d7
https://github.com/scummvm/scummvm/commit/6deeff2fdeb6f915015800eee0a4acf235a353d7
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-05T00:44:19+01:00
Commit Message:
M4: RIDDLE: room 705: Fix issue in init(), implement daemon up to trigger 150
Changed paths:
engines/m4/riddle/rooms/section7/room705.cpp
engines/m4/riddle/rooms/section7/room705.h
diff --git a/engines/m4/riddle/rooms/section7/room705.cpp b/engines/m4/riddle/rooms/section7/room705.cpp
index 3715fdb0c92..000c745fb29 100644
--- a/engines/m4/riddle/rooms/section7/room705.cpp
+++ b/engines/m4/riddle/rooms/section7/room705.cpp
@@ -79,23 +79,23 @@ void Room705::init() {
switch (_G(flags[V221])) {
case 1:
- _leftWheelMach = series_place_sprite("705 RT PEACE WHEEL", 0, 640, 0, 100, 1280);
+ _rightWheelMach = series_place_sprite("705 RT PEACE WHEEL", 0, 640, 0, 100, 1280);
break;
case 2:
- _leftWheelMach = series_place_sprite("705 RT INSIGHT WHEEL", 0, 640, 0, 100, 1280);
+ _rightWheelMach = series_place_sprite("705 RT INSIGHT WHEEL", 0, 640, 0, 100, 1280);
break;
case 3:
- _leftWheelMach = series_place_sprite("705 RT SERENITY WHEEL", 0, 640, 0, 100, 1280);
+ _rightWheelMach = series_place_sprite("705 RT SERENITY WHEEL", 0, 640, 0, 100, 1280);
break;
case 4:
- _leftWheelMach = series_place_sprite("705 RT TRUTH WHEEL", 0, 0, 640, 100, 1280);
+ _rightWheelMach = series_place_sprite("705 RT TRUTH WHEEL", 0, 0, 640, 100, 1280);
break;
case 5:
- _leftWheelMach = series_place_sprite("705 RT WISDOM WHEEL", 0, 0, 640, 100, 1280);
+ _rightWheelMach = series_place_sprite("705 RT WISDOM WHEEL", 0, 0, 640, 100, 1280);
break;
default:
@@ -283,9 +283,187 @@ void Room705::daemon() {
break;
case 123:
+ if (_field60_mode == 124) {
+ switch (_field64_should) {
+ case 121:
+ _705Eye1aSeries = series_load("705eye1a", -1, nullptr);
+ _field64_should = 822;
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 256, false, triggerMachineByHashCallback, "monk");
+ sendWSMessage_10000(1, _monkMach, _705Eye1aSeries, 1, 4, 123, _705Eye1aSeries, 5, 10, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+
+ break;
+
+ case 122:
+ terminateMachine(_monkMach);
+ series_unload(_705Eye1aSeries);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ case 125:
+ conv_load("conv705a", 10, 10, 91);
+ conv_export_value_curr(0, 0);
+ conv_export_value_curr(_G(flags[V211]), 1);
+ conv_export_value_curr(_G(flags[V213]), 2);
+ conv_export_value_curr(_G(flags[V220]) == 1 ? 1 : 0, 0);
+ conv_play(conv_get_handle());
+
+ break;
+
+ case 822:
+ _field64_should = 823;
+ digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+ break;
+
+ case 823:
+ _field64_should = 824;
+ sendWSMessage_10000(1, _monkMach, _705Eye1aSeries, 11, 14, 123, _705Eye1aSeries, 14, 14, 0);
+
+ break;
+
+ case 824:
+ _field64_should = 122;
+ kernel_timing_trigger(10, 123, nullptr);
+
+ break;
+
+ default: // includes case 126
+ break;
+ }
+
+ }
+
+ break;
+
case 127:
+ if (_field60_mode == 124) {
+ switch (_field64_should) {
+ case 121:
+ case 122:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 822:
+ case 823:
+ case 824:
+ kernel_timing_trigger(1, 123, nullptr);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ break;
+
case 133:
+ if (_field60_mode == 134) {
+ switch (_field64_should) {
+ case 131:
+ _705Eye4aSeries = series_load("705eye4a", -1, nullptr);
+ _field64_should = 832;
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 256, false, triggerMachineByHashCallback, "monk");
+ sendWSMessage_10000(1, _monkMach, _705Eye4aSeries, 1, 5, 133, _705Eye4aSeries, 5, 5, 0);
+
+ break;
+
+ case 132:
+ terminateMachine(_monkMach);
+ series_unload(_705Eye4aSeries);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ case 135:
+ conv_load("conv705b", 10, 10, 94);
+ conv_export_value_curr(0, 0);
+ conv_export_value_curr(_G(flags[V211]), 1);
+ conv_export_value_curr(_G(flags[V213]), 2);
+ conv_export_value_curr(_G(flags[V221]) == 2 ? 1 : 0, 0);
+ conv_play(conv_get_handle());
+
+ break;
+
+ case 832:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ _field64_should = 833;
+ break;
+
+ case 2:
+ _field64_should = 834;
+ break;
+
+ default:
+ break;
+ }
+
+ kernel_timing_trigger(10, 133);
+
+ break;
+
+ case 833:
+ _field64_should = 835;
+ sendWSMessage_10000(1, _monkMach, _705Eye4aSeries, 6, 7, -1, _705Eye4aSeries, 8, 12, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 133, -1);
+
+ break;
+
+ case 834:
+ _field64_should = 835;
+ sendWSMessage_10000(1, _monkMach, _705Eye4aSeries, 8, 8, -1, _705Eye4aSeries, 8, 12, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 133, -1);
+
+ break;
+
+ case 835:
+ _field64_should = 836;
+ sendWSMessage_10000(1, _monkMach, _705Eye4aSeries, 13, 16, 133, _705Eye4aSeries, 16, 16, 0);
+
+ break;
+
+ case 836:
+ _field64_should = 132;
+ kernel_timing_trigger(10, 133);
+ break;
+
+ default: // including 136
+ break;
+
+ }
+ }
+
+ break;
+
case 137:
+ if (_field60_mode == 134) {
+ switch (_field60_mode) {
+ case 131:
+ case 132:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 832:
+ case 833:
+ case 834:
+ case 835:
+ case 836:
+ kernel_timing_trigger(1, 133, nullptr);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ break;
+
case 140:
player_set_commands_allowed(false);
setGlobals1(_field24Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
@@ -294,12 +472,70 @@ void Room705::daemon() {
break;
case 141:
+ kernel_timing_trigger(5, 142, nullptr);
+ break;
+
case 142:
sendWSMessage_120000(_G(my_walker), 143);
break;
case 143:
+ kernel_timing_trigger(5, 144, nullptr);
+ break;
+
case 144:
+ switch (_G(flags[V221])) {
+ case 1:
+ inv_give_to_player("PEACE WHEEL");
+ _G(flags[V221]) = 0;
+ terminateMachine(_rightWheelMach);
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING PEACE WHEEL", _G(master_palette), 5, 1, 388, 225, 145, nullptr, -1);
+
+ break;
+
+ case 2:
+ inv_give_to_player("INSIGHT WHEEL");
+ _G(flags[V221]) = 0;
+ terminateMachine(_rightWheelMach);
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING INSIGHT WHEEL", _G(master_palette), 5, 1, 388, 225, 145, nullptr, -1);
+
+ break;
+
+ case 3:
+ inv_give_to_player("SERENITY WHEEL");
+ _G(flags[V221]) = 0;
+ terminateMachine(_rightWheelMach);
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING SERENITY WHEEL", _G(master_palette), 5, 1, 388, 225, 145, nullptr, -1);
+
+ break;
+
+ case 4:
+ inv_give_to_player("TRUTH WHEEL");
+ _G(flags[V221]) = 0;
+ terminateMachine(_rightWheelMach);
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING TRUTH WHEEL", _G(master_palette), 5, 1, 388, 225, 145, nullptr, -1);
+
+ break;
+
+ case 5:
+ inv_give_to_player("WISDOM WHEEL");
+ _G(flags[V221]) = 0;
+ terminateMachine(_rightWheelMach);
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING WISDOM WHEEL", _G(master_palette), 5, 1, 388, 225, 145, nullptr, -1);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
case 145:
sendWSMessage_130000(_G(my_walker), 146);
break;
@@ -316,6 +552,9 @@ void Room705::daemon() {
break;
case 150:
+ digi_play("705R07", 1, 255, 151, -1);
+ break;
+
case 151:
case 152:
case 153:
diff --git a/engines/m4/riddle/rooms/section7/room705.h b/engines/m4/riddle/rooms/section7/room705.h
index 05a35db6e34..309b8c1c0bc 100644
--- a/engines/m4/riddle/rooms/section7/room705.h
+++ b/engines/m4/riddle/rooms/section7/room705.h
@@ -41,11 +41,17 @@ public:
private:
int32 _field24Series = 0;
+ int32 _field60_mode = 0;
+ int32 _field64_should = 0;
+ int32 _705Eye1aSeries = 0;
+ int32 _705Eye4aSeries = 0;
int32 _ripGoesDownStairsSeries = 0;
int32 _ripTrekMedReachPos1Series = 0;
machine *_leftWheelMach = nullptr;
+ machine *_monkMach = nullptr;
+ machine *_rightWheelMach = nullptr;
machine *_ripStairsMach = nullptr;
};
More information about the Scummvm-git-logs
mailing list