[Scummvm-git-logs] scummvm master -> 0cc0f9e8da58e13edce7032bc4f09962d9fd796f
dreammaster
noreply at scummvm.org
Sun Sep 1 19:56:09 UTC 2024
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
59c623b6fc M4: RIDDLE: Added room 410
773da2cd37 M4: RIDDLE: Added room 413
0cc0f9e8da M4: RIDDLE: Added room 456
Commit: 59c623b6fc91dd58b90517cb0c3e0bb2115a41c8
https://github.com/scummvm/scummvm/commit/59c623b6fc91dd58b90517cb0c3e0bb2115a41c8
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T12:56:04-07:00
Commit Message:
M4: RIDDLE: Added room 410
Changed paths:
engines/m4/platform/sound/digi.cpp
engines/m4/platform/sound/digi.h
engines/m4/riddle/rooms/section4/room410.cpp
engines/m4/riddle/rooms/section4/room410.h
diff --git a/engines/m4/platform/sound/digi.cpp b/engines/m4/platform/sound/digi.cpp
index a3052a55cc8..62e387bbbdf 100644
--- a/engines/m4/platform/sound/digi.cpp
+++ b/engines/m4/platform/sound/digi.cpp
@@ -221,6 +221,10 @@ int32 Digi::ticks_to_play(const char *name, int roomNum) {
return (int32)floor(size * 0.000090702946 * 60.0);
}
+void Digi::change_panning(int val1, int val2) {
+ warning("TODO: digi_change_panning");
+}
+
} // namespace Sound
bool digi_preload(const Common::String &name, int roomNum) {
@@ -267,4 +271,8 @@ int32 digi_ticks_to_play(const char *name, int roomNum) {
return _G(digi).ticks_to_play(name, roomNum);
}
+void digi_change_panning(int val1, int val2) {
+ _G(digi).change_panning(val1, val2);
+}
+
} // namespace M4
diff --git a/engines/m4/platform/sound/digi.h b/engines/m4/platform/sound/digi.h
index 32a3540d565..79366308f10 100644
--- a/engines/m4/platform/sound/digi.h
+++ b/engines/m4/platform/sound/digi.h
@@ -104,6 +104,7 @@ public:
void set_overall_volume(int vol);
int get_overall_volume();
int32 ticks_to_play(const char *name, int roomNum = -1);
+ void change_panning(int val1, int val2);
};
} // namespace Sound
@@ -121,6 +122,7 @@ void digi_change_volume(int channel, int vol);
void digi_set_overall_volume(int vol);
int digi_get_overall_volume();
int32 digi_ticks_to_play(const char *name, int roomNum = -1);
+void digi_change_panning(int val1, int val2);
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section4/room410.cpp b/engines/m4/riddle/rooms/section4/room410.cpp
index dfb04fde6c6..5828dbb227f 100644
--- a/engines/m4/riddle/rooms/section4/room410.cpp
+++ b/engines/m4/riddle/rooms/section4/room410.cpp
@@ -27,10 +27,138 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room410::preload() {
+ _G(player).walker_type = 0;
+ _G(player).shadow_type = 0;
+ _G(player).walker_in_this_scene = false;
+}
+
void Room410::init() {
+ digi_preload("410r04");
+ digi_preload("410r05");
+ digi_preload("410r01");
+ digi_preload("410t01");
+ digi_preload("410r02");
+ digi_preload("410t02");
+ digi_preload("410r03");
+ digi_preload("410_s02");
+ _val1 = 140;
+
+ midi_play("danzig1", 0, 1, -1, 949);
+ interface_hide();
+ _pu = series_stream("410PU01", 8, 0x100, -1);
+ series_stream_break_on_frame(_pu, 2, 100);
+ digi_play("410_s02", 3, 140);
}
void Room410::daemon() {
+ switch (_G(kernel).trigger) {
+ case 20:
+ disable_player_commands_and_fade_init(25);
+ break;
+
+ case 25:
+ case 229:
+ interface_show();
+ _G(game).setRoom(402);
+ break;
+
+ case 100:
+ if (_G(player).been_here_before) {
+ series_stream_break_on_frame(_pu, 56, 300);
+ digi_play("410r05", 1, 255, 103);
+ } else {
+ series_stream_break_on_frame(_pu, 71, 104);
+ digi_play("410r04", 1, 255, 103);
+ }
+ break;
+
+ case 103:
+ midi_play("danzig1", 255, 1, -1, 949);
+ break;
+
+ case 104:
+ series_stream_break_on_frame(_pu, 102, 105);
+ series_stream_check_series(_pu, 5);
+ digi_play("410r01", 1);
+ break;
+
+ case 105:
+ series_stream_break_on_frame(_pu, 116, 110);
+ series_stream_check_series(_pu, 3000);
+ digi_play("410t01", 1, 255, 106);
+ break;
+
+ case 106:
+ series_stream_check_series(_pu, 7);
+ ws_OverrideCrunchTime(_pu);
+ break;
+
+ case 110:
+ series_stream_break_on_frame(_pu, 126, 112);
+ digi_play("410r02", 1);
+ break;
+
+ case 112:
+ series_stream_break_on_frame(_pu, 136, 120);
+ digi_play("410t02", 1);
+ break;
+
+ case 120:
+ terminateMachineAndNull(_pu);
+ _pu = series_stream("410PU02", 7, 0x100, -1);
+ series_stream_break_on_frame(_pu, 8, 125);
+ break;
+
+ case 125:
+ series_stream_break_on_frame(_pu, 19, 127);
+ digi_play("410r03", 1, 255, 225);
+ break;
+
+ case 127:
+ series_stream_check_series(_pu, 3000);
+ break;
+
+ case 225:
+ kernel_timing_trigger(40, 227);
+ break;
+
+ case 227:
+ disable_player_commands_and_fade_init(229);
+ break;
+
+ case 300:
+ series_stream_check_series(_pu, 3000);
+ kernel_timing_trigger(1, 305);
+ disable_player_commands_and_fade_init(-1);
+ break;
+
+ case 305:
+ _val1 -= 4;
+ if (_val1 >= 0) {
+ digi_change_panning(3, _val1);
+ kernel_timing_trigger(2, 305);
+ } else {
+ interface_show();
+ _G(game).setRoom(402);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room410::parser() {
+ if (player_said("exit")) {
+ if (_G(kernel).trigger <= 0) {
+ player_set_commands_allowed(false);
+ disable_player_commands_and_fade_init(1);
+ } else if (_G(kernel).trigger == 1) {
+ digi_stop(3);
+ _G(game).setRoom(303);
+ }
+ }
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room410.h b/engines/m4/riddle/rooms/section4/room410.h
index ca4644b843e..d0b418e409b 100644
--- a/engines/m4/riddle/rooms/section4/room410.h
+++ b/engines/m4/riddle/rooms/section4/room410.h
@@ -29,12 +29,18 @@ namespace Riddle {
namespace Rooms {
class Room410 : public Room {
+private:
+ int _val1 = 0;
+ machine *_pu = nullptr;
+
public:
Room410() : Room() {}
~Room410() override {}
+ void preload() override;
void init() override;
void daemon() override;
+ void parser() override;
};
} // namespace Rooms
Commit: 773da2cd37f28913c461e61435cb92caa9e8e36d
https://github.com/scummvm/scummvm/commit/773da2cd37f28913c461e61435cb92caa9e8e36d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T12:56:04-07:00
Commit Message:
M4: RIDDLE: Added room 413
Changed paths:
engines/m4/riddle/rooms/section4/room413.cpp
engines/m4/riddle/rooms/section4/room413.h
diff --git a/engines/m4/riddle/rooms/section4/room413.cpp b/engines/m4/riddle/rooms/section4/room413.cpp
index 92603829032..05df3d8fd1d 100644
--- a/engines/m4/riddle/rooms/section4/room413.cpp
+++ b/engines/m4/riddle/rooms/section4/room413.cpp
@@ -27,10 +27,54 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room413::preload() {
+ _G(player).walker_in_this_scene = false;
+}
+
void Room413::init() {
+ _buttonFlag = false;
+ interface_hide();
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(1, 25);
+ _G(kernel).call_daemon_every_loop = true;
}
void Room413::daemon() {
+ switch (_G(kernel).trigger) {
+ case 25:
+ kernel_timing_trigger(30, 27);
+ break;
+
+ case 27:
+ digi_play(_G(game).previous_room == 301 ? "413r02" : "4013r01", 1, 255, 30);
+ break;
+
+ case 30:
+ kernel_timing_trigger(30, 50);
+ break;
+
+ case 50:
+ disable_player_commands_and_fade_init(75);
+ break;
+
+ case 75:
+ interface_show();
+ restoreAutosave();
+ break;
+
+ default:
+ break;
+ }
+
+ if (_G(MouseState).ButtonState) {
+ if (!_buttonFlag) {
+ _G(MouseState).Event = 0;
+ _G(kernel).call_daemon_every_loop = false;
+ kernel_timing_trigger(1, 50);
+ }
+
+ _buttonFlag = true;
+ }
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room413.h b/engines/m4/riddle/rooms/section4/room413.h
index 4404f06be0f..21aa27fc2c3 100644
--- a/engines/m4/riddle/rooms/section4/room413.h
+++ b/engines/m4/riddle/rooms/section4/room413.h
@@ -29,10 +29,14 @@ namespace Riddle {
namespace Rooms {
class Room413 : public Room {
+private:
+ bool _buttonFlag = false;
+
public:
Room413() : Room() {}
~Room413() override {}
+ void preload() override;
void init() override;
void daemon() override;
};
Commit: 0cc0f9e8da58e13edce7032bc4f09962d9fd796f
https://github.com/scummvm/scummvm/commit/0cc0f9e8da58e13edce7032bc4f09962d9fd796f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T12:56:04-07:00
Commit Message:
M4: RIDDLE: Added room 456
Changed paths:
engines/m4/riddle/rooms/section4/room456.cpp
engines/m4/riddle/rooms/section4/room456.h
diff --git a/engines/m4/riddle/rooms/section4/room456.cpp b/engines/m4/riddle/rooms/section4/room456.cpp
index 2eb0bed3cb7..7508e15be00 100644
--- a/engines/m4/riddle/rooms/section4/room456.cpp
+++ b/engines/m4/riddle/rooms/section4/room456.cpp
@@ -27,12 +27,299 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room456::preload() {
+ LoadWSAssets("OTHER SCRIPT", _G(master_palette));
+ _G(player).walker_in_this_scene = false;
+}
+
void Room456::init() {
+ _G(player).disable_hyperwalk = true;
+ _trigger = 577;
+ _G(player).walker_in_this_scene = false;
+
+ _seriesLighterChain = series_load("456 Lighter chain");
+ _seriesGrateOpens = series_load("45 GRATE OPENS");
+ _seriesCigarBoxTop = series_load("45 CIGAR BOX TOP");
+
+ _lighter = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallback456, "Lighter");
+ _vent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallback456, "Vent");
+ _lid = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallback456, "Cigar box lid");
+
+ if (_G(flags)[V335]) {
+ sendWSMessage_10000(1, _vent, _seriesGrateOpens, 15, 15, -1,
+ _seriesGrateOpens, 15, 15, 0);
+ hotspot_set_active("VENT", false);
+ } else {
+ sendWSMessage_10000(1, _vent, _seriesGrateOpens, 1, 1, -1,
+ _seriesGrateOpens, 1, 1, 0);
+ hotspot_set_active("VENT ", false);
+ hotspot_set_active("HOLE", false);
+ hotspot_set_active("HOLE ", false);
+ }
+
+ if (_G(flags)[V336]) {
+ sendWSMessage_10000(1, _lid, _seriesCigarBoxTop, 14, 14, -1,
+ _seriesCigarBoxTop, 14, 14, 0);
+ hotspot_set_active("LID", false);
+ } else {
+ sendWSMessage_10000(1, _lid, _seriesCigarBoxTop, 1, 1, -1,
+ _seriesCigarBoxTop, 1, 1, 0);
+ hotspot_set_active("LID ", false);
+ hotspot_set_active("CIGAR ", false);
+ }
+
+ sendWSMessage_10000(1, _lighter, _seriesLighterChain, 1, 1, -1,
+ _seriesLighterChain, 1, 1, 0);
+
+ if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
+ player_set_commands_allowed(true);
+ digi_preload("456_s03a");
+ digi_preload("456_s03");
+ digi_preload("456_s01");
+
+ if (_G(flags)[V322]) {
+ digi_play("456_s03a", 3);
+ kernel_timing_trigger(_trigger, 700);
+ }
+ } else if (_G(flags)[V322]) {
+ digi_play("456_s03a", 3);
+ kernel_timing_trigger(_trigger, 700);
+ } else {
+ digi_preload("456_s03a");
+ digi_preload("456_s03");
+ digi_preload("456_s01");
+ }
}
void Room456::daemon() {
+ if (_G(kernel).trigger == 700 && _G(flags)[V322]) {
+ digi_play_loop("456_s03a", 3);
+ }
+}
+
+void Room456::pre_parser() {
+ _G(player).resetWalk();
}
+void Room456::parser() {
+ bool lookFlag = player_said_any("look", "look at");
+ bool takeFlag = player_said("take");
+ bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
+
+ if (lookFlag && player_said_any("RED BUTTON", "BLACK BUTTON", "FAN SWITCH")) {
+ digi_play("456r09", 1);
+ } else if (lookFlag && player_said_any("RED BUTTON ", "BLACK BUTTON ")) {
+ digi_play("456r03", 1);
+ } else if (lookFlag && player_said("ASHTRAY")) {
+ digi_play("456r11", 1);
+ } else if (lookFlag && player_said("SWITCH")) {
+ digi_play("456r26", 1);
+ } else if (lookFlag && player_said("HOLE ")) {
+ digi_play("456r27", 1);
+ } else if (lookFlag && player_said("HOLE")) {
+ digi_play("456r28", 1);
+ } else if (lookFlag && player_said("ACE OF SPADES")) {
+ digi_play("456r26", 1);
+ } else if (lookFlag && player_said("LIGHTER")) {
+ digi_play("456r06", 1);
+ } else if (lookFlag && player_said("CIGAR ")) {
+ digi_play("com098", 1, 255, -1, 997);
+ } else if (lookFlag && player_said_any("VENT", "VENT ")) {
+ digi_play("456r10", 1);
+ } else if (lookFlag && player_said_any("CIGAR BOX", "LID", "LID ")) {
+ digi_play("456r04", 1);
+ } else if (lookFlag && player_said("PICTURE")) {
+ digi_play("456r16", 1);
+ } else if (lookFlag && player_said("CHAIN")) {
+ digi_play("456r07", 1);
+ } else if (lookFlag && player_said(" ")) {
+ digi_play("456r17", 1);
+ } else if (useFlag && player_said("LID")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _lid, _seriesCigarBoxTop, 1, 14, 2,
+ _seriesCigarBoxTop, 14, 14, 0);
+ hotspot_set_active("LID", false);
+ _G(flags)[V336] = 1;
+ hotspot_set_active("LID ", true);
+ digi_play("456_s05", 2);
+ break;
+ case 2:
+ player_set_commands_allowed(false);
+ break;
+ default:
+ break;
+ }
+ } else if (useFlag && player_said("LID ")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _lid, _seriesCigarBoxTop, 14, 1, 2,
+ _seriesCigarBoxTop, 1, 1, 0);
+ hotspot_set_active("LID", true);
+ _G(flags)[V336] = 0;
+ hotspot_set_active("LID ", false);
+ digi_play("456_s05", 2);
+ break;
+ case 2:
+ player_set_commands_allowed(false);
+ break;
+ default:
+ break;
+ }
+ } else if (useFlag && player_said("VENT")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _vent, _seriesGrateOpens, 1, 15, 2,
+ _seriesGrateOpens, 15, 15, 0);
+ hotspot_set_active("VENT", false);
+ _G(flags)[V335] = 1;
+ hotspot_set_active("VENT ", true);
+ hotspot_set_active("HOLE", true);
+ hotspot_set_active("HOLE ", true);
+
+ digi_play("950_s36", 2, 255, -1, 950);
+ break;
+ case 2:
+ player_set_commands_allowed(false);
+ break;
+ default:
+ break;
+ }
+ } else if (useFlag && player_said("VENT ")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _vent, _seriesGrateOpens, 15, 1, 2,
+ _seriesGrateOpens, 1, 1, 0);
+ hotspot_set_active("VENT", true);
+ _G(flags)[V335] = 0;
+ hotspot_set_active("VENT ", false);
+ hotspot_set_active("HOLE", false);
+ hotspot_set_active("HOLE ", false);
+
+ digi_play("950_s36", 2, 255, -1, 950);
+ break;
+ case 2:
+ player_set_commands_allowed(false);
+ break;
+ default:
+ break;
+ }
+ } else if (useFlag && player_said("RED BUTTON")) {
+ if (_G(flags)[V322]) {
+ digi_play("456_s01", 2);
+ } else {
+ _G(flags)[V322] = 1;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ digi_play("456_s03", 3, 255, 700);
+ _G(kernel).trigger_mode = KT_PARSE;
+ }
+ } else if (useFlag && player_said("BLACK BUTTON")) {
+ if (_G(flags)[V322]) {
+ digi_stop(3);
+ digi_play("456_s04", 3);
+ _G(flags)[V322] = 0;
+ } else {
+ digi_play("456_s01", 3);
+ }
+ } else if (useFlag && player_said("CHAIN")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ sendWSMessage_10000(1, _lighter, _seriesLighterChain, 1, 4, 2,
+ _seriesLighterChain, 4, 4, 0);
+ digi_play("456_s02", 2);
+ break;
+ case 2:
+ sendWSMessage_10000(1, _lighter, _seriesLighterChain, 4, 1, 3,
+ _seriesLighterChain, 1, 1, 0);
+ break;
+ case 3:
+ digi_play("456r08", 1, 255, 4);
+ break;
+ case 4:
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (takeFlag && player_said("CIGAR ")) {
+ if (_G(flags)[V315]) {
+ digi_play("456r05", 1);
+ } else {
+ switch (_G(kernel).trigger) {
+ case -1:
+ kernel_examine_inventory_object("PING CIGAR", _G(master_palette),
+ 5, 1, 210, 210, 2, 0, -1);
+ break;
+ case 2:
+ inv_give_to_player("CIGAR");
+ _G(flags)[V315] = 1;
+ player_set_commands_allowed(true);
+ break;
+ }
+ }
+ } else if (takeFlag && player_said("ASHTRAY")) {
+ digi_play("456r12", 1);
+ } else if (takeFlag && player_said("LIGHTER")) {
+ digi_play("456r14", 1);
+ } else if (takeFlag && player_said("CIGAR BOX")) {
+ digi_play("r56r15", 1);
+ } else if (useFlag && player_said("RED BUTTON ")) {
+ digi_play("456_s01", 2);
+ } else if (useFlag && player_said("BLACK BUTTON ")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ digi_play("456_s01", 2);
+ player_set_commands_allowed(false);
+ disable_player_commands_and_fade_init(2);
+ break;
+ case 2:
+ _G(game).setRoom(406);
+
+ if (_G(flags)[V322]) {
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("456_s03a", 3);
+ }
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("BILLIARD BALL", "HOLE")) {
+ digi_play("456r13", 1);
+ } else if (player_said("BILLIARD BALL", "HOLE ")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _G(flags)[V321] = 1;
+ _G(flags)[V312] = 1;
+ inv_move_object("BILLIARD BALL", 456);
+ digi_play("456_s06", 1, 255, 1);
+ break;
+ case 1:
+ digi_play("456_s07", 1, 255, 2);
+ break;
+ default:
+ break;
+ }
+ } else {
+ return;
+ }
+
+ _G(player).command_ready = false;
+}
+
+void Room456::triggerMachineByHashCallback456(frac16 myMessage, machine *) {
+ kernel_trigger_dispatchx(myMessage);
+}
+
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section4/room456.h b/engines/m4/riddle/rooms/section4/room456.h
index a2435abcdf1..db3bf6dd4bf 100644
--- a/engines/m4/riddle/rooms/section4/room456.h
+++ b/engines/m4/riddle/rooms/section4/room456.h
@@ -29,12 +29,26 @@ namespace Riddle {
namespace Rooms {
class Room456 : public Room {
+private:
+ machine *_lighter = nullptr;
+ machine *_lid = nullptr;
+ machine *_vent = nullptr;
+ int _seriesLighterChain = 0;
+ int _seriesGrateOpens = 0;
+ int _seriesCigarBoxTop = 0;
+ int _trigger = 0;
+
+ static void triggerMachineByHashCallback456(frac16 myMessage, machine *);
+
public:
Room456() : Room() {}
~Room456() override {}
+ void preload() override;
void init() override;
void daemon() override;
+ void pre_parser() override;
+ void parser() override;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list