[Scummvm-git-logs] scummvm master -> 4fd959d65011c588a1515e016d7336bdabd92034

Strangerke noreply at scummvm.org
Sun Dec 15 22:18:29 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:
7ece3902d1 M4: RIDDLE: Room 706: Finalize implementation (implement playCheckBrochureAnim)
4fd959d650 M4: RIDDLE: Room 707: Start implementation (preload, init, pre_parser, daemon)


Commit: 7ece3902d11f7b79bae910f26c58f920432b2ff9
    https://github.com/scummvm/scummvm/commit/7ece3902d11f7b79bae910f26c58f920432b2ff9
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-15T21:52:45+01:00

Commit Message:
M4: RIDDLE: Room 706: Finalize implementation (implement playCheckBrochureAnim)

Changed paths:
    engines/m4/riddle/rooms/section7/room706.cpp
    engines/m4/riddle/rooms/section7/room706.h


diff --git a/engines/m4/riddle/rooms/section7/room706.cpp b/engines/m4/riddle/rooms/section7/room706.cpp
index 97afd507dbe..1db032f3e15 100644
--- a/engines/m4/riddle/rooms/section7/room706.cpp
+++ b/engines/m4/riddle/rooms/section7/room706.cpp
@@ -157,31 +157,31 @@ void Room706::parser() {
 	} else if (player_said("PRAYER WHEEL BROCHURE", "EMPTY NICHE") && inv_player_has("PRAYER WHEEL BROCHURE")) {
 		digi_play("com123", 1, 255, -1, 997);
 	} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #13") && inv_player_has("PRAYER WHEEL BROCHURE")) {
-		subA8BA8(_G(kernel).trigger, "706r04");
+		playCheckBrochureAnim(_G(kernel).trigger, "706r04");
 	} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #14") && inv_player_has("PRAYER WHEEL BROCHURE")) {
-		subA8BA8(_G(kernel).trigger, "706r09");
+		playCheckBrochureAnim(_G(kernel).trigger, "706r09");
 	} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #16") && inv_player_has("PRAYER WHEEL BROCHURE")) {
-		subA8BA8(_G(kernel).trigger, "706r12");
+		playCheckBrochureAnim(_G(kernel).trigger, "706r12");
 	} else if (player_said("PRAYER WHEEL BROCHURE", "PRAYER WHEEL #15") && inv_player_has("PRAYER WHEEL BROCHURE")) {
 		switch (_G(flags[V219])) {
 		case 1:
-			subA8BA8(_G(kernel).trigger, "704r09");
+			playCheckBrochureAnim(_G(kernel).trigger, "704r09");
 			break;
 
 		case 2:
-			subA8BA8(_G(kernel).trigger, "705r04");
+			playCheckBrochureAnim(_G(kernel).trigger, "705r04");
 			break;
 
 		case 3:
-			subA8BA8(_G(kernel).trigger, "703r11");
+			playCheckBrochureAnim(_G(kernel).trigger, "703r11");
 			break;
 
 		case 4:
-			subA8BA8(_G(kernel).trigger, "705r14a");
+			playCheckBrochureAnim(_G(kernel).trigger, "705r14a");
 			break;
 
 		case 5:
-			subA8BA8(_G(kernel).trigger, "706r10");
+			playCheckBrochureAnim(_G(kernel).trigger, "706r10");
 			break;
 
 		default:
@@ -956,8 +956,53 @@ void Room706::conv706a() {
 
 }
 
-void Room706::subA8BA8(int32 trigger, const char *digiName) {
-	// TODO Not implemented yet
+void Room706::playCheckBrochureAnim(int32 trigger, const char *digiName) {
+	switch (trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_walk(_G(my_walker), _G(player_info).x + 1, _G(player_info).y - 1, nullptr, 41, 1, true);
+
+		break;
+
+	case 41:
+		_ripChecksBrochureSeries = series_load("RIP CHECKS BROCHURE", -1, nullptr);
+		setGlobals1(_ripChecksBrochureSeries, 1, 25, 25, 25, 0, 25, 31, 31, 31, 0, 31, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), -1);
+		kernel_timing_trigger(60, 43, nullptr);
+
+		break;
+
+	case 43:
+		sendWSMessage_120000(_G(my_walker), -1);
+		digi_play(digiName, 1, 255, 44, -1);
+
+		break;
+
+	case 44:
+		kernel_timing_trigger(10, 45, nullptr);
+		break;
+
+	case 45:
+		sendWSMessage_130000(_G(my_walker), 48);
+		break;
+
+	case 48:
+		sendWSMessage_150000(_G(my_walker), 49);
+		break;
+
+	case 49:
+		// CHECKME: Loading the series is totally illogical, despite it's in the original game.
+		// At this point, we usually unload the series (+ it's already loaded). I suspect it could lead to a memory leak.
+		_ripChecksBrochureSeries = series_load("RIP CHECKS BROCHURE");
+		player_set_commands_allowed(true);
+
+		break;
+
+	default:
+		break;
+
+	}
 }
 
 void Room706::useWheelOnNiche(int32 trigger, int32 val1) {
diff --git a/engines/m4/riddle/rooms/section7/room706.h b/engines/m4/riddle/rooms/section7/room706.h
index 13cfeae1e1e..519b2d44b7f 100644
--- a/engines/m4/riddle/rooms/section7/room706.h
+++ b/engines/m4/riddle/rooms/section7/room706.h
@@ -41,7 +41,7 @@ public:
 
 private:
 	void conv706a();
-	void subA8BA8(int32 trigger, const char *digiName);
+	void playCheckBrochureAnim(int32 trigger, const char *digiName);
 	void useWheelOnNiche(int32 trigger, int32 val1);
 
 	int32 _field78_mode = 0;
@@ -54,6 +54,7 @@ private:
 	int32 _706Monk4Series = 0;
 	int32 _706RipGoesDownStairsSeries = 0;
 	int32 _706RipGoesUpStairsSeries = 0;
+	int32 _ripChecksBrochureSeries = 0;
 	int32 _ripLooksDownSeries = 0;
 	int32 _ripShieldsFaceSeries = 0;
 	int32 _ripStepsDownSeries = 0;


Commit: 4fd959d65011c588a1515e016d7336bdabd92034
    https://github.com/scummvm/scummvm/commit/4fd959d65011c588a1515e016d7336bdabd92034
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-15T23:18:10+01:00

Commit Message:
M4: RIDDLE: Room 707: Start implementation (preload, init, pre_parser, daemon)

Changed paths:
    engines/m4/riddle/rooms/section7/room707.cpp
    engines/m4/riddle/rooms/section7/room707.h


diff --git a/engines/m4/riddle/rooms/section7/room707.cpp b/engines/m4/riddle/rooms/section7/room707.cpp
index 0cd2144505d..79db16226d8 100644
--- a/engines/m4/riddle/rooms/section7/room707.cpp
+++ b/engines/m4/riddle/rooms/section7/room707.cpp
@@ -21,16 +21,98 @@
 
 #include "m4/riddle/rooms/section7/room707.h"
 #include "m4/graphics/gr_series.h"
+#include "m4/gui/gui_vmng_screen.h"
 #include "m4/riddle/vars.h"
 
 namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+void Room707::preload() {
+	_G(player).walker_type = WALKER_ALT;
+	_G(player).shadow_type = SHADOW_ALT;
+	LoadWSAssets("OTHER SCRIPT", _G(master_palette));
+}
+
 void Room707::init() {
+	ws_demand_location(_G(my_walker), 299, 200);
+	ws_demand_facing(_G(my_walker), 4);
+	if (!player_been_here(707)) {
+		_field44 = 0;
+	}
+
+	_peerIntoCupolaPos2Series = series_load("PEER INTO CUPOLA POS2", -1, nullptr);
+	_peerIntoCupolaPos1Series = series_load("PEER INTO CUPOLA POS1", -1, nullptr);
+
+	switch (_G(game).previous_room) {
+	case 703:
+		ws_demand_location(_G(my_walker), 421, 150);
+		ws_demand_facing(_G(my_walker), 4);
+		player_set_commands_allowed(false);
+		ws_hide_walker(_G(my_walker));
+		_ripWalksUpLeftStairsSeries = series_load("RIP WALKS UP LEFT STAIRS", -1, nullptr);
+		_ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+		sendWSMessage_10000(1, _ripStairsMach, _ripWalksUpLeftStairsSeries, 1, 22, 11, _ripWalksUpLeftStairsSeries, 22, 22, 0);
+
+		break;
+
+	case 704:
+		ws_demand_location(_G(my_walker), 374, 252);
+		ws_demand_facing(_G(my_walker), 2);
+		_ripUpStairsPos2Series = series_load("RIP UP STAIRS POSITION 2", -1, nullptr);
+		player_set_commands_allowed(false);
+		ws_hide_walker(_G(my_walker));
+		_ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+		sendWSMessage_10000(1, _ripStairsMach, _ripUpStairsPos2Series, 1, 37, 11, _ripUpStairsPos2Series, 37, 37, 0);
+
+		break;
+
+	case 705:
+		MoveScreenDelta(_G(game_buff_ptr), -640, 0);
+		ws_demand_location(_G(my_walker), 930, 248);
+		ws_demand_facing(_G(my_walker), 10);
+		player_set_commands_allowed(false);
+		ws_hide_walker(_G(my_walker));
+		_ripUpStairsPos10Series = series_load("RIP UP STAIRS POSITION 10", -1, nullptr);
+		_ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+		sendWSMessage_10000(1, _ripStairsMach, _ripUpStairsPos10Series, 1, 37, 11, _ripUpStairsPos10Series, 37, 37, 0);
+
+		break;
+
+	case 706:
+		MoveScreenDelta(_G(game_buff_ptr), -640, 0);
+		ws_demand_location(_G(my_walker), 860, 149);
+		ws_demand_facing(_G(my_walker), 8);
+		player_set_commands_allowed(false);
+		ws_hide_walker(_G(my_walker));
+		_ripWalksUpFarStairsSeries = series_load("RIP WALKS UP FAR STAIRS", -1, nullptr);
+		_ripStairsMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, false, triggerMachineByHashCallback, "rip stairs machine");
+		sendWSMessage_10000(1, _ripStairsMach, _ripWalksUpFarStairsSeries, 1, 22, 11, _ripWalksUpFarStairsSeries, 22, 22, 0);
+
+		break;
+
+	default:
+		digi_preload("950_s39", -1);
+		break;
+	}
+
+	digi_play_loop("950_s39", 3, 255, -1, -1);
+}
+
+void Room707::pre_parser() {
+	// No implementation
+}
+
+void Room707::parser() {
+	// TODO : Not implemented yet
 }
 
 void Room707::daemon() {
+	if (_G(kernel).trigger == 11) {
+		player_set_commands_allowed(true);
+		ws_unhide_walker(_G(my_walker));
+		terminateMachine(_ripStairsMach);
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room707.h b/engines/m4/riddle/rooms/section7/room707.h
index 2d3c50bfbc7..89affe1e64d 100644
--- a/engines/m4/riddle/rooms/section7/room707.h
+++ b/engines/m4/riddle/rooms/section7/room707.h
@@ -33,8 +33,23 @@ public:
 	Room707() : Room() {}
 	~Room707() override {}
 
+	void preload() override;
 	void init() override;
+	void pre_parser() override;
+	void parser() override;
 	void daemon() override;
+
+private:
+	int32 _field44 = 0;
+
+	int32 _peerIntoCupolaPos1Series = 0;
+	int32 _peerIntoCupolaPos2Series = 0;
+	int32 _ripUpStairsPos10Series = 0;
+	int32 _ripUpStairsPos2Series = 0;
+	int32 _ripWalksUpFarStairsSeries = 0;
+	int32 _ripWalksUpLeftStairsSeries = 0;
+
+	machine *_ripStairsMach = nullptr;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list