[Scummvm-git-logs] scummvm master -> e22f2f79d41b9b5d93bb16fd280de3ac7e85741e

dreammaster noreply at scummvm.org
Fri May 22 02:38:13 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:
cfce74ed99 MADS: DRAGONSPHERE: Added section music functions
e22f2f79d4 MADS: DRAGONSPHERE: Added section walker and interface functions


Commit: cfce74ed99f599ca99d8121bf8b99e3b98106776
    https://github.com/scummvm/scummvm/commit/cfce74ed99f599ca99d8121bf8b99e3b98106776
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-22T12:38:02+10:00

Commit Message:
MADS: DRAGONSPHERE: Added section music functions

Changed paths:
    engines/mads/madsv2/dragonsphere/mads/sounds.h
    engines/mads/madsv2/dragonsphere/rooms/section1.cpp
    engines/mads/madsv2/dragonsphere/rooms/section2.cpp
    engines/mads/madsv2/dragonsphere/rooms/section3.cpp
    engines/mads/madsv2/dragonsphere/rooms/section4.cpp
    engines/mads/madsv2/dragonsphere/rooms/section5.cpp
    engines/mads/madsv2/dragonsphere/rooms/section6.cpp
    engines/mads/madsv2/dragonsphere/rooms/section9.cpp


diff --git a/engines/mads/madsv2/dragonsphere/mads/sounds.h b/engines/mads/madsv2/dragonsphere/mads/sounds.h
index 02a14f9cc37..c230edac872 100644
--- a/engines/mads/madsv2/dragonsphere/mads/sounds.h
+++ b/engines/mads/madsv2/dragonsphere/mads/sounds.h
@@ -35,11 +35,21 @@ enum {
 	N_TakeObjectSnd      =  26,
 	N_PlayerDies         =  27,
 	N_InvokeCrystalBall  =  28,
+	N_DungeonMus         =  32,
+	N_DungeonIntro       =  33,
+	N_OminousMus         =  34,
 	N_SealMus            =  35,
 	N_UnderGroundMus     =  36,
 	N_WayStationMus      =  37,
+	N_Bk112Mus           =  38,
+	N_Bk115Mus           =  39,
+	N_Bk116Mus           =  40,
+	N_Bk119Mus           =  41,
 	N_Angels             =  42,
+	N_SwordFightMus      =  44,
 	N_QueenMother        =  45,
+	N_WalkingMus         =  46,
+	N_RoyalDecreeMus     =  47,
 	N_TurnDiaryPage      =  65,
 	N_WallGrinds         =  67,
 	N_RushingWater       =  71,
@@ -56,7 +66,9 @@ enum {
 	N_McMornTipsTable    = 100,
 
 	// Section 2
-	N_BackgroundMus      =  16,
+	N_Bk203Music         =  32,
+	N_SlathanMus         =  34,
+	N_DreamMusic         =  35,
 	N_GuardCollapses     =  65,
 	N_TentaclesSplash    =  66,
 	N_LavaPlops          =  68,
@@ -65,6 +77,8 @@ enum {
 	N_PoolMonsterEatsPid =  72,
 
 	// Section 3
+	N_MazeMusic          =  32,
+	N_ToadRing           =  33,
 	N_ToadEatsPlayer     =  70,
 	N_RalphIsRed         =  71,
 	N_EveryoneScatter    =  72,
@@ -72,9 +86,14 @@ enum {
 
 	// Section 4
 	N_WindWhistles       =  29,
+	N_DeathFountain      =  32,
 	N_Bk404Music         =  33,
 	N_Bk406Music         =  35,
 	N_BellyDanceMusic    =  36,
+	N_Bk409Music         =  37,
+	N_Bk410Music         =  38,
+	N_RocAndSoulEgg      =  39,
+	N_Bk408Music         =  40,
 	N_GamePieceSnd       =  66,
 	N_FlameBurst         =  67,
 	N_SnakeHiss          =  68,
@@ -83,12 +102,34 @@ enum {
 	N_StepOnFloatingDisk =  77,
 	N_004CryOfDismay     =  78,
 
+	// Section 5
+	N_ShakMus            =  32,
+	N_Battle             =  33,
+	N_Hermit             =  34,
+
+	// Section 6
+	N_Bk603Music         =  32,
+	N_Bk604Music         =  33,
+	N_Bk605Music         =  34,
+	N_Bk605WithRope      =  35,
+	N_Bk606Music         =  36,
+	N_Bk609Music         =  37,
+	N_Bk612Music         =  38,
+	N_WaterFlows         =  39,
+	N_Bk614Music         =  40,
+	N_EerieSounds        =  96,
+
 	// Section 9/General
 	N_AllFade            =   1,
+	N_MusicFade          =   3,
+	N_NoiseOff           =   4,
+	N_NoiseFade          =   5,
+	N_BackgroundMus      =  16,
 	N_MusicBoxOn         =  17,
 	N_MusicBoxOff        =  18,
 	N_BlowBirdCall       =  30,
-	N_ListenToFlies      =  31
+	N_ListenToFlies      =  31,
+	N_WeddingMus         =  62
 };
 
 } // namespace Dragonsphere
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
index 2dd61520f98..fef68b8a092 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section1.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -63,6 +66,96 @@ void section_1_interface() {
 }
 
 void section_1_music() {
+	if (sound_off) {
+		sound_play(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_play(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 104:
+		if (global[player_persona] == PLAYER_IS_PID) {
+			sound_play(N_SwordFightMus);
+		} else {
+			sound_play(N_BackgroundMus);
+		}
+		break;
+
+	case 106:
+		if (global[end_of_game]) {
+			sound_play(N_RoyalDecreeMus);
+		} else {
+			sound_play(N_BackgroundMus);
+		}
+		break;
+
+	case 108:
+		if (player_has_been_in_room(109)) {
+			sound_play(N_DungeonMus);
+		} else {
+			sound_play(N_DungeonIntro);
+		}
+		break;
+
+	case 109:
+		sound_play(N_DungeonMus);
+		break;
+
+	case 110:
+		sound_play(N_WayStationMus);
+		break;
+
+	case 111:
+		sound_play(N_OminousMus);
+		break;
+
+	case 112:
+		sound_play(N_Bk112Mus);
+		break;
+
+	case 113:
+		sound_play(N_NoiseFade);
+		if (global[player_is_seal]) {
+			sound_play(N_SealMus);
+		} else {
+			sound_play(N_UnderGroundMus);
+		}
+		break;
+
+	case 114:
+		sound_play(N_UnderGroundMus);
+		break;
+
+	case 115:
+		sound_play(N_Bk115Mus);
+		break;
+
+	case 116:
+		sound_play(N_Bk116Mus);
+		break;
+
+	case 117:
+		sound_play(N_SealMus);
+		break;
+
+	case 119:
+		sound_play(N_Bk119Mus);
+		break;
+
+	case 120:
+		sound_play(N_WalkingMus);
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_1_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section2.cpp b/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
index fea0fd9b1b2..adabe48089c 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section2.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -49,6 +52,41 @@ void section_2_interface() {
 }
 
 void section_2_music() {
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 201:
+		sound_play(N_BackgroundMus);
+		break;
+
+	case 203:
+		sound_play(N_Bk203Music);
+		break;
+
+	case 204:
+		sound_play(N_DreamMusic);
+		break;
+
+	case 202:
+	case 205:
+	case 206:
+		sound_play(N_SlathanMus);
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_2_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section3.cpp b/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
index 5cec328e175..aa8acfaef68 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section3.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -46,6 +49,35 @@ void section_3_interface() {
 }
 
 void section_3_music() {
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 301:
+		sound_play(N_BackgroundMus);
+		break;
+
+	case 302:
+		sound_play(N_MazeMusic);
+		break;
+
+	case 303:
+		sound_play(N_ToadRing);
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_3_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section4.cpp b/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
index bdd71fe175d..2f566cbf4f3 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section4.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -56,6 +59,76 @@ void section_4_interface() {
 }
 
 void section_4_music() {
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+
+	} else switch (room_id) {
+	case 401:
+	case 402:
+	case 403:
+	case 404:
+	case 405:
+	case 454:
+		sound_play(N_WindWhistles);
+		break;
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 404:
+	case 454:
+		if (room_id != 120) {
+			sound_play(N_Bk404Music);
+		}
+		break;
+
+	case 406:
+		sound_play(N_NoiseOff);
+		if (global[dance_music_on]) {
+			sound_play(N_BellyDanceMusic);
+		} else {
+			sound_play(N_Bk406Music);
+		}
+		break;
+
+	case 401:
+	case 402:
+	case 403:
+	case 405:
+		sound_play(N_BackgroundMus);
+		break;
+
+	case 408:
+		sound_play(N_Bk408Music);
+		break;
+
+	case 409:
+		sound_play(N_Bk409Music);
+		break;
+
+	case 410:
+		sound_play(N_Bk410Music);
+		break;
+
+	case 411:
+		sound_play(N_RocAndSoulEgg);
+		break;
+
+	case 412:
+		sound_play(N_DeathFountain);
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_4_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section5.cpp b/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
index 9c7845f4a61..2fb7f55fd8c 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section5.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -56,6 +59,54 @@ void section_5_interface() {
 }
 
 void section_5_music() {
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 501:
+		sound_play(N_BackgroundMus);
+		sound_play(N_WindWhistles);
+		break;
+
+	case 502:
+		sound_play(N_BackgroundMus);
+		sound_play(N_NoiseFade);
+		break;
+
+	case 504:
+		sound_play(N_Hermit);
+		break;
+
+	case 508:
+		if (!global[monster_is_dead]) {
+			if (previous_room == KERNEL_RESTORING_GAME) {
+				sound_play(N_Battle);
+			} else {
+				sound_play(N_BackgroundMus);
+			}
+
+		} else {
+			sound_play(N_BackgroundMus);
+		}
+		break;
+
+	case 509:
+		sound_play(N_ShakMus);
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_5_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section6.cpp b/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
index 98f2e952810..43f1d7a96aa 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
@@ -19,12 +19,15 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
+#include "mads/madsv2/core/sound.h"
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section6.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -53,6 +56,72 @@ void section_6_interface() {
 }
 
 void section_6_music() {
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	switch (new_room) {
+	case 601:
+		if (global[vines_have_player]) {
+			sound_play(N_EerieSounds);
+		} else {
+			sound_play(N_BackgroundMus);
+		}
+		break;
+
+	case 603:
+		sound_play(N_Bk603Music);
+		break;
+
+	case 604:
+		sound_play(N_Bk604Music);
+		break;
+
+	case 605:
+		if (global[rope_is_alive]) {
+			sound_play(N_Bk605WithRope);
+		} else {
+			sound_play(N_Bk605Music);
+		}
+		break;
+
+	case 606:
+	case 607:
+		sound_play(N_Bk606Music);
+		break;
+
+	case 609:
+		sound_play(N_Bk609Music);
+		break;
+
+	case 612:
+		sound_play(N_Bk612Music);
+		break;
+
+	case 613:
+		sound_play(N_WaterFlows);
+		break;
+
+	case 614:
+		if (global[wizard_dead]) {
+			sound_play(N_BackgroundMus);
+		} else {
+			sound_play(N_Bk614Music);
+		}
+		break;
+
+	default:
+		sound_play(N_BackgroundMus);
+		break;
+	}
+
+done:
+	;
 }
 
 void section_6_constructor() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section9.cpp b/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
index 1c00068a877..a4e7f5d83dc 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
@@ -19,6 +19,7 @@
  *
  */
 
+#include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/pal.h"
@@ -28,6 +29,7 @@
 #include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/dragonsphere/rooms/section9.h"
 #include "mads/madsv2/dragonsphere/dragonsphere.h"
+#include "mads/madsv2/dragonsphere/mads/sounds.h"
 
 namespace MADS {
 namespace MADSV2 {
@@ -53,13 +55,20 @@ void section_9_interface() {
 }
 
 void section_9_music() {
-	if (!g_engine->_soundFlag)
-		sound_queue(4);
+	if (sound_off) {
+		sound_queue(N_NoiseOff);
+	}
+
+	if (music_off) {
+		sound_queue(N_MusicFade);
+		goto done;
+	}
+
+	if (new_room == 909)
+		sound_play(N_WeddingMus);
 
-	if (!g_engine->_musicFlag)
-		sound_queue(3);
-	else if (new_room == 909)
-		sound_play(62);
+done:
+	;
 }
 
 void section_9_constructor() {


Commit: e22f2f79d41b9b5d93bb16fd280de3ac7e85741e
    https://github.com/scummvm/scummvm/commit/e22f2f79d41b9b5d93bb16fd280de3ac7e85741e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-22T12:38:02+10:00

Commit Message:
MADS: DRAGONSPHERE: Added section walker and interface functions

Changed paths:
    engines/mads/madsv2/dragonsphere/rooms/section1.cpp
    engines/mads/madsv2/dragonsphere/rooms/section2.cpp
    engines/mads/madsv2/dragonsphere/rooms/section3.cpp
    engines/mads/madsv2/dragonsphere/rooms/section4.cpp
    engines/mads/madsv2/dragonsphere/rooms/section5.cpp
    engines/mads/madsv2/dragonsphere/rooms/section6.cpp
    engines/mads/madsv2/dragonsphere/rooms/section9.cpp


diff --git a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
index fef68b8a092..8f3851b9360 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section1.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -60,9 +62,93 @@ void section_1_init() {
 }
 
 void section_1_walker() {
+	char temp_buf[80];
+	int dark_background = false;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	global[perform_displacements] = true;
+
+	if (new_room == 111 ||
+		new_room == 112 ||
+		new_room == 117 ||
+		new_room == 120 ||
+		new_room == 119) {
+		no_walker = true;
+	}
+
+	if (new_room == 106 && room_id == 120) {
+		no_walker = true;
+	}
+
+	if (global[player_persona] == PLAYER_IS_KING) {
+		if (new_room == 113) {
+			no_walker = true;
+		}
+	}
+
+	switch (new_room) {
+	case 108:
+	case 109:
+	case 113:
+	case 114:
+	case 115:
+		dark_background = true;
+		break;
+	}
+
+	if (no_walker || global[no_load_walker]) {
+		player.series_name[0] = 0;
+
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING || new_room == 108 || new_room == 109) {
+			if (new_room == 113 || new_room == 114 || new_room == 115 || new_room == 116) {
+				Common::strcpy_s(player.series_name, "PD");
+			} else {
+				Common::strcpy_s(player.series_name, "KG");
+			}
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background)
+			Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0)
+		player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_1_interface() {
+	int interface;
+	RGBcolor text_color = { 43, 29, 15 };
+
+	if (new_room == 116) {
+		interface = 2;
+
+	} else if (new_room == 110) {
+		interface = 5;
+
+	} else if (new_room == 120) {
+		interface = 8;
+
+	} else if ((new_room >= 113) && (new_room <= 119) && (new_room != 118)) {
+		interface = 1;
+
+	} else if ((new_room == 108) || (new_room == 109)) {
+		interface = 3;
+
+	} else {
+		interface = 0;
+	}
+
+	Common::strcpy_s(kernel.interface, kernel_interface_name(interface));
+
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_1_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section2.cpp b/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
index adabe48089c..6c8c9253e11 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section2.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -46,9 +48,41 @@ void section_2_init() {
 }
 
 void section_2_walker() {
+	char temp_buf[80];
+	int dark_background = false;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	if (new_room == 204) {
+		dark_background = true;
+	}
+
+	if (no_walker || global[no_load_walker]) {
+		player.series_name[0] = 0;
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			Common::strcpy_s(player.series_name, "KG");
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background) Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0) player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_2_interface() {
+	int interface = 9;
+	RGBcolor text_color = { 43, 29, 15 };
+
+	Common::strcpy_s(kernel.interface, kernel_interface_name(interface));
+
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_2_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section3.cpp b/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
index aa8acfaef68..90d60475292 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section3.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -43,9 +45,43 @@ void section_3_init() {
 }
 
 void section_3_walker() {
+	char temp_buf[80];
+	int dark_background = false;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	global[perform_displacements] = false;
+
+	if (new_room == 603) {
+		dark_background = false;
+	}
+
+	if (no_walker || global[no_load_walker]) {
+		player.series_name[0] = 0;
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			Common::strcpy_s(player.series_name, "KG");
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background)
+			Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0) player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_3_interface() {
+	RGBcolor text_color = { 43, 29, 15 };
+
+	Common::strcpy_s(kernel.interface, kernel_interface_name(7));
+
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_3_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section4.cpp b/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
index 2f566cbf4f3..d0affc84fd9 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section4.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -53,9 +55,47 @@ void section_4_init() {
 }
 
 void section_4_walker() {
+	char temp_buf[80];
+	int dark_background = false;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	if (new_room == 401 || new_room == 402 || new_room == 403 && global[player_persona] == PLAYER_IS_KING) {
+		global[perform_displacements] = false;
+	} else {
+		global[perform_displacements] = true;
+	}
+
+	if (new_room == 603) {
+		dark_background = false;
+	}
+
+	if (no_walker || global[no_load_walker]) {
+		player.series_name[0] = 0;
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			Common::strcpy_s(player.series_name, "KG");
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background)
+			Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0) player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_4_interface() {
+	RGBcolor text_color = { 43, 29, 15 };
+
+	Common::strcpy_s(kernel.interface, kernel_interface_name(7));
+
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_4_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section5.cpp b/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
index 2fb7f55fd8c..2727c6a2436 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section5.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -53,9 +55,47 @@ void section_5_init() {
 }
 
 void section_5_walker() {
+	char temp_buf[80];
+	int dark_background;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	no_walker = ((new_room == 506) || (new_room == 507) || (new_room == 510) ||
+		(new_room == 511));
+
+	/*  dark_background = ((new_room >= 113) && (new_room != 118));   */
+	dark_background = false;
+
+	if (no_walker) {
+		player.series_name[0] = 0;
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			Common::strcpy_s(player.series_name, "KG");
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background)
+			Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0) player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_5_interface() {
+	RGBcolor text_color = { 43, 29, 15 };
+
+	if (new_room >= 501 && new_room < 601) {
+		Common::strcpy_s(kernel.interface, kernel_interface_name(4));
+	} else {
+		Common::strcpy_s(kernel.interface, kernel_interface_name(0));
+	}
+
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_5_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section6.cpp b/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
index 43f1d7a96aa..1b594965c62 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section6.cpp
@@ -21,7 +21,9 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
 #include "mads/madsv2/core/room.h"
 #include "mads/madsv2/core/sound.h"
@@ -50,9 +52,41 @@ void section_6_init() {
 }
 
 void section_6_walker() {
+	char temp_buf[80];
+	int dark_background = true;
+	int no_walker = false;
+
+	sound_queue(N_NoiseFade);
+
+	Common::strcpy_s(temp_buf, player.series_name);
+
+	if (new_room == 603 || new_room == 601) {
+		dark_background = false;
+	}
+
+	if (no_walker || global[no_load_walker]) {
+		player.series_name[0] = 0;
+	} else if (!player.force_series) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			Common::strcpy_s(player.series_name, "KG");
+		} else {
+			Common::strcpy_s(player.series_name, "PD");
+		}
+		if (dark_background)
+			Common::strcat_s(player.series_name, "D");
+	}
+
+	if (strcmp(temp_buf, player.series_name) != 0)
+		player.walker_must_reload = true;
+
+	player.scaling_velocity = true;
 }
 
 void section_6_interface() {
+	RGBcolor text_color = { 43, 29, 15 };
+
+	Common::strcpy_s(kernel.interface, kernel_interface_name(6));
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_6_music() {
diff --git a/engines/mads/madsv2/dragonsphere/rooms/section9.cpp b/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
index a4e7f5d83dc..5d59c9c6897 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/section9.cpp
@@ -21,6 +21,7 @@
 
 #include "mads/madsv2/core/config.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/inter.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/player.h"
@@ -43,7 +44,7 @@ void section_9_init() {
 }
 
 void section_9_walker() {
-	sound_queue(5);
+	sound_queue(N_NoiseFade);
 	global[perform_displacements] = 0;
 	*player.series_name = '\0';
 	player.scaling_velocity = -1;
@@ -51,7 +52,7 @@ void section_9_walker() {
 
 void section_9_interface() {
 	Common::strcpy_s(kernel.interface, kernel_interface_name(7));
-	pal_change_color(47, 56, 254, 32);
+	pal_change_color(INTER_MESSAGE_COLOR, 56, 47, 32);
 }
 
 void section_9_music() {




More information about the Scummvm-git-logs mailing list