[Scummvm-git-logs] scummvm master -> 2e736ff386cbf07874a087c5f07c807ebfd4b1ec
Strangerke
noreply at scummvm.org
Tue Nov 12 21:45:09 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:
2e736ff386 M4: RIDDLE: Room 204: partial implementation of daemon (up to 620)
Commit: 2e736ff386cbf07874a087c5f07c807ebfd4b1ec
https://github.com/scummvm/scummvm/commit/2e736ff386cbf07874a087c5f07c807ebfd4b1ec
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-12T22:44:30+01:00
Commit Message:
M4: RIDDLE: Room 204: partial implementation of daemon (up to 620)
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 0bf5a584c39..c3d0497f9a0 100644
--- a/engines/m4/riddle/rooms/section2/room204.cpp
+++ b/engines/m4/riddle/rooms/section2/room204.cpp
@@ -31,6 +31,14 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+const int16 ROOM204_NORMAL_DIRS[] = {
+ 200, -1, -1};
+const int16 ROOM204_SHADOW_DIRS[6] = {
+ 210, -1, -1};
+static const char *ROOM204_NORMAL_NAMES[5] = { "priest walker" };
+static const char *ROOM204_SHADOW_NAMES[5] = { "kuangs shadow 2" };
+
+
void Room204::preload() {
_G(player).walker_type = WALKER_ALT;
_G(player).shadow_type = SHADOW_ALT;
@@ -1317,27 +1325,215 @@ void Room204::daemon() {
break;
case 588:
+ MoveScreenDelta(_G(game_buff_ptr), 0, 0);
+ ws_walk_load_walker_series(ROOM204_NORMAL_DIRS, ROOM204_NORMAL_NAMES, false);
+ ws_walk_load_walker_series(ROOM204_SHADOW_DIRS, ROOM204_SHADOW_NAMES, false);
+ game_set_scale(369, 326, 100, 99);
+ _priestWalkerMach = triggerMachineByHash_3000(8, 14, *ROOM204_NORMAL_DIRS, *ROOM204_SHADOW_DIRS, 1864, 334, 3, triggerMachineByHashCallback3000, "Priest Walker");
+ game_set_scale(369, 326, 47, 38);
+ kernel_timing_trigger(20, 590, nullptr);
+
+ break;
+
case 590:
+ midi_play("PRIEST", 255, false, -1, 949);
+ series_stream("PRIEST ENTERS", 7, 0, 592);
+
+ break;
+
case 592:
+ game_set_scale(369, 326, 100, 99);
+ ws_demand_location(_priestWalkerMach, 360, 305);
+ game_set_scale(369, 326, 47, 38);
+ kernel_timing_trigger(5, 593, nullptr);
+
+ break;
+
case 593:
+ subDaemon_215F4();
+ kernel_timing_trigger(20, 594, nullptr);
+
+ break;
+
case 594:
+ if (_field148_mach)
+ _field13C_triggerNum = kernel_trigger_create(596);
+ else
+ kernel_timing_trigger(20, 594, nullptr);
+
+ break;
+
case 596:
+ _field134 = 1;
+ _field10 = 16;
+ _field68 = 1;
+
+ _field18_triggerNum = kernel_trigger_create(597);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(2, 569, nullptr);
+
+ break;
+
case 597:
+ _field10 = 18;
+ player_set_commands_allowed(true);
+
+
+ break;
+
case 603:
+ if (_field134 == 1 && _field138 == 1 && _field13C_triggerNum != -1) {
+ kernel_trigger_dispatchx(_field13C_triggerNum);
+ _field13C_triggerNum = -1;
+ }
+
+ if (_field140 == 1) {
+ terminateMachine(_field148_mach);
+ _field148_mach = nullptr;
+
+ if (_field144 != -1) {
+ kernel_trigger_dispatchx(_field144);
+ _field144 = -1;
+ }
+ }
+
+ kernel_timing_trigger(1, 604, nullptr);
+
+ break;
+
case 604:
+ switch (_field134) {
+ case 1:
+ sendWSMessage_10000(1, _field148_mach, _field74_series, 2, 2, 603, _field74_series, 2, 2, 0);
+ break;
+
+ case 2: {
+ int32 rnd = imath_ranged_rand(1, 2);
+ sendWSMessage_10000(1, _field148_mach, _field74_series, 1, rnd, 603, _field74_series, rnd, rnd, 0);
+ }
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
case 605:
+ _field168 = 0;
+ _field170 = 0;
+ _field174 = 0;
+
+ _G(kernel).trigger_mode = KT_PARSE;
+
+ conv_load("conv204a", 10, 10, 747);
+ conv_export_value(conv_get_handle(), _G(flags[V071]) ? 0 : 1, 0);
+ conv_play(conv_get_handle());
+
+ break;
+
case 606:
+ if (_field164 == 1) {
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(1, 714, nullptr);
+
+ _field164 = 0;
+ _G(flags[V056]) = 1;
+ } else if (_field168 == 1) {
+ player_set_commands_allowed(false);
+ _field168 = 0;
+ kernel_timing_trigger(1, 660, nullptr);
+ } else {
+ kernel_timing_trigger(1, 607, nullptr);
+ }
+
+ break;
+
case 607:
+ _field10 = 16;
+ _field18_triggerNum = kernel_trigger_create(608);
+ _field134 = 1;
+
+ break;
+
case 608:
+ _field2C = 1;
+ _field140 = 1;
+ player_set_commands_allowed(true);
+
+ break;
case 609:
+ player_set_commands_allowed(false);
+ _field108 = 1;
+ kernel_timing_trigger(5, 611, nullptr);
+
+ break;
+
case 611:
+ ws_get_walker_info(_mcMach, &_fieldFC_infoX, &_field100_infoY, &_G(player_info).scale, &_G(player_info).depth, &_G(player_info).facing);
+
+ if (_fieldFC_infoX == _fieldE4_walkerDestX) {
+ ws_walk(_G(my_walker), 1874, 333, nullptr, -1, 3, true);
+ kernel_timing_trigger(120, 613, nullptr);
+ } else
+ kernel_timing_trigger(60, 611, nullptr);
+
+ break;
+
case 612:
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(_fieldE4_walkerDestX + 1, 324, -1);
+ ws_custom_walk(_mcMach, 614, 1);
+
+ break;
+
case 613:
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_fieldE4_walkerDestX + 20 >= _G(player_info).x)
+ kernel_timing_trigger(15, 613, nullptr);
+ else
+ kernel_timing_trigger(1, 612, nullptr);
+
+ break;
+
case 614:
+ _dword1A189C = 0;
+ _meiTrekTalkerPos4Series = series_load("MEI TREK TALKER POS4", -1, nullptr);
+ setGlobals1(_meiTrekTalkerPos4Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcMach, 615);
+ digi_play("COM038", 1, 255, 615, -1);
+
+ break;
+
case 615:
+ if (_dword1A189C >= 1) {
+ _dword1A189C = 0;
+ sendWSMessage_150000(_mcMach, 616);
+ } else {
+ ++_dword1A189C;
+ }
+
+ break;
+
case 616:
+ series_unload(_meiTrekTalkerPos4Series);
+ ws_walk(_G(my_walker), _fieldE4_walkerDestX + 35, 333, nullptr, 619, 10, true);
+
+ break;
+
case 619:
+ digi_play("204R29", 1, 255, 620, -1);
+ break;
+
case 620:
+ _meiTrekTalkerPos4Series = series_load("MEI TREK TALKER POS4", -1, nullptr);
+ setGlobals1(_meiTrekTalkerPos4Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcMach, 621);
+ digi_play("204M30", 1, 255, 621, -1);
+
+ break;
+
case 621:
case 622:
case 623:
@@ -1365,6 +1561,13 @@ void Room204::daemon() {
case 650:
case 651:
case 652:
+ _field40 = 0;
+ series_unload(_field88);
+ player_set_commands_allowed(true);
+ _field124 = 1;
+ player_set_commands_allowed(true);
+ break;
+
case 660:
case 661:
case 662:
@@ -1378,6 +1581,11 @@ void Room204::daemon() {
case 675:
case 676:
case 677:
+ _204pu99Mach = series_place_sprite("204PU99", 0, 0, 0, 100, 0);
+ kernel_timing_trigger(120, 678, nullptr);
+
+ break;
+
case 678:
case 679:
case 680:
@@ -1386,10 +1594,23 @@ void Room204::daemon() {
case 683:
case 684:
case 687:
+ break;
case 688:
+ _field2C = 1;
+ subDaemon_ADBB0();
+ kernel_timing_trigger(5, 689, nullptr);
+
+ break;
+
case 689:
case 691:
case 692:
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(526, 360, -1);
+ ws_custom_walk(_mcMach, 8, 693, true);
+
+ break;
+
case 693:
case 694:
case 695:
@@ -1412,10 +1633,22 @@ void Room204::daemon() {
case 712:
case 713:
case 714:
+ digi_preload("204R03C", -1);
+ _204pu05Mach = series_stream("204PU05", 5, 0, 716);
+ series_stream_break_on_frame(_204pu05Mach, 9, 715);
+
+ break;
+
case 715:
case 716:
case 719:
case 720:
+ _field10 = 16;
+ _204pu05Mach = series_stream("204PU04", 3, 0, 722);
+ series_stream_break_on_frame(_204pu05Mach, 6, 721);
+
+ break;
+
case 721:
case 722:
case 723:
@@ -1479,6 +1712,19 @@ void Room204::subDaemon_ADB7C() {
warning("STUB - subDaemon_ADB7C");
}
+void Room204::game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS) {
+ warning("STUB - game_set_scale");
+}
+
+void Room204::subDaemon_215F4() {
+ warning("STUB - subDaemon_215F4");
+}
+
+void Room204::subDaemon_ADBB0() {
+ warning("STUB - subDaemon_ADBB0");
+}
+
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section2/room204.h b/engines/m4/riddle/rooms/section2/room204.h
index e32d7582608..6645fadc046 100644
--- a/engines/m4/riddle/rooms/section2/room204.h
+++ b/engines/m4/riddle/rooms/section2/room204.h
@@ -46,6 +46,11 @@ private:
void addLookMalletHotspot();
void subDaemon_ADB7C();
+ void game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS);
+ void subDaemon_215F4();
+ void subDaemon_ADBB0();
+
+ int32 _dword1A189C = 0;
int32 _field4 = 0;
int32 _field10 = 0;
@@ -58,7 +63,9 @@ private:
int32 _field44_triggerNum = 0;
int32 _field48_triggerNum = 0;
int32 _field68 = 0;
+ int32 _field74_series = 0;
int32 _field78_series = 0;
+ int32 _field88 = 0;
int32 _fieldBC_trigger = 0;
int32 _fieldC0_trigger = 0;
int32 _fieldC4 = 0;
@@ -86,6 +93,15 @@ private:
int32 _field128 = 0;
int32 _field12C_triggerNum = 0;
int32 _field130 = 0;
+ int32 _field134 = 0;
+ int32 _field138 = 0;
+ int32 _field13C_triggerNum = 0;
+ int32 _field140 = 0;
+ int32 _field144 = 0;
+ int32 _field164 = 0;
+ int32 _field168 = 0;
+ int32 _field170 = 0;
+ int32 _field174 = 0;
int32 _field180 = 0;
int32 _field184 = 0;
int32 _field188 = 0;
@@ -106,17 +122,23 @@ private:
int32 _ripTrekLowReachPos2Series = 0;
int32 _ripTrekTalkerPos3Series = 0;
+ machine *_field148_mach = nullptr;
+
+ machine *_204pu05Mach = nullptr;
+ machine *_204pu99Mach = nullptr;
machine *_acolyteGuardingEntranceMach = nullptr;
machine *_courtyardGongMach = nullptr;
machine *_mcMach = nullptr;
machine *_malletSpriteMach = nullptr;
+ machine *_priestWalkerMach = nullptr;
machine *_ripDeltaMachineStateMach = nullptr;
machine *_safariShadow3Mach = nullptr;
machine *_silverButterflyCoinMach = nullptr;
- machine * _meiChenOtherStatesMach = nullptr;
- machine * _safariShadow2Mach = nullptr;
+ machine *_meiChenOtherStatesMach = nullptr;
+ machine *_safariShadow2Mach = nullptr;
};
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
More information about the Scummvm-git-logs
mailing list