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

dreammaster noreply at scummvm.org
Sat Aug 3 19:12:23 UTC 2024


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
24b0d9659e M4: RIDDLE: Finished room 304 parser switch
fa03da6f76 M4: RIDDLE: Finished room 304 parser


Commit: 24b0d9659ea8caed2010e88ff048e5dcd8df9030
    https://github.com/scummvm/scummvm/commit/24b0d9659ea8caed2010e88ff048e5dcd8df9030
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-03T12:11:47-07:00

Commit Message:
M4: RIDDLE: Finished room 304 parser switch

Changed paths:
    engines/m4/riddle/rooms/room.cpp
    engines/m4/riddle/rooms/room.h
    engines/m4/riddle/rooms/section3/room304.cpp


diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 01dceb3a059..1a710e6dfbe 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -297,6 +297,10 @@ void Room::sendWSMessage_F0000(machine *mach, int trigger) {
 	sendWSMessage(0xf0000, 0, mach, 0, nullptr, 1);
 }
 
+void Room::sendWSMessage_F0000(int trigger) {
+	sendWSMessage_F0000(_G(my_walker), trigger);
+}
+
 void Room::sendWSMessage_110000(machine *mach, int trigger) {
 	if (!trigger)
 		trigger = -1;
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index 1467b0cd776..3ce83c8f316 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -80,6 +80,7 @@ protected:
 	void sendWSMessage_E0000(machine *mach);
 	void sendWSMessage_E0000();
 	void sendWSMessage_F0000(machine *mach, int trigger);
+	void sendWSMessage_F0000(int trigger);
 	void sendWSMessage_110000(machine *mach, int trigger);
 	void sendWSMessage_120000(int trigger);
 	void sendWSMessage_120000(machine *mach, int trigger);
diff --git a/engines/m4/riddle/rooms/section3/room304.cpp b/engines/m4/riddle/rooms/section3/room304.cpp
index 296e0885c37..89c7634e530 100644
--- a/engines/m4/riddle/rooms/section3/room304.cpp
+++ b/engines/m4/riddle/rooms/section3/room304.cpp
@@ -662,7 +662,158 @@ void Room304::parserSwitch() {
 			1, 0, 0, 17, 29, 295, 100, 0x100, 9);
 		digi_play("304m06", 1, 255, 55);
 		break;
-		// TODO
+
+	case 53:
+		inv_give_to_player("POST MARKED ENVELOPE");
+		break;
+
+	case 54:
+		digi_play("304r52", 1, 255, 51);
+		break;
+
+	case 55:
+		if (_val1) {
+			kernel_timing_trigger(1, 56);
+		} else {
+			kernel_timing_trigger(60, 55);
+		}
+		break;
+
+	case 56:
+		_suit1 = series_load("rip suit stander talk pos4");
+		setGlobals1(_suit1, 1, 1, 1, 5, 1);
+		sendWSMessage_110000(58);
+		digi_play("304r53", 1, 255, 58);
+		break;
+
+	case 58:
+		if (_ctr1 >= 1) {
+			_ctr1 = 0;
+			sendWSMessage_140000(59);
+		} else {
+			++_ctr1;
+		}
+		break;
+
+	case 59:
+		series_unload(_suit1);
+		terminateMachineAndNull(_field60);
+		series_unload(_suit3);
+
+		_suit3 = series_load("mc hand to chin nod pos3");
+		series_ranged_play_xy("mc hand to chin nod pos3", 2, 1,
+			0, 7, 29, 295, 100, 0xa00, 7, 63);
+		digi_play("304m07", 1, 255, 60);
+		break;
+
+	case 60:
+		_suit1 = series_load("RIP LFT GEST RT PNT");
+		setGlobals3(_suit1, 1, 45);
+		sendWSMessage_F0000(75);
+		digi_play("304r54", 1, 255, 61);
+		break;
+
+	case 61:
+		_suit3 = series_load("mc hands out talk pos3");
+		kernel_timing_trigger(40, 65);
+		break;
+
+	case 63:
+		series_unload(_suit3);
+		_suit3 = series_load("mc hand to chin pos3");
+		_field60 = series_ranged_play_xy("mc hand to chin pos3",
+			1, 2, 0, 17, 29, 295, 100, 0x100, 7, 64);
+		break;
+
+	case 64:
+		ws_unhide_walker(_machine1);
+		series_unload(_suit3);
+		break;
+
+	case 65:
+		setGlobals1(_suit3, 1, 10, 11, 16, 1, 17, 24, 1, 1, 1);
+		sendWSMessage_110000(_machine1, -1);
+		digi_play("304m08", 1, 255, 66);
+		kernel_timing_trigger(60, 69);
+		break;
+
+	case 66:
+		sendWSMessage_120000(_machine1, -1);
+		_G(game).setRoom(303);
+		break;
+
+	case 67:
+		digi_play("304r50", 1);
+		break;
+
+	case 69:
+		ws_walk(458, 263, 0, -1, 2);
+		kernel_timing_trigger(30, 678);
+		break;
+
+	case 71:
+		if (_ctr1 >= 1) {
+			_ctr1 = 0;
+			sendWSMessage_140000(72);
+		} else {
+			++_ctr1;
+		}
+		break;
+
+	case 72:
+		series_unload(_suit3);
+		_suit1 = series_load("rip suit rt hand gest talk pos3");
+		setGlobals1(_suit1, 1, 11, 12, 15, 1);
+		sendWSMessage_110000(73);
+		digi_play(_val3 ? "304r24" : "304r23", 1, 255, 73);
+		sendWSMessage_10000(_machine1, 242, 274, 3, 18, 0);
+		break;
+
+	case 73:
+		if (_ctr1 >= 1) {
+			_ctr1 = 0;
+			sendWSMessage_140000(-1);
+		} else {
+			++_ctr1;
+		}
+		break;
+
+	case 74:
+		_ctr1 = 0;
+		_suit3 = series_load("mei ny hands out talk pos4");
+		setGlobals1(_suit3, 1, 9, 10, 15, 1);
+		sendWSMessage_110000(71);
+		digi_play(_val3 ? "304m03" : "304m02", 1, 255, 71);
+		break;
+
+	case 75:
+		series_unload(_suit1);
+		break;
+
+	case 78:
+		digi_unload("304r51a");
+		kernel_timing_trigger(60, 47);
+		break;
+
+	case 79:
+		digi_unload("304r51");
+		digi_preload("304r51a");
+		digi_play("304r51a", 1, 255, 78);
+		break;
+
+	case 80:
+		_val1 = 1;
+		break;
+
+	case 222:
+		digi_play("304_s13", 2);
+		series_ranged_play("MC UNTIES LF", 1, 0, 22, 82, 100, 0xa05, 5, 22);
+		break;
+
+	case 678:
+		disable_player_commands_and_fade_init(-1);
+		break;
+
 	default:
 		break;
 	}


Commit: fa03da6f76a40984242cd4355c3f4495b0638d0b
    https://github.com/scummvm/scummvm/commit/fa03da6f76a40984242cd4355c3f4495b0638d0b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-03T12:11:47-07:00

Commit Message:
M4: RIDDLE: Finished room 304 parser

Changed paths:
    engines/m4/riddle/rooms/section3/room304.cpp
    engines/m4/riddle/rooms/section3/room304.h


diff --git a/engines/m4/riddle/rooms/section3/room304.cpp b/engines/m4/riddle/rooms/section3/room304.cpp
index 89c7634e530..aea8bcf1741 100644
--- a/engines/m4/riddle/rooms/section3/room304.cpp
+++ b/engines/m4/riddle/rooms/section3/room304.cpp
@@ -208,7 +208,8 @@ void Room304::parser() {
 		}
 	} else if (_G(kernel).trigger == 749) {
 		midi_stop();
-	} else if (_G(flags)[V001] && _val4) {
+	} else if (_G(flags)[V001] && _val4
+		&& _G(kernel).trigger >= 49 && _G(kernel).trigger <= 54) {
 		switch (_G(kernel).trigger) {
 		case 49:
 			ws_hide_walker();
@@ -243,10 +244,40 @@ void Room304::parser() {
 		default:
 			break;
 		}
-	} else if (0) {
-		parserSwitch();
+	} else if (_G(flags)[V001] && (takeFlag || useFlag) && player_said("samurai sword")) {
+		if (_G(flags)[V001]) {
+			switch (_G(kernel).trigger) {
+			case 11:
+				terminateMachineAndNull(_sword);
+				series_ranged_play("CUT SNAKE", 1, 0, 11, 22, 100, 0x200, 4, 12);
+				digi_play("304_s10", 1);
+				break;
+			case 12:
+				series_ranged_play("CUT SNAKE", 1, 0, 23, 55, 100, 0x200, 4, 13);
+				break;
+			case 13:
+				series_ranged_play("CUT SNAKE", 1, 0, 56, 69, 100, 0x200, 4, 14);
+				digi_play("304_s09", 2);
+				break;
+			case 14:
+				midi_fade_volume(0, 120);
+				kernel_timing_trigger(120, 749);
+				Common::strcpy_s(_G(player).noun, "HANDLING STICK");
+				series_ranged_play("CUT SNAKE", 1, 0, 70, 89, 100, 0x200, 4, 17);
+				digi_play("com125", 1);
+				break;
+			default:
+				break;
+			}
+		} else {
+			digi_play("304r64", 1);
+		}
+	} else if (_G(flags)[V001] && (takeFlag || useFlag) && player_said("handling stick")) {
+		// This is such an enormous switch in the original that
+		// it's been refactored to it's own method
+		handlingStick();
 	
-	} else if (lookFlag && player_said_any("native mask", "shield")) {
+	} if (lookFlag && player_said_any("native mask", "shield")) {
 		digi_play("304r05", 1);
 	} else if (lookFlag && player_said("mailbag")) {
 		digi_play("304r15", 1);
@@ -418,7 +449,7 @@ void Room304::intrMsg(frac16 myMessage, struct machine *sender) {
 	}
 }
 
-void Room304::parserSwitch() {
+void Room304::handlingStick() {
 	switch (_G(kernel).trigger) {
 	case 13:
 		series_stream_break_on_frame(_field64, 29, 14);
diff --git a/engines/m4/riddle/rooms/section3/room304.h b/engines/m4/riddle/rooms/section3/room304.h
index 3e287a3c41d..3b23aacf59e 100644
--- a/engines/m4/riddle/rooms/section3/room304.h
+++ b/engines/m4/riddle/rooms/section3/room304.h
@@ -64,7 +64,7 @@ private:
 	int _ctr1 = 0;
 
 	static void intrMsg(frac16 myMessage, struct machine *sender);
-	void parserSwitch();
+	void handlingStick();
 
 public:
 	Room304() : Room() {}




More information about the Scummvm-git-logs mailing list