[Scummvm-git-logs] scummvm master -> 9c22733c6bdc76123fddc8119ad1bc4c82355b36

Strangerke noreply at scummvm.org
Sun Nov 10 08:10:24 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:
9c22733c6b M4: RIDDLE: Room 204: partial implementation of daemon (up to 572)


Commit: 9c22733c6bdc76123fddc8119ad1bc4c82355b36
    https://github.com/scummvm/scummvm/commit/9c22733c6bdc76123fddc8119ad1bc4c82355b36
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-10T09:10:17+01:00

Commit Message:
M4: RIDDLE: Room 204: partial implementation of daemon (up to 572)

Changed paths:
    engines/m4/riddle/rooms/section2/room204.cpp
    engines/m4/riddle/rooms/section2/room204.h


diff --git a/engines/m4/riddle/rooms/section2/room204.cpp b/engines/m4/riddle/rooms/section2/room204.cpp
index 7be5ee2c55a..f23ea623130 100644
--- a/engines/m4/riddle/rooms/section2/room204.cpp
+++ b/engines/m4/riddle/rooms/section2/room204.cpp
@@ -59,8 +59,8 @@ void Room204::init() {
 	_courtyardGongSeries = series_load("COURTYARD GONG", -1, nullptr);
 	_malletSpriteSeries = series_load("MALLET SPRITE", -1, nullptr);
 	_field68 = 0;
-	_field44 = -1;
-	_field48 = -1;
+	_field44_triggerNum = -1;
+	_field48_triggerNum = -1;
 	_fieldC4 = -1;
 	_fieldBC_trigger = -1;
 	_fieldEC = -1;
@@ -594,9 +594,340 @@ void Room204::daemon() {
 		break;
 
 	case 569:
+		_field14 = 1;
+		_field2C = 0;
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_hide_walker(_G(my_walker));
+		_ripDeltaMachineStateMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, _G(player_info).depth, _field68, triggerMachineByHashCallback, "Rip Absolute Machine State");
+		switch (_field10) {
+		case 8:
+			sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+			_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
+			_field14 = 8;
+			break;
+
+		case 11:
+			_ripTrekLowReachPos2Series = series_load("RIP TREK LOW REACH POS2", -1, nullptr);
+			sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 1, 1, 571, _ripTrekLowReachPos2Series, 1, 1, 0);
+			_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 2", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
+			_field14 = 11;
+
+			break;
+
+		case 16:
+			_ripTrekTalkerPos3Series = series_load("RIP TREK TALKER POS3", -1, nullptr);
+			_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 3840);
+			sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTalkerPos3Series, 1, 1, 571, _ripTrekTalkerPos3Series, 1, 1, 0);
+			_field14 = 16;
+
+			break;
+
+		default:
+			break;
+		}
+
+		break;
+
 	case 570:
+		_field14 = 1;
+		_field2C = 0;
+		_field24_triggerNum = -1;
+
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_hide_walker(_G(my_walker));
+		_ripDeltaMachineStateMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, _G(player_info).depth, 0, triggerMachineByHashCallback, "Rip Delta Machine State");
+
+		if (_field10 == 8) {
+			sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+			_field14 = 8;
+		}
+
+		_safariShadow3Mach = series_place_sprite("SAFARI SHADOW 3", 0, _G(player_info).x, _G(player_info).y, _G(player_info.scale), _G(player_info).depth);
+
+		break;
+
 	case 571:
+		if (_field14 == 8 && _field10 == 8 && _field18_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field18_triggerNum);
+			_field18_triggerNum = -1;
+		}
+
+		if (_field14 == 9 && _field10 == 9 && _field24_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field24_triggerNum);
+				_field24_triggerNum = -1;
+		}
+
+		if (_field14 == 12 && _field10 == 12 && _field44_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field44_triggerNum);
+			_field44_triggerNum = -1;
+		}
+
+		if (_field14 == 13 && _field10 == 13 && _field48_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field48_triggerNum);
+			_field48_triggerNum = -1;
+		}
+
+		if (_field14 == 11 && _field10 == 11 && _field18_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field18_triggerNum);
+			_field18_triggerNum = -1;
+		}
+
+		if (_field14 == 14 && _field10 == 14 && _field28_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field28_triggerNum);
+			_field28_triggerNum = -1;
+		}
+
+		if (_field14 == 16 && _field10 == 16 && _field18_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field18_triggerNum);
+			_field18_triggerNum = -1;
+		}
+
+		if (_field14 == 21 && _field10 == 21 && _field28_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field28_triggerNum);
+			_field28_triggerNum = -1;
+		}
+
+		if (!_field2C)
+			kernel_timing_trigger(1, 572, nullptr);
+		else {
+			terminateMachine(_ripDeltaMachineStateMach);
+			_ripDeltaMachineStateMach = nullptr;
+			ws_unhide_walker(_G(my_walker));
+			terminateMachine(_safariShadow3Mach);
+			_field68 = 0;
+
+			if (_field14 == 16)
+				series_unload(_ripTrekTalkerPos3Series);
+		}
+
+		break;
+
 	case 572:
+		switch (_field14) {
+		case 8:
+			switch (_field10) {
+			case 8:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 1, 571, _field78_series, 1, 1, 0);
+				_field14 = 8;
+
+				break;
+
+			case 9:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 1, 16, 571, _field78_series, 16, 16, 0);
+				_field14 = 9;
+
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 9:
+			switch (_field10) {
+			case 9:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 16, 16, 571, _field78_series, 16, 16, 0);
+				break;
+
+			case 10:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field78_series, 17, 34, 571, _field78_series, 34, 34, 0);
+				_field14 = 8;
+				_field10 = 8;
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+
+		case 11:
+			switch (_field10) {
+			case 11:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 1, 1, 571, _ripTrekLowReachPos2Series, 1, 1, 0);
+				break;
+
+			case 12:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 1, 16, 571, _ripTrekLowReachPos2Series, 16, 16, 0);
+				_field14 = 12;
+
+				break;
+
+			case 13:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 1, 14, 571, _ripTrekLowReachPos2Series, 14, 14, 0);
+				_field14 = 13;
+
+				break;
+
+			case 14:
+			case 15:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 1, 5, 571, _field90_series, 5, 5, 0);
+				_field14 = 14;
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+
+		case 12:
+			switch (_field10) {
+			case 11:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 16, 1, 571, _ripTrekLowReachPos2Series, 1, 1, 0);
+				_field14 = 11;
+
+				break;
+
+			case 12:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 16, 16, 571, _ripTrekLowReachPos2Series, 16, 16, 0);
+				break;
+
+			default:
+				break;
+
+			}
+
+
+			break;
+
+		case 13:
+			if (_field10 == 11) {
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 14, 1, 571, _ripTrekLowReachPos2Series, 1, 1, 0);
+				_field14 = 11;
+			} else if (_field10 == 13) {
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekLowReachPos2Series, 14, 14, 571, _ripTrekLowReachPos2Series, 14, 14, 0);
+			}
+
+			break;
+		case 14:
+			switch (_field10) {
+			case 11:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 13, 19, 571, _field90_series, 19, 19, 0);
+				_field14 = 11;
+
+				break;
+
+			case 14:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 5, 5, 571, _field90_series, 5, 5, 0);
+				break;
+
+			case 15: {
+				int32 rnd = imath_ranged_rand(6, 12);
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, rnd, rnd, 571, _field90_series, rnd, rnd, 0);
+				}
+
+				break;
+
+			default:
+				break;
+			}
+
+			break;
+
+		case 16:
+			switch (_field10) {
+			case 16:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTalkerPos3Series, 1, 1, 571, _ripTrekTalkerPos3Series, 1, 1, 0);
+				break;
+
+			case 18:
+				_field10 = 16;
+				_field18_triggerNum = kernel_trigger_create(605);
+				kernel_timing_trigger(1, 571, nullptr);
+
+				break;
+
+			case 19: {
+				int32 rnd = imath_ranged_rand(1, 5);
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTalkerPos3Series, rnd, rnd, 571, _ripTrekTalkerPos3Series, rnd, rnd, 0);
+				}
+
+				break;
+
+			case 20:
+			case 21:
+				_ripTrekHandTalkPos3Series = series_load("RIP TREK HAND TALK POS3", -1, nullptr);
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 1, 7, 571, _ripTrekHandTalkPos3Series, 7, 7, 0);
+				_field14 = 21;
+
+				break;
+
+			case 22:
+				_ripTrekHandTalkPos3Series = series_load("RIP TREK HAND TALK POS3", -1, nullptr);
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 1, 7, 571, _ripTrekHandTalkPos3Series, 7, 7, 0);
+				_field10 = 23;
+
+				break;
+
+			case 23:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 8, 10, -1, _ripTrekHandTalkPos3Series, 8, 10, 4);
+				digi_play(conv_sound_to_play(), 1, 255, 571, -1);
+				_field10 = 24;
+
+				break;
+
+			case 24:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 9, 16, 571, _ripTrekHandTalkPos3Series, 16, 16, 0);
+				_field10 = 25;
+
+				break;
+
+			case 25:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTalkerPos3Series, 1, 1, 571, _ripTrekTalkerPos3Series, 1, 1, 0);
+				series_unload(_ripTrekHandTalkPos3Series);
+				_field10 = 16;
+				conv_resume(conv_get_handle());
+
+				break;
+
+
+			default:
+				break;
+			}
+
+			break;
+
+		case 21:
+			switch (_field10) {
+			case 16:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 9, 16, 571, _ripTrekHandTalkPos3Series, 16, 16, 0);
+				_field14 = 16;
+				_field10 = 17;
+
+				break;
+
+			case 17:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTalkerPos3Series, 1, 1, 571, _ripTrekTalkerPos3Series, 1, 1, 0);
+				series_unload(_ripTrekHandTalkPos3Series);
+				_field10 = 16;
+				_field14 = 16;
+
+				break;
+
+			case 20: {
+				int32 rnd = imath_ranged_rand(8, 10);
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, rnd, rnd, 571, _ripTrekHandTalkPos3Series, rnd, rnd, 0);
+				}
+				break;
+
+			case 21:
+				sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekHandTalkPos3Series, 8, 8, 571, _ripTrekHandTalkPos3Series, 8, 8, 0);
+				break;
+
+			default:
+				break;
+			}
+
+		default:
+			break;
+		}
+
+
+		break;
+
 	case 574:
 	case 576:
 	case 577:
diff --git a/engines/m4/riddle/rooms/section2/room204.h b/engines/m4/riddle/rooms/section2/room204.h
index bae27b32190..1a88a266266 100644
--- a/engines/m4/riddle/rooms/section2/room204.h
+++ b/engines/m4/riddle/rooms/section2/room204.h
@@ -46,11 +46,17 @@ private:
 	void addLookMalletHotspot();
 
 	int32 _field4 = 0;
+	int32 _field10 = 0;
+	int32 _field14 = 0;
+	int32 _field18_triggerNum = 0;
+	int32 _field24_triggerNum = 0;
+	int32 _field28_triggerNum = 0;
 	int32 _field2C = 0;
 	int32 _field40 = 0;
-	int32 _field44 = 0;
-	int32 _field48 = 0;
+	int32 _field44_triggerNum = 0;
+	int32 _field48_triggerNum = 0;
 	int32 _field68 = 0;
+	int32 _field78_series = 0;
 	int32 _fieldBC_trigger = 0;
 	int32 _fieldC0_trigger = 0;
 	int32 _fieldC4 = 0;
@@ -70,17 +76,22 @@ private:
 	int32 _field184 = 0;
 	int32 _field188 = 0;
 
+	int32 _field90_series = 0;
+	int32 _ripTrekHandTalkPos3Series = 0;
 	int32 _courtyardGongSeries = 0;
 	int32 _malletSpriteSeries = 0;
 	int32 _meiShowsRipHerPassesSeries = 0;
 	int32 _ripDropsSeries = 0;
 	int32 _ripTrekHeadTurnPos5Series = 0;
 	int32 _ripTrekLHandTalkPos4Series = 0;
+	int32 _ripTrekLowReachPos2Series = 0;
+	int32 _ripTrekTalkerPos3Series = 0;
 
 	machine *_courtyardGongMach = nullptr;
 	machine *_mcMach = nullptr;
 	machine *_malletSpriteMach = nullptr;
 	machine *_ripDeltaMachineStateMach = nullptr;
+	machine *_safariShadow3Mach = nullptr;
 	machine *_silverButterflyCoinMach = nullptr;
 };
 




More information about the Scummvm-git-logs mailing list