[Scummvm-git-logs] scummvm master -> b17edb4daedce65061573d2c93ad887227377f10
dreammaster
noreply at scummvm.org
Tue May 26 08:31:09 UTC 2026
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
33dbe44d2c MADS: DRAGONSPHERE: Add missing room 120 world map room
1a5d76a243 MADS: DRAGONSPHERE: Add missing room synchronize calls
b17edb4dae MADS: DRAGONSPHERE: Remove unneeded error functions
Commit: 33dbe44d2cb7949fbc18657462bdd18788caede0
https://github.com/scummvm/scummvm/commit/33dbe44d2cb7949fbc18657462bdd18788caede0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-26T18:30:56+10:00
Commit Message:
MADS: DRAGONSPHERE: Add missing room 120 world map room
Changed paths:
A engines/mads/madsv2/dragonsphere/rooms/room120.cpp
A engines/mads/madsv2/dragonsphere/rooms/room120.h
engines/mads/madsv2/dragonsphere/mads/sounds.h
engines/mads/madsv2/dragonsphere/rooms/section1.cpp
engines/mads/madsv2/engine.cpp
engines/mads/madsv2/engine.h
engines/mads/module.mk
diff --git a/engines/mads/madsv2/dragonsphere/mads/sounds.h b/engines/mads/madsv2/dragonsphere/mads/sounds.h
index 0a20ac83868..98f1602a975 100644
--- a/engines/mads/madsv2/dragonsphere/mads/sounds.h
+++ b/engines/mads/madsv2/dragonsphere/mads/sounds.h
@@ -64,6 +64,7 @@ enum {
N_MagicDoorUnlocked = 89,
N_JumpDownWell = 93,
N_BooksRumble = 94,
+ N_WorldEmerges = 95,
N_McMornTipsTable = 100,
// Section 2
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room120.cpp b/engines/mads/madsv2/dragonsphere/rooms/room120.cpp
new file mode 100644
index 00000000000..940026c1132
--- /dev/null
+++ b/engines/mads/madsv2/dragonsphere/rooms/room120.cpp
@@ -0,0 +1,690 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "mads/madsv2/core/conv.h"
+#include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/imath.h"
+#include "mads/madsv2/core/inter.h"
+#include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/mouse.h"
+#include "mads/madsv2/core/sound.h"
+#include "mads/madsv2/core/text.h"
+#include "mads/madsv2/dragonsphere/mads/conv.h"
+#include "mads/madsv2/dragonsphere/mads/inventory.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
+#include "mads/madsv2/dragonsphere/mads/words.h"
+#include "mads/madsv2/dragonsphere/global.h"
+#include "mads/madsv2/dragonsphere/rooms/section1.h"
+#include "mads/madsv2/dragonsphere/rooms/room120.h"
+
+namespace MADS {
+namespace MADSV2 {
+namespace Dragonsphere {
+namespace Rooms {
+
+struct Scratch {
+ int16 sprite[15]; /* Sprite series handles */
+ int16 sequence[15]; /* Sequence handles */
+ int16 animation[4]; /* Animation handles */
+
+ char path_0[3];
+ char path_1[3];
+
+ int16 highlighting;
+ int16 prevent;
+};
+
+static Scratch scratch;
+
+#define local (&scratch)
+#define ss local->sprite
+#define seq local->sequence
+#define aa local->animation
+
+
+/* ========================= Sprite Series =================== */
+
+#define fx_icon_wizard 0 /* rm120a0 */
+#define fx_icon_desert 1 /* rm120b0 */
+#define fx_icon_tree_left 2 /* rm120c0 */
+#define fx_icon_tree_right 3 /* rm120f0 */
+
+#define fx_wizard 4 /* rm120a1 */
+#define fx_desert 5 /* rm120b1 */
+#define fx_tree_left 6 /* rm120c1 */
+#define fx_tree_right 7 /* rm120f1 */
+
+#define fx_path_0 8 /* anything */
+#define fx_path_1 9 /* anything */
+#define fx_test 10 /* interface */
+
+
+/* ========================= Triggers ======================== */
+
+#define ROOM_120_DOOR_CLOSES 60
+#define MUSIC 79
+
+/* these are coordinates within the big boxes */
+
+#define WIZARD_X 108
+#define WIZARD_Y 140
+
+#define DESERT_X 9
+#define DESERT_Y 90
+
+#define TREE_LEFT_X 70
+#define TREE_LEFT_Y 65
+
+#define TREE_RIGHT_X 213
+#define TREE_RIGHT_Y 54
+
+
+static void room_120_init() {
+ kernel_init_dialog();
+ kernel_set_interface_mode(INTER_LIMITED_SENTENCES);
+
+ player.walker_visible = false;
+ local->highlighting = -1;
+ local->prevent = false;
+
+ if (global[llanie_status] == IS_SAVED) {
+ global[make_504_empty] = true;
+ }
+
+ ss[fx_icon_desert] = kernel_load_series(kernel_name('b', 0), false);
+ ss[fx_icon_tree_left] = kernel_load_series(kernel_name('c', 0), false);
+ ss[fx_icon_tree_right] = kernel_load_series(kernel_name('f', 0), false);
+ ss[fx_icon_wizard] = kernel_load_series(kernel_name('a', 0), false);
+
+ ss[fx_tree_left] = kernel_load_series(kernel_name('c', 1), false);
+ ss[fx_tree_right] = kernel_load_series(kernel_name('f', 1), false);
+ ss[fx_wizard] = kernel_load_series(kernel_name('a', 1), false);
+ ss[fx_desert] = kernel_load_series(kernel_name('b', 1), false);
+
+ if (player_has_been_in_room(301)) {
+ seq[fx_tree_left] = kernel_seq_stamp(ss[fx_tree_left], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_tree_left], 2);
+ } else {
+ ss[fx_icon_tree_left] = kernel_load_series(kernel_name('c', 0), false);
+ seq[fx_icon_tree_left] = kernel_seq_stamp(ss[fx_icon_tree_left], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_tree_left], 2);
+ kernel_flip_hotspot_loc(words_Brynn_Fann, false, TREE_LEFT_X, TREE_LEFT_Y);
+ }
+
+ if (player_has_been_in_room(201)) {
+ seq[fx_tree_right] = kernel_seq_stamp(ss[fx_tree_right], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_tree_right], 2);
+ } else {
+ ss[fx_icon_tree_right] = kernel_load_series(kernel_name('f', 0), false);
+ seq[fx_icon_tree_right] = kernel_seq_stamp(ss[fx_icon_tree_right], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_tree_right], 2);
+ kernel_flip_hotspot_loc(words_Slathan_ni_Patan, false, TREE_RIGHT_X, TREE_RIGHT_Y);
+ }
+
+ if (player_has_been_in_room(401)) {
+ seq[fx_desert] = kernel_seq_stamp(ss[fx_desert], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_desert], 2);
+ } else {
+ ss[fx_icon_desert] = kernel_load_series(kernel_name('b', 0), false);
+ seq[fx_icon_desert] = kernel_seq_stamp(ss[fx_icon_desert], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_desert], 2);
+ kernel_flip_hotspot_loc(words_Soptus_Ecliptus, false, DESERT_X, DESERT_Y);
+ }
+
+ if (player_has_been_in_room(501)) {
+ seq[fx_wizard] = kernel_seq_stamp(ss[fx_wizard], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_wizard], 2);
+ } else {
+ ss[fx_icon_wizard] = kernel_load_series(kernel_name('a', 0), false);
+ seq[fx_icon_wizard] = kernel_seq_stamp(ss[fx_icon_wizard], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_wizard], 2);
+ kernel_flip_hotspot_loc(words_Hightower, false, WIZARD_X, WIZARD_Y);
+ }
+
+ section_1_music();
+}
+
+static void generate_path(void) {
+ if (local->highlighting == words_Gran_Callahach) {
+ if (global[pre_room] == 110) { /* Gran Callahach */
+ local->path_0[0] = ' ';
+ local->path_0[1] = ' ';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 301) { /* Brynn-Fann */
+ local->path_0[0] = 'c';
+ local->path_0[1] = '5';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 201) { /* Slathan ni Patan */
+ local->path_0[0] = 'f';
+ local->path_0[1] = '5';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 401) { /* Soptus Ecliptus */
+ local->path_0[0] = 'b';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '7';
+
+ } else { /* Hightower */
+ local->path_0[0] = 'a';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '7';
+ }
+
+ } else if (local->highlighting == words_Slathan_ni_Patan) {
+ if (global[pre_room] == 110) { /* Gran Callahach */
+ local->path_0[0] = 'e';
+ local->path_0[1] = '2';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 301) { /* Brynn-Fann */
+ local->path_0[0] = 'c';
+ local->path_0[1] = '4';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 201) { /* Slathan ni Patan */
+ local->path_0[0] = ' ';
+ local->path_0[1] = ' ';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 401) { /* Soptus Ecliptus */
+ local->path_0[0] = 'b';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '8';
+
+ } else { /* Hightower */
+ local->path_0[0] = 'a';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '8';
+ }
+
+ } else if (local->highlighting == words_Hightower) {
+ if (global[pre_room] == 110) { /* Gran Callahach */
+ local->path_0[0] = 'e';
+ local->path_0[1] = '1';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 301) { /* Brynn-Fann */
+ local->path_0[0] = 'c';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 201) { /* Slathan ni Patan */
+ local->path_0[0] = 'f';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 401) { /* Soptus Ecliptus */
+ local->path_0[0] = 'b';
+ local->path_0[1] = '5';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else { /* Hightower */
+ local->path_0[0] = ' ';
+ local->path_0[1] = ' ';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+ }
+
+ } else if (local->highlighting == words_Soptus_Ecliptus) {
+ if (global[pre_room] == 110) { /* Gran Callahach */
+ local->path_0[0] = 'e';
+ local->path_0[1] = '1';
+ local->path_1[0] = 'b';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 301) { /* Brynn-Fann */
+ local->path_0[0] = 'c';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'b';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 201) { /* Slathan ni Patan */
+ local->path_0[0] = 'f';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'b';
+ local->path_1[1] = '4';
+
+ } else if (global[pre_room] == 401) { /* Soptus Ecliptus */
+ local->path_0[0] = ' ';
+ local->path_0[1] = ' ';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else { /* Hightower */
+ local->path_0[0] = 'a';
+ local->path_0[1] = '5';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+ }
+
+ } else if (local->highlighting == words_Brynn_Fann) {
+ if (global[pre_room] == 110) { /* Gran Callahach */
+ local->path_0[0] = 'e';
+ local->path_0[1] = '0';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 301) { /* Brynn-Fann */
+ local->path_0[0] = ' ';
+ local->path_0[1] = ' ';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 201) { /* Slathan ni Patan */
+ local->path_0[0] = 'f';
+ local->path_0[1] = '4';
+ local->path_1[0] = ' ';
+ local->path_1[1] = ' ';
+
+ } else if (global[pre_room] == 401) { /* Soptus Ecliptus */
+ local->path_0[0] = 'b';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '6';
+
+ } else { /* Hightower */
+ local->path_0[0] = 'a';
+ local->path_0[1] = '3';
+ local->path_1[0] = 'a';
+ local->path_1[1] = '6';
+ }
+ }
+
+ local->path_0[2] = '\0';
+ local->path_1[2] = '\0';
+}
+
+void room_120_daemon() {
+ int temp; /* for synching purposes */
+ char name[9] = "";
+ int count;
+ int good;
+
+ if (kernel.trigger == 10) {
+ generate_path();
+ player.commands_allowed = false;
+
+ if (local->highlighting == words_Brynn_Fann) {
+ if (!player_has_been_in_room(301)) {
+ kernel_seq_delete(seq[fx_icon_tree_left]);
+ seq[fx_tree_left] = kernel_seq_forward(ss[fx_tree_left], false, 7, 0, 0, 1);
+ kernel_seq_depth(seq[fx_tree_left], 2);
+ kernel_seq_range(seq[fx_tree_left], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_tree_left], KERNEL_TRIGGER_EXPIRE, 0, 1);
+ sound_play(N_WorldEmerges);
+ } else {
+ kernel_timing_trigger(1, 2); /* start path 0 of 1 */
+ }
+
+ } else if (local->highlighting == words_Slathan_ni_Patan) {
+ if (!player_has_been_in_room(201)) {
+ kernel_seq_delete(seq[fx_icon_tree_right]);
+ seq[fx_tree_right] = kernel_seq_forward(ss[fx_tree_right], false, 7, 0, 0, 1);
+ kernel_seq_depth(seq[fx_tree_right], 2);
+ kernel_seq_range(seq[fx_tree_right], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_tree_right], KERNEL_TRIGGER_EXPIRE, 0, 1);
+ sound_play(N_WorldEmerges);
+ } else {
+ kernel_timing_trigger(1, 2); /* start path 0 of 1 */
+ }
+
+ } else if (local->highlighting == words_Soptus_Ecliptus) {
+ if (!player_has_been_in_room(401)) {
+ kernel_seq_delete(seq[fx_icon_desert]);
+ seq[fx_desert] = kernel_seq_forward(ss[fx_desert], false, 7, 0, 0, 1);
+ kernel_seq_depth(seq[fx_desert], 2);
+ kernel_seq_range(seq[fx_desert], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_desert], KERNEL_TRIGGER_EXPIRE, 0, 1);
+ sound_play(N_WorldEmerges);
+ } else {
+ kernel_timing_trigger(1, 2); /* start path 0 of 1 */
+ }
+
+ } else if (local->highlighting == words_Hightower) {
+ if (!player_has_been_in_room(501)) {
+ kernel_seq_delete(seq[fx_icon_wizard]);
+ seq[fx_wizard] = kernel_seq_forward(ss[fx_wizard], false, 7, 0, 0, 1);
+ kernel_seq_depth(seq[fx_wizard], 2);
+ kernel_seq_range(seq[fx_wizard], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_wizard], KERNEL_TRIGGER_EXPIRE, 0, 1);
+ sound_play(N_WorldEmerges);
+ } else {
+ kernel_timing_trigger(1, 2); /* start path 0 of 1 */
+ }
+
+ } else {
+ /* gran callahach */
+ kernel_timing_trigger(1, 2); /* start path 0 of 1 */
+ }
+ }
+
+ if (kernel.trigger == 1) {
+ if (local->highlighting == words_Brynn_Fann) {
+ temp = seq[fx_tree_left];
+ seq[fx_tree_left] = kernel_seq_stamp(ss[fx_tree_left], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_tree_left], 2);
+ kernel_synch(KERNEL_SERIES, seq[fx_tree_left], KERNEL_SERIES, temp);
+ kernel_timing_trigger(1, 2);
+
+ } else if (local->highlighting == words_Slathan_ni_Patan) {
+ temp = seq[fx_tree_right];
+ seq[fx_tree_right] = kernel_seq_stamp(ss[fx_tree_right], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_tree_right], 2);
+ kernel_synch(KERNEL_SERIES, seq[fx_tree_right], KERNEL_SERIES, temp);
+ kernel_timing_trigger(1, 2);
+
+ } else if (local->highlighting == words_Soptus_Ecliptus) {
+ temp = seq[fx_desert];
+ seq[fx_desert] = kernel_seq_stamp(ss[fx_desert], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_desert], 2);
+ kernel_synch(KERNEL_SERIES, seq[fx_desert], KERNEL_SERIES, temp);
+ kernel_timing_trigger(1, 2);
+
+ } else if (local->highlighting == words_Hightower) {
+ temp = seq[fx_wizard];
+ seq[fx_wizard] = kernel_seq_stamp(ss[fx_wizard], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_wizard], 2);
+ kernel_synch(KERNEL_SERIES, seq[fx_wizard], KERNEL_SERIES, temp);
+ kernel_timing_trigger(1, 2);
+ }
+ }
+
+ if (kernel.trigger == 2) {
+ Common::strcpy_s(name, "*RM120");
+ Common::strcat_s(name, local->path_0);
+
+ if ((local->highlighting == words_Brynn_Fann) && (global[pre_room] == 301)) {
+ new_room = 301;
+
+ } else if ((local->highlighting == words_Gran_Callahach) && (global[pre_room] == 110)) {
+ new_room = 110;
+
+ } else if ((local->highlighting == words_Slathan_ni_Patan) && (global[pre_room] == 201)) {
+ new_room = 201;
+
+ } else if ((local->highlighting == words_Hightower) && (global[pre_room] == 501)) {
+ new_room = 501;
+
+ } else if ((local->highlighting == words_Soptus_Ecliptus) && (global[pre_room] == 401)) {
+ if (!player_has_been_in_room(404)) {
+ new_room = 404;
+ } else {
+ global[desert_room] = 42;
+ global[from_direction] = FROM_EAST;
+ new_room = 401;
+ }
+
+ } else {
+ ss[fx_path_0] = kernel_load_series(name, false);
+ seq[fx_path_0] = kernel_seq_forward(ss[fx_path_0], false, 5, 0, 0, 1);
+ kernel_seq_depth(seq[fx_path_0], 1);
+ kernel_seq_range(seq[fx_path_0], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_path_0], KERNEL_TRIGGER_EXPIRE, 0, 3);
+ }
+ }
+
+ if (kernel.trigger == 3) {
+ temp = seq[fx_path_0];
+ seq[fx_path_0] = kernel_seq_stamp(ss[fx_path_0], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_path_0], 1);
+ kernel_synch(KERNEL_SERIES, seq[fx_path_0], KERNEL_SERIES, temp);
+ kernel_timing_trigger(6, 4);
+ }
+
+ if (kernel.trigger == 4) {
+ if (local->path_1[0] == ' ') {
+ kernel_timing_trigger(6, 6);
+
+ } else {
+ Common::strcpy_s(name, "*RM120");
+ Common::strcat_s(name, local->path_1);
+ ss[fx_path_1] = kernel_load_series(name, false);
+ seq[fx_path_1] = kernel_seq_forward(ss[fx_path_1], false, 5, 0, 0, 1);
+ kernel_seq_depth(seq[fx_path_1], 1);
+ kernel_seq_range(seq[fx_path_1], KERNEL_FIRST, KERNEL_LAST);
+ kernel_seq_trigger(seq[fx_path_1], KERNEL_TRIGGER_EXPIRE, 0, 5);
+ }
+ }
+
+ if (kernel.trigger == 5) {
+ temp = seq[fx_path_1];
+ seq[fx_path_1] = kernel_seq_stamp(ss[fx_path_1], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_path_1], 1);
+ kernel_synch(KERNEL_SERIES, seq[fx_path_1], KERNEL_SERIES, temp);
+ kernel_timing_trigger(6, 6);
+ }
+
+ if (kernel.trigger == 6) {
+ if (local->highlighting == words_Brynn_Fann) {
+ new_room = 301;
+
+ } else if (local->highlighting == words_Gran_Callahach) {
+ new_room = 110;
+
+ } else if (local->highlighting == words_Slathan_ni_Patan) {
+ new_room = 201;
+
+ } else if (local->highlighting == words_Soptus_Ecliptus) {
+ if (!player_has_been_in_room(404)) {
+ new_room = 404;
+ } else {
+ global[desert_room] = 42;
+ global[from_direction] = FROM_EAST;
+ new_room = 401;
+ }
+
+ } else if (local->highlighting == words_Hightower) {
+ if (global[player_persona] == PLAYER_IS_KING) {
+ new_room = 501;
+ } else {
+ new_room = 502;
+ }
+ }
+ }
+
+ if (((mouse_status & 1) || (mouse_status & 2)) && local->highlighting == -1) {
+ good = -1;
+
+ for (count = 0; count < room_num_spots; count++) {
+ if (room_spots[count].active) {
+ if (mouse_x >= room_spots[count].ul_x &&
+ mouse_x <= room_spots[count].lr_x &&
+ mouse_y >= room_spots[count].ul_y &&
+ mouse_y <= room_spots[count].lr_y) {
+ good = count;
+ }
+ }
+ }
+
+ if (room_spots[good].vocab == words_Soptus_Ecliptus) {
+ if (!player_has_been_in_room(401)) {
+ kernel_seq_delete(seq[fx_icon_desert]);
+ seq[fx_icon_desert] = kernel_seq_stamp(ss[fx_icon_desert], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_icon_desert], 2);
+ }
+ local->highlighting = words_Soptus_Ecliptus;
+
+ } else if (room_spots[good].vocab == words_Brynn_Fann) {
+ if (!player_has_been_in_room(301)) {
+ kernel_seq_delete(seq[fx_icon_tree_left]);
+ seq[fx_icon_tree_left] = kernel_seq_stamp(ss[fx_icon_tree_left], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_icon_tree_left], 2);
+ }
+ local->highlighting = words_Brynn_Fann;
+
+ } else if (room_spots[good].vocab == words_Slathan_ni_Patan) {
+ if (!player_has_been_in_room(201)) {
+ kernel_seq_delete(seq[fx_icon_tree_right]);
+ seq[fx_icon_tree_right] = kernel_seq_stamp(ss[fx_icon_tree_right], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_icon_tree_right], 2);
+ }
+ local->highlighting = words_Slathan_ni_Patan;
+
+ } else if (room_spots[good].vocab == words_Hightower) {
+ if (!player_has_been_in_room(501)) {
+ kernel_seq_delete(seq[fx_icon_wizard]);
+ seq[fx_icon_wizard] = kernel_seq_stamp(ss[fx_icon_wizard], false, KERNEL_LAST);
+ kernel_seq_depth(seq[fx_icon_wizard], 2);
+ }
+ local->highlighting = words_Hightower;
+
+ } else if (room_spots[good].vocab == words_Gran_Callahach) {
+ local->highlighting = words_Gran_Callahach;
+ }
+ }
+
+ good = 0;
+
+ if (((mouse_status & 1) || (mouse_status & 2)) && local->highlighting != -1 && player.commands_allowed) {
+
+ for (count = 0; count < room_num_spots; count++) {
+ if (room_spots[count].active) {
+ if (mouse_x >= room_spots[count].ul_x &&
+ mouse_x <= room_spots[count].lr_x &&
+ mouse_y >= room_spots[count].ul_y &&
+ mouse_y <= room_spots[count].lr_y) {
+ good = 1;
+ }
+ }
+ }
+ }
+
+ if (!good && (local->highlighting != -1) && !local->prevent) {
+ switch (local->highlighting) {
+ case words_Soptus_Ecliptus:
+ if (!player_has_been_in_room(401)) {
+ kernel_seq_delete(seq[fx_icon_desert]);
+ seq[fx_icon_desert] = kernel_seq_stamp(ss[fx_icon_desert], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_desert], 2);
+ kernel_flip_hotspot_loc(words_Soptus_Ecliptus, false, DESERT_X, DESERT_Y);
+ }
+ break;
+
+ case words_Brynn_Fann:
+ if (!player_has_been_in_room(301)) {
+ kernel_seq_delete(seq[fx_icon_tree_left]);
+ seq[fx_icon_tree_left] = kernel_seq_stamp(ss[fx_icon_tree_left], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_tree_left], 2);
+ kernel_flip_hotspot_loc(words_Brynn_Fann, false, TREE_LEFT_X, TREE_LEFT_Y);
+ }
+ break;
+
+ case words_Slathan_ni_Patan:
+ if (!player_has_been_in_room(201)) {
+ kernel_seq_delete(seq[fx_icon_tree_right]);
+ seq[fx_icon_tree_right] = kernel_seq_stamp(ss[fx_icon_tree_right], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_tree_right], 2);
+ kernel_flip_hotspot_loc(words_Slathan_ni_Patan, false, TREE_RIGHT_X, TREE_RIGHT_Y);
+ }
+ break;
+
+ case words_Hightower:
+ if (!player_has_been_in_room(501)) {
+ kernel_seq_delete(seq[fx_icon_wizard]);
+ seq[fx_icon_wizard] = kernel_seq_stamp(ss[fx_icon_wizard], false, KERNEL_FIRST);
+ kernel_seq_depth(seq[fx_icon_wizard], 2);
+ kernel_flip_hotspot_loc(words_Hightower, false, WIZARD_X, WIZARD_Y);
+ }
+ break;
+ }
+
+ if (local->highlighting != -1 && local->highlighting != 1000 && !local->prevent) {
+ good = -1;
+
+ for (count = 0; count < room_num_spots; count++) {
+ if (room_spots[count].active) {
+ if (mouse_x >= room_spots[count].ul_x &&
+ mouse_x <= room_spots[count].lr_x &&
+ mouse_y >= room_spots[count].ul_y &&
+ mouse_y <= room_spots[count].lr_y) {
+ good = count;
+ }
+ }
+ }
+
+ if (good != -1) {
+ kernel_timing_trigger(1, 10);
+ local->prevent = true;
+
+ } else {
+ local->highlighting = -1;
+ }
+
+ } else {
+ local->highlighting = -1;
+ }
+ }
+
+ if (kernel.trigger == MUSIC) {
+ sound_play(N_WalkingMus);
+ }
+}
+
+static void room_120_pre_parser() {
+ player_cancel_command();
+ player.need_to_walk = false;
+}
+
+
+static void room_120_parser() {
+}
+
+void room_120_synchronize(Common::Serializer &s) {
+ for (int16 &v : scratch.sprite) s.syncAsSint16LE(v);
+ for (int16 &v : scratch.sequence) s.syncAsSint16LE(v);
+ for (int16 &v : scratch.animation) s.syncAsSint16LE(v);
+ s.syncBytes((byte *)scratch.path_0, 3);
+ s.syncBytes((byte *)scratch.path_1, 3);
+ s.syncAsSint16LE(scratch.highlighting);
+ s.syncAsSint16LE(scratch.prevent);
+}
+
+void room_120_preload() {
+ room_init_code_pointer = room_120_init;
+ room_pre_parser_code_pointer = room_120_pre_parser;
+ room_parser_code_pointer = room_120_parser;
+ room_daemon_code_pointer = room_120_daemon;
+
+ /* inter_init_sentence(); */
+ section_1_walker();
+ section_1_interface();
+}
+
+} // namespace Rooms
+} // namespace Dragonsphere
+} // namespace MADSV2
+} // namespace MADS
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room120.h b/engines/mads/madsv2/dragonsphere/rooms/room120.h
new file mode 100644
index 00000000000..74799b70447
--- /dev/null
+++ b/engines/mads/madsv2/dragonsphere/rooms/room120.h
@@ -0,0 +1,41 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef MADS_DRAGONSPHERE_ROOMS_120_H
+#define MADS_DRAGONSPHERE_ROOMS_120_H
+
+#include "common/serializer.h"
+#include "mads/madsv2/core/general.h"
+
+namespace MADS {
+namespace MADSV2 {
+namespace Dragonsphere {
+namespace Rooms {
+
+extern void room_120_preload();
+extern void room_120_synchronize(Common::Serializer &s);
+
+} // namespace Rooms
+} // namespace Dragonsphere
+} // namespace MADSV2
+} // namespace MADS
+
+#endif
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
index 8f3851b9360..1f82c0cff90 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
@@ -55,7 +55,7 @@ extern void room_116_preload();
extern void room_117_preload();
extern void room_118_preload();
extern void room_119_preload();
-
+extern void room_120_preload();
void section_1_init() {
player.scaling_velocity = true;
@@ -311,6 +311,9 @@ void section_1_constructor() {
case 119:
room_preload_code_pointer = room_119_preload;
break;
+ case 120:
+ room_preload_code_pointer = room_120_preload;
+ break;
}
room_himem_preload(new_room, SECTION);
diff --git a/engines/mads/madsv2/engine.cpp b/engines/mads/madsv2/engine.cpp
index 3ad4b61544b..b81ee403683 100644
--- a/engines/mads/madsv2/engine.cpp
+++ b/engines/mads/madsv2/engine.cpp
@@ -287,7 +287,7 @@ void MADSV2Engine::pollEvents() {
if (isMouse)
_mousePos = e.mouse;
- if (e.type == Common::EVENT_KEYDOWN)
+ if (e.type == Common::EVENT_KEYDOWN && !isSpecialKey(e.kbd.keycode))
_keyEvents.push(e.kbd);
if (e.type == Common::EVENT_CUSTOM_ENGINE_ACTION_START &&
KEYBINDING_ACTIONS[e.customType] != Common::KEYCODE_INVALID)
@@ -295,6 +295,19 @@ void MADSV2Engine::pollEvents() {
}
}
+bool MADSV2Engine::isSpecialKey(Common::KeyCode key) const {
+ static const Common::KeyCode KEYS[] = {
+ Common::KEYCODE_LCTRL, Common::KEYCODE_LALT, Common::KEYCODE_RSHIFT, Common::KEYCODE_RALT,
+ };
+
+ for (const Common::KeyCode &kc : KEYS) {
+ if (kc == key)
+ return true;
+ }
+
+ return false;
+}
+
void MADSV2Engine::checkForTimerFunction() {
if (_timerFunction && _nextTimerTime != (uint32)-1) {
uint32 time = g_system->getMillis();
diff --git a/engines/mads/madsv2/engine.h b/engines/mads/madsv2/engine.h
index ccb55f8373d..a7ff7a00890 100644
--- a/engines/mads/madsv2/engine.h
+++ b/engines/mads/madsv2/engine.h
@@ -41,6 +41,7 @@ class MADSV2Engine : public MADSEngine {
private:
void initGlobals();
void syncGame(Common::Serializer &s);
+ bool isSpecialKey(Common::KeyCode key) const;
protected:
Graphics::Screen *_screen = nullptr;
diff --git a/engines/mads/module.mk b/engines/mads/module.mk
index b81eab8257c..67398c127f4 100644
--- a/engines/mads/module.mk
+++ b/engines/mads/module.mk
@@ -208,6 +208,7 @@ MODULE_OBJS += \
madsv2/dragonsphere/rooms/room117.o \
madsv2/dragonsphere/rooms/room118.o \
madsv2/dragonsphere/rooms/room119.o \
+ madsv2/dragonsphere/rooms/room120.o \
madsv2/dragonsphere/rooms/room201.o \
madsv2/dragonsphere/rooms/room203.o \
madsv2/dragonsphere/rooms/room204.o \
Commit: 1a5d76a243a516d3ddc9216388a8b8d24329dd54
https://github.com/scummvm/scummvm/commit/1a5d76a243a516d3ddc9216388a8b8d24329dd54
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-26T18:30:56+10:00
Commit Message:
MADS: DRAGONSPHERE: Add missing room synchronize calls
Changed paths:
engines/mads/madsv2/dragonsphere/global.cpp
diff --git a/engines/mads/madsv2/dragonsphere/global.cpp b/engines/mads/madsv2/dragonsphere/global.cpp
index 11cdaec32a8..77981cc1a84 100644
--- a/engines/mads/madsv2/dragonsphere/global.cpp
+++ b/engines/mads/madsv2/dragonsphere/global.cpp
@@ -39,6 +39,72 @@ extern void section_5_preload();
extern void section_6_preload();
extern void section_9_preload();
+extern void room_101_synchronize(Common::Serializer &s);
+extern void room_102_synchronize(Common::Serializer &s);
+extern void room_103_synchronize(Common::Serializer &s);
+extern void room_104_synchronize(Common::Serializer &s);
+extern void room_105_synchronize(Common::Serializer &s);
+extern void room_106_synchronize(Common::Serializer &s);
+extern void room_107_synchronize(Common::Serializer &s);
+extern void room_108_synchronize(Common::Serializer &s);
+extern void room_109_synchronize(Common::Serializer &s);
+extern void room_110_synchronize(Common::Serializer &s);
+extern void room_111_synchronize(Common::Serializer &s);
+extern void room_112_synchronize(Common::Serializer &s);
+extern void room_113_synchronize(Common::Serializer &s);
+extern void room_114_synchronize(Common::Serializer &s);
+extern void room_115_synchronize(Common::Serializer &s);
+extern void room_116_synchronize(Common::Serializer &s);
+extern void room_117_synchronize(Common::Serializer &s);
+extern void room_118_synchronize(Common::Serializer &s);
+extern void room_119_synchronize(Common::Serializer &s);
+extern void room_120_synchronize(Common::Serializer &s);
+extern void room_201_synchronize(Common::Serializer &s);
+extern void room_203_synchronize(Common::Serializer &s);
+extern void room_204_synchronize(Common::Serializer &s);
+extern void room_205_synchronize(Common::Serializer &s);
+extern void room_206_synchronize(Common::Serializer &s);
+extern void room_301_synchronize(Common::Serializer &s);
+extern void room_302_synchronize(Common::Serializer &s);
+extern void room_303_synchronize(Common::Serializer &s);
+extern void room_401_synchronize(Common::Serializer &s);
+extern void room_402_synchronize(Common::Serializer &s);
+extern void room_403_synchronize(Common::Serializer &s);
+extern void room_404_synchronize(Common::Serializer &s);
+extern void room_405_synchronize(Common::Serializer &s);
+extern void room_406_synchronize(Common::Serializer &s);
+extern void room_407_synchronize(Common::Serializer &s);
+extern void room_408_synchronize(Common::Serializer &s);
+extern void room_409_synchronize(Common::Serializer &s);
+extern void room_410_synchronize(Common::Serializer &s);
+extern void room_411_synchronize(Common::Serializer &s);
+extern void room_412_synchronize(Common::Serializer &s);
+extern void room_454_synchronize(Common::Serializer &s);
+extern void room_501_synchronize(Common::Serializer &s);
+extern void room_502_synchronize(Common::Serializer &s);
+extern void room_503_synchronize(Common::Serializer &s);
+extern void room_504_synchronize(Common::Serializer &s);
+extern void room_505_synchronize(Common::Serializer &s);
+extern void room_506_synchronize(Common::Serializer &s);
+extern void room_507_synchronize(Common::Serializer &s);
+extern void room_508_synchronize(Common::Serializer &s);
+extern void room_509_synchronize(Common::Serializer &s);
+extern void room_510_synchronize(Common::Serializer &s);
+extern void room_511_synchronize(Common::Serializer &s);
+extern void room_512_synchronize(Common::Serializer &s);
+extern void room_557_synchronize(Common::Serializer &s);
+extern void room_601_synchronize(Common::Serializer &s);
+extern void room_603_synchronize(Common::Serializer &s);
+extern void room_604_synchronize(Common::Serializer &s);
+extern void room_605_synchronize(Common::Serializer &s);
+extern void room_606_synchronize(Common::Serializer &s);
+extern void room_607_synchronize(Common::Serializer &s);
+extern void room_609_synchronize(Common::Serializer &s);
+extern void room_612_synchronize(Common::Serializer &s);
+extern void room_613_synchronize(Common::Serializer &s);
+extern void room_614_synchronize(Common::Serializer &s);
+extern void room_909_synchronize(Common::Serializer &s);
+
} // namespace Rooms
void global_section_constructor() {
@@ -82,7 +148,74 @@ void global_section_constructor() {
}
void sync_room(Common::Serializer &s) {
- // TODO
+ switch (new_room) {
+ case 101: Rooms::room_101_synchronize(s); break;
+ case 102: Rooms::room_102_synchronize(s); break;
+ case 103: Rooms::room_103_synchronize(s); break;
+ case 104: Rooms::room_104_synchronize(s); break;
+ case 105: Rooms::room_105_synchronize(s); break;
+ case 106: Rooms::room_106_synchronize(s); break;
+ case 107: Rooms::room_107_synchronize(s); break;
+ case 108: Rooms::room_108_synchronize(s); break;
+ case 109: Rooms::room_109_synchronize(s); break;
+ case 110: Rooms::room_110_synchronize(s); break;
+ case 111: Rooms::room_111_synchronize(s); break;
+ case 112: Rooms::room_112_synchronize(s); break;
+ case 113: Rooms::room_113_synchronize(s); break;
+ case 114: Rooms::room_114_synchronize(s); break;
+ case 115: Rooms::room_115_synchronize(s); break;
+ case 116: Rooms::room_116_synchronize(s); break;
+ case 117: Rooms::room_117_synchronize(s); break;
+ case 118: Rooms::room_118_synchronize(s); break;
+ case 119: Rooms::room_119_synchronize(s); break;
+ case 120: Rooms::room_120_synchronize(s); break;
+ case 201: Rooms::room_201_synchronize(s); break;
+ case 203: Rooms::room_203_synchronize(s); break;
+ case 204: Rooms::room_204_synchronize(s); break;
+ case 205: Rooms::room_205_synchronize(s); break;
+ case 206: Rooms::room_206_synchronize(s); break;
+ case 301: Rooms::room_301_synchronize(s); break;
+ case 302: Rooms::room_302_synchronize(s); break;
+ case 303: Rooms::room_303_synchronize(s); break;
+ case 401: Rooms::room_401_synchronize(s); break;
+ case 402: Rooms::room_402_synchronize(s); break;
+ case 403: Rooms::room_403_synchronize(s); break;
+ case 404: Rooms::room_404_synchronize(s); break;
+ case 405: Rooms::room_405_synchronize(s); break;
+ case 406: Rooms::room_406_synchronize(s); break;
+ case 407: Rooms::room_407_synchronize(s); break;
+ case 408: Rooms::room_408_synchronize(s); break;
+ case 409: Rooms::room_409_synchronize(s); break;
+ case 410: Rooms::room_410_synchronize(s); break;
+ case 411: Rooms::room_411_synchronize(s); break;
+ case 412: Rooms::room_412_synchronize(s); break;
+ case 454: Rooms::room_454_synchronize(s); break;
+ case 501: Rooms::room_501_synchronize(s); break;
+ case 502: Rooms::room_502_synchronize(s); break;
+ case 503: Rooms::room_503_synchronize(s); break;
+ case 504: Rooms::room_504_synchronize(s); break;
+ case 505: Rooms::room_505_synchronize(s); break;
+ case 506: Rooms::room_506_synchronize(s); break;
+ case 507: Rooms::room_507_synchronize(s); break;
+ case 508: Rooms::room_508_synchronize(s); break;
+ case 509: Rooms::room_509_synchronize(s); break;
+ case 510: Rooms::room_510_synchronize(s); break;
+ case 511: Rooms::room_511_synchronize(s); break;
+ case 512: Rooms::room_512_synchronize(s); break;
+ case 557: Rooms::room_557_synchronize(s); break;
+ case 601: Rooms::room_601_synchronize(s); break;
+ case 603: Rooms::room_603_synchronize(s); break;
+ case 604: Rooms::room_604_synchronize(s); break;
+ case 605: Rooms::room_605_synchronize(s); break;
+ case 606: Rooms::room_606_synchronize(s); break;
+ case 607: Rooms::room_607_synchronize(s); break;
+ case 609: Rooms::room_609_synchronize(s); break;
+ case 612: Rooms::room_612_synchronize(s); break;
+ case 613: Rooms::room_613_synchronize(s); break;
+ case 614: Rooms::room_614_synchronize(s); break;
+ case 909: Rooms::room_909_synchronize(s); break;
+ default: break;
+ }
}
} // namespace Dragonsphere
Commit: b17edb4daedce65061573d2c93ad887227377f10
https://github.com/scummvm/scummvm/commit/b17edb4daedce65061573d2c93ad887227377f10
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-26T18:30:56+10:00
Commit Message:
MADS: DRAGONSPHERE: Remove unneeded error functions
Changed paths:
engines/mads/madsv2/dragonsphere/rooms/room104.cpp
engines/mads/madsv2/dragonsphere/rooms/room302.cpp
engines/mads/madsv2/dragonsphere/rooms/room405.cpp
engines/mads/madsv2/dragonsphere/rooms/room406.cpp
engines/mads/madsv2/dragonsphere/rooms/room505.cpp
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room104.cpp b/engines/mads/madsv2/dragonsphere/rooms/room104.cpp
index aac03dd953e..cb455e2362a 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room104.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room104.cpp
@@ -2295,9 +2295,6 @@ void room_104_synchronize(Common::Serializer &s) {
s.syncAsSint16LE(local->anim_6_running);
}
-void room_104_error() {
-}
-
void room_104_preload() {
room_init_code_pointer = room_104_init;
room_pre_parser_code_pointer = room_104_pre_parser;
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room302.cpp b/engines/mads/madsv2/dragonsphere/rooms/room302.cpp
index 4c8ac52b59a..d4a91e78778 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room302.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room302.cpp
@@ -901,9 +901,6 @@ done:
;
}
-void room_302_error() {
-}
-
void room_302_synchronize(Common::Serializer &s) {
for (int16 &v : scratch.sprite) s.syncAsSint16LE(v);
for (int16 &v : scratch.sequence) s.syncAsSint16LE(v);
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room405.cpp b/engines/mads/madsv2/dragonsphere/rooms/room405.cpp
index 44608f20256..6282984f07d 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room405.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room405.cpp
@@ -1423,9 +1423,6 @@ void room_405_preload() {
section_4_interface();
}
-void room_405_error() {
-}
-
} // namespace Rooms
} // namespace Dragonsphere
} // namespace MADSV2
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room406.cpp b/engines/mads/madsv2/dragonsphere/rooms/room406.cpp
index 67858287010..cb4cad7ced0 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room406.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room406.cpp
@@ -1561,9 +1561,6 @@ void room_406_preload() {
section_4_interface();
}
-void room_406_error() {
-}
-
} // namespace Rooms
} // namespace Dragonsphere
} // namespace MADSV2
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room505.cpp b/engines/mads/madsv2/dragonsphere/rooms/room505.cpp
index 221d1f9a53c..843c0f6dbc1 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room505.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room505.cpp
@@ -167,9 +167,6 @@ void room_505_synchronize(Common::Serializer &s) {
for (int16 &v : scratch.animation) s.syncAsSint16LE(v);
}
-void room_505_error() {
-}
-
void room_505_preload() {
room_init_code_pointer = room_505_init;
room_pre_parser_code_pointer = room_505_pre_parser;
More information about the Scummvm-git-logs
mailing list