[Scummvm-git-logs] scummvm master -> aa46304814c0590cf68e46d55ac0746764fab6b1
dreammaster
noreply at scummvm.org
Sat Apr 25 22:31:26 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:
0c70a2b401 MADS: PHANTOM: Start of room specific locals sync
aa46304814 MADS: PHANTOM: Add room synchronize methods to all rooms
Commit: 0c70a2b4019c7211899e5740270cc35de65c279a
https://github.com/scummvm/scummvm/commit/0c70a2b4019c7211899e5740270cc35de65c279a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-26T08:30:59+10:00
Commit Message:
MADS: PHANTOM: Start of room specific locals sync
Changed paths:
engines/mads/madsv2/core/game.h
engines/mads/madsv2/core/kernel.cpp
engines/mads/madsv2/core/kernel.h
engines/mads/madsv2/engine.cpp
engines/mads/madsv2/engine.h
engines/mads/madsv2/phantom/global.cpp
engines/mads/madsv2/phantom/global.h
engines/mads/madsv2/phantom/phantom.cpp
engines/mads/madsv2/phantom/phantom.h
engines/mads/madsv2/phantom/rooms/room101.cpp
engines/mads/madsv2/phantom/rooms/room101.h
diff --git a/engines/mads/madsv2/core/game.h b/engines/mads/madsv2/core/game.h
index 7e1928ea449..3eb70f643e0 100644
--- a/engines/mads/madsv2/core/game.h
+++ b/engines/mads/madsv2/core/game.h
@@ -22,6 +22,7 @@
#ifndef MADS_CORE_GAME_H
#define MADS_CORE_GAME_H
+#include "common/serializer.h"
#include "mads/madsv2/core/general.h"
#include "mads/madsv2/core/global.h"
#include "mads/madsv2/core/player.h"
diff --git a/engines/mads/madsv2/core/kernel.cpp b/engines/mads/madsv2/core/kernel.cpp
index 4282135268c..0d9a4b72095 100644
--- a/engines/mads/madsv2/core/kernel.cpp
+++ b/engines/mads/madsv2/core/kernel.cpp
@@ -161,7 +161,7 @@ static void kernel_animation_get_sprite(int handle, int id);
void KernelGame::synchronize(Common::Serializer &s) {
s.syncAsByte(going);
s.skip(1);
- s.syncMultipleLE(scratch);
+ s.syncBytes(scratch, KERNEL_SCRATCH_SIZE);
s.syncAsByte(difficulty);
s.skip(1);
s.syncAsSint16LE(last_save);
diff --git a/engines/mads/madsv2/core/kernel.h b/engines/mads/madsv2/core/kernel.h
index 11f0c8dbedf..3a63a240335 100644
--- a/engines/mads/madsv2/core/kernel.h
+++ b/engines/mads/madsv2/core/kernel.h
@@ -128,7 +128,7 @@ namespace MADSV2 {
#define KERNEL_MAX_ANIMATIONS 10 /* Max number of animations */
-#define KERNEL_SCRATCH_SIZE 256 /* Size of game scratch area */
+#define KERNEL_SCRATCH_SIZE 512 /* Size of game scratch area */
#define KERNEL_HOME -32000 /* Sprite home location */
@@ -307,7 +307,7 @@ typedef struct {
struct KernelGame {
byte going; /* Game is running OK */
- int16 scratch[KERNEL_SCRATCH_SIZE]; /* Scratch variables for room */
+ byte scratch[KERNEL_SCRATCH_SIZE * 2]; /* Scratch variables for room */
int8 difficulty; /* Difficulty level */
int16 last_save; /* Most recent save slot # */
diff --git a/engines/mads/madsv2/engine.cpp b/engines/mads/madsv2/engine.cpp
index 12bb4732854..fe044deff62 100644
--- a/engines/mads/madsv2/engine.cpp
+++ b/engines/mads/madsv2/engine.cpp
@@ -20,6 +20,7 @@
*/
#include "common/system.h"
+#include "common/memstream.h"
#include "engines/util.h"
#include "mads/mads.h"
#include "mads/madsv2/engine.h"
@@ -130,8 +131,24 @@ done:
}
void MADSV2Engine::syncGame(Common::Serializer &s) {
+ if (s.isSaving()) {
+ // Write the room specific locals to the game scratchpad
+ Common::fill(game.scratch, game.scratch + KERNEL_SCRATCH_SIZE, 0);
+ Common::MemoryWriteStream scratchStream(game.scratch, KERNEL_SCRATCH_SIZE);
+ Common::Serializer s2(nullptr, &scratchStream);
+ syncRoom(s2);
+ }
+
game.synchronize(s);
s.syncAsSint16LE(new_room);
+
+ if (s.isLoading()) {
+ // Unpack the loaded scratch data for the room
+ Common::MemoryReadStream scratchStream(game.scratch, KERNEL_SCRATCH_SIZE);
+ Common::Serializer s2(&scratchStream, nullptr);
+ syncRoom(s2);
+ }
+
player2.synchronize(s);
s.syncAsSint16LE(inven_num_objects);
diff --git a/engines/mads/madsv2/engine.h b/engines/mads/madsv2/engine.h
index 6a76fffae3c..b44311d5e4a 100644
--- a/engines/mads/madsv2/engine.h
+++ b/engines/mads/madsv2/engine.h
@@ -93,6 +93,7 @@ public:
}
Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave) override;
Common::Error loadGameStream(Common::SeekableReadStream *stream) override;
+ virtual void syncRoom(Common::Serializer &s) = 0;
SaveStateList listSaves() const;
virtual void global_init_code() = 0;
diff --git a/engines/mads/madsv2/phantom/global.cpp b/engines/mads/madsv2/phantom/global.cpp
index c151551facd..7fabf610003 100644
--- a/engines/mads/madsv2/phantom/global.cpp
+++ b/engines/mads/madsv2/phantom/global.cpp
@@ -29,6 +29,7 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+// Section preloads
extern void section_1_preload();
extern void section_2_preload();
extern void section_3_preload();
@@ -37,6 +38,10 @@ extern void section_5_preload();
extern void section_6_preload();
extern void section_7_preload();
extern void section_8_preload();
+
+// Room syncs
+extern void room_101_synchronize(Common::Serializer &s);
+
} // namespace Rooms
void global_section_constructor() {
@@ -73,6 +78,17 @@ void global_section_constructor() {
}
}
+void sync_room(Common::Serializer &s) {
+ switch (new_room) {
+ case 101:
+ Rooms::room_101_synchronize(s);
+ break;
+
+ default:
+ break;
+ }
+}
+
} // namespace Phantom
} // namespace MADSV2
} // namespace MADS
diff --git a/engines/mads/madsv2/phantom/global.h b/engines/mads/madsv2/phantom/global.h
index 91b37478dea..3616c336973 100644
--- a/engines/mads/madsv2/phantom/global.h
+++ b/engines/mads/madsv2/phantom/global.h
@@ -22,6 +22,7 @@
#ifndef MADS_PHANTOM_GLOBAL_H
#define MADS_PHANTOM_GLOBAL_H
+#include "common/serializer.h"
#include "mads/madsv2/core/vocabh.h"
namespace MADS {
@@ -276,6 +277,7 @@ enum {
extern void global_section_constructor();
+extern void sync_room(Common::Serializer &s);
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/phantom.cpp b/engines/mads/madsv2/phantom/phantom.cpp
index c383d285b16..0c4fb13efe0 100644
--- a/engines/mads/madsv2/phantom/phantom.cpp
+++ b/engines/mads/madsv2/phantom/phantom.cpp
@@ -382,6 +382,10 @@ void PhantomEngine::global_section_constructor() {
Phantom::global_section_constructor();
}
+void PhantomEngine::syncRoom(Common::Serializer &s) {
+ Phantom::sync_room(s);
+}
+
void PhantomEngine::global_daemon_code() {
if (player.walker_visible && !global[stop_walker_disabled] && (player.commands_allowed || (conv_control.running >= 0)) && !player.walking &&
(player.facing == player.turn_to_facing)) {
diff --git a/engines/mads/madsv2/phantom/phantom.h b/engines/mads/madsv2/phantom/phantom.h
index ac9bd2a2b34..58442f1b0d4 100644
--- a/engines/mads/madsv2/phantom/phantom.h
+++ b/engines/mads/madsv2/phantom/phantom.h
@@ -40,6 +40,7 @@ public:
~PhantomEngine() override {}
Common::Error run() override;
+ void syncRoom(Common::Serializer &s) override;
void global_init_code() override;
void section_music(int section_num) override;
diff --git a/engines/mads/madsv2/phantom/rooms/room101.cpp b/engines/mads/madsv2/phantom/rooms/room101.cpp
index 3717eec79fd..8d5051d0a87 100644
--- a/engines/mads/madsv2/phantom/rooms/room101.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room101.cpp
@@ -37,6 +37,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+Scratch scratch;
+
void room_101_init(void) {
kernel.disable_fastwalk = true;
@@ -627,6 +629,28 @@ done:
;
}
+void room_101_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->brie_calling_position,
+ local->brie_chandelier_position,
+ local->brie_calling_frame,
+ local->brie_chandelier_frame,
+ local->talk_count,
+ local->start_sitting_down,
+ local->dynamic_brie,
+ local->dynamic_brie_2,
+ local->execute_chan,
+ local->execute_wipe,
+ local->start_walking,
+ local->start_walking_0,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->converse_counter);
+}
+
void room_101_preload(void) {
room_init_code_pointer = room_101_init;
room_pre_parser_code_pointer = room_101_pre_parser;
diff --git a/engines/mads/madsv2/phantom/rooms/room101.h b/engines/mads/madsv2/phantom/rooms/room101.h
index d7b59999bf2..c7eaed9d67a 100644
--- a/engines/mads/madsv2/phantom/rooms/room101.h
+++ b/engines/mads/madsv2/phantom/rooms/room101.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
@@ -55,8 +55,7 @@ typedef struct { /* Room local variables */
int16 anim_1_running; /* T if aa[1] is running */
int16 converse_counter; /* counter for talking displacements */
-
-} Scratch;
+};
/* ========================= Sprite Series =================== */
Commit: aa46304814c0590cf68e46d55ac0746764fab6b1
https://github.com/scummvm/scummvm/commit/aa46304814c0590cf68e46d55ac0746764fab6b1
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-26T08:31:01+10:00
Commit Message:
MADS: PHANTOM: Add room synchronize methods to all rooms
Changed paths:
engines/mads/madsv2/core/color.cpp
engines/mads/madsv2/core/color.h
engines/mads/madsv2/phantom/global.cpp
engines/mads/madsv2/phantom/rooms/room101.cpp
engines/mads/madsv2/phantom/rooms/room102.cpp
engines/mads/madsv2/phantom/rooms/room102.h
engines/mads/madsv2/phantom/rooms/room103.cpp
engines/mads/madsv2/phantom/rooms/room103.h
engines/mads/madsv2/phantom/rooms/room104.cpp
engines/mads/madsv2/phantom/rooms/room104.h
engines/mads/madsv2/phantom/rooms/room105.cpp
engines/mads/madsv2/phantom/rooms/room105.h
engines/mads/madsv2/phantom/rooms/room106.cpp
engines/mads/madsv2/phantom/rooms/room106.h
engines/mads/madsv2/phantom/rooms/room107.cpp
engines/mads/madsv2/phantom/rooms/room107.h
engines/mads/madsv2/phantom/rooms/room108.cpp
engines/mads/madsv2/phantom/rooms/room108.h
engines/mads/madsv2/phantom/rooms/room109.cpp
engines/mads/madsv2/phantom/rooms/room109.h
engines/mads/madsv2/phantom/rooms/room110.cpp
engines/mads/madsv2/phantom/rooms/room110.h
engines/mads/madsv2/phantom/rooms/room111.cpp
engines/mads/madsv2/phantom/rooms/room111.h
engines/mads/madsv2/phantom/rooms/room112.cpp
engines/mads/madsv2/phantom/rooms/room112.h
engines/mads/madsv2/phantom/rooms/room113.cpp
engines/mads/madsv2/phantom/rooms/room113.h
engines/mads/madsv2/phantom/rooms/room114.cpp
engines/mads/madsv2/phantom/rooms/room114.h
engines/mads/madsv2/phantom/rooms/room150.cpp
engines/mads/madsv2/phantom/rooms/room150.h
engines/mads/madsv2/phantom/rooms/room201.cpp
engines/mads/madsv2/phantom/rooms/room201.h
engines/mads/madsv2/phantom/rooms/room202.cpp
engines/mads/madsv2/phantom/rooms/room202.h
engines/mads/madsv2/phantom/rooms/room203.cpp
engines/mads/madsv2/phantom/rooms/room203.h
engines/mads/madsv2/phantom/rooms/room204.cpp
engines/mads/madsv2/phantom/rooms/room204.h
engines/mads/madsv2/phantom/rooms/room205.cpp
engines/mads/madsv2/phantom/rooms/room205.h
engines/mads/madsv2/phantom/rooms/room206.cpp
engines/mads/madsv2/phantom/rooms/room206.h
engines/mads/madsv2/phantom/rooms/room207.cpp
engines/mads/madsv2/phantom/rooms/room207.h
engines/mads/madsv2/phantom/rooms/room208.cpp
engines/mads/madsv2/phantom/rooms/room208.h
engines/mads/madsv2/phantom/rooms/room250.cpp
engines/mads/madsv2/phantom/rooms/room250.h
engines/mads/madsv2/phantom/rooms/room301.cpp
engines/mads/madsv2/phantom/rooms/room301.h
engines/mads/madsv2/phantom/rooms/room302.cpp
engines/mads/madsv2/phantom/rooms/room302.h
engines/mads/madsv2/phantom/rooms/room303.cpp
engines/mads/madsv2/phantom/rooms/room303.h
engines/mads/madsv2/phantom/rooms/room304.cpp
engines/mads/madsv2/phantom/rooms/room304.h
engines/mads/madsv2/phantom/rooms/room305.cpp
engines/mads/madsv2/phantom/rooms/room305.h
engines/mads/madsv2/phantom/rooms/room306.cpp
engines/mads/madsv2/phantom/rooms/room306.h
engines/mads/madsv2/phantom/rooms/room307.cpp
engines/mads/madsv2/phantom/rooms/room307.h
engines/mads/madsv2/phantom/rooms/room308.cpp
engines/mads/madsv2/phantom/rooms/room308.h
engines/mads/madsv2/phantom/rooms/room309.cpp
engines/mads/madsv2/phantom/rooms/room309.h
engines/mads/madsv2/phantom/rooms/room310.cpp
engines/mads/madsv2/phantom/rooms/room310.h
engines/mads/madsv2/phantom/rooms/room401.cpp
engines/mads/madsv2/phantom/rooms/room401.h
engines/mads/madsv2/phantom/rooms/room403.cpp
engines/mads/madsv2/phantom/rooms/room403.h
engines/mads/madsv2/phantom/rooms/room404.cpp
engines/mads/madsv2/phantom/rooms/room404.h
engines/mads/madsv2/phantom/rooms/room406.cpp
engines/mads/madsv2/phantom/rooms/room406.h
engines/mads/madsv2/phantom/rooms/room407.cpp
engines/mads/madsv2/phantom/rooms/room407.h
engines/mads/madsv2/phantom/rooms/room408.cpp
engines/mads/madsv2/phantom/rooms/room408.h
engines/mads/madsv2/phantom/rooms/room409.cpp
engines/mads/madsv2/phantom/rooms/room409.h
engines/mads/madsv2/phantom/rooms/room410.cpp
engines/mads/madsv2/phantom/rooms/room410.h
engines/mads/madsv2/phantom/rooms/room453.cpp
engines/mads/madsv2/phantom/rooms/room453.h
engines/mads/madsv2/phantom/rooms/room456.cpp
engines/mads/madsv2/phantom/rooms/room456.h
engines/mads/madsv2/phantom/rooms/room501.cpp
engines/mads/madsv2/phantom/rooms/room501.h
engines/mads/madsv2/phantom/rooms/room502.cpp
engines/mads/madsv2/phantom/rooms/room502.h
engines/mads/madsv2/phantom/rooms/room504.cpp
engines/mads/madsv2/phantom/rooms/room504.h
engines/mads/madsv2/phantom/rooms/room505.cpp
engines/mads/madsv2/phantom/rooms/room505.h
engines/mads/madsv2/phantom/rooms/room506.cpp
engines/mads/madsv2/phantom/rooms/room506.h
diff --git a/engines/mads/madsv2/core/color.cpp b/engines/mads/madsv2/core/color.cpp
index 0f9c35e85c8..2c4201012b2 100644
--- a/engines/mads/madsv2/core/color.cpp
+++ b/engines/mads/madsv2/core/color.cpp
@@ -32,6 +32,8 @@ void Color::load(Common::SeekableReadStream *src) {
src->readMultipleLE(r, g, b, x16, cycle, group);
}
+//====================================================================
+
bool ColorList::load(Load &load_handle, int size) {
// Load in the needed data
byte *buffer = (byte *)malloc(size);
@@ -56,17 +58,23 @@ void ColorList::load(Common::SeekableReadStream *src) {
table[i].load(src);
}
-void Cycle::load(Common::SeekableReadStream *src) {
- src->readMultipleLE(num_colors, first_list_color, first_palette_color, ticks);
+//====================================================================
+
+void Cycle::synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(num_colors, first_list_color, first_palette_color, ticks);
}
-void CycleList::load(Common::SeekableReadStream *src) {
- num_cycles = src->readUint16LE();
+//====================================================================
+
+void CycleList::synchronize(Common::Serializer &s) {
+ s.syncAsUint16LE(num_cycles);
for (int i = 0; i < COLOR_MAX_CYCLES; ++i)
- table[i].load(src);
+ table[i].synchronize(s);
}
+//====================================================================
+
void ShadowList::load(Common::SeekableReadStream *src) {
src->readMultipleLE(num_shadow_colors);
for (int i = 0; i < COLOR_MAX_SHADOW_COLORS; ++i)
diff --git a/engines/mads/madsv2/core/color.h b/engines/mads/madsv2/core/color.h
index 49d851ea3d1..e1d0cfc3f38 100644
--- a/engines/mads/madsv2/core/color.h
+++ b/engines/mads/madsv2/core/color.h
@@ -22,6 +22,7 @@
#ifndef MADS_CORE_COLOR_H
#define MADS_CORE_COLOR_H
+#include "common/serializer.h"
#include "common/stream.h"
#include "mads/madsv2/core/loader.h"
@@ -96,7 +97,7 @@ struct Cycle {
byte ticks; /* 60/s ticks between cycles */
static constexpr int SIZE = 1 + 1 + 1 + 1;
- void load(Common::SeekableReadStream *src);
+ void synchronize(Common::Serializer &s);
};
typedef Cycle *CyclePtr;
@@ -109,7 +110,15 @@ struct CycleList {
Cycle table[COLOR_MAX_CYCLES];
static constexpr int SIZE = 2 + (Cycle::SIZE * COLOR_MAX_CYCLES);
- void load(Common::SeekableReadStream *src);
+ void synchronize(Common::Serializer &s);
+ void load(Common::SeekableReadStream *src) {
+ Common::Serializer s(src, nullptr);
+ synchronize(s);
+ }
+ void save(Common::WriteStream *dest) {
+ Common::Serializer s(nullptr, dest);
+ synchronize(s);
+ }
};
typedef CycleList *CycleListPtr;
diff --git a/engines/mads/madsv2/phantom/global.cpp b/engines/mads/madsv2/phantom/global.cpp
index 7fabf610003..3fb29bd1039 100644
--- a/engines/mads/madsv2/phantom/global.cpp
+++ b/engines/mads/madsv2/phantom/global.cpp
@@ -41,6 +41,54 @@ extern void section_8_preload();
// Room syncs
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_150_synchronize(Common::Serializer &s);
+extern void room_201_synchronize(Common::Serializer &s);
+extern void room_202_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_207_synchronize(Common::Serializer &s);
+extern void room_208_synchronize(Common::Serializer &s);
+extern void room_250_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_304_synchronize(Common::Serializer &s);
+extern void room_305_synchronize(Common::Serializer &s);
+extern void room_306_synchronize(Common::Serializer &s);
+extern void room_307_synchronize(Common::Serializer &s);
+extern void room_308_synchronize(Common::Serializer &s);
+extern void room_309_synchronize(Common::Serializer &s);
+extern void room_310_synchronize(Common::Serializer &s);
+extern void room_401_synchronize(Common::Serializer &s);
+extern void room_403_synchronize(Common::Serializer &s);
+extern void room_404_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_453_synchronize(Common::Serializer &s);
+extern void room_456_synchronize(Common::Serializer &s);
+extern void room_501_synchronize(Common::Serializer &s);
+extern void room_502_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);
} // namespace Rooms
@@ -83,6 +131,150 @@ void sync_room(Common::Serializer &s) {
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 150:
+ Rooms::room_150_synchronize(s);
+ break;
+ case 201:
+ Rooms::room_201_synchronize(s);
+ break;
+ case 202:
+ Rooms::room_202_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 207:
+ Rooms::room_207_synchronize(s);
+ break;
+ case 208:
+ Rooms::room_208_synchronize(s);
+ break;
+ case 250:
+ Rooms::room_250_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 304:
+ Rooms::room_304_synchronize(s);
+ break;
+ case 305:
+ Rooms::room_305_synchronize(s);
+ break;
+ case 306:
+ Rooms::room_306_synchronize(s);
+ break;
+ case 307:
+ Rooms::room_307_synchronize(s);
+ break;
+ case 308:
+ Rooms::room_308_synchronize(s);
+ break;
+ case 309:
+ Rooms::room_309_synchronize(s);
+ break;
+ case 310:
+ Rooms::room_310_synchronize(s);
+ break;
+ case 401:
+ Rooms::room_401_synchronize(s);
+ break;
+ case 403:
+ Rooms::room_403_synchronize(s);
+ break;
+ case 404:
+ Rooms::room_404_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 453:
+ Rooms::room_453_synchronize(s);
+ break;
+ case 456:
+ Rooms::room_456_synchronize(s);
+ break;
+ case 501:
+ Rooms::room_501_synchronize(s);
+ break;
+ case 502:
+ Rooms::room_502_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;
default:
break;
diff --git a/engines/mads/madsv2/phantom/rooms/room101.cpp b/engines/mads/madsv2/phantom/rooms/room101.cpp
index 8d5051d0a87..45ad61fac07 100644
--- a/engines/mads/madsv2/phantom/rooms/room101.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room101.cpp
@@ -37,7 +37,7 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-Scratch scratch;
+static Scratch scratch;
void room_101_init(void) {
kernel.disable_fastwalk = true;
@@ -629,6 +629,18 @@ done:
;
}
+void room_101_preload(void) {
+ room_init_code_pointer = room_101_init;
+ room_pre_parser_code_pointer = room_101_pre_parser;
+ room_parser_code_pointer = room_101_parser;
+ room_daemon_code_pointer = room_101_daemon;
+
+ section_1_walker();
+ section_1_interface();
+
+ vocab_make_active(words_Monsieur_Brie);
+}
+
void room_101_synchronize(Common::Serializer &s) {
s.syncMultipleLE(local->sprite);
s.syncMultipleLE(local->sequence);
@@ -651,18 +663,6 @@ void room_101_synchronize(Common::Serializer &s) {
local->converse_counter);
}
-void room_101_preload(void) {
- room_init_code_pointer = room_101_init;
- room_pre_parser_code_pointer = room_101_pre_parser;
- room_parser_code_pointer = room_101_parser;
- room_daemon_code_pointer = room_101_daemon;
-
- section_1_walker();
- section_1_interface();
-
- vocab_make_active(words_Monsieur_Brie);
-}
-
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room102.cpp b/engines/mads/madsv2/phantom/rooms/room102.cpp
index afb462c1d6c..e51068a7bdf 100644
--- a/engines/mads/madsv2/phantom/rooms/room102.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room102.cpp
@@ -35,6 +35,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_102_init(void) {
int death_x = 0;
int death_y = 0;
@@ -303,6 +305,14 @@ void room_102_preload(void) {
section_1_interface();
}
+
+void room_102_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(local->anim_0_running);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room102.h b/engines/mads/madsv2/phantom/rooms/room102.h
index fe263bf4689..741ae799fc0 100644
--- a/engines/mads/madsv2/phantom/rooms/room102.h
+++ b/engines/mads/madsv2/phantom/rooms/room102.h
@@ -29,17 +29,17 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
int16 anim_0_running;
-} Scratch;
+};
/* ========================= Load Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room103.cpp b/engines/mads/madsv2/phantom/rooms/room103.cpp
index e6c41da4344..60f24d3a43a 100644
--- a/engines/mads/madsv2/phantom/rooms/room103.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room103.cpp
@@ -41,6 +41,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_103_adjust_rails(int variant) {
switch (variant) {
case 0:
@@ -1759,6 +1761,41 @@ void room_103_preload(void) {
vocab_make_active(words_climb);
}
+
+void room_103_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->prompt_1,
+ local->prompt_2,
+ local->prompt_3,
+ local->prompt_4,
+ local->prompt_5,
+ local->floor_r_1,
+ local->floor_r_2,
+ local->floor_l_1,
+ local->floor_l_2,
+ local->man,
+ local->jacques_frame,
+ local->jacques_action,
+ local->jacques_talk_count,
+ local->just_did_option,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->anim_4_running,
+ local->anim_5_running,
+ local->anim_6_running,
+ local->top_of_stand,
+ local->converse_counter,
+ local->frame_guard,
+ local->stairs_frame,
+ local->climb_thru,
+ local->sit_on_it);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room103.h b/engines/mads/madsv2/phantom/rooms/room103.h
index 255d277c2a9..c7855a0203e 100644
--- a/engines/mads/madsv2/phantom/rooms/room103.h
+++ b/engines/mads/madsv2/phantom/rooms/room103.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[20]; /* Sprite series handles */
int16 sequence[20]; /* Sequence handles */
int16 animation[7]; /* Animation handles */
@@ -70,7 +70,7 @@ typedef struct { /* Room local variables */
int16 stairs_frame;
int16 climb_thru;
int16 sit_on_it;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room104.cpp b/engines/mads/madsv2/phantom/rooms/room104.cpp
index 431f34cc11c..7f90a29148e 100644
--- a/engines/mads/madsv2/phantom/rooms/room104.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room104.cpp
@@ -42,6 +42,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void get_rid_of_inventory() {
if (player_has(large_note)) {
inter_move_object(large_note, NOWHERE);
@@ -1135,6 +1137,36 @@ void room_104_preload() {
vocab_make_active(words_Monsieur_Richard);
}
+
+void room_104_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->get_ready_she_leave,
+ local->get_ready_he_leave,
+ local->wants_to_talk,
+ local->wants_to_get_up,
+ local->sitting_up,
+ local->rich_action,
+ local->rich_frame,
+ local->raoul_action,
+ local->raoul_frame,
+ local->daae_walk_action,
+ local->daae_walk_frame,
+ local->couple_action,
+ local->couple_frame,
+ local->rich_talk_count,
+ local->couple_he_talk_count,
+ local->couple_she_talk_count,
+ local->couple_look_rich_count,
+ local->wants_to_stand_up,
+ local->last_player_step);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room104.h b/engines/mads/madsv2/phantom/rooms/room104.h
index 0729c3e27c5..40b2e7e8a20 100644
--- a/engines/mads/madsv2/phantom/rooms/room104.h
+++ b/engines/mads/madsv2/phantom/rooms/room104.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -73,7 +73,7 @@ typedef struct { /* Room local variables */
int16 last_player_step; /* Frame marker for player walk */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room105.cpp b/engines/mads/madsv2/phantom/rooms/room105.cpp
index 08e5117cc48..f68e59f54f1 100644
--- a/engines/mads/madsv2/phantom/rooms/room105.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room105.cpp
@@ -42,6 +42,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_105_init() {
global_speech_load(speech_christine_scales);
@@ -618,6 +620,14 @@ void room_105_preload() {
vocab_make_active(words_light_fixture);
}
+
+void room_105_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(local->column_prop);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room105.h b/engines/mads/madsv2/phantom/rooms/room105.h
index ea4f961ba94..991a6be4e75 100644
--- a/engines/mads/madsv2/phantom/rooms/room105.h
+++ b/engines/mads/madsv2/phantom/rooms/room105.h
@@ -30,19 +30,19 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
int16 column_prop; /* Dynamic HS for column_prop */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room106.cpp b/engines/mads/madsv2/phantom/rooms/room106.cpp
index 2ebaed6da53..8316eeb7880 100644
--- a/engines/mads/madsv2/phantom/rooms/room106.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room106.cpp
@@ -50,6 +50,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_106_init() {
int dyn_floor;
@@ -628,6 +630,14 @@ void room_106_preload() {
section_1_interface();
}
+
+void room_106_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(local->dynamic_sandbag);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room106.h b/engines/mads/madsv2/phantom/rooms/room106.h
index fe40e2ebbe9..aecad12217e 100644
--- a/engines/mads/madsv2/phantom/rooms/room106.h
+++ b/engines/mads/madsv2/phantom/rooms/room106.h
@@ -30,19 +30,19 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
int16 dynamic_sandbag; /* Dynamic HS for fallen sandbag */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room107.cpp b/engines/mads/madsv2/phantom/rooms/room107.cpp
index a92d47c7449..8a4a0c2061e 100644
--- a/engines/mads/madsv2/phantom/rooms/room107.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room107.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_107_init() {
/* ==================== Load Sprite Series ====================== */
@@ -297,6 +299,13 @@ void room_107_preload() {
section_1_interface();
}
+
+void room_107_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room107.h b/engines/mads/madsv2/phantom/rooms/room107.h
index 3e9c1a58361..002c3a50b58 100644
--- a/engines/mads/madsv2/phantom/rooms/room107.h
+++ b/engines/mads/madsv2/phantom/rooms/room107.h
@@ -30,18 +30,18 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room108.cpp b/engines/mads/madsv2/phantom/rooms/room108.cpp
index 4728223eef4..2fb23dd584e 100644
--- a/engines/mads/madsv2/phantom/rooms/room108.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room108.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_char() {
int random = 0;
int char_reset_frame;
@@ -575,6 +577,24 @@ void room_108_preload() {
vocab_make_active(words_Charles);
}
+
+void room_108_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->char_action,
+ local->char_frame,
+ local->char_talk_count,
+ local->char_shut_up_count,
+ local->dynamic_char,
+ local->prev_shut_up_frame,
+ local->max_talk_count,
+ local->did_raise_hand,
+ local->converse_counter);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room108.h b/engines/mads/madsv2/phantom/rooms/room108.h
index 679247aff64..1f6c2598ae2 100644
--- a/engines/mads/madsv2/phantom/rooms/room108.h
+++ b/engines/mads/madsv2/phantom/rooms/room108.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -52,7 +52,7 @@ typedef struct { /* Room local variables */
int16 did_raise_hand; /* true, when if talking, did raise hand */
int16 converse_counter; /* counter for talking displacements */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room109.cpp b/engines/mads/madsv2/phantom/rooms/room109.cpp
index 98ada88a7f7..961b37f96df 100644
--- a/engines/mads/madsv2/phantom/rooms/room109.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room109.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_109_init() {
local->anim_0_running = false;
local->anim_1_running = false;
@@ -551,6 +553,19 @@ void room_109_preload() {
section_1_interface();
}
+
+void room_109_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->on_floor,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room109.h b/engines/mads/madsv2/phantom/rooms/room109.h
index 46e446ab43f..7f715b76a06 100644
--- a/engines/mads/madsv2/phantom/rooms/room109.h
+++ b/engines/mads/madsv2/phantom/rooms/room109.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -46,7 +46,7 @@ typedef struct { /* Room local variables */
int16 anim_2_running;
int16 anim_3_running;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room110.cpp b/engines/mads/madsv2/phantom/rooms/room110.cpp
index 71e18ba5b97..658b6698ee3 100644
--- a/engines/mads/madsv2/phantom/rooms/room110.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room110.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_110_init() {
/* ==================== Load Sprite Series ====================== */
@@ -393,6 +395,13 @@ void room_110_preload() {
section_1_interface();
}
+
+void room_110_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room110.h b/engines/mads/madsv2/phantom/rooms/room110.h
index d449c30209f..4ee149c7a2a 100644
--- a/engines/mads/madsv2/phantom/rooms/room110.h
+++ b/engines/mads/madsv2/phantom/rooms/room110.h
@@ -30,18 +30,18 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room111.cpp b/engines/mads/madsv2/phantom/rooms/room111.cpp
index 09b44082526..27f492d92ad 100644
--- a/engines/mads/madsv2/phantom/rooms/room111.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room111.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_listen() {
int listen_reset_frame;
@@ -636,6 +638,20 @@ void room_111_preload() {
section_1_interface();
}
+
+void room_111_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->delete_axe,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->listen_frame,
+ local->listen_action,
+ local->it_is_closed);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room111.h b/engines/mads/madsv2/phantom/rooms/room111.h
index 46ec7cc6040..fab4a4b431c 100644
--- a/engines/mads/madsv2/phantom/rooms/room111.h
+++ b/engines/mads/madsv2/phantom/rooms/room111.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 listen_action;
int16 it_is_closed;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room112.cpp b/engines/mads/madsv2/phantom/rooms/room112.cpp
index a20edf372fe..acad87ca1a3 100644
--- a/engines/mads/madsv2/phantom/rooms/room112.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room112.cpp
@@ -41,6 +41,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_julie_practice() {
int random = 0;
int julie_reset_frame;
@@ -692,6 +694,25 @@ void room_112_preload() {
vocab_make_active(words_Julie);
}
+
+void room_112_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->dynamic_julie,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->just_did_option,
+ local->julie_frame,
+ local->julie_action,
+ local->julie_talk_count,
+ local->raoul_frame,
+ local->raoul_action,
+ local->raoul_talk_count,
+ local->display_wait);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room112.h b/engines/mads/madsv2/phantom/rooms/room112.h
index 762f3fa1aac..a0b03bc6476 100644
--- a/engines/mads/madsv2/phantom/rooms/room112.h
+++ b/engines/mads/madsv2/phantom/rooms/room112.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -52,7 +52,7 @@ typedef struct { /* Room local variables */
int16 raoul_talk_count;
int16 display_wait; /* for getting up out of the chair */
-} Scratch;
+};
/* ========================= Conversation ========================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room113.cpp b/engines/mads/madsv2/phantom/rooms/room113.cpp
index c169228a726..cd2952495d3 100644
--- a/engines/mads/madsv2/phantom/rooms/room113.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room113.cpp
@@ -42,6 +42,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_florent() {
int random;
int florent_reset_frame;
@@ -1606,6 +1608,43 @@ void room_113_preload() {
vocab_make_active(words_Julie);
}
+
+void room_113_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->chris_daae_dynamic,
+ local->chris_flor_dynamic,
+ local->standing_talking,
+ local->day_wants_to_talk,
+ local->music_is_playing,
+ local->right_after_kiss,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->anim_4_running,
+ local->prevent_1,
+ local->prevent_2,
+ local->raoul_is_up,
+ local->arms_are_out,
+ local->day_frame,
+ local->day_action,
+ local->day_talk_count,
+ local->stand_talk_count,
+ local->florent_frame,
+ local->florent_action,
+ local->florent_talk_count,
+ local->raoul_frame,
+ local->raoul_action,
+ local->raoul_talk_count,
+ local->julie_frame,
+ local->julie_action,
+ local->julie_talk_count,
+ local->just_did_option);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room113.h b/engines/mads/madsv2/phantom/rooms/room113.h
index 3e9e9a92dd7..255b0cf0dbe 100644
--- a/engines/mads/madsv2/phantom/rooms/room113.h
+++ b/engines/mads/madsv2/phantom/rooms/room113.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -74,7 +74,7 @@ typedef struct { /* Room local variables */
int16 julie_talk_count;
int16 just_did_option;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room114.cpp b/engines/mads/madsv2/phantom/rooms/room114.cpp
index a97cb9535f4..2a8e972223d 100644
--- a/engines/mads/madsv2/phantom/rooms/room114.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room114.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_114_init() {
/* =================== Load Sprite Series ======================= */
@@ -375,6 +377,13 @@ void room_114_preload() {
section_1_interface();
}
+
+void room_114_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room114.h b/engines/mads/madsv2/phantom/rooms/room114.h
index 2289bd8f23a..074d9f0a52a 100644
--- a/engines/mads/madsv2/phantom/rooms/room114.h
+++ b/engines/mads/madsv2/phantom/rooms/room114.h
@@ -30,17 +30,17 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room150.cpp b/engines/mads/madsv2/phantom/rooms/room150.cpp
index 22a3ff92216..17ad8b1982a 100644
--- a/engines/mads/madsv2/phantom/rooms/room150.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room150.cpp
@@ -33,6 +33,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_150_init() {
viewing_at_y = ((video_y - display_y) >> 1);
@@ -96,6 +98,13 @@ void room_150_preload() {
section_1_interface();
}
+
+void room_150_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room150.h b/engines/mads/madsv2/phantom/rooms/room150.h
index ebb5862613c..d0fceb72f25 100644
--- a/engines/mads/madsv2/phantom/rooms/room150.h
+++ b/engines/mads/madsv2/phantom/rooms/room150.h
@@ -30,17 +30,17 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
extern void room_150_init();
diff --git a/engines/mads/madsv2/phantom/rooms/room201.cpp b/engines/mads/madsv2/phantom/rooms/room201.cpp
index f36ffa4e1fe..e0018eef96d 100644
--- a/engines/mads/madsv2/phantom/rooms/room201.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room201.cpp
@@ -41,6 +41,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_raoul() {
int random;
int raoul_reset_frame;
@@ -521,6 +523,22 @@ void room_201_preload() {
section_2_interface();
}
+
+void room_201_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->raoul_frame,
+ local->raoul_action,
+ local->anim_0_running,
+ local->seller_frame,
+ local->seller_action,
+ local->seller_talk_count,
+ local->anim_1_running,
+ local->want_to_hold);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room201.h b/engines/mads/madsv2/phantom/rooms/room201.h
index 0d026721b7b..0d4815a4d09 100644
--- a/engines/mads/madsv2/phantom/rooms/room201.h
+++ b/engines/mads/madsv2/phantom/rooms/room201.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -51,7 +51,7 @@ typedef struct { /* Room local variables */
int16 anim_1_running;
int16 want_to_hold;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room202.cpp b/engines/mads/madsv2/phantom/rooms/room202.cpp
index 3ce15c8a4bd..214a1231943 100644
--- a/engines/mads/madsv2/phantom/rooms/room202.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room202.cpp
@@ -43,6 +43,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void set_chandelier_positions() {
int chandelier;
int center;
@@ -992,6 +994,29 @@ void room_202_preload() {
vocab_make_active(words_Edgar_Degas);
}
+
+void room_202_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->usher_action,
+ local->usher_frame,
+ local->usher_talk_count,
+ local->degas_action,
+ local->degas_frame,
+ local->rich_frame,
+ local->rich_action,
+ local->rich_talk_count,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->converse_counter,
+ local->prevent);
+ s.syncMultipleLE(local->chandelier_base);
+ s.syncMultipleLE(local->dyn_chandeliers);
+ s.syncMultipleLE(local->gave);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room202.h b/engines/mads/madsv2/phantom/rooms/room202.h
index 79aa2a7de14..141fbb8b893 100644
--- a/engines/mads/madsv2/phantom/rooms/room202.h
+++ b/engines/mads/madsv2/phantom/rooms/room202.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -62,7 +62,7 @@ typedef struct { /* Room local variables */
int16 gave;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room203.cpp b/engines/mads/madsv2/phantom/rooms/room203.cpp
index cbd99a16bc6..78d874d9046 100644
--- a/engines/mads/madsv2/phantom/rooms/room203.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room203.cpp
@@ -42,6 +42,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_brie() {
int random = 0;
int brie_reset_frame;
@@ -1857,6 +1859,32 @@ void room_203_preload() {
section_2_interface();
}
+
+void room_203_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->brie_action,
+ local->brie_frame,
+ local->brie_talk_count,
+ local->raoul_action,
+ local->raoul_frame,
+ local->raoul_talk_count,
+ local->rich_action,
+ local->rich_frame,
+ local->rich_talk_count,
+ local->daae_action,
+ local->daae_frame,
+ local->daae_talk_count,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->show_note,
+ local->converse_counter);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room203.h b/engines/mads/madsv2/phantom/rooms/room203.h
index dde62d99b4a..0e93b02c05d 100644
--- a/engines/mads/madsv2/phantom/rooms/room203.h
+++ b/engines/mads/madsv2/phantom/rooms/room203.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -64,7 +64,7 @@ typedef struct { /* Room local variables */
int16 show_note;
int16 converse_counter;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room204.cpp b/engines/mads/madsv2/phantom/rooms/room204.cpp
index 2da6c7a6102..6c4bf9595f3 100644
--- a/engines/mads/madsv2/phantom/rooms/room204.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room204.cpp
@@ -46,6 +46,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_brie() {
int random = 0;
int brie_reset_frame;
@@ -1022,6 +1024,31 @@ void room_204_preload() {
section_2_interface();
}
+
+void room_204_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->keep_raoul_down,
+ local->florent_is_gone,
+ local->prevent,
+ local->prevent_2,
+ local->prevent_3,
+ local->end_of_game,
+ local->brie_action,
+ local->brie_frame,
+ local->flor_action,
+ local->flor_frame,
+ local->raoul_action,
+ local->raoul_frame,
+ local->raoul_talk_count);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room204.h b/engines/mads/madsv2/phantom/rooms/room204.h
index e0bf3613880..bfda8f9b02e 100644
--- a/engines/mads/madsv2/phantom/rooms/room204.h
+++ b/engines/mads/madsv2/phantom/rooms/room204.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -61,7 +61,7 @@ typedef struct { /* Room local variables */
int16 raoul_talk_count;
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room205.cpp b/engines/mads/madsv2/phantom/rooms/room205.cpp
index 9a19316afec..fce1bdf5dca 100644
--- a/engines/mads/madsv2/phantom/rooms/room205.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room205.cpp
@@ -47,6 +47,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void handle_animation_rich() {
int random;
int rich_reset_frame;
@@ -1793,6 +1795,26 @@ void room_205_preload() {
}
}
+
+void room_205_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->rich_frame,
+ local->rich_action,
+ local->rich_talk_count,
+ local->giry_frame,
+ local->giry_action,
+ local->giry_talk_count,
+ local->just_did_option,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->converse_counter,
+ local->no_hold,
+ local->give_ticket);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room205.h b/engines/mads/madsv2/phantom/rooms/room205.h
index 4ca89edf2d3..0e0b4a54177 100644
--- a/engines/mads/madsv2/phantom/rooms/room205.h
+++ b/engines/mads/madsv2/phantom/rooms/room205.h
@@ -30,12 +30,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -56,7 +56,7 @@ typedef struct { /* Room local variables */
int16 no_hold; /* if true, will not conv_hold in Parser */
int16 give_ticket; /* if true, will give ticket */
-} Scratch;
+};
/* ========================= Sprite Series ========================= */
diff --git a/engines/mads/madsv2/phantom/rooms/room206.cpp b/engines/mads/madsv2/phantom/rooms/room206.cpp
index 316ae5fc19c..25872edc34b 100644
--- a/engines/mads/madsv2/phantom/rooms/room206.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room206.cpp
@@ -47,6 +47,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_206_daemon() {
switch (kernel.trigger) {
case ROOM_206_FROM_308:
@@ -554,6 +556,17 @@ void room_206_preload() {
section_2_interface();
}
+
+void room_206_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->prevent,
+ local->prevent_2);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room206.h b/engines/mads/madsv2/phantom/rooms/room206.h
index 3e9ba65d3f4..1744482eff2 100644
--- a/engines/mads/madsv2/phantom/rooms/room206.h
+++ b/engines/mads/madsv2/phantom/rooms/room206.h
@@ -31,7 +31,7 @@ namespace Rooms {
/* ---- Scratch (room-local variables) ---- */
-struct Room206Scratch {
+struct Scratch {
int16 sprite[15]; // Sprite series handles
int16 sequence[15]; // Sequence handles
int16 animation[4]; // Animation handles
@@ -40,7 +40,7 @@ struct Room206Scratch {
int16 prevent_2;
};
-#define local ((Room206Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
diff --git a/engines/mads/madsv2/phantom/rooms/room207.cpp b/engines/mads/madsv2/phantom/rooms/room207.cpp
index 980d39fbca3..48556750520 100644
--- a/engines/mads/madsv2/phantom/rooms/room207.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room207.cpp
@@ -47,6 +47,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_207_daemon() {
if (local->anim_0_running && !local->prevent) {
if (kernel_anim[aa[0]].frame == 6) {
@@ -228,6 +230,16 @@ void room_207_preload() {
section_2_interface();
}
+
+void room_207_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->prevent,
+ local->anim_0_running);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room207.h b/engines/mads/madsv2/phantom/rooms/room207.h
index 37fac901a87..7548f4148bd 100644
--- a/engines/mads/madsv2/phantom/rooms/room207.h
+++ b/engines/mads/madsv2/phantom/rooms/room207.h
@@ -31,7 +31,7 @@ namespace Rooms {
/* ---- Scratch (room-local variables) ---- */
-struct Room207Scratch {
+struct Scratch {
int16 sprite[15]; // Sprite series handles
int16 sequence[15]; // Sequence handles
int16 animation[4]; // Animation handles
@@ -39,7 +39,7 @@ struct Room207Scratch {
int16 anim_0_running;
};
-#define local ((Room207Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
diff --git a/engines/mads/madsv2/phantom/rooms/room208.cpp b/engines/mads/madsv2/phantom/rooms/room208.cpp
index a3915bf7667..8d003f7837d 100644
--- a/engines/mads/madsv2/phantom/rooms/room208.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room208.cpp
@@ -47,6 +47,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void animate_top_left() {
int delay;
int random;
@@ -463,6 +465,25 @@ void room_208_preload() {
section_2_interface();
}
+
+void room_208_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->middle_direction,
+ local->top_left_frame,
+ local->top_right_frame,
+ local->middle_left_frame,
+ local->middle_middle_frame,
+ local->middle_right_frame,
+ local->bottom_left_frame,
+ local->bottom_middle_frame,
+ local->bottom_right_frame,
+ local->prevent,
+ local->prevent_2);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room208.h b/engines/mads/madsv2/phantom/rooms/room208.h
index d48ead00f80..a24f5153a7f 100644
--- a/engines/mads/madsv2/phantom/rooms/room208.h
+++ b/engines/mads/madsv2/phantom/rooms/room208.h
@@ -31,7 +31,7 @@ namespace Rooms {
/* ---- Scratch (room-local variables) ---- */
-struct Room208Scratch {
+struct Scratch {
int16 sprite[15]; // Sprite series handles
int16 sequence[15]; // Sequence handles
int16 animation[4]; // Animation handles
@@ -48,7 +48,7 @@ struct Room208Scratch {
int16 prevent_2;
};
-#define local ((Room208Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
diff --git a/engines/mads/madsv2/phantom/rooms/room250.cpp b/engines/mads/madsv2/phantom/rooms/room250.cpp
index 091c08dae0f..4671816e6ef 100644
--- a/engines/mads/madsv2/phantom/rooms/room250.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room250.cpp
@@ -33,6 +33,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_250_init(void) {
viewing_at_y = ((video_y - display_y) >> 1);
@@ -137,6 +139,13 @@ void room_250_preload(void) {
section_2_interface();
}
+
+void room_250_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room250.h b/engines/mads/madsv2/phantom/rooms/room250.h
index 7196bc6bf89..e8649194dc3 100644
--- a/engines/mads/madsv2/phantom/rooms/room250.h
+++ b/engines/mads/madsv2/phantom/rooms/room250.h
@@ -29,18 +29,18 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
} // namespace Rooms
} // namespace Phantom
diff --git a/engines/mads/madsv2/phantom/rooms/room301.cpp b/engines/mads/madsv2/phantom/rooms/room301.cpp
index ec81afed595..939a5773568 100644
--- a/engines/mads/madsv2/phantom/rooms/room301.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room301.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_301_init() {
kernel.disable_fastwalk = true;
@@ -396,6 +398,19 @@ void room_301_preload(void) {
section_3_interface();
}
+
+void room_301_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->dynamic_light,
+ local->dynamic_sand,
+ local->anim_0_running,
+ local->guard,
+ local->prevent);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room301.h b/engines/mads/madsv2/phantom/rooms/room301.h
index 2a52c7110ce..3ee3fba47ab 100644
--- a/engines/mads/madsv2/phantom/rooms/room301.h
+++ b/engines/mads/madsv2/phantom/rooms/room301.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -45,7 +45,7 @@ typedef struct { /* Room local variables */
int16 guard;
int16 prevent;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room302.cpp b/engines/mads/madsv2/phantom/rooms/room302.cpp
index 782ab3e7ec6..691241ebf89 100644
--- a/engines/mads/madsv2/phantom/rooms/room302.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room302.cpp
@@ -42,6 +42,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_302_init(void) {
/* =================== Load sprite series ==================== */
@@ -240,6 +242,13 @@ void room_302_preload(void) {
section_3_interface();
}
+
+void room_302_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room302.h b/engines/mads/madsv2/phantom/rooms/room302.h
index e80532d1295..f378b15d337 100644
--- a/engines/mads/madsv2/phantom/rooms/room302.h
+++ b/engines/mads/madsv2/phantom/rooms/room302.h
@@ -29,18 +29,18 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room303.cpp b/engines/mads/madsv2/phantom/rooms/room303.cpp
index a4edad448ce..db131ea4679 100644
--- a/engines/mads/madsv2/phantom/rooms/room303.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room303.cpp
@@ -44,6 +44,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_303_init(void) {
local->anim_0_running = false;
local->frame_guard = false;
@@ -347,6 +349,17 @@ void room_303_preload(void) {
vocab_make_active(words_climb_down);
}
+
+void room_303_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->dynamic_hemp,
+ local->anim_0_running,
+ local->frame_guard);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room303.h b/engines/mads/madsv2/phantom/rooms/room303.h
index 4162c04d7df..a61413d6750 100644
--- a/engines/mads/madsv2/phantom/rooms/room303.h
+++ b/engines/mads/madsv2/phantom/rooms/room303.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -43,7 +43,7 @@ typedef struct { /* Room local variables */
int16 anim_0_running;
int16 frame_guard;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room304.cpp b/engines/mads/madsv2/phantom/rooms/room304.cpp
index ddfc84ec84d..71bc835de29 100644
--- a/engines/mads/madsv2/phantom/rooms/room304.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room304.cpp
@@ -45,6 +45,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_304_init() {
local->raoul_look_count = 0;
player.x = 0;
@@ -482,6 +484,25 @@ void room_304_preload() {
section_3_interface();
}
+
+void room_304_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->raoul_frame,
+ local->raoul_action,
+ local->raoul_look_count,
+ local->raoul_fight_frame,
+ local->raoul_fight_action,
+ local->raoul_fight_talk_count,
+ local->phantom_frame,
+ local->phantom_action);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room304.h b/engines/mads/madsv2/phantom/rooms/room304.h
index 8987e14a218..227d1c76a25 100644
--- a/engines/mads/madsv2/phantom/rooms/room304.h
+++ b/engines/mads/madsv2/phantom/rooms/room304.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -55,7 +55,7 @@ typedef struct { /* Room local variables */
int16 phantom_frame;
int16 phantom_action;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room305.cpp b/engines/mads/madsv2/phantom/rooms/room305.cpp
index d8cc92f057e..34c9b3f0b3c 100644
--- a/engines/mads/madsv2/phantom/rooms/room305.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room305.cpp
@@ -44,6 +44,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_305_init() {
local->unmask = false;
local->prevent = false;
@@ -165,6 +167,20 @@ void room_305_preload() {
section_3_interface();
}
+
+void room_305_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->anim_1_running,
+ local->unmask_frame,
+ local->unmask_action,
+ local->unmask,
+ local->prevent);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room305.h b/engines/mads/madsv2/phantom/rooms/room305.h
index d33d2e1699e..9761a144ac0 100644
--- a/engines/mads/madsv2/phantom/rooms/room305.h
+++ b/engines/mads/madsv2/phantom/rooms/room305.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -48,7 +48,7 @@ typedef struct { /* Room local variables */
int16 prevent;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room306.cpp b/engines/mads/madsv2/phantom/rooms/room306.cpp
index 3a43e21bf4f..6f1d2e995cd 100644
--- a/engines/mads/madsv2/phantom/rooms/room306.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room306.cpp
@@ -34,6 +34,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_306_init() {
/* ===================== Load Sprite Series ================== */
@@ -88,6 +90,14 @@ void room_306_preload() {
section_3_interface();
}
+
+void room_306_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(local->prevent);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room306.h b/engines/mads/madsv2/phantom/rooms/room306.h
index 0449f646f9c..62f6e21b495 100644
--- a/engines/mads/madsv2/phantom/rooms/room306.h
+++ b/engines/mads/madsv2/phantom/rooms/room306.h
@@ -29,19 +29,19 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
int16 prevent;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room307.cpp b/engines/mads/madsv2/phantom/rooms/room307.cpp
index f9a4efcb835..ee66d9f1026 100644
--- a/engines/mads/madsv2/phantom/rooms/room307.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room307.cpp
@@ -37,6 +37,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_307_init() {
ss[fx_green_frame] = kernel_load_series(kernel_name('p', 0), false);
ss[fx_door] = kernel_load_series(kernel_name('x', 0), false);
@@ -314,6 +316,13 @@ void room_307_preload() {
section_3_interface();
}
+
+void room_307_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room307.h b/engines/mads/madsv2/phantom/rooms/room307.h
index 448eaf79f5d..f610f297293 100644
--- a/engines/mads/madsv2/phantom/rooms/room307.h
+++ b/engines/mads/madsv2/phantom/rooms/room307.h
@@ -29,18 +29,18 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room308.cpp b/engines/mads/madsv2/phantom/rooms/room308.cpp
index 2e4779c9d65..c2cc760b60b 100644
--- a/engines/mads/madsv2/phantom/rooms/room308.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room308.cpp
@@ -38,6 +38,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_308_init() {
global_speech_load(speech_christine_scream);
@@ -384,6 +386,21 @@ void room_308_preload() {
section_3_interface();
}
+
+void room_308_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->on_floor,
+ local->prevent,
+ local->prevent_2);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room308.h b/engines/mads/madsv2/phantom/rooms/room308.h
index e963886eacd..b8e792b747b 100644
--- a/engines/mads/madsv2/phantom/rooms/room308.h
+++ b/engines/mads/madsv2/phantom/rooms/room308.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 prevent;
int16 prevent_2;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room309.cpp b/engines/mads/madsv2/phantom/rooms/room309.cpp
index 349516b6b8a..361c82d2bd9 100644
--- a/engines/mads/madsv2/phantom/rooms/room309.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room309.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_309_init() {
int id;
@@ -403,6 +405,18 @@ void room_309_preload() {
}
}
+
+void room_309_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->boat_action,
+ local->boat_frame,
+ local->anim_0_running,
+ local->chris_talk_count);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room309.h b/engines/mads/madsv2/phantom/rooms/room309.h
index ddca5351849..a6c287889ea 100644
--- a/engines/mads/madsv2/phantom/rooms/room309.h
+++ b/engines/mads/madsv2/phantom/rooms/room309.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -46,7 +46,7 @@ typedef struct { /* Room local variables */
int16 chris_talk_count;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room310.cpp b/engines/mads/madsv2/phantom/rooms/room310.cpp
index 93d49288470..a85bf3cc1dc 100644
--- a/engines/mads/madsv2/phantom/rooms/room310.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room310.cpp
@@ -34,6 +34,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_310_init() {
viewing_at_y = ((video_y - display_y) >> 1);
@@ -268,6 +270,18 @@ void room_310_preload() {
section_3_interface();
}
+
+void room_310_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->message_1,
+ local->message_2);
+ s.syncMultipleLE(local->multiplane_base);
+ s.syncMultipleLE(local->lake_frame);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room310.h b/engines/mads/madsv2/phantom/rooms/room310.h
index d52db4947f0..c6113831144 100644
--- a/engines/mads/madsv2/phantom/rooms/room310.h
+++ b/engines/mads/madsv2/phantom/rooms/room310.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 lake_frame;
-} Scratch;
+};
#define fx_multiplane_0 0
diff --git a/engines/mads/madsv2/phantom/rooms/room401.cpp b/engines/mads/madsv2/phantom/rooms/room401.cpp
index f9beef2f81d..335c58a8262 100644
--- a/engines/mads/madsv2/phantom/rooms/room401.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room401.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_401_init() {
global_catacombs_init();
@@ -544,6 +546,21 @@ void room_401_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_401_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room401.h b/engines/mads/madsv2/phantom/rooms/room401.h
index 233f8cd9232..2a9b4ce3c95 100644
--- a/engines/mads/madsv2/phantom/rooms/room401.h
+++ b/engines/mads/madsv2/phantom/rooms/room401.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 dyn_yellow;
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room403.cpp b/engines/mads/madsv2/phantom/rooms/room403.cpp
index ee6ed0af08f..cb5af3a5c2e 100644
--- a/engines/mads/madsv2/phantom/rooms/room403.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room403.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_403_init() {
global_catacombs_init();
@@ -546,6 +548,20 @@ void room_403_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_403_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room403.h b/engines/mads/madsv2/phantom/rooms/room403.h
index b7d0926ff4a..f012f43460a 100644
--- a/engines/mads/madsv2/phantom/rooms/room403.h
+++ b/engines/mads/madsv2/phantom/rooms/room403.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room404.cpp b/engines/mads/madsv2/phantom/rooms/room404.cpp
index 770f686dbcd..8f09d91ef95 100644
--- a/engines/mads/madsv2/phantom/rooms/room404.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room404.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_404_init() {
global_catacombs_init();
@@ -548,6 +550,21 @@ void room_404_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_404_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking,
+ local->anim_0_running);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room404.h b/engines/mads/madsv2/phantom/rooms/room404.h
index ccff9300902..c5c65dd9154 100644
--- a/engines/mads/madsv2/phantom/rooms/room404.h
+++ b/engines/mads/madsv2/phantom/rooms/room404.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
int16 anim_0_running;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room406.cpp b/engines/mads/madsv2/phantom/rooms/room406.cpp
index 508240c88d7..0c034dad369 100644
--- a/engines/mads/madsv2/phantom/rooms/room406.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room406.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_406_init() {
global_catacombs_init();
@@ -456,6 +458,20 @@ void room_406_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_406_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room406.h b/engines/mads/madsv2/phantom/rooms/room406.h
index 1a7af8744cc..4c0f01374e8 100644
--- a/engines/mads/madsv2/phantom/rooms/room406.h
+++ b/engines/mads/madsv2/phantom/rooms/room406.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room407.cpp b/engines/mads/madsv2/phantom/rooms/room407.cpp
index 972a59bf98c..e3c3507580d 100644
--- a/engines/mads/madsv2/phantom/rooms/room407.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room407.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_407_init() {
global_catacombs_init();
@@ -538,6 +540,20 @@ void room_407_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_407_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room407.h b/engines/mads/madsv2/phantom/rooms/room407.h
index b9f8a93e8fb..4ecb1d52ab2 100644
--- a/engines/mads/madsv2/phantom/rooms/room407.h
+++ b/engines/mads/madsv2/phantom/rooms/room407.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -46,7 +46,7 @@ typedef struct { /* Room local variables */
int16 dyn_yellow;
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ===================== Sprite seriers ====================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room408.cpp b/engines/mads/madsv2/phantom/rooms/room408.cpp
index 95d618306e2..a97c5e7dc96 100644
--- a/engines/mads/madsv2/phantom/rooms/room408.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room408.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_408_init(void) {
int web;
@@ -541,6 +543,20 @@ void room_408_preload(void) {
vocab_make_active(words_green_frame);
}
+
+void room_408_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room408.h b/engines/mads/madsv2/phantom/rooms/room408.h
index ede4a75efcb..447fb279028 100644
--- a/engines/mads/madsv2/phantom/rooms/room408.h
+++ b/engines/mads/madsv2/phantom/rooms/room408.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room409.cpp b/engines/mads/madsv2/phantom/rooms/room409.cpp
index 4dbbbf345d1..a011de24517 100644
--- a/engines/mads/madsv2/phantom/rooms/room409.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room409.cpp
@@ -41,6 +41,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_409_init() {
global_catacombs_init();
@@ -685,6 +687,20 @@ void room_409_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_409_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room409.h b/engines/mads/madsv2/phantom/rooms/room409.h
index 86ec8b286f9..26757344891 100644
--- a/engines/mads/madsv2/phantom/rooms/room409.h
+++ b/engines/mads/madsv2/phantom/rooms/room409.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room410.cpp b/engines/mads/madsv2/phantom/rooms/room410.cpp
index 2714d084cf1..c61e025c28c 100644
--- a/engines/mads/madsv2/phantom/rooms/room410.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room410.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
static void get_lever_coordinate_and_type(int *x, int *y, int *type, int lever_number, int *noun) {
/* x will return the x location for the stamping of skull */
/* y will return the y location for the stamping of skull */
@@ -433,6 +435,13 @@ void room_410_preload() {
section_4_interface();
}
+
+void room_410_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room410.h b/engines/mads/madsv2/phantom/rooms/room410.h
index e748875fd6a..2d0fbd8754c 100644
--- a/engines/mads/madsv2/phantom/rooms/room410.h
+++ b/engines/mads/madsv2/phantom/rooms/room410.h
@@ -29,7 +29,7 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
@@ -43,13 +43,13 @@ struct {
(when the lever is flipped) */
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
int16 animation[4]; /* Animation handles */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room453.cpp b/engines/mads/madsv2/phantom/rooms/room453.cpp
index 7733f3cdf37..b2b92966a73 100644
--- a/engines/mads/madsv2/phantom/rooms/room453.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room453.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_453_init() {
global_catacombs_init();
@@ -527,6 +529,20 @@ void room_453_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_453_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room453.h b/engines/mads/madsv2/phantom/rooms/room453.h
index 15fe3262dc7..4b06a640ac8 100644
--- a/engines/mads/madsv2/phantom/rooms/room453.h
+++ b/engines/mads/madsv2/phantom/rooms/room453.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room456.cpp b/engines/mads/madsv2/phantom/rooms/room456.cpp
index 94273ee52ac..f1c5478f799 100644
--- a/engines/mads/madsv2/phantom/rooms/room456.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room456.cpp
@@ -39,6 +39,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_456_init() {
global_catacombs_init();
@@ -400,6 +402,20 @@ void room_456_preload() {
vocab_make_active(words_green_frame);
}
+
+void room_456_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->frame_is_here,
+ local->dyn_red,
+ local->dyn_green,
+ local->dyn_blue,
+ local->dyn_yellow,
+ local->frame_here_for_taking);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room456.h b/engines/mads/madsv2/phantom/rooms/room456.h
index 1f117b0074e..3318238d2f3 100644
--- a/engines/mads/madsv2/phantom/rooms/room456.h
+++ b/engines/mads/madsv2/phantom/rooms/room456.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -47,7 +47,7 @@ typedef struct { /* Room local variables */
int16 frame_here_for_taking; /* T if a specific frame is here */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room501.cpp b/engines/mads/madsv2/phantom/rooms/room501.cpp
index 276aac21313..ada2be5378f 100644
--- a/engines/mads/madsv2/phantom/rooms/room501.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room501.cpp
@@ -38,6 +38,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_501_init() {
kernel_flip_hotspot(words_Christine, false);
kernel_flip_hotspot(words_boat, false);
@@ -651,6 +653,16 @@ void room_501_preload() {
vocab_make_active(words_walk_to);
}
+
+void room_501_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->prevent_2);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room501.h b/engines/mads/madsv2/phantom/rooms/room501.h
index f82250c7a2e..40799bc615c 100644
--- a/engines/mads/madsv2/phantom/rooms/room501.h
+++ b/engines/mads/madsv2/phantom/rooms/room501.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -42,7 +42,7 @@ typedef struct { /* Room local variables */
int16 anim_0_running;
int16 prevent_2;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room502.cpp b/engines/mads/madsv2/phantom/rooms/room502.cpp
index 0733ca2dffc..23ecef20592 100644
--- a/engines/mads/madsv2/phantom/rooms/room502.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room502.cpp
@@ -44,6 +44,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
#define EXPECTED_TOTAL_COLORS 378
static void room_502_initialize_panels() {
@@ -1273,6 +1275,40 @@ void room_502_preload() {
section_5_interface();
}
+
+void room_502_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->puzzle_picture);
+ s.syncMultipleLE(local->puzzle_sprite);
+ s.syncMultipleLE(
+ local->fire_1_on,
+ local->fire_2_on,
+ local->fire_3_on,
+ local->fire_4_on,
+ local->panel_pushed,
+ local->turning_panel,
+ local->yippie,
+ local->message_stage,
+ local->room_getting_hotter,
+ local->interim_y,
+ local->interim_x);
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(local->puzzle_sequence);
+ for (int i = 0; i < num_cycle_stages; ++i)
+ local->cycle_list[i].synchronize(s);
+
+ s.skip(4 * num_cycle_stages); // cycle_color[9] (pointer array)
+ s.skip(4); // cycle_pointer (pointer)
+
+ s.syncMultipleLE(
+ local->cycle_bookkeep,
+ local->cycle_stage,
+ local->hot_clock,
+ local->hot_timer,
+ local->death_timer);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room502.h b/engines/mads/madsv2/phantom/rooms/room502.h
index 99ebc651073..6e3cccecb16 100644
--- a/engines/mads/madsv2/phantom/rooms/room502.h
+++ b/engines/mads/madsv2/phantom/rooms/room502.h
@@ -30,14 +30,14 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
#define num_cycle_stages 9 /* 9 stages of color cycling */
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
byte puzzle_picture[16]; /* one of 4 */
byte puzzle_sprite[16]; /* which sprite in ss */
@@ -72,7 +72,7 @@ typedef struct { /* Room local variables */
uint32 hot_timer; /* Timer count */
uint32 death_timer; /* when this reaches LENGTH_OF_LIFE, die */
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room504.cpp b/engines/mads/madsv2/phantom/rooms/room504.cpp
index 7eb90f33467..fa2b5394c30 100644
--- a/engines/mads/madsv2/phantom/rooms/room504.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room504.cpp
@@ -40,6 +40,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
int conv027_second = 0;
void room_504_init() {
@@ -1517,6 +1519,36 @@ void room_504_preload() {
vocab_make_active(words_Christine);
}
+
+void room_504_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->music_choice,
+ local->input_count,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->anim_3_running,
+ local->anim_4_running,
+ local->anim_5_running,
+ local->music_is_playing,
+ local->play_count,
+ local->fire_breath,
+ local->listen_action,
+ local->listen_frame,
+ local->chair_action,
+ local->chair_frame,
+ local->play_action,
+ local->play_frame,
+ local->prevent,
+ local->phan_action,
+ local->phan_frame,
+ local->chris_talk_count,
+ local->death_count);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room504.h b/engines/mads/madsv2/phantom/rooms/room504.h
index 22bb49b5b1a..ea5dd47fa64 100644
--- a/engines/mads/madsv2/phantom/rooms/room504.h
+++ b/engines/mads/madsv2/phantom/rooms/room504.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[17]; /* Sprite series handles */
int16 sequence[17]; /* Sequence handles */
@@ -70,7 +70,7 @@ typedef struct { /* Room local variables */
int16 death_count;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room505.cpp b/engines/mads/madsv2/phantom/rooms/room505.cpp
index 187ccfd3e2a..a956ce99d05 100644
--- a/engines/mads/madsv2/phantom/rooms/room505.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room505.cpp
@@ -37,6 +37,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_505_init() {
int id;
@@ -854,6 +856,29 @@ void room_505_preload() {
vocab_make_active(words_Christine);
}
+
+void room_505_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->raoul_action,
+ local->raoul_frame,
+ local->raoul_talk_count,
+ local->both_action,
+ local->both_frame,
+ local->both_talk_count,
+ local->part_action,
+ local->part_frame,
+ local->part_talk_count,
+ local->anim_0_running,
+ local->anim_1_running,
+ local->anim_2_running,
+ local->made_it_past_106,
+ local->leave_room,
+ local->they_parted);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room505.h b/engines/mads/madsv2/phantom/rooms/room505.h
index 33e2bdc66e8..b61b40036bc 100644
--- a/engines/mads/madsv2/phantom/rooms/room505.h
+++ b/engines/mads/madsv2/phantom/rooms/room505.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -60,7 +60,7 @@ typedef struct { /* Room local variables */
int16 leave_room; /* if T, She will follow him out door */
int16 they_parted;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
diff --git a/engines/mads/madsv2/phantom/rooms/room506.cpp b/engines/mads/madsv2/phantom/rooms/room506.cpp
index 0ea0650bbbd..f9f0a03c4d1 100644
--- a/engines/mads/madsv2/phantom/rooms/room506.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room506.cpp
@@ -37,6 +37,8 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
+static Scratch scratch;
+
void room_506_init() {
int id;
@@ -465,6 +467,17 @@ void room_506_preload() {
}
}
+
+void room_506_synchronize(Common::Serializer &s) {
+ s.syncMultipleLE(local->sprite);
+ s.syncMultipleLE(local->sequence);
+ s.syncMultipleLE(local->animation);
+ s.syncMultipleLE(
+ local->anim_0_running,
+ local->prevent,
+ local->ascending);
+}
+
} // namespace Rooms
} // namespace Phantom
} // namespace MADSV2
diff --git a/engines/mads/madsv2/phantom/rooms/room506.h b/engines/mads/madsv2/phantom/rooms/room506.h
index d5e96b22418..56e35c2b37f 100644
--- a/engines/mads/madsv2/phantom/rooms/room506.h
+++ b/engines/mads/madsv2/phantom/rooms/room506.h
@@ -29,12 +29,12 @@ namespace MADSV2 {
namespace Phantom {
namespace Rooms {
-#define local ((Scratch *)(&game.scratch[0]))
+#define local (&scratch)
#define ss local->sprite
#define seq local->sequence
#define aa local->animation
-typedef struct { /* Room local variables */
+struct Scratch { /* Room local variables */
int16 sprite[15]; /* Sprite series handles */
int16 sequence[15]; /* Sequence handles */
@@ -43,7 +43,7 @@ typedef struct { /* Room local variables */
int16 prevent;
int16 ascending;
-} Scratch;
+};
/* ========================= Sprite Series =================== */
More information about the Scummvm-git-logs
mailing list