[Scummvm-git-logs] scummvm master -> 87938d0978358b4f8412fb26589bad7857732a97
dreammaster
noreply at scummvm.org
Tue Jun 30 10:44:27 UTC 2026
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
48b705713a MADS: FOREST: Order daemon in room 101, fix Russell disappearing
87938d0978 MADS: FOREST: Fix entering bedroom triggering endgame cutscene
Commit: 48b705713ac510c0cb27ac63c77f165e74fb7f62
https://github.com/scummvm/scummvm/commit/48b705713ac510c0cb27ac63c77f165e74fb7f62
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-30T20:13:52+10:00
Commit Message:
MADS: FOREST: Order daemon in room 101, fix Russell disappearing
Changed paths:
engines/mads/madsv2/forest/rooms/room101.cpp
diff --git a/engines/mads/madsv2/forest/rooms/room101.cpp b/engines/mads/madsv2/forest/rooms/room101.cpp
index 12fe5725463..0b8d8d2f874 100644
--- a/engines/mads/madsv2/forest/rooms/room101.cpp
+++ b/engines/mads/madsv2/forest/rooms/room101.cpp
@@ -110,7 +110,7 @@ static void room_101_init2() {
global[g141] = 0;
scratch._russell = kernel_run_animation_disp('r', 3, 0);
- kernel_position_anim(scratch._russell, 123, 14, 69, 7);
+ kernel_position_anim(scratch._russell, 123, 134, 69, 7);
scratch._edgar = kernel_run_animation_disp('e', 1, 0);
kernel_position_anim(scratch._edgar, 194, 145, 75, 4);
@@ -587,7 +587,7 @@ static void room_101_anim10() {
}
static void room_101_daemon() {
- if (flags[0] < 0 && global[player_hyperwalked]) {
+ if (flags[0] < 0 && global[player_hyperwalked] == -1) {
flags[0] = 0;
flags[1] = 0;
flags[2] = 0;
@@ -707,6 +707,28 @@ static void room_101_daemon() {
}
break;
+ case 24:
+ if (scratch._96 == 3) {
+ aa[1] = kernel_run_animation(kernel_name('E', 1), 102);
+ aainfo[1]._active = -1;
+ scratch._a0 = 1;
+ kernel_reset_animation(scratch._edgar, 0);
+ kernel_synch(KERNEL_ANIM, aa[1], KERNEL_ANIM, scratch._edgar);
+ global[g133] = 1;
+ }
+ break;
+
+ case 25:
+ if (scratch._98 == 2) {
+ aa[2] = kernel_run_animation(kernel_name('R', 1), 101);
+ aainfo[2]._active = -1;
+ scratch._9e = 2;
+ kernel_reset_animation(scratch._russell, 0);
+ kernel_synch(KERNEL_ANIM, aa[2], KERNEL_ANIM, scratch._russell);
+ global[g143] = 1;
+ }
+ break;
+
case 26:
switch (scratch._9a) {
case 15:
@@ -749,26 +771,54 @@ static void room_101_daemon() {
}
break;
- case 24:
- if (scratch._96 == 3) {
- aa[1] = kernel_run_animation(kernel_name('E', 1), 102);
- aainfo[1]._active = -1;
- scratch._a0 = 1;
- kernel_reset_animation(scratch._edgar, 0);
- kernel_synch(KERNEL_ANIM, aa[1], KERNEL_ANIM, scratch._edgar);
- global[g133] = 1;
- }
+ case 100:
+ kernel_abort_animation(aa[0]);
+ aainfo[0]._active = 0;
+ global[g131] = -1;
+ global[g141] = -1;
+ kernel_reset_animation(scratch._edgar, 1);
+ kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
+ kernel_reset_animation(scratch._russell, 1);
+ kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
+ player.walker_visible = true;
+ global[g133] = 0;
+ global[g143] = 0;
+ kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
+ player.commands_allowed = true;
break;
- case 25:
- if (scratch._98 == 2) {
- aa[2] = kernel_run_animation(kernel_name('R', 1), 101);
- aainfo[2]._active = -1;
- scratch._9e = 2;
- kernel_reset_animation(scratch._russell, 0);
- kernel_synch(KERNEL_ANIM, aa[2], KERNEL_ANIM, scratch._russell);
- global[g143] = 1;
- }
+ case 101:
+ kernel_abort_animation(aa[scratch._9e]);
+ aainfo[scratch._9e]._active = 0;
+ kernel_reset_animation(scratch._russell, 1);
+ kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
+ global[g143] = 0;
+ player.commands_allowed = true;
+ break;
+
+ case 102:
+ kernel_abort_animation(aa[scratch._a0]);
+ aainfo[scratch._a0]._active = 0;
+ kernel_reset_animation(scratch._edgar, 1);
+ kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
+ global[g133] = 0;
+ player.commands_allowed = true;
+ break;
+
+ case 103:
+ kernel_abort_animation(aa[4]);
+ aainfo[4]._active = 0;
+ global[g131] = -1;
+ global[g141] = -1;
+ kernel_reset_animation(scratch._edgar, 1);
+ kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
+ kernel_reset_animation(scratch._russell, 1);
+ kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
+ player.walker_visible = true;
+ global[g133] = 0;
+ global[g143] = 0;
+ kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
+ player.commands_allowed = true;
break;
case 104:
@@ -861,20 +911,30 @@ static void room_101_daemon() {
}
break;
- case 103:
- kernel_abort_animation(aa[4]);
- aainfo[4]._active = 0;
- global[g131] = -1;
- global[g141] = -1;
- kernel_reset_animation(scratch._edgar, 1);
- kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
- kernel_reset_animation(scratch._russell, 1);
- kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
- player.walker_visible = true;
- global[g133] = 0;
- global[g143] = 0;
- kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
- player.commands_allowed = true;
+ case 105:
+ if (aainfo[7]._val3 == 0) {
+ aainfo[7]._active = 0;
+ global[g141] = -1;
+ kernel_reset_animation(scratch._russell, 1);
+ kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
+ global[g143] = 0;
+ global[g009] = 0;
+ player.commands_allowed = true;
+ } else if (aainfo[7]._val3 == 8) {
+ kernel_abort_animation(aa[7]);
+ aa[7] = kernel_run_animation(kernel_name('r', 3), 105);
+ aainfo[7]._active = -1;
+ scratch._9c = 1;
+ aainfo[7]._val3 = 0;
+ }
+ break;
+
+ case 106:
+ aainfo[6]._frame = 3;
+ kernel_reset_animation(aa[6], 3);
+ aainfo[6]._val3 = 10;
+ digi_play_build(101, 'b', 2, 1);
+ scratch._aa++;
break;
case 107:
@@ -884,6 +944,23 @@ static void room_101_daemon() {
scratch._aa++;
break;
+ case 109:
+ kernel_reset_animation(scratch._edgar, 0);
+ kernel_reset_animation(scratch._russell, 0);
+ global[g133] = 1;
+ global[g143] = 1;
+ inter_move_object(twine, PLAYER);
+ kernel_seq_delete(seq[1]);
+ kernel_flip_hotspot(words_twine, false);
+ aa[4] = kernel_run_animation(kernel_name('R', 4), 103);
+ aainfo[4]._active = -1;
+ aainfo[4]._val3 = 13;
+ scratch._a2 = 4;
+ kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_ANIM, aa[4]);
+ digi_play_build(101, 'e', 3, 1);
+ scratch._aa = 0;
+ break;
+
case 111:
switch (scratch._ae) {
case 1:
@@ -906,83 +983,6 @@ static void room_101_daemon() {
}
break;
- case 109:
- kernel_reset_animation(scratch._edgar, 0);
- kernel_reset_animation(scratch._russell, 0);
- global[g133] = 1;
- global[g143] = 1;
- inter_move_object(twine, PLAYER);
- kernel_seq_delete(seq[1]);
- kernel_flip_hotspot(words_twine, false);
- aa[4] = kernel_run_animation(kernel_name('R', 4), 103);
- aainfo[4]._active = -1;
- aainfo[4]._val3 = 13;
- scratch._a2 = 4;
- kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_ANIM, aa[4]);
- digi_play_build(101, 'e', 3, 1);
- scratch._aa = 0;
- break;
-
- case 106:
- aainfo[6]._frame = 3;
- kernel_reset_animation(aa[6], 3);
- aainfo[6]._val3 = 10;
- digi_play_build(101, 'b', 2, 1);
- scratch._aa++;
- break;
-
- case 105:
- if (aainfo[7]._val3 == 0) {
- aainfo[7]._active = 0;
- global[g141] = -1;
- kernel_reset_animation(scratch._russell, 1);
- kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
- global[g143] = 0;
- global[g009] = 0;
- player.commands_allowed = true;
- } else if (aainfo[7]._val3 == 8) {
- kernel_abort_animation(aa[7]);
- aa[7] = kernel_run_animation(kernel_name('r', 3), 105);
- aainfo[7]._active = -1;
- scratch._9c = 1;
- aainfo[7]._val3 = 0;
- }
- break;
-
- case 100:
- kernel_abort_animation(aa[0]);
- aainfo[0]._active = 0;
- global[g131] = -1;
- global[g141] = -1;
- kernel_reset_animation(scratch._edgar, 1);
- kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
- kernel_reset_animation(scratch._russell, 1);
- kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
- player.walker_visible = true;
- global[g133] = 0;
- global[g143] = 0;
- kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
- player.commands_allowed = true;
- break;
-
- case 101:
- kernel_abort_animation(aa[scratch._9e]);
- aainfo[scratch._9e]._active = 0;
- kernel_reset_animation(scratch._russell, 1);
- kernel_synch(KERNEL_ANIM, scratch._russell, KERNEL_NOW, 0);
- global[g143] = 0;
- player.commands_allowed = true;
- break;
-
- case 102:
- kernel_abort_animation(aa[scratch._a0]);
- aainfo[scratch._a0]._active = 0;
- kernel_reset_animation(scratch._edgar, 1);
- kernel_synch(KERNEL_ANIM, scratch._edgar, KERNEL_NOW, 0);
- global[g133] = 0;
- player.commands_allowed = true;
- break;
-
case 113:
digi_initial_volume(90);
digi_play_build(101, '_', 5, 3);
Commit: 87938d0978358b4f8412fb26589bad7857732a97
https://github.com/scummvm/scummvm/commit/87938d0978358b4f8412fb26589bad7857732a97
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-30T20:44:05+10:00
Commit Message:
MADS: FOREST: Fix entering bedroom triggering endgame cutscene
Changed paths:
engines/mads/madsv2/forest/rooms/room104.cpp
diff --git a/engines/mads/madsv2/forest/rooms/room104.cpp b/engines/mads/madsv2/forest/rooms/room104.cpp
index b707bba9220..e3d423671ab 100644
--- a/engines/mads/madsv2/forest/rooms/room104.cpp
+++ b/engines/mads/madsv2/forest/rooms/room104.cpp
@@ -95,51 +95,51 @@ static void room_104_init() {
aainfo[count]._val4 = 0;
}
- if (previous_room != -2 && previous_room != 199) {
+ if (previous_room != KERNEL_RESTORING_GAME && previous_room != 199) {
player.walker_visible = false;
player.commands_allowed = false;
- if (flags[4] != 3)
- flags[4]++;
+ if (flags[2] != 3)
+ flags[2]++;
}
- switch (flags[4]) {
+ switch (flags[2]) {
case -3:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
room_104_init1();
return;
case -2:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
- flags[4] = -3;
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
+ flags[2] = -3;
room_104_init1();
return;
case -1:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
- flags[4] = -3;
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
+ flags[2] = -3;
room_104_init1();
return;
case 1:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
room_104_init3();
return;
case 2:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
room_104_init3();
return;
case 3:
if (previous_room != 107) { room_104_init3(); return; }
- flags[4] = 5;
+ flags[2] = 5;
room_104_init2();
return;
case 5:
- if (previous_room == 107) flags[4] = 5;
+ if (previous_room == 107) flags[2] = 5;
room_104_init2();
return;
case 6:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
room_104_init3();
return;
case 7:
- if (previous_room == 107) { flags[4] = 5; room_104_init2(); return; }
+ if (previous_room == 107) { flags[2] = 5; room_104_init2(); return; }
room_104_init3();
return;
default:
More information about the Scummvm-git-logs
mailing list