[Scummvm-git-logs] scummvm master -> ab039c858770c546e90fcd6c33b9d159d23ceade

dreammaster noreply at scummvm.org
Thu Oct 31 05:59:54 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:
ab039c8587 M4: RIDDLE: Beginnings of room 203 daemon


Commit: ab039c858770c546e90fcd6c33b9d159d23ceade
    https://github.com/scummvm/scummvm/commit/ab039c858770c546e90fcd6c33b9d159d23ceade
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-30T22:59:40-07:00

Commit Message:
M4: RIDDLE: Beginnings of room 203 daemon

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


diff --git a/engines/m4/riddle/rooms/section2/room203.cpp b/engines/m4/riddle/rooms/section2/room203.cpp
index a80a56c4f60..d96edb73e5c 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -21,9 +21,10 @@
 
 #include "m4/riddle/rooms/section2/room203.h"
 #include "m4/riddle/rooms/section2/section2.h"
+#include "m4/riddle/vars.h"
+#include "m4/adv_r/other.h"
 #include "m4/graphics/gr_series.h"
 #include "m4/gui/gui_vmng_screen.h"
-#include "m4/riddle/vars.h"
 
 namespace M4 {
 namespace Riddle {
@@ -48,6 +49,11 @@ const char *SNORMAL2_NAMES[] = { "203s02" };
 const int16 SSHADOW2_DIRS[] = { 250, -1 };
 const char *SSHADOW2_NAMES[] = { "203ssh02" };
 
+const int16 PEASANT_NORMAL_DIRS[] = { 240, -1 };
+const char *PEASANT_NORMAL_NAMES[] = { "pesky walk pos3" };
+const int16 PEASANT_SHADOW_DIRS[] = { 250, -1 };
+const char *PEASANT_SHADOW_NAMES[] = { "shadow pesky walk pos3" };
+
 
 void Room203::init() {
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME)
@@ -56,9 +62,10 @@ void Room203::init() {
 	hotspot_set_active("SOLDIER'S HELMET", false);
 	setupHelmetHotspot();
 
-	_val2 = _val3 = _val4 = _val5 = 0;
+	_val2 = _val4 = _val5 = 0;
 	_val6 = _val7 = _val8 = _val9 = 0;
 	_val10 = 0;
+	_digiName1 = nullptr;
 	_trigger1 = _trigger2 = _trigger3 = -1;
 	_trigger4 = _trigger5 = -1;
 
@@ -323,7 +330,471 @@ void Room203::daemon() {
 		digi_play("950_s13", 1, 255, -1, 950);
 	}
 
+	switch (_G(kernel).trigger) {
+	case 1:
+		kernel_trigger_dispatchx(kernel_trigger_create(3));
+		kernel_timing_trigger(140, 4);
+		break;
+
+	case 5:
+		_meiHallOfClassics = series_load("mc hall of classics line");
+		setGlobals1(_meiHallOfClassics, 1, 8, 8, 8, 2, 35, 41, 41, 41);
+		sendWSMessage_110000(_mei, 6);
+		digi_play("203m01", 1);
+		break;
+
+	case 7:
+		_ctr1 = 0;
+		_ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei");
+		setGlobals1(_ripLookAtHeadsTalkMei, 1, 5, 5, 8, 1, 8, 8, 8, 8, 0, 9,
+			16, 17, 20, 1, 16, 4, 4, 4, 0);
+		sendWSMessage_110000(8);
+		digi_play("203r01", 1, 255, 8);
+		break;
+
+	case 9:
+		sendWSMessage_150000(_mei, -1);
+		_meiCheekLine = series_load("mc cheek line");
+		setGlobals1(_meiCheekLine, 1, 30, 30, 35, 1, 38, 38, 38, 38, 1, 21, 45, 45, 45, 1);
+		sendWSMessage_110000(_mei, 10);
+		digi_play("203m02", 1, 255, 10);
+		break;
+
+	case 12:
+		digi_play("203r03", 1, 255, 13);
+		break;
+
+	case 13:
+		sendWSMessage_180000(-1);
+		sendWSMessage_130000(_mei, 14);
+		digi_play("203m03", 1);
+		break;
+
+	case 17:
+		series_unload(_meiCheekLine);
+		series_unload(_ripLookAtHeadsTalkMei);
+		series_unload(_meiHallOfClassics);
+		_meiRightHandOut = series_load("mei trek rt hand out pos2");
+		setGlobals1(_meiRightHandOut, 1, 10, 10, 10, 1, 10, 1, 1, 1, 1);
+		sendWSMessage_110000(_mei, 18);
+		digi_play("203m04", 1, 255, 19);
+		break;
+
+	case 19:
+		sendWSMessage_120000(_mei, -1);
+		_gkMode = 3001;
+		_digiName1 = "203g01";
+		_val12 = 20;
+		kernel_trigger_dispatchx(kernel_trigger_create(125));
+		break;
+
+	case 20:
+		sendWSMessage_150000(_mei, -1);
+		series_unload(_meiRightHandOut);
+		_ripYouSeeToIt = series_load("rip says you see to it");
+		_meiTurnAndTalk = series_load("mc turn and talk");
+		setGlobals1(_meiTurnAndTalk, 1, 55, 55, 55, 1, 1, 20, 20, 20, 0, 20, 1, 1, 1, 0, 55, 55, 55, 55, 0);
+		sendWSMessage_110000(_mei, -1);
+		digi_play("203m05", 1, 255, 21);
+		break;
+
+	case 21:
+		sendWSMessage_150000(-1);
+		setGlobals1(_ripYouSeeToIt, 1, 38, 38, 38, 1, 38, 26, 26, 26, 1);
+		sendWSMessage_110000(23);
+		digi_play("203r04", 1, 255, 24);
+		break;
+
+	case 24:
+		sendWSMessage_150000(_mei, -1);
+		_meiTalkToRip = series_load("mc talk to rip");
+		setGlobals1(_meiTalkToRip, 1, 13, 13, 13, 1, 13, 1, 1, 1);
+		sendWSMessage_110000(_mei, 25);
+		digi_play("203m06", 1, 255, 26);
+		break;
+
+	case 26:
+		setGlobals1(_ripLooksAtHeads, 1, 21, 21, 21, 1, 21, 1, 1, 1, 1);
+		sendWSMessage_110000(-1);
+		digi_play("203r05", 1, 255, 27);
+		break;
+
+	case 28:
+		digi_play("203r05a", 1);
+		break;
+
+	case 30:
+		sendWSMessage_150000(1968);
+		player_set_commands_allowed(true);
+		_G(player).disable_hyperwalk = false;
+		break;
+
+	case 42:
+		sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 16, 43,
+			_ripKneelingTalk, 16, 16, 0);
+		digi_play("203r20", 1, 255, 45);
+		break;
+
+	case 51:
+		terminateMachineAndNull(_ripley);
+		series_unload(_ripPointsAtHelmet);
+		series_unload(_ripKneelingTalk);
+		series_unload(_ripKneeling);
+		series_unload(_oldLadyProtectsHelmet);
+		series_unload(_oldLady1);
+		_oldLadyMode = 5666;
+		_oldLadyShould = 5100;
+		kernel_timing_trigger(1, 130);
+		break;
+
+	case 65:
+		_ripGivesPhoto = series_load("rip gives photo to old lady");
+		sendWSMessage_10000(1, _ripley, _ripGivesPhoto, 1, 9, 67, _ripGivesPhoto, 9, 9, 0);
+		digi_play("203r18", 1, 255, 66);
+		break;
+
+	case 66:
+		midi_play("HELMET", 255, 1, -1, 949);
+		break;
+
+	case 67:
+		kernel_timing_trigger(60, 68);
+		break;
+
+	case 69:
+		_stream1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+			triggerMachineByHashCallback, "POPUP OL & lover");
+		_oldLadyPhotoPopup = series_load("old woman photo pop-up");
+		sendWSMessage_10000(1, _stream1, _oldLadyPhotoPopup, 1, 5, -1,
+			_oldLadyPhotoPopup, 5, 5, 0);
+		kernel_timing_trigger(150, 70);
+		break;
+
+	case 72:
+		kernel_timing_trigger(15, 73);
+		break;
+
+	case 75:
+		terminateMachineAndNull(_ripley);
+		terminateMachineAndNull(_oldLady);
+		series_unload(_oldLadyPointsToPhoto);
+		series_unload(_ripGivesPhoto);
+
+		digi_preload("203r21");
+		_stream1 = series_stream("old lady takes photo", 5, 1, 76);
+		inv_move_object("RIPLEY PHOTO", 203);
+		digi_play("203r21", 1);
+		break;
+
+	case 77:
+		series_set_frame_rate(_stream1, 3000);
+		series_stream("old woman smiles", 5, 0, 78);
+		break;
+
+	case 79:
+		_oldLady = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+			triggerMachineByHashCallback, "ol");
+		sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 1, -1,
+			_oldLadyNoHelmet, 1, 1, 0);
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+			triggerMachineByHashCallback, "rip kneel");
+		sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 1, -1,
+			_ripKneelingTalk, 1, 1, 0);
+
+		digi_preload("203r22");
+		_stream1 = series_stream("rip smiles close-up", 5, 0, 82);
+		series_stream_break_on_frame(_stream1, 14, 6250);
+		digi_play("203r22", 1, 255, 80);
+		break;
+
+	case 81:
+		series_set_frame_rate(_stream1, 5);
+		ws_OverrideCrunchTime(_stream1);
+		break;
+
+	case 84:
+		midi_fade_volume(0, 120);
+		kernel_timing_trigger(120, 749);
+		terminateMachineAndNull(_ripley);
+		series_unload(_ripKneeling);
+		sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 2, 2, 0, _oldLadyFrame, 2, 2, 0);
+		_oldLadyMode = 5669;
+		_oldLadyShould = 5200;
+		_G(flags)[V060] = 1;
+		inv_give_to_player("SOLDIER'S HELMET");
+		setupHelmetHotspot();
+		kernel_timing_trigger(1, 130);
+		ws_unhide_walker();
+		_val2 = 0;
+		player_set_commands_allowed(true);
+		break;
+
+	case 90:
+		other_save_game_for_resurrection();
+		player_set_commands_allowed(false);
+		ws_hide_walker();
+		_peskyYellsThief = series_load("pesky yells thief");
+		_peasantRocksShadow = series_load("shadow pesky rock loop");
+		_ripClimbsAndBacksDown = series_load("rip climbs and backs down");
+
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, 0, 100, 0x100, 0,
+			triggerMachineByHashCallback, "rip climbs");
+		sendWSMessage_10000(1, _ripley, _ripClimbsAndBacksDown, 1, 75, 96,
+			_ripClimbsAndBacksDown, 75, 75, 0);
+		kernel_timing_trigger(400, 91);
+		break;
+
+	case 91:
+		terminateMachineAndNull(_peasant);
+		terminateMachineAndNull(_peasantShadow);
+		_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, 0,
+			triggerMachineByHashCallback, "pesky peasant yells thief");
+		_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, 0,
+			triggerMachineByHashCallback, "SHADOW pp yells thief");
+		sendWSMessage_10000(1, _peasant, _peskyYellsThief, 1, 19, 94,
+			_peskyYellsThief, 19, 19, 0);
+		sendWSMessage_10000(1, _peasantShadow, _peasantRocksShadow, 1, 1, -1,
+			_peasantRocksShadow, 1, 1, 0);
+		_flag1 = true;
+		kernel_timing_trigger(100, 92);
+		digi_preload("203p02");
+		break;
+
+	case 93:
+		kernel_timing_trigger(120, 92);
+		break;
+
+	case 97:
+		terminateMachineAndNull(_ripley);
+		series_unload(_ripClimbsAndBacksDown);
+		player_update_info();
+		ws_unhide_walker();
+		kernel_timing_trigger(3, 98);
+		break;
+
+	case 103:
+		_ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei");
+		setGlobals1(_ripLookAtHeadsTalkMei, 11, 16, 16, 16, 1, 16, 11, 11, 11);
+		sendWSMessage_110000(-1);
+		digi_play("203r28", 1, 255, 104);
+		break;
+
+	case 106:
+		sendWSMessage_150000(_official, 107);
+		break;
+
+	case 109:
+		sendWSMessage_10000(_official, -30, 355, 9, -1, 1);
+		kernel_timing_trigger(60, 110);
+		break;
+
+	case 110:
+		disable_player_commands_and_fade_init(111);
+		break;
 
+	case 111:
+		_G(game).setRoom(413);
+		player_set_commands_allowed(true);
+		break;
+
+	case 125:
+		kernel_trigger_dispatchx(kernel_trigger_create(126));
+		break;
+
+	case 152:
+		_val2 = 0;
+
+		switch (_unkMode) {
+		case 1001:
+			_oldLadyMode2 = 1040;
+			break;
+		case 1002:
+			_oldLadyMode2 = (_unkShould == 1121) ? 1121 : 5303;
+			break;
+		case 1003:
+			_oldLadyMode2 = 1240;
+			break;
+		default:
+			break;
+		}
+		break;
+
+	case 153:
+		kernel_trigger_dispatchx(kernel_trigger_create(150));
+		break;
+
+	case 300:
+		if (_G(flags)[V061]) {
+			hotspot_set_active("PEASANT", false);
+			hotspot_set_active("SOLDIER'S HELMET", false);
+		} else {
+			ws_walk_load_walker_series(PEASANT_NORMAL_DIRS, PEASANT_NORMAL_NAMES);
+			ws_walk_load_shadow_series(PEASANT_SHADOW_DIRS, PEASANT_SHADOW_NAMES);
+			_peasantRocks = series_load("peasant rocks 5frames");
+			_peasantRocksShadow = series_load("shadow pesky rock loop");
+			_peasantSquat3 = series_load("peasant 3 to squat");
+			_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+			_peasantX = 1100;
+			_peasantY = 375;
+			_peasantLayer = 0x800;
+			_peasantScale = 75;
+
+			_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+				_peasantX, _peasantY - 53, _peasantScale, _peasantLayer, true,
+				triggerMachineByHashCallback, "pesky peasant");
+			_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true,
+				triggerMachineByHashCallback, "pesky peasant shadow");
+			sendWSMessage_10000(1, _peasant, _peasantSquat3, 2, 18, -1,
+				_peasantRocks, 1, 1, 0);
+			sendWSMessage_10000(1, _peasantShadow, _peasantSquat9, 2, 18, 302,
+				_peasantRocksShadow, 1, 1, 0);
+		}
+
+		setupOfficial();
+		kernel_trigger_dispatchx(kernel_trigger_create(125));
+		break;
+
+
+	case 302:
+		_peasantMode = 4054;
+		_peasantShould = 4140;
+		setupPeasantHotspot(_peasantMode);
+		kernel_timing_trigger(1, 120);
+		series_unload(_peasantSquat9);
+		series_unload(_peasantSquat3);
+		player_set_commands_allowed(true);
+		break;
+
+	case 303:
+	case 371:
+		player_set_commands_allowed(true);
+		break;
+
+	case 350:
+		kernel_trigger_dispatchx(kernel_trigger_create(125));
+		break;
+
+	case 353:
+		kernel_timing_trigger(120, 352);
+		break;
+
+	case 366:
+		ws_walk(280, 345, nullptr, 103, 9);
+		kernel_timing_trigger(50, 367);
+		break;
+
+	case 666:
+		digi_play("203r56", 1, 255, 667);
+		break;
+
+	case 749:
+		midi_stop();
+		break;
+
+	case 1968:
+		series_unload(_ripLooksAtHeads);
+		break;
+
+	case 4567:
+		series_unload(_meiTalkToRip);
+		series_unload(_ripYouSeeToIt);
+		series_unload(_meiTurnAndTalk);
+		series_unload(S2_MEI_NORMAL_DIRS[4]);
+		series_unload(S2_MEI_NORMAL_DIRS[3]);
+		series_unload(S2_MEI_NORMAL_DIRS[2]);
+		series_unload(S2_MEI_NORMAL_DIRS[1]);
+		series_unload(S2_MEI_NORMAL_DIRS[0]);
+		series_unload(S2_MEI_SHADOW_DIRS[4]);
+		series_unload(S2_MEI_SHADOW_DIRS[3]);
+		series_unload(S2_MEI_SHADOW_DIRS[2]);
+		series_unload(S2_MEI_SHADOW_DIRS[1]);
+		series_unload(S2_MEI_SHADOW_DIRS[0]);
+
+		_peasantRocks = series_load("peasant rocks 5frames");
+		_peasantRocksShadow = series_load("shadow pesky rock loop");
+		ws_walk_load_walker_series(PEASANT_NORMAL_DIRS, PEASANT_NORMAL_NAMES);
+		ws_walk_load_shadow_series(PEASANT_SHADOW_DIRS, PEASANT_SHADOW_NAMES);
+
+		_peasantMode = 4050;
+		_peasantShould = 4091;
+		setupPeasantHotspot(4050);
+		_peasantX = 745;
+		_peasantY = 378;
+		_peasantLayer = 0x800;
+		_peasantScale = 75;
+
+		_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, 0,
+			triggerMachineByHashCallback, "pesky peasant");
+		_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+			_peasantX, _peasantY - 53, _peasantScale, _peasantLayer, 0,
+			triggerMachineByHashCallback, "pesky peasant shadow");
+		sendWSMessage_10000(1, _peasantShadow, _peasantRocksShadow, 1, 1, -1,
+			_peasantRocksShadow, 1, 1, 0);
+
+		setupOfficial();
+		setupOldLady();
+		setupPigeons();
+		kernel_timing_trigger(1, 130);
+		kernel_timing_trigger(1, 120);
+		kernel_timing_trigger(2, 30);
+		break;
+
+	case 6250:
+		series_set_frame_rate(_stream1, 3000);
+		kernel_timing_trigger(60, 81);
+		break;
+
+	case 9002:
+		digi_play("203r51", 1, 255, 9004);
+		break;
+
+	case 9004:
+		_g1 = triggerMachineByHash_3000(8, 19, *SNORMAL1_DIRS, *SSHADOW1_DIRS, 660, 360, 9,
+			triggerMachineByHashCallback3000, "g1");
+		_g2 = triggerMachineByHash_3000(8, 20, *SNORMAL2_DIRS, *SSHADOW2_DIRS, 715, 370, 9,
+			triggerMachineByHashCallback3000, "g2");
+		sendWSMessage_10000(_g1, 340, 350, 9, 9040, 0);
+		sendWSMessage_10000(_g2, -30, 360, 9, -1, 1);
+		sendWSMessage_140000(-1);
+		break;
+
+	case 9006:
+		kernel_timing_trigger(60, 9007);
+		break;
+
+	case 9007:
+		sendWSMessage_140000(9008);
+		digi_play("com125", 1, 255, 9009);
+		break;
+
+	case 9008:
+		ws_walk(417, 240, nullptr, -1, 1);
+		kernel_timing_trigger(60, 9010);
+		break;
+
+	case 9009:
+		digi_play("203r52", 1);
+		break;
+
+	case 9010:
+		sendWSMessage_10000(_mei, 216, 332, 3, 9011, 0);
+		kernel_timing_trigger(120, 9030);
+		break;
+
+	case 9020:
+		sendWSMessage_10000(1, _sg, _203sg01, 131, 155, -1, _203sg01, 155, 155, 0);
+		disable_player_commands_and_fade_init(9025);
+		break;
+
+	case 9025:
+		_G(game).setRoom(204);
+		break;
+
+	default:
+		error("Unhandled trigger");
+		break;
+	}
 }
 
 void Room203::setupHelmetHotspot() {
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index 0c8aed9c2fc..105dab02986 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -32,7 +32,7 @@ class Room203 : public Section2Room {
 private:
 	int _val1 = 0;
 	int _val2 = 0;
-	int _val3 = 0;
+	const char *_digiName1 = nullptr;
 	int _val4 = 0;
 	int _val5 = 0;
 	int _val6 = 0;
@@ -41,16 +41,30 @@ private:
 	int _val9 = 0;
 	int _val10 = 0;
 	int _val11 = 0;
+	int _val12 = 0;
 	int _trigger1 = -1;
 	int _trigger2 = -1;
 	int _trigger3 = -1;
 	int _trigger4 = -1;
 	int _trigger5 = -1;
 	int _shadow3 = 0;
+	machine *_ripley = nullptr;
+	machine *_stream1 = nullptr;
 	int _ripHeadTurn = 0;
 	int _ripLooksAtHeads = 0;
-	int _203sg01 = 0;
+	int _ripYouSeeToIt = 0;
+	int _ripLookAtHeadsTalkMei = 0;
+	int _ripKneeling = 0;
+	int _ripKneelingTalk = 0;
+	int _ripGivesPhoto = 0;
+	int _ripClimbsAndBacksDown = 0;
+	int _ripPointsAtHelmet = 0;
 	machine *_mei = nullptr;
+	int _meiTalkToRip = 0;
+	int _meiTurnAndTalk = 0;
+	int _meiRightHandOut = 0;
+	int _meiCheekLine = 0;
+	int _meiHallOfClassics = 0;
 	machine *_gk = nullptr;
 	int _gkFrame = 0;
 	int _gkMode = 0, _gkShould = 0;
@@ -59,6 +73,11 @@ private:
 	int _oldLadyNoHelmet = 0;
 	int _oldLadyFeedingBirds = 0;
 	int _oldLadyMode = 0, _oldLadyShould = 0;
+	int _oldLadyMode2 = 0;
+	int _oldLady1 = 0;
+	int _oldLadyPointsToPhoto = 0;
+	int _oldLadyPhotoPopup = 0;
+	int _oldLadyProtectsHelmet = 0;
 	machine *_pigeons1 = nullptr;
 	machine *_pigeons3 = nullptr;
 	int _pigeonsSeries1 = 0;
@@ -82,7 +101,17 @@ private:
 	int _peasantY = 0;
 	int _peasantScale = 0;
 	int _peasantLayer = 0;
+	int _peasantSquat9 = 0;
+	int _peasantSquat3 = 0;
 	bool _flag1 = false;
+	machine *_sg = nullptr;
+	int _203sg01 = 0;
+	machine *_g1 = nullptr;
+	machine *_g2 = nullptr;
+	int _unkMode = 0;
+	int _unkShould = 0;
+
+	int _ctr1 = 0;
 
 	void setupHelmetHotspot();
 	void setupPeasantHotspot(int mode);




More information about the Scummvm-git-logs mailing list