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

dreammaster noreply at scummvm.org
Mon May 11 12:26:02 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
b82c535864 MADS: DRAGONSPHERE: Added room 201


Commit: b82c5358647e6954d470ad6f680baec0ce8bb442
    https://github.com/scummvm/scummvm/commit/b82c5358647e6954d470ad6f680baec0ce8bb442
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-05-11T22:25:53+10:00

Commit Message:
MADS: DRAGONSPHERE: Added room 201

Changed paths:
    engines/mads/madsv2/animview/animview.cpp
    engines/mads/madsv2/dragonsphere/mads/conv.h
    engines/mads/madsv2/dragonsphere/mads/inventory.h
    engines/mads/madsv2/dragonsphere/mads/sounds.h
    engines/mads/madsv2/dragonsphere/mads/words.h
    engines/mads/madsv2/dragonsphere/rooms/room201.cpp


diff --git a/engines/mads/madsv2/animview/animview.cpp b/engines/mads/madsv2/animview/animview.cpp
index 11ba9b593b2..4fc4bd2e1fc 100644
--- a/engines/mads/madsv2/animview/animview.cpp
+++ b/engines/mads/madsv2/animview/animview.cpp
@@ -320,7 +320,7 @@ static void run_animation(int animIndex) {
 			current_anim_inter->segment[ctr].counter = -1;
 
 		image_inter_marker = 1;
-		image_inter_list[0].flags = 0xfffe;
+		image_inter_list[0].flags = -2;
 		image_inter_list[0].segment_id = 0xff;
 
 		timer_activate_low_priority(anim_interface_timer);
diff --git a/engines/mads/madsv2/dragonsphere/mads/conv.h b/engines/mads/madsv2/dragonsphere/mads/conv.h
index 9fd0350de36..7615c30f086 100644
--- a/engines/mads/madsv2/dragonsphere/mads/conv.h
+++ b/engines/mads/madsv2/dragonsphere/mads/conv.h
@@ -154,6 +154,46 @@ enum {
 	conv035_exit_b_b    =  3
 };
 
+enum {
+	conv047_protect          =  0,
+	conv047_kingsay_escort   =  3,
+	conv047_kingsay_why      =  4,
+	conv047_exit_b_b         =  7,
+	conv047_exit_k_k         =  9,
+	conv047_myguys_whydirt   = 10,
+	conv047_postbribe        = 12,
+	conv047_exit_i_i         = 15,
+	conv047_prebribe_giver   = 17,
+	conv047_give_b_b         = 20,
+	conv047_reaction2_only   = 23,
+	conv047_offer_never      = 24,
+	conv047_askback          = 24,
+	conv047_offer_boon       = 25,
+	conv047_offer_wasnt      = 26,
+	conv047_boon2_only       = 27,
+	conv047_boon3_suppose    = 29,
+	conv047_usesame          = 29,
+	conv047_take_back_b_b    = 31,
+	conv047_heythere         = 32,
+	conv047_collat2_only     = 33,
+	conv047_exit_d_d         = 35,
+	conv047_askback_heythere = 36,
+	conv047_exit_f_f         = 40,
+	conv047_kill_b_b         = 42,
+	conv047_give_d_d         = 45,
+	conv047_heythere_only    = 46,
+	conv047_take_back_d_d    = 48
+};
+
+enum {
+	conv054_restart          =  1,
+	conv054_exit_b_b         = 10,
+	conv054_show_drink_b_b   = 21,
+	conv054_death_b_b        = 25,
+	conv054_take_swig_b_b    = 29,
+	conv054_offer_b_b        = 33
+};
+
 } // namespace Dragonsphere
 } // namespace MADSV2
 } // namespace MADS
diff --git a/engines/mads/madsv2/dragonsphere/mads/inventory.h b/engines/mads/madsv2/dragonsphere/mads/inventory.h
index ce6340e228d..56fac545448 100644
--- a/engines/mads/madsv2/dragonsphere/mads/inventory.h
+++ b/engines/mads/madsv2/dragonsphere/mads/inventory.h
@@ -42,7 +42,9 @@ enum {
 	magic_belt       = 18,
 	amulet           = 19,
 	crystal_ball     = 29,
+	soptus_soporific = 31,
 	shifter_ring     = 32,
+	tentacle_parts   = 36,
 	rare_coin        = 38,
 	crystal_flower   = 39,
 	ruby_ring        = 41,
diff --git a/engines/mads/madsv2/dragonsphere/mads/sounds.h b/engines/mads/madsv2/dragonsphere/mads/sounds.h
index a18cd0aea28..6c767010428 100644
--- a/engines/mads/madsv2/dragonsphere/mads/sounds.h
+++ b/engines/mads/madsv2/dragonsphere/mads/sounds.h
@@ -29,6 +29,7 @@ namespace MADSV2 {
 namespace Dragonsphere {
 
 enum {
+	// Section 1
 	N_DoorOpens          =  24,
 	N_DoorCloses         =  25,
 	N_TakeObjectSnd      =  26,
@@ -51,7 +52,14 @@ enum {
 	N_MagicDoorUnlocked  =  89,
 	N_JumpDownWell       =  93,
 	N_BooksRumble        =  94,
-	N_McMornTipsTable    = 100
+	N_McMornTipsTable    = 100,
+
+	// Section 2
+	N_BackgroundMus      =  16,
+	N_GuardCollapses     =  65,
+	N_TentaclesSplash    =  66,
+	N_MouthRockTalks     =  71,
+	N_PoolMonsterEatsPid =  72
 };
 
 } // namespace Dragonsphere
diff --git a/engines/mads/madsv2/dragonsphere/mads/words.h b/engines/mads/madsv2/dragonsphere/mads/words.h
index 3981b7aa926..40c21d32e4e 100644
--- a/engines/mads/madsv2/dragonsphere/mads/words.h
+++ b/engines/mads/madsv2/dragonsphere/mads/words.h
@@ -55,14 +55,18 @@ enum {
 	words_decoration           =  41,
 	words_signet_ring          =  46,
 	words_invoke               =  47,
+	words_birdcall             =  52,
+	words_make_noise           =  54,
 	words_shieldstone          =  55,
 	words_sword                =  56,
 	words_attack               =  57,
 	words_carve_up             =  58,
 	words_goblet               =  59,
 	words_bone                 =  62,
+	words_fruit                =  64,
 	words_doll                 =  66,
 	words_heal                 =  68,
+	words_heal_self            =  70,
 	words_key_crown            =  76,
 	words_wear                 =  77,
 	words_dates                =  78,
@@ -74,6 +78,7 @@ enum {
 	words_pour_contents_of     =  99,
 	words_rope                 = 101,
 	words_tie                  = 102,
+	words_take_magic_from      = 104,
 	words_crystal_ball         = 109,
 	words_gaze_into            = 110,
 	words_invoke_power_of      = 111,
@@ -163,9 +168,13 @@ enum {
 	words_guard_captain        = 280,
 	words_merchant             = 281,
 	words_shapechanger         = 282,
+	words_flask_of_acid        = 287,
+	words_soporific            = 289,
 	words_parchment            = 290,
 	words_king                 = 291,
 	words_climb_up             = 296,
+	words_path_to_west         = 299,
+	words_path_to_east         = 313,
 	words_sconce               = 329,
 	words_stairway             = 331,
 	words_mechanism            = 332,
@@ -179,7 +188,20 @@ enum {
 	words_climb_through        = 346,
 	words_Queen_Mother         = 347,
 	words_sit_on               = 363,
+	words_teleportal           = 440,
 	words_Soptus_Ecliptus      = 448,
+	words_Slathan_ni_Patan     = 453,
+	words_pool                 = 497,
+	words_guardhouse           = 509,
+	words_bone_tree            = 510,
+	words_ear_rock             = 511,
+	words_mouth_rock           = 512,
+	words_nose_rock            = 513,
+	words_path                 = 522,
+	words_guards               = 523,
+	words_tentacles            = 536,
+	words_spell_shield         = 537,
+	words_pool_monster         = 538,
 	words_Dragonsphere         = 571
 };
 
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room201.cpp b/engines/mads/madsv2/dragonsphere/rooms/room201.cpp
index 8f43502f81e..d23d7a9ac8b 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room201.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room201.cpp
@@ -19,11 +19,16 @@
  *
  */
 
+#include "mads/madsv2/core/camera.h"
 #include "mads/madsv2/core/conv.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/imath.h"
 #include "mads/madsv2/core/kernel.h"
+#include "mads/madsv2/core/matte.h"
+#include "mads/madsv2/core/object.h"
+#include "mads/madsv2/core/pal.h"
 #include "mads/madsv2/core/sound.h"
+#include "mads/madsv2/core/speech.h"
 #include "mads/madsv2/core/text.h"
 #include "mads/madsv2/dragonsphere/mads/conv.h"
 #include "mads/madsv2/dragonsphere/mads/inventory.h"
@@ -39,6 +44,84 @@ namespace Dragonsphere {
 namespace Rooms {
 
 struct Scratch {
+	int16 sprite[26];       /* Sprite series handles */
+	int16 sequence[26];     /* Sequence handles      */
+	int16 animation[7];     /* Animation handles     */
+
+	int16 lg_rock_base;
+	int16 dyn_lg_rock;
+
+	int16 md_rock_base;
+	int16 dyn_md_rock;
+
+	int16 sm_rock_base;
+	int16 dyn_sm_rock;
+
+	int16 lg_tree_base;
+	int16 dyn_lg_tree;
+
+	int16 vine_base;
+	int16 dyn_vine;
+
+	int16 mount_left_base;
+	int16 dyn_mount_left;
+
+	int16 mount_right_base;
+	int16 dyn_mount_right;
+
+	int16 vine_2_base;
+	int16 dyn_vine_2;
+
+	int16 vine_3_base;
+	int16 dyn_vine_3;
+
+	int16 num;
+	int16 hand_status;
+
+	int16 guard_left_frame;       /* animation frame being held for guard_left stuff */
+	int16 guard_left_action;      /* Type of action to run for guard_left animation */
+	int16 guard_left_talk_count;  /* counter for guard_left talking */
+	int16 anim_0_running;
+
+	int16 guard_right_frame;       /* animation frame being held for guard_right stuff */
+	int16 guard_right_action;      /* Type of action to run for guard_right animation */
+	int16 guard_right_talk_count;  /* counter for guard_right talking */
+	int16 anim_1_running;
+	int16 anim_3_running;
+
+	int16 pid_frame;       /* animation frame being held for pid stuff */
+	int16 pid_action;      /* Type of action to run for pid animation */
+	int16 pid_talk_count;  /* counter for pid talking */
+	int16 anim_2_running;
+
+	int16 throw_frame;       /* animation frame being held for throw stuff */
+	int16 anim_4_running;
+
+	int16 take_frame;       /* animation frame being held for take stuff */
+	int16 anim_5_running;
+
+	int16 death_frame;       /* animation frame being held for death stuff */
+	int16 anim_6_running;
+
+	int16 prevent;
+	int16 prevent_1;
+
+	long clock;
+	long death_timer;       /* when this counter reaches max sec, kill pid */
+	int16 activate_timer;     /* If T, will start counting death_timer */
+	int16 left_ready_to_fall;
+	int16 right_ready_to_fall;
+
+	int16 testicle_1_on;
+	int16 testicle_2_on;
+	int16 testicle_3_on;
+	int16 testicle_4_on;
+
+	int16 death_is_on;
+	int16 special_shit;
+
+	int16 crossed_line;
+	byte cut_scene;
 };
 
 #define local (&scratch)
@@ -46,26 +129,2582 @@ struct Scratch {
 #define seq   local->sequence
 #define aa    local->animation
 
-//static Scratch scratch;
+static Scratch scratch;
+
+
+/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Sprite Series ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */
+
+#define fx_lg_rock              0       /* rm201x0 */
+#define fx_md_rock              1       /* rm201x2 */
+#define fx_sm_rock              2       /* rm201x3 */
+#define fx_lg_tree              3       /* rm201x1 */
+#define fx_vine                 4       /* rm201x4 */
+#define fx_tree_1               5       /* rm201x5 */
+#define fx_tree_2               6       /* rm201x6 */
+#define fx_tree_3               7       /* rm201x7 */
+#define fx_tree_4               8       /* rm201x8 */
+#define fx_vine_2               9       /* rm201x5 */
+#define fx_vine_3               10      /* rm201x6 */
+#define fx_throw                11      /* rm201x7 */
+#define fx_smoke                12      /* rm201z1 */
+#define fx_hand                 13      /* rm201z0 */
+#define fx_take                 14      /* kgrh_9  */
+#define fx_guard_1_dead         15      /* rm201g2 */
+#define fx_guard_2_dead         16      /* rm201g3 */
+
+#define fx_testicle_1           17      /* rm201y0 */
+#define fx_testicle_2           18      /* rm201y2 */
+#define fx_testicle_3           19      /* rm201y3 */
+#define fx_testicle_4           20      /* rm201y4 */
+#define fx_guard_stand_l        21      /* rm201g6 */
+#define fx_guard_stand_r        22      /* rm201g7 */
+#define fx_pair_testes          23      /* rm201m1 */
+#define fx_ripple               24      /* rm201m2 */
+
+
+
+
+/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Triggers ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */
+
+#define ROOM_201_HAND           60
+#define ROOM_201_HALT           65
+#define ROOM_201_ME_TALK        70
+#define ROOM_201_YOU_TALK       72
+#define ROOM_201_GIVE           78
+#define ROOM_201_DEATH          82
+#define ROOM_201_TENT_3         90
+#define ROOM_201_TENT_5         94
+#define ROOM_201_TENT_6         98
+#define ROOM_201_DEATH_2        102
+#define ROOM_201_SPLASH         110
+#define MUSIC                   120
+
+
+/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Other Macros ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */
+
+#define camera_ratio_1          1
+#define camera_ratio_2          2
+
+
+#define PLAYER_X_FROM_120       -15
+#define PLAYER_Y_FROM_120       105
+#define WALK_TO_X_FROM_120      50
+#define WALK_TO_Y_FROM_120      109
+
+#define PLAYER_X_FROM_203       805
+#define PLAYER_Y_FROM_203       116
+#define WALK_TO_X_FROM_203      783
+#define WALK_TO_Y_FROM_203      126
+
+#define CONV_47_KING            47
+#define CONV_54_PID             54
+
+
+#define WALK_3_X                121
+#define WALK_3_Y                112
+
+#define WALK_4_X                1
+#define WALK_4_Y                104
+
+#define HAND_OPEN               0
+#define HAND_MOVING             1
+#define HAND_CLOSED             2
+
+#define FREEZE                  0
+#define TALK                    1
+#define GIVE_BOTTLE             2
+#define GIVE_NOTHING            3
+#define POINT                   4
+#define FALL                    5
+#define HALT                    6
+#define SWITCH_TO_LEFT          7
+#define SWITCH_TO_RIGHT         8
+#define DRINK                   9
+#define KILL                    10
+#define LOOK_DOWN               11
+#define HEAL                    12
+#define HAND_TO_LEFT            13
+#define HAND_TO_RIGHT           14
+#define TAKE_OUT_BOTTLE         15
+#define TAKE_BOTTLE             16
+#define TAKE_BOTTLE_FROM_RIGHT  17
+#define UNHALT                  18
+#define HALT_FREEZE             19
+#define PUT_AWAY                20
+#define UNHALT_FALL             21
+#define DUMP_ANIMS              22
+#define UNHALT_DUMP_ANIMS       23
+
+#define LENGTH_OF_LIFE          1300
+
+
+#define GUARD_1_X               68
+#define GUARD_1_Y               78
+
+#define GUARD_2_X               89
+#define GUARD_2_Y               91
+
+#define DEATH_X                 626
+#define DEATH_Y                 148
+
+#define THROW_X                 586
+#define THROW_Y                 145
+
+
+static void set_lg_rock_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_lg_rock] >= 0) {
+		kernel_seq_delete(seq[fx_lg_rock]);
+	}
+
+	difference = center - local->lg_rock_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->lg_rock_base + displace - 1;
+	xs = series_list[ss[fx_lg_rock]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_lg_rock] = -1;
+
+	} else {
+
+		seq[fx_lg_rock] = kernel_seq_stamp(ss[fx_lg_rock], false, 1);
+		kernel_seq_loc(seq[fx_lg_rock], x, 155);
+		kernel_seq_depth(seq[fx_lg_rock], 1);
+	}
+}
+
+static void set_md_rock_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
 
-void room_201_init() {
+	if (seq[fx_md_rock] >= 0) {
+		kernel_seq_delete(seq[fx_md_rock]);
+	}
 
+	difference = center - local->md_rock_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->md_rock_base + displace - 1;
+	xs = series_list[ss[fx_md_rock]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_md_rock] = -1;
+
+	} else {
+
+		seq[fx_md_rock] = kernel_seq_stamp(ss[fx_md_rock], false, 1);
+		kernel_seq_loc(seq[fx_md_rock], x, 155);
+		kernel_seq_depth(seq[fx_md_rock], 1);
+	}
+}
+
+static void set_sm_rock_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_sm_rock] >= 0) {
+		kernel_seq_delete(seq[fx_sm_rock]);
+	}
+
+	difference = center - local->sm_rock_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->sm_rock_base + displace - 1;
+	xs = series_list[ss[fx_sm_rock]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_sm_rock] = -1;
+
+	} else {
+
+		seq[fx_sm_rock] = kernel_seq_stamp(ss[fx_sm_rock], false, 1);
+		kernel_seq_loc(seq[fx_sm_rock], x, 155);
+		kernel_seq_depth(seq[fx_sm_rock], 1);
+	}
+}
+
+static void set_lg_tree_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_lg_tree] >= 0) {
+		kernel_seq_delete(seq[fx_lg_tree]);
+	}
+
+	difference = center - local->lg_tree_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->lg_tree_base + displace - 1;
+	xs = series_list[ss[fx_lg_tree]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_lg_tree] = -1;
+
+	} else {
+
+		seq[fx_lg_tree] = kernel_seq_stamp(ss[fx_lg_tree], false, 1);
+		kernel_seq_loc(seq[fx_lg_tree], x, 155);
+		kernel_seq_depth(seq[fx_lg_tree], 1);
+	}
+}
+
+static void set_vine_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_vine] >= 0) {
+		kernel_seq_delete(seq[fx_vine]);
+	}
+
+	difference = center - local->vine_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->vine_base + displace - 1;
+	xs = series_list[ss[fx_vine]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_vine] = -1;
+
+	} else {
+
+		seq[fx_vine] = kernel_seq_stamp(ss[fx_vine], false, 1);
+		kernel_seq_loc(seq[fx_vine], x, 25);
+		kernel_seq_depth(seq[fx_vine], 1);
+	}
+}
+
+static void set_vine_2_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_vine_2] >= 0) {
+		kernel_seq_delete(seq[fx_vine_2]);
+	}
+
+	difference = center - local->vine_2_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / camera_ratio_2);
+	displace = sgn_in(displace, direction);
+
+	x = local->vine_2_base + displace - 1;
+	xs = series_list[ss[fx_vine_2]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_vine_2] = -1;
+
+	} else {
+
+		seq[fx_vine_2] = kernel_seq_stamp(ss[fx_vine_2], false, 1);
+		kernel_seq_loc(seq[fx_vine_2], x, 16);
+		kernel_seq_depth(seq[fx_vine_2], 1);
+	}
+}
+
+static void set_vine_3_position() {
+	int center;
+	int difference;
+	int direction;
+	int distance;
+	int displace;
+	int x;
+	int xs;
+
+	center = picture_view_x + (video_x >> 1);
+
+	if (seq[fx_vine_3] >= 0) {
+		kernel_seq_delete(seq[fx_vine_3]);
+	}
+
+	difference = center - local->vine_3_base;
+	direction = neg(sgn(difference));
+	distance = abs(difference);
+
+	displace = (int)(((long)distance * camera_ratio_1) / 6);
+	displace = sgn_in(displace, direction);
+
+	x = local->vine_3_base + displace - 1;
+	xs = series_list[ss[fx_vine_3]]->index[0].xs;
+
+	if (((x - ((xs >> 1) + 1)) >= (picture_view_x + video_x)) ||
+		((x + ((xs >> 1) + 1)) < picture_view_x)) {
+		seq[fx_vine_3] = -1;
+
+	} else {
+
+		seq[fx_vine_3] = kernel_seq_stamp(ss[fx_vine_3], false, 1);
+		kernel_seq_loc(seq[fx_vine_3], x, 34);
+		kernel_seq_depth(seq[fx_vine_3], 10);
+	}
+}
+
+static void room_201_init() {
+	kernel.disable_fastwalk = true;
+	local->hand_status = HAND_OPEN;
+	local->death_timer = 0;
+	local->clock = 0;
+	local->prevent_1 = false;
+	local->special_shit = false;
+	local->cut_scene = false;
+
+	if (global[player_persona] == PLAYER_IS_PID) {
+		local->death_is_on = true;
+	} else {
+		local->death_is_on = false;
+	}
+
+	if (global[player_persona] == PLAYER_IS_KING) {
+		local->testicle_1_on = false;
+		local->testicle_2_on = false;
+		local->testicle_3_on = false;
+		local->testicle_4_on = false;
+	} else {
+		local->testicle_1_on = true;
+		local->testicle_2_on = true;
+		local->testicle_3_on = true;
+		local->testicle_4_on = true;
+	}
+
+	if (previous_room != KERNEL_RESTORING_GAME) {
+		local->anim_0_running = false;
+		local->anim_1_running = false;
+		local->anim_2_running = false;
+		local->anim_3_running = false;
+		local->anim_4_running = false;
+		local->anim_5_running = false;
+		local->anim_6_running = false;
+		local->activate_timer = false;
+		local->left_ready_to_fall = false;
+		local->right_ready_to_fall = false;
+		local->crossed_line = false;
+	}
+
+	if (previous_room == 120 || previous_room == 201 || previous_room != KERNEL_RESTORING_GAME) {
+		local->prevent = false;
+	} else {
+		local->prevent = true;
+	}
+
+	kernel_flip_hotspot(words_pool_monster, false);
+
+	if (!global[dome_up]) {
+		kernel_flip_hotspot(words_spell_shield, false);
+	}
+
+	if (global[reset_conv] >= 0) {
+		if (!global[given_object_before]) {
+			conv_reset(global[reset_conv]);
+		}
+		global[reset_conv] = -1;
+	}
+
+	if (global[player_persona] == PLAYER_IS_KING) {
+		conv_get(CONV_47_KING);
+	} else {
+		conv_get(CONV_54_PID);
+	}
+
+	ss[fx_lg_rock] = kernel_load_series(kernel_name('x', 0), false);
+	flag_used[10] = false;
+	ss[fx_md_rock] = kernel_load_series(kernel_name('x', 2), false);
+	flag_used[10] = false;
+	ss[fx_sm_rock] = kernel_load_series(kernel_name('x', 3), false);
+	flag_used[10] = false;
+	ss[fx_lg_tree] = kernel_load_series(kernel_name('x', 1), false);
+	flag_used[10] = false;
+	ss[fx_vine] = kernel_load_series(kernel_name('x', 4), false);
+	flag_used[10] = false;
+	ss[fx_vine_2] = kernel_load_series(kernel_name('x', 5), false);
+	flag_used[10] = false;
+	ss[fx_vine_3] = kernel_load_series(kernel_name('x', 6), false);
+	flag_used[10] = false;
+
+	if (global[player_persona] == PLAYER_IS_KING) {
+		ss[fx_take] = kernel_load_series("*KGRH_9", false);
+	}
+
+	if (!global[guards_are_asleep]) {
+		ss[fx_guard_stand_l] = kernel_load_series(kernel_name('g', 6), false);
+		ss[fx_guard_stand_r] = kernel_load_series(kernel_name('g', 7), false);
+	}
+
+	ss[fx_smoke] = kernel_load_series(kernel_name('z', 1), false);
+	seq[fx_smoke] = kernel_seq_forward(ss[fx_smoke], false, 8, 0, 0, 0);
+	kernel_seq_depth(seq[fx_smoke], 1);
+	kernel_seq_range(seq[fx_smoke], KERNEL_FIRST, KERNEL_LAST);
+
+	ss[fx_hand] = kernel_load_series(kernel_name('z', 0), false);
+	flag_used[10] = false;
+
+	ss[fx_pair_testes] = kernel_load_series(kernel_name('m', 1), false);
+	flag_used[10] = false;
+	ss[fx_ripple] = kernel_load_series(kernel_name('m', 2), false);
+	flag_used[10] = false;
+
+
+	if (global[dome_up]) {
+		seq[fx_ripple] = kernel_seq_forward(ss[fx_ripple], false, 20, 0, 0, 0);
+		kernel_seq_depth(seq[fx_ripple], 11);
+		kernel_seq_range(seq[fx_ripple], KERNEL_FIRST, KERNEL_LAST);
+	}
+
+	if (object_is_here(tentacle_parts) && global[dome_up]) {
+		seq[fx_pair_testes] = kernel_seq_stamp(ss[fx_pair_testes], false, KERNEL_FIRST);
+		kernel_seq_depth(seq[fx_pair_testes], 10);
+
+	} else {
+		kernel_flip_hotspot(words_tentacles, false);
+	}
+
+
+	if (global[player_persona] == PLAYER_IS_KING && !global[dome_up]) {
+		ss[fx_testicle_1] = kernel_load_series(kernel_name('y', 0), false);
+		/* flag_used[10]     = false; */
+		ss[fx_testicle_2] = kernel_load_series(kernel_name('y', 2), false);
+		/* flag_used[10]     = false; */
+		ss[fx_testicle_3] = kernel_load_series(kernel_name('y', 3), false);
+		/* flag_used[10]     = false; */
+		ss[fx_testicle_4] = kernel_load_series(kernel_name('y', 4), false);
+		/* flag_used[10]     = false; */
+	}
+
+	ss[fx_guard_1_dead] = kernel_load_series(kernel_name('g', 2), false);
+	flag_used[10] = false;
+	ss[fx_guard_2_dead] = kernel_load_series(kernel_name('g', 3), false);
+	flag_used[10] = false;
+
+
+	if (global[guards_are_asleep]) {
+		kernel_flip_hotspot_loc(words_guards, false, GUARD_1_X, GUARD_1_Y);
+		kernel_flip_hotspot_loc(words_guards, false, GUARD_2_X, GUARD_2_Y);
+		seq[fx_guard_1_dead] = kernel_seq_stamp(ss[fx_guard_1_dead], false, KERNEL_FIRST);
+		kernel_seq_depth(seq[fx_guard_1_dead], 13);
+		seq[fx_guard_2_dead] = kernel_seq_stamp(ss[fx_guard_2_dead], false, KERNEL_FIRST);
+		kernel_seq_depth(seq[fx_guard_2_dead], 13);
+
+	} else {
+		kernel_flip_hotspot(words_guards, false);
+		kernel_flip_hotspot_loc(words_guards, true, GUARD_1_X, GUARD_1_Y);
+		kernel_flip_hotspot_loc(words_guards, true, GUARD_2_X, GUARD_2_Y);
+	}
+
+	seq[fx_lg_rock] = -1;
+	local->dyn_lg_rock = -1;
+	local->lg_rock_base = 100;
+
+	seq[fx_md_rock] = -1;
+	local->dyn_md_rock = -1;
+	local->md_rock_base = 663;
+
+	seq[fx_sm_rock] = -1;
+	local->dyn_sm_rock = -1;
+	local->sm_rock_base = 703;
+
+	seq[fx_lg_tree] = -1;
+	local->dyn_lg_tree = -1;
+	local->lg_tree_base = 390;
+
+	seq[fx_vine] = -1;
+	local->dyn_vine = -1;
+	local->vine_base = 720;
+
+	seq[fx_vine_2] = -1;
+	local->dyn_vine_2 = -1;
+	local->vine_2_base = 480;
+
+	seq[fx_vine_3] = -1;
+	local->dyn_vine_3 = -1;
+	local->vine_3_base = 540;
+
+	if (!global[guards_are_asleep]) {
+
+		if (global[player_persona] == PLAYER_IS_KING && global[object_given_201] != -1 &&
+			conv_restore_running != CONV_47_KING) {
+			seq[fx_guard_stand_l] = kernel_seq_stamp(ss[fx_guard_stand_l], false, KERNEL_FIRST);
+			kernel_seq_depth(seq[fx_guard_stand_l], 11);
+
+		} else {
+			aa[0] = kernel_run_animation(kernel_name('u', 1), 0);
+			local->anim_0_running = true;
+			local->guard_left_action = FREEZE;
+		}
+
+		if (global[player_persona] == PLAYER_IS_KING) {
+			if (global[object_given_201] != -1 && conv_restore_running != CONV_47_KING) {
+				seq[fx_guard_stand_r] = kernel_seq_stamp(ss[fx_guard_stand_r], false, KERNEL_FIRST);
+				kernel_seq_depth(seq[fx_guard_stand_r], 10);
+
+			} else {
+				aa[1] = kernel_run_animation(kernel_name('u', 3), 0);
+				local->anim_1_running = true;
+				local->guard_right_action = FREEZE;
+				kernel_reset_animation(aa[1], 7);
+			}
+
+		} else {
+			aa[3] = kernel_run_animation(kernel_name('u', 2), 0);
+			local->anim_3_running = true;
+			local->guard_right_action = FREEZE;
+			kernel_reset_animation(aa[3], 7);
+		}
+	}
+
+	if (conv_restore_running == CONV_47_KING) {
+		kernel_reset_animation(aa[1], 6);
+		local->guard_right_action = HALT_FREEZE;
+		conv_run(CONV_47_KING);
+		conv_export_value(0);
+		conv_export_value(0);
+
+	} else if (conv_restore_running == CONV_54_PID || (global[player_persona] == PLAYER_IS_PID && local->activate_timer)) {
+		player.x = WALK_TO_X_FROM_120;
+		player.y = WALK_TO_Y_FROM_120;
+		player.facing = FACING_NORTHEAST;
+		player.walker_visible = false;
+		local->guard_right_action = HALT_FREEZE;
+
+		aa[2] = kernel_run_animation(kernel_name('p', 1), 0);
+		local->anim_2_running = true;
+		local->pid_action = FREEZE;
+
+		kernel_reset_animation(aa[3], 6);
+
+		if (!local->activate_timer) {
+			conv_run(CONV_54_PID);
+			conv_export_value(0);
+		}
+	}
+
+	if (local->activate_timer) {
+		local->guard_right_action = HALT_FREEZE;
+		if (global[player_persona] == PLAYER_IS_KING) {
+			kernel_reset_animation(aa[1], 6);
+
+		} else {
+			kernel_reset_animation(aa[3], 6);
+		}
+	}
+
+
+	if (previous_room == 203) {
+		player_first_walk(PLAYER_X_FROM_203, PLAYER_Y_FROM_203, FACING_SOUTHWEST,
+			WALK_TO_X_FROM_203, WALK_TO_Y_FROM_203, FACING_SOUTHWEST, true);
+		camera_jump_to(480, 0);  /* jump to right half */
+
+	} else if ((previous_room == 120 || previous_room == 201 || previous_room != KERNEL_RESTORING_GAME)) {
+
+		if (global[player_persona] == PLAYER_IS_KING) {
+			if (global[king_got_stabbed] == 1) {
+				player.x = DEATH_X - 20;
+				player.y = DEATH_Y;
+				player.facing = FACING_EAST;
+				global[king_got_stabbed] = false;
+				camera_jump_to(480, 0);
+				/* from being eaten */
+
+			} else if (global[king_got_stabbed]) {
+				player.x = WALK_TO_X_FROM_120 + 5;
+				player.y = WALK_TO_Y_FROM_120 + 20;
+				player.facing = FACING_SOUTHEAST;
+				global[king_got_stabbed] = false;
+				/* from being stabbed */
+
+			} else if (global[given_object_before]) {
+				player_first_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_EAST,
+					WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_NORTHEAST, true);
+				player_walk_trigger(ROOM_201_HALT);
+
+			} else {
+				player_first_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_EAST,
+					WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_EAST, true);
+				player_walk_trigger(ROOM_201_HALT);
+			}
+
+		} else {
+			if (global[guards_are_asleep]) {
+				player_first_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_EAST,
+					20, 106, FACING_EAST, true);
+
+			} else {
+				player_first_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_EAST,
+					WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_NORTHEAST, true);
+				player_walk_trigger(ROOM_201_HALT);
+			}
+		}
+	}
+
+	if (global[pid_just_died]) {
+		inter_give_to_player(soptus_soporific);
+		global[pid_just_died] = false;
+	}
+
+	if (global[king_got_stabbed] && global[object_given_201] != -1) {
+		global[king_got_stabbed] = false;
+		player.x = 57;
+		player.y = 123;
+		player.facing = FACING_SOUTHEAST;
+		local->prevent = true;
+	}
+
+	set_lg_rock_position();
+	set_md_rock_position();
+	set_sm_rock_position();
+	set_lg_tree_position();
+	set_vine_position();
+	set_vine_2_position();
+	set_vine_3_position();
+
+	/* kernel_timing_trigger (10, MUSIC); */
+
+	section_2_music();
+}
+
+static void handle_anim_guard_left() {
+	int guard_left_reset_frame;
+
+	if (kernel_anim[aa[0]].frame != local->guard_left_frame) {
+		local->guard_left_frame = kernel_anim[aa[0]].frame;
+		guard_left_reset_frame = -1;
+
+		switch (local->guard_left_frame) {
+
+		case 18:  /* end of talk frame */
+		case 19:  /* end of talk frame */
+		case 20:  /* end of talk frame */
+
+			switch (local->guard_left_action) {
+			case TALK:
+				guard_left_reset_frame = imath_random(17, 19);
+				++local->guard_left_talk_count;
+				if (local->guard_left_talk_count > 17) {
+					local->guard_left_action = FREEZE;
+					local->guard_left_talk_count = 0;
+					guard_left_reset_frame = 20; /* make guard shut up */
+				}
+				break;
+
+			default:
+				guard_left_reset_frame = 20; /* make guard shut up */
+				break;
+			}
+			break;
+
+		case 53:  /* guard almost has his hand out */
+			player.walker_visible = false;
+			seq[fx_take] = kernel_seq_pingpong(ss[fx_take], false, 7, 0, 0, 2);
+			kernel_seq_trigger(seq[fx_take], KERNEL_TRIGGER_SPRITE, 6, ROOM_201_GIVE);
+			kernel_seq_trigger(seq[fx_take], KERNEL_TRIGGER_EXPIRE, 0, ROOM_201_GIVE + 1);
+			kernel_seq_depth(seq[fx_take], 2);
+			kernel_seq_range(seq[fx_take], KERNEL_FIRST, KERNEL_LAST);
+			kernel_seq_player(seq[fx_take], true);
+			break;
+
+		case 54: /* guard has hand out */
+			if (local->guard_left_action == GIVE_NOTHING) {
+				guard_left_reset_frame = 53;
+			}
+			break;
+
+		case 61:
+			local->pid_action = TAKE_BOTTLE;
+			break;
+
+		case 62:  /* guards hand is all the way out */
+			if (local->guard_left_action == GIVE_BOTTLE) {
+				guard_left_reset_frame = 61;
+			}
+			break;
+
+		case 106:  /* pid passes bottle to left guard */
+			local->pid_action = FREEZE;
+			inter_move_object(soptus_soporific, 201);
+			break;
+
+		case 102:  /* end of die */
+			kernel_abort_animation(aa[0]);
+			local->anim_0_running = false;
+			seq[fx_guard_1_dead] = kernel_seq_stamp(ss[fx_guard_1_dead], false, KERNEL_FIRST);
+			kernel_seq_depth(seq[fx_guard_1_dead], 13);
+			kernel_synch(KERNEL_SERIES, seq[fx_guard_1_dead], KERNEL_NOW, 0);
+			break;
+
+		case 1:   /* end of freeze               */
+		case 15:  /* end of halt                 */
+		case 66:  /* end of give bottle          */
+		case 68:  /* end of switch to right hand */
+		case 70:  /* end of switch to left hand  */
+		case 58:  /* end of give nothing         */
+		case 50:  /* end of point                */
+		case 24:  /* end of talk                 */
+		case 38:  /* end of talk                 */
+		case 82:  /* end of take a swig          */
+		case 109: /* end of take bottle          */
+
+			switch (local->guard_left_action) {
+
+			case FREEZE:
+				guard_left_reset_frame = 0;
+				break;
+
+			case TALK:
+				if (imath_random(1, 2) == 1) {
+					guard_left_reset_frame = 24;
+					local->guard_left_action = FREEZE;
+				} else {
+					guard_left_reset_frame = 15;
+				}
+				break;
+
+			case POINT:
+				guard_left_reset_frame = 38;
+				local->guard_left_action = FREEZE;
+				break;
+
+			case SWITCH_TO_LEFT:
+				guard_left_reset_frame = 68;
+				local->guard_left_action = GIVE_BOTTLE;
+				break;
+
+			case SWITCH_TO_RIGHT:
+				guard_left_reset_frame = 66;
+				local->guard_left_action = DRINK;
+				break;
+
+			case GIVE_BOTTLE:
+				guard_left_reset_frame = 58;
+				break;
+
+			case TAKE_BOTTLE:
+				guard_left_reset_frame = 102;
+				local->guard_left_action = SWITCH_TO_RIGHT;
+				break;
+
+			case GIVE_NOTHING:
+				guard_left_reset_frame = 50;
+				break;
+
+			case HALT:
+				guard_left_reset_frame = 1;
+				local->guard_left_action = FREEZE;
+				break;
+
+			case DRINK:
+				guard_left_reset_frame = 70;
+				local->guard_left_action = SWITCH_TO_LEFT;
+				break;
+
+			case DUMP_ANIMS:
+				if (local->anim_1_running) {
+					guard_left_reset_frame = 0;
+
+				} else {
+					kernel_abort_animation(aa[0]);
+					seq[fx_guard_stand_l] = kernel_seq_stamp(ss[fx_guard_stand_l], false, KERNEL_FIRST);
+					kernel_seq_depth(seq[fx_guard_stand_l], 13);
+					kernel_synch(KERNEL_SERIES, seq[fx_guard_stand_l], KERNEL_NOW, 0);
+					local->anim_0_running = false;
+					player.commands_allowed = true;
+				}
+				break;
+
+			case FALL:
+				local->left_ready_to_fall = true;
+				guard_left_reset_frame = 0;
+				break;
+			}
+			break;
+		}
+
+		if (guard_left_reset_frame >= 0) {
+			kernel_reset_animation(aa[0], guard_left_reset_frame);
+			local->guard_left_frame = guard_left_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_guard_right() {
+	int guard_right_reset_frame;
+
+	if (kernel_anim[aa[1]].frame != local->guard_right_frame) {
+		local->guard_right_frame = kernel_anim[aa[1]].frame;
+		guard_right_reset_frame = -1;
+
+		switch (local->guard_right_frame) {
+		case 50:
+			global_speech_go(7); /* hrul */
+			break;
+
+		case 57:
+			global_speech_go(6); /* stab */
+			break;
+
+		case 14:
+			local->pid_action = FREEZE;
+			inter_move_object(soptus_soporific, 201);
+			break;
+
+		case 31:
+			inter_give_to_player(soptus_soporific);
+			break;
+
+		case 36: /* arm is out to give back bottle */
+			local->pid_action = TAKE_BOTTLE_FROM_RIGHT;
+			break;
+
+		case 47:  /* just about to get stabbed */
+			player.walker_visible = false;
+			kernel_synch(KERNEL_PLAYER, 0, KERNEL_ANIM, aa[1]);
+			break;
+
+		case 73:
+			if (game.difficulty == EASY_MODE) {
+				text_show(20164);
+			} else {
+				text_show(45);
+			}
+			global[king_got_stabbed] = true;
+			kernel.force_restart = true;
+			break;
+
+		case 1:   /* end of freeze     */
+		case 6:   /* end of halt       */
+		case 7:   /* end of freeze     */
+		case 37:  /* end of take drink */
+		case 80:  /* end of stand up   */
+
+			switch (local->guard_right_action) {
+
+			case HALT:
+				guard_right_reset_frame = 1;
+				local->guard_right_action = HALT_FREEZE;
+				break;
+
+			case FREEZE:
+				guard_right_reset_frame = 0;
+				break;
+
+			case HALT_FREEZE:
+				guard_right_reset_frame = 6;
+				break;
+
+			case TAKE_BOTTLE:
+				guard_right_reset_frame = 7;
+				break;
+
+			case DUMP_ANIMS:
+				kernel_abort_animation(aa[1]);
+				seq[fx_guard_stand_r] = kernel_seq_stamp(ss[fx_guard_stand_r], false, KERNEL_FIRST);
+				kernel_seq_depth(seq[fx_guard_stand_r], 13);
+				kernel_synch(KERNEL_SERIES, seq[fx_guard_stand_r], KERNEL_NOW, 0);
+				local->anim_1_running = false;
+				break;
+
+			case UNHALT:
+			case UNHALT_DUMP_ANIMS:
+				guard_right_reset_frame = 73;
+				if (local->guard_right_action == UNHALT) {
+					local->guard_right_action = FREEZE;
+				} else if (local->guard_right_action == UNHALT_DUMP_ANIMS) {
+					local->guard_right_action = DUMP_ANIMS;
+				}
+				break;
+
+			case KILL:
+				guard_right_reset_frame = 37;
+				break;
+
+			case FALL:
+				guard_right_reset_frame = 56;
+				local->guard_right_action = FREEZE;
+				break;
+			}
+			break;
+		}
+
+		if (guard_right_reset_frame >= 0) {
+			kernel_reset_animation(aa[1], guard_right_reset_frame);
+			local->guard_right_frame = guard_right_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_guard_right_pid() {
+	int guard_right_reset_frame;
+
+	if (kernel_anim[aa[3]].frame != local->guard_right_frame) {
+		local->guard_right_frame = kernel_anim[aa[3]].frame;
+		guard_right_reset_frame = -1;
+
+		switch (local->guard_right_frame) {
+		case 43:
+			global_speech_go(7); /* hurl */
+			break;
+
+		case 47:
+			global_speech_go(6); /* stab */
+			break;
+
+		case 38:  /* start stab sequence */
+			kernel_abort_animation(aa[2]);
+			local->anim_2_running = false;
+			kernel_synch(KERNEL_ANIM, aa[1], KERNEL_NOW, 0);
+			break;
+
+		case 58:  /* end of death sequence */
+			if (game.difficulty == EASY_MODE) {
+				text_show(20165);
+			} else {
+				text_show(45);
+			}
+			conv_reset(CONV_54_PID);
+			kernel.force_restart = true;
+			break;
+
+		case 29:
+			local->pid_action = TAKE_BOTTLE_FROM_RIGHT;
+			break;
+
+		case 30:  /* holding bottle out for pid to take */
+			if (local->guard_right_action == GIVE_BOTTLE) {
+				guard_right_reset_frame = 29;
+			}
+			break;
+
+		case 14:  /* just took bottle from pid */
+			inter_move_object(soptus_soporific, 201);
+			local->pid_action = FREEZE;
+			break;
+
+		case 75:  /* end of die */
+			kernel_abort_animation(aa[3]);
+			seq[fx_guard_2_dead] = kernel_seq_stamp(ss[fx_guard_2_dead], false, KERNEL_FIRST);
+			kernel_seq_depth(seq[fx_guard_2_dead], 13);
+			kernel_synch(KERNEL_SERIES, seq[fx_guard_2_dead], KERNEL_NOW, 0);
+			local->anim_3_running = false;
+			break;
+
+		case 1:   /* end of freeze     */
+		case 6:   /* end of halt       */
+		case 7:   /* end of freeze     */
+		case 37:  /* end of take drink */
+		case 82:  /* end of stand up   */
+
+			switch (local->guard_right_action) {
+
+			case HALT:
+				guard_right_reset_frame = 1;
+				local->guard_right_action = HALT_FREEZE;
+				break;
+
+			case FREEZE:
+				guard_right_reset_frame = 0;
+				break;
+
+			case UNHALT_FALL:
+				guard_right_reset_frame = 75;
+				local->guard_right_action = FALL;
+				break;
+
+			case HALT_FREEZE:
+				guard_right_reset_frame = 6;
+				break;
+
+			case TAKE_BOTTLE:
+				guard_right_reset_frame = 7;
+				local->guard_right_action = GIVE_BOTTLE;
+				break;
+
+			case UNHALT:
+				guard_right_reset_frame = 75;
+				local->guard_right_action = FREEZE;
+				break;
+
+			case KILL:
+				guard_right_reset_frame = 37;
+				break;
+
+			case FALL:
+				local->right_ready_to_fall = true;
+				guard_right_reset_frame = 0;
+				break;
+			}
+			break;
+		}
+
+		if (guard_right_reset_frame >= 0) {
+			kernel_reset_animation(aa[3], guard_right_reset_frame);
+			local->guard_right_frame = guard_right_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_death() {
+	int death_reset_frame;
+
+	if (kernel_anim[aa[6]].frame != local->death_frame) {
+		local->death_frame = kernel_anim[aa[6]].frame;
+		death_reset_frame = -1;
+
+		switch (local->death_frame) {
+
+		case 38:
+		case 43:
+			if (speech_system_active && speech_on) {
+				global_speech_go(3);  /* crunch1 */
+			} else {
+				sound_play(N_PoolMonsterEatsPid);
+			}
+			break;
+
+		case 50:
+			if (speech_system_active && speech_on) {
+				global_speech_go(4);  /* crunch2 */
+			} else {
+				sound_play(N_PoolMonsterEatsPid);
+			}
+			break;
+		}
+
+		if (death_reset_frame >= 0) {
+			kernel_reset_animation(aa[6], death_reset_frame);
+			local->death_frame = death_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_pid() {
+	int pid_reset_frame;
+
+	if (kernel_anim[aa[2]].frame != local->pid_frame) {
+		local->pid_frame = kernel_anim[aa[2]].frame;
+		pid_reset_frame = -1;
+
+		switch (local->pid_frame) {
+
+		case 43:  /* almost end of take a swig (pid) */
+			conv_release();
+			break;
+
+		case 67:
+			local->guard_left_action = FREEZE;
+			break;
+
+		case 74:
+			local->guard_right_action = HALT_FREEZE;
+			break;
+
+		case 68:  /* pid's arm is extended - taking bottle from left guard */
+			inter_give_to_player(soptus_soporific);
+			break;
+
+		case 26:  /* end of heal */
+			local->guard_left_action = FALL;
+			local->guard_right_action = UNHALT_FALL;
+			kernel_abort_animation(aa[2]);
+			local->anim_2_running = false;
+			player.walker_visible = true;
+			player.commands_allowed = true;
+			kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
+			break;
+
+		case 1:   /* end of freeze          */
+		case 2:   /* end of look down       */
+		case 50:  /* end of put bottle away */
+		case 55:  /* end of give to left    */
+		case 64:  /* end of give to right   */
+
+			switch (local->pid_action) {
+
+			case FREEZE:
+				pid_reset_frame = 0;
+				break;
+
+			case LOOK_DOWN:
+				pid_reset_frame = 1;
+				break;
+
+			case HEAL:
+				pid_reset_frame = 2;
+				local->pid_action = FREEZE;
+				break;
+
+			case TAKE_OUT_BOTTLE:
+				pid_reset_frame = 26;
+				local->pid_action = FREEZE;
+				break;
+
+			case TAKE_BOTTLE:
+				pid_reset_frame = 64;
+				local->pid_action = HAND_TO_RIGHT;
+				break;
+
+			case FALL:
+				pid_reset_frame = 79;
+				break;
+
+			case TAKE_BOTTLE_FROM_RIGHT:
+				local->pid_action = PUT_AWAY;
+				pid_reset_frame = 70;
+				break;
+
+			case HAND_TO_LEFT:
+			case HAND_TO_RIGHT:
+			case DRINK:
+				pid_reset_frame = 26;
+				break;
+			}
+			break;
+
+		case 31:  /* almost end of take out bottle */
+			conv_run(CONV_54_PID);
+			conv_export_value(1);
+			break;
+
+		case 52:
+			local->guard_left_action = TAKE_BOTTLE;
+			break;
+
+		case 53:  /* pid's arm is extended to left guard */
+			if (local->pid_action == HAND_TO_LEFT) {
+				pid_reset_frame = 52;
+			}
+			break;
+
+		case 59:
+			local->guard_right_action = TAKE_BOTTLE;
+			break;
+
+		case 60:  /* pid's arm is extended to right guard */
+			if (local->pid_action == HAND_TO_RIGHT) {
+				pid_reset_frame = 59;
+			}
+			break;
+
+		case 97:  /* end of fall */
+			if (game.difficulty == EASY_MODE) {
+				text_show(20166);
+			} else {
+				text_show(45);
+			}
+			global[pid_just_died] = true;
+			kernel.force_restart = true;
+			conv_reset(CONV_54_PID);
+			break;
+
+		case 32:  /* end of take out drink  */
+		case 33:  /* end of freeze          */
+		case 44:  /* end of drink           */
+		case 70:  /* end of take from left  */
+		case 79:  /* end of take from right */
+
+			switch (local->pid_action) {
+
+			case FREEZE:
+				pid_reset_frame = 32;
+				break;
+
+			case DRINK:
+				pid_reset_frame = 33;
+				local->pid_action = FREEZE;
+				break;
+
+			case HAND_TO_LEFT:
+				pid_reset_frame = 50;
+				break;
+
+			case HAND_TO_RIGHT:
+				pid_reset_frame = 55;
+				break;
+
+			case PUT_AWAY:
+				pid_reset_frame = 44;
+				local->pid_action = FREEZE;
+				local->death_timer = 0;
+				local->clock = 0;
+				local->activate_timer = 1;
+				player.commands_allowed = true;
+				break;
+
+			default:
+				pid_reset_frame = 44;
+				break;
+			}
+			break;
+		}
+
+		if (pid_reset_frame >= 0) {
+			kernel_reset_animation(aa[2], pid_reset_frame);
+			local->pid_frame = pid_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_throw() {
+	int throw_reset_frame;
+
+	if (kernel_anim[aa[4]].frame != local->throw_frame) {
+		local->throw_frame = kernel_anim[aa[4]].frame;
+		throw_reset_frame = -1;
+
+		switch (local->throw_frame) {
+
+		case 11:  /* just threw shieldstone */
+			inter_move_object(shieldstone, NOWHERE);
+			break;
+		}
+
+		if (throw_reset_frame >= 0) {
+			kernel_reset_animation(aa[4], throw_reset_frame);
+			local->throw_frame = throw_reset_frame;
+		}
+	}
+}
+
+static void handle_anim_take() {
+	int take_reset_frame;
+
+	if (kernel_anim[aa[5]].frame != local->take_frame) {
+		local->take_frame = kernel_anim[aa[5]].frame;
+		take_reset_frame = -1;
+
+		switch (local->take_frame) {
+
+		case 6:  /* just took tentacle parts */
+			kernel_seq_delete(seq[fx_pair_testes]);
+			kernel_flip_hotspot(words_tentacles, false);
+			++global[player_score];
+			sound_play(N_TakeObjectSnd);
+			inter_give_to_player(tentacle_parts);
+			object_examine(tentacle_parts, 20146, 0);
+			break;
+		}
+
+		if (take_reset_frame >= 0) {
+			kernel_reset_animation(aa[5], take_reset_frame);
+			local->take_frame = take_reset_frame;
+		}
+	}
 }
 
 void room_201_daemon() {
+	long dif;
+	int temp;
+
+	if (local->anim_0_running) {
+		handle_anim_guard_left();
+	}
+
+	if (local->anim_1_running) {
+		handle_anim_guard_right();
+	}
+
+	if (local->anim_2_running) {
+		handle_anim_pid();
+	}
+
+	if (local->anim_3_running) {
+		handle_anim_guard_right_pid();
+	}
+
+	if (local->anim_4_running) {
+		handle_anim_throw();
+	}
+
+	if (local->anim_5_running) {
+		handle_anim_take();
+	}
+
+	if (local->anim_6_running) {
+		handle_anim_death();
+	}
+
+	if (camera_x.pan_this_frame) {
+		set_lg_rock_position();
+		set_md_rock_position();
+		set_sm_rock_position();
+		set_lg_tree_position();
+		set_vine_position();
+		set_vine_2_position();
+		set_vine_3_position();
+	}
+
+	if (imath_random(1, 300) == 1) {
+		if (local->hand_status == HAND_OPEN) {
+			seq[fx_hand] = kernel_seq_forward(ss[fx_hand], false, 5, 0, 0, 1);
+			kernel_seq_depth(seq[fx_hand], 1);
+			kernel_seq_range(seq[fx_hand], KERNEL_FIRST, KERNEL_LAST);
+			kernel_seq_trigger(seq[fx_hand], KERNEL_TRIGGER_EXPIRE, 0, ROOM_201_HAND);
+			local->hand_status = HAND_MOVING;
+
+		} else if (local->hand_status == HAND_CLOSED) {
+			kernel_seq_delete(seq[fx_hand]);
+			seq[fx_hand] = kernel_seq_backward(ss[fx_hand], false, 5, 0, 0, 1);
+			kernel_seq_depth(seq[fx_hand], 1);
+			kernel_seq_range(seq[fx_hand], KERNEL_FIRST, KERNEL_LAST);
+			kernel_seq_trigger(seq[fx_hand], KERNEL_TRIGGER_EXPIRE, 0, ROOM_201_HAND + 1);
+			local->hand_status = HAND_MOVING;
+		}
+	}
+
+	if (kernel.trigger == ROOM_201_HAND) {
+		seq[fx_hand] = kernel_seq_stamp(ss[fx_hand], false, KERNEL_LAST);
+		kernel_seq_depth(seq[fx_hand], 1);
+		local->hand_status = HAND_CLOSED;
+	}
+
+	if (kernel.trigger == ROOM_201_HAND + 1) {
+		local->hand_status = HAND_OPEN;
+	}
+
+	if (kernel.trigger == ROOM_201_HALT) {
+
+		if (global[player_persona] == PLAYER_IS_KING) {
+			conv_run(CONV_47_KING);
+			conv_export_value(0);
+			conv_export_value(0);
+
+		} else {
+			player.walker_visible = false;
+			aa[2] = kernel_run_animation(kernel_name('p', 1), 0);
+			local->anim_2_running = true;
+			local->pid_action = FREEZE;
+			kernel_synch(KERNEL_ANIM, aa[2], KERNEL_PLAYER, 0);
+
+			conv_run(CONV_54_PID);
+			conv_export_value(0);
+		}
+	}
+
+	if (!local->prevent && player.x > 30) {
+		local->prevent = true;
+		kernel_timing_trigger(HALF_SECOND, ROOM_201_HALT + 1);
+		local->guard_right_action = HALT;
+	}
+
+	if (kernel.trigger == ROOM_201_HALT + 1) {
+		local->guard_left_action = HALT;
+	}
+
+
+	if (local->activate_timer) {
+		if (local->death_timer == 0) {
+			kernel_set_interface_mode(INTER_BUILDING_SENTENCES);
+		}
+
+		dif = kernel.clock - local->clock;
+		if ((dif >= 0) && (dif <= 4)) {
+			local->death_timer += dif;
+		} else {
+			local->death_timer += 1;
+		}
+		local->clock = kernel.clock;
+
+		if (local->death_timer >= LENGTH_OF_LIFE) {
+
+			if (global[player_persona] == PLAYER_IS_KING) {
+				if (conv_control.running != CONV_47_KING) {
+					conv_run(CONV_47_KING);
+					conv_export_value(1);
+					conv_export_value(1);
+				}
+
+				local->death_timer = 0;
+				local->clock = 0;
+
+
+			} else {
+				if (local->activate_timer == 1) {
+					text_show(20157);
+					local->activate_timer = false;
+					local->pid_action = FALL;
+					player.commands_allowed = false;
+					kernel_set_interface_mode(INTER_LIMITED_SENTENCES);
+
+				} else {
+					local->activate_timer = false;
+					conv_run(CONV_54_PID);
+					conv_export_value(0);
+					conv_export_value(0);
+				}
+			}
+		}
+	}
+
+	switch (kernel.trigger) {
+	case ROOM_201_GIVE:
+		if (local->prevent_1) {
+			local->guard_left_action = FREEZE;
+			if (global[object_given_201] == -1) {
+				inter_move_object(object_named(player_main_noun), 201);
+				global[object_given_201] = object_named(player_main_noun);
+
+			} else {
+				inter_give_to_player(global[object_given_201]);
+				global[object_given_201] = -1;
+				sound_play(N_TakeObjectSnd);
+			}
+		}
+		local->prevent_1 = true;
+		break;
+
+	case ROOM_201_GIVE + 1:
+		player.walker_visible = true;
+		local->prevent_1 = false;
+		kernel_synch(KERNEL_PLAYER, 0, KERNEL_SERIES, seq[fx_take]);
+
+		if (global[object_given_201] != -1) {
+			player.commands_allowed = true;
+
+			if (global[given_object_before]) {
+				local->guard_left_action = DUMP_ANIMS;
+				local->guard_right_action = UNHALT_DUMP_ANIMS;
+
+			} else {
+				conv_run(CONV_47_KING);
+				conv_export_value(0);
+				conv_export_value(1);
+			}
+
+		} else {
+			player_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_WEST);
+			player.walking = true;
+
+			global[pre_room] = 201;
+			if (global[dragon_my_scene] < global[dragon_high_scene]) {
+				global[dragon_my_scene]++;
+				player.walk_off_edge_to_room = 111;
+				local->cut_scene = true;
+			} else {
+				player.walk_off_edge_to_room = 120;
+			}
+		}
+		break;
+	}
+
+	if (local->left_ready_to_fall && local->right_ready_to_fall && !global[guards_are_asleep]) {
+		kernel_abort_animation(aa[3]);
+		kernel_abort_animation(aa[0]);
+		local->anim_3_running = false;
+		local->anim_0_running = false;
+		global[guards_are_asleep] = true;
+		kernel_flip_hotspot(words_guards, true);
+		kernel_flip_hotspot_loc(words_guards, false, GUARD_1_X, GUARD_1_Y);
+		kernel_flip_hotspot_loc(words_guards, false, GUARD_2_X, GUARD_2_Y);
+		sound_play(N_GuardCollapses);
+
+		aa[0] = kernel_run_animation(kernel_name('f', 1), 1);
+	}
+
+	if (kernel.trigger == 1) {
+		kernel_abort_animation(aa[0]);
+		seq[fx_guard_1_dead] = kernel_seq_stamp(ss[fx_guard_1_dead], false, KERNEL_FIRST);
+		kernel_seq_depth(seq[fx_guard_1_dead], 13);
+		kernel_synch(KERNEL_SERIES, seq[fx_guard_1_dead], KERNEL_NOW, 0);
+
+		seq[fx_guard_2_dead] = kernel_seq_stamp(ss[fx_guard_2_dead], false, KERNEL_FIRST);
+		kernel_seq_depth(seq[fx_guard_2_dead], 13);
+		kernel_synch(KERNEL_SERIES, seq[fx_guard_2_dead], KERNEL_NOW, 0);
+
+		player.commands_allowed = true;
+	}
+
+	if (!local->testicle_1_on && !global[dome_up] && imath_random(1, 200) == 1) {
+		kernel_flip_hotspot_loc(words_pool_monster, true, 559, 123);
+		seq[fx_testicle_1] = kernel_seq_forward(ss[fx_testicle_1], false, 8, 0, 0, 1);
+		kernel_seq_depth(seq[fx_testicle_1], 9);
+		kernel_seq_range(seq[fx_testicle_1], KERNEL_FIRST, KERNEL_LAST);
+		kernel_seq_trigger(seq[fx_testicle_1], KERNEL_TRIGGER_SPRITE, 9, ROOM_201_SPLASH);
+		kernel_seq_trigger(seq[fx_testicle_1], KERNEL_TRIGGER_EXPIRE, 0, 10);
+		local->testicle_1_on = true;
+	}
+
+	if (!local->testicle_2_on && !global[dome_up] && imath_random(1, 200) == 1) {
+		kernel_flip_hotspot_loc(words_pool_monster, true, 708, 109);
+		seq[fx_testicle_2] = kernel_seq_forward(ss[fx_testicle_2], false, 8, 0, 0, 1);
+		kernel_seq_depth(seq[fx_testicle_2], 9);
+		kernel_seq_range(seq[fx_testicle_2], KERNEL_FIRST, KERNEL_LAST);
+		kernel_seq_trigger(seq[fx_testicle_2], KERNEL_TRIGGER_SPRITE, 10, ROOM_201_SPLASH);
+		kernel_seq_trigger(seq[fx_testicle_2], KERNEL_TRIGGER_EXPIRE, 0, 11);
+		local->testicle_2_on = true;
+	}
+
+	if (!local->testicle_3_on && !global[dome_up] && imath_random(1, 200) == 1) {
+		kernel_flip_hotspot_loc(words_pool_monster, true, 670, 108);
+		seq[fx_testicle_3] = kernel_seq_forward(ss[fx_testicle_3], false, 8, 0, 0, 1);
+		kernel_seq_depth(seq[fx_testicle_3], 10);
+		kernel_seq_range(seq[fx_testicle_3], KERNEL_FIRST, 4);
+		kernel_seq_trigger(seq[fx_testicle_3], KERNEL_TRIGGER_SPRITE, 15, ROOM_201_SPLASH);
+		kernel_seq_trigger(seq[fx_testicle_3], KERNEL_TRIGGER_EXPIRE, 0, ROOM_201_TENT_3);
+		local->testicle_3_on = true;
+	}
+
+	if (!local->testicle_4_on && !global[dome_up] && imath_random(1, 200) == 1) {
+		kernel_flip_hotspot_loc(words_pool_monster, true, 615, 109);
+		seq[fx_testicle_4] = kernel_seq_forward(ss[fx_testicle_4], false, 8, 0, 0, 1);
+		kernel_seq_depth(seq[fx_testicle_4], 10);
+		kernel_seq_range(seq[fx_testicle_4], KERNEL_FIRST, KERNEL_LAST);
+		kernel_seq_trigger(seq[fx_testicle_4], KERNEL_TRIGGER_SPRITE, 9, ROOM_201_SPLASH);
+		kernel_seq_trigger(seq[fx_testicle_4], KERNEL_TRIGGER_EXPIRE, 0, 13);
+		local->testicle_4_on = true;
+	}
+
+	switch (kernel.trigger) {
+	case 10:
+		local->testicle_1_on = false;
+		kernel_flip_hotspot_loc(words_pool_monster, false, 559, 123);
+		break;
+
+	case 11:
+		local->testicle_2_on = false;
+		kernel_flip_hotspot_loc(words_pool_monster, false, 708, 109);
+		break;
+
+	case 12:
+		local->testicle_3_on = false;
+		kernel_flip_hotspot_loc(words_pool_monster, false, 670, 108);
+		break;
+
+	case 13:
+		local->testicle_4_on = false;
+		kernel_flip_hotspot_loc(words_pool_monster, false, 615, 109);
+		break;
+	}
+
+	if (kernel.trigger == ROOM_201_TENT_3) {
+		temp = seq[fx_testicle_3];
+		if (imath_random(1, 5) == 1) {
+			seq[fx_testicle_3] = kernel_seq_pingpong(ss[fx_testicle_3], false, 8, 0, 0, 2);
+			kernel_seq_depth(seq[fx_testicle_3], 10);
+			kernel_seq_range(seq[fx_testicle_3], 5, 11);
+			kernel_seq_trigger(seq[fx_testicle_3], KERNEL_TRIGGER_EXPIRE, 0, ROOM_201_TENT_3);
+
+		} else {
+			seq[fx_testicle_3] = kernel_seq_forward(ss[fx_testicle_3], false, 8, 0, 0, 1);
+			kernel_seq_depth(seq[fx_testicle_3], 10);
+			kernel_seq_range(seq[fx_testicle_3], 6, KERNEL_LAST);
+			kernel_seq_trigger(seq[fx_testicle_3], KERNEL_TRIGGER_EXPIRE, 0, 12);
+		}
+		kernel_synch(KERNEL_SERIES, seq[fx_testicle_3], KERNEL_SERIES, temp);
+	}
+
+	if (!local->death_is_on && !global[dome_up] && global[player_persona] == PLAYER_IS_KING) {
+		if (player.x >= 620) {
+			player_walk(DEATH_X, DEATH_Y, FACING_EAST);
+			player_walk_trigger(ROOM_201_DEATH_2);
+			local->death_is_on = true;
+			player.commands_allowed = false;
+		}
+	}
+
+	if (kernel.trigger == ROOM_201_DEATH_2) {
+		player.walker_visible = false;
+		player.commands_allowed = false;
+		aa[6] = kernel_run_animation(kernel_name('d', 1), ROOM_201_DEATH_2 + 1);
+		local->anim_6_running = true;
+		kernel_synch(KERNEL_ANIM, aa[3], KERNEL_PLAYER, 0);
+	}
+
+	if (kernel.trigger == ROOM_201_DEATH_2 + 1) {
+		if (game.difficulty == EASY_MODE) {
+			text_show(20167);
+		} else {
+			text_show(45);
+		}
+		global[king_got_stabbed] = 1;  /* 1 is treated differently from true in init code */
+		kernel.force_restart = true;
+	}
+
+	if (kernel.trigger == ROOM_201_SPLASH) {
+		if (player.x > 400) {
+			sound_play(N_TentaclesSplash);
+		}
+	}
+
+	if (player.x > 300) {
+		local->crossed_line = true;
+	}
+
+	if (kernel.trigger == MUSIC) {
+		sound_play(N_BackgroundMus);
+	}
+
+	if (local->cut_scene && !player.walking) {
+		local->cut_scene = false;
+		global[dragon_my_scene]--;
+	}
+}
+
+static void process_conv_king_guards() {
+	int you_trig_flag = false;
+	int me_trig_flag = false;
+
+	if (player_verb == conv047_prebribe_giver) {
+		if (!kernel.trigger) {
+			player_demand_facing(FACING_NORTHEAST);
+		}
+	}
+
+	if (player_verb == conv047_offer_wasnt ||
+		player_verb == conv047_boon3_suppose) {
+		if (!kernel.trigger) {
+			global[player_score] += 3;
+		}
+	}
+
+	if (player_verb == conv047_collat2_only) {
+		global[given_object_before] = true;
+	}
+
+	if (player_verb == conv047_offer_never) {
+		local->special_shit = true;
+	}
 
+	if (player_verb == conv047_give_b_b) { /* first time around */
+		*conv_my_next_start = conv047_postbribe;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		local->activate_timer = true;
+		conv_abort();
+	}
+
+	if (player_verb == conv047_exit_i_i) {
+		*conv_my_next_start = conv047_protect;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+		local->guard_right_action = UNHALT;
+		player_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_WEST);
+		/* player.walking = true; */
+
+		global[pre_room] = 201;
+		if (global[dragon_my_scene] < global[dragon_high_scene]) {
+			global[dragon_my_scene]++;
+			player.walk_off_edge_to_room = 111;
+			/* local->cut_scene = true; */
+		} else {
+			player.walk_off_edge_to_room = 120;
+		}
+	}
+
+	if (player_verb == conv047_give_d_d) {
+		*conv_my_next_start = conv047_usesame;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		local->activate_timer = true;
+		conv_abort();
+	}
+
+	if (player_verb == conv047_kill_b_b) {
+		*conv_my_next_start = conv047_heythere;
+		conv_abort();
+		you_trig_flag = true;
+		me_trig_flag = true;
+		local->guard_right_action = KILL;
+		player.commands_allowed = false;
+	}
+
+	if (player_verb == conv047_exit_b_b) {
+		*conv_my_next_start = conv047_protect;
+		local->guard_left_action = GIVE_NOTHING;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+		local->guard_right_action = UNHALT;
+	}
+
+	if (player_verb == conv047_exit_k_k) {
+		*conv_my_next_start = conv047_protect;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_WEST);
+		/* player.walking = true; */
+
+		global[pre_room] = 201;
+		if (global[dragon_my_scene] < global[dragon_high_scene]) {
+			global[dragon_my_scene]++;
+			player.walk_off_edge_to_room = 111;
+			/* local->cut_scene = true; */
+		} else {
+			player.walk_off_edge_to_room = 120;
+		}
+
+		player.commands_allowed = false;
+		local->guard_right_action = UNHALT;
+		global[reset_conv] = 47;
+	}
+
+	if (player_verb == conv047_exit_d_d) {
+		*conv_my_next_start = conv047_heythere;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+		local->guard_left_action = DUMP_ANIMS;
+		local->guard_right_action = UNHALT_DUMP_ANIMS;
+	}
+
+	if (player_verb == conv047_exit_f_f) {
+		*conv_my_next_start = conv047_askback;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+		local->guard_left_action = DUMP_ANIMS;
+		/* local->guard_right_action = UNHALT_DUMP_ANIMS; */
+		local->guard_right_action = DUMP_ANIMS;
+	}
+
+	if (player_verb == conv047_take_back_b_b) {
+		*conv_my_next_start = conv047_protect;
+		local->guard_left_action = GIVE_NOTHING;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+	}
+
+	if (player_verb == conv047_take_back_d_d) {
+		*conv_my_next_start = conv047_usesame;
+		conv_abort();
+		local->guard_left_action = GIVE_NOTHING;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		player.commands_allowed = false;
+	}
+
+	if (kernel.trigger == ROOM_201_YOU_TALK) {
+		if (player_verb != conv047_kingsay_escort &&
+			player_verb != conv047_kingsay_why &&
+			player_verb != conv047_myguys_whydirt &&
+			player_verb != conv047_prebribe_giver &&
+			player_verb != conv047_reaction2_only &&
+			player_verb != conv047_offer_boon &&
+			player_verb != conv047_boon2_only &&
+			player_verb != conv047_collat2_only &&
+			player_verb != conv047_askback_heythere &&
+			player_verb != conv047_heythere_only) {
+			local->guard_left_action = TALK;
+		}
+	}
+
+	if (!you_trig_flag) {
+		conv_you_trigger(ROOM_201_YOU_TALK);
+	} /* if you_trig_flag == true, then a you trigger is called from above, not here. */
+}
+
+static void process_conv_pid_guards() {
+	int you_trig_flag = false;
+	int me_trig_flag = false;
+
+	if (player_verb == conv054_death_b_b) {
+		conv_abort();
+		you_trig_flag = true;
+		me_trig_flag = true;
+		local->guard_right_action = KILL;
+		player.commands_allowed = false;
+	}
+
+	if (player_verb == conv054_show_drink_b_b) {
+		local->death_timer = 0;
+		local->clock = 0;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		local->activate_timer = true;
+	}
+
+	if (player_verb == conv054_take_swig_b_b) {
+		conv_hold();
+		local->pid_action = DRINK;
+		you_trig_flag = true;
+		me_trig_flag = true;
+	}
+
+	if (player_verb == conv054_offer_b_b) {
+		local->pid_action = HAND_TO_LEFT;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		player.commands_allowed = false;
+	}
+
+	if (player_verb == conv054_exit_b_b) {
+		*conv_my_next_start = conv054_restart;
+		you_trig_flag = true;
+		me_trig_flag = true;
+		conv_abort();
+		kernel_abort_animation(aa[2]);
+
+		player.walker_visible = true;
+		player.commands_allowed = false;
+		local->guard_right_action = UNHALT;
+		kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
+		player_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_WEST);
+		/* player.walking = true; */
+
+		global[pre_room] = 201;
+		if (global[dragon_my_scene] < global[dragon_high_scene]) {
+			global[dragon_my_scene]++;
+			player.walk_off_edge_to_room = 111;
+			/* local->cut_scene = true; */
+		} else {
+			player.walk_off_edge_to_room = 120;
+		}
+	}
+
+	if (kernel.trigger == ROOM_201_YOU_TALK) {
+		local->guard_left_action = TALK;
+	}
+
+	if (!you_trig_flag) {
+		conv_you_trigger(ROOM_201_YOU_TALK);
+	} /* if you_trig_flag == true, then a you trigger is called from above, not here. */
 }
 
 void room_201_pre_parser() {
+	if (local->activate_timer) {
+		player.need_to_walk = false;
+	}
+
+	if (player_said_2(talk_to, guards)) {
+		if (global[player_persona] == PLAYER_IS_KING && !local->activate_timer) {
+			player_walk(WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_NORTHEAST);
+		}
+	}
+
+	if (player_said_3(throw, shieldstone, pool) ||
+		player_said_3(put, shieldstone, pool) ||
+		player_said_3(throw, shieldstone, pool_monster) ||
+		player_said_3(put, shieldstone, pool_monster)) {
+		player_walk(THROW_X, THROW_Y, FACING_NORTH);
+	}
+
+	if (player_said_2(walk_down, path_to_west)) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			if (global[object_given_201] == -1) {
+				/* conv_reset (CONV_47_KING); */
+				global[reset_conv] = 47;
+
+				player_walk(PLAYER_X_FROM_120, PLAYER_Y_FROM_120, FACING_EAST);
+				/* player.walking = true; */
+
+				player.commands_allowed = false;
+
+				global[pre_room] = 201;
+				if (global[dragon_my_scene] < global[dragon_high_scene]) {
+					if (!local->cut_scene) {
+						global[dragon_my_scene]++;
+					}
+					player.walk_off_edge_to_room = 111;
+					/* local->cut_scene = true; */
 
+				} else if (local->cut_scene) {
+					player.walk_off_edge_to_room = 111;
+
+				} else {
+					player.walk_off_edge_to_room = 120;
+				}
+
+			} else {
+				if (global[player_persona] == PLAYER_IS_KING && !local->activate_timer) {
+					player_walk(WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_NORTHEAST);
+
+				} else {
+					player_walk(WALK_TO_X_FROM_120, WALK_TO_Y_FROM_120, FACING_EAST);
+				}
+			}
+
+		} else {
+
+			if (local->activate_timer == 1) {
+				text_show(20162);
+				player_cancel_command();
+				/* you need to heal yourself */
+
+			} else {
+				global[pre_room] = 201;
+				if (global[dragon_my_scene] < global[dragon_high_scene]) {
+					if (!local->cut_scene) {
+						global[dragon_my_scene]++;
+					}
+					player.walk_off_edge_to_room = 111;
+					local->cut_scene = true;
+
+				} else if (local->cut_scene) {
+					player.walk_off_edge_to_room = 111;
+
+				} else {
+					player.walk_off_edge_to_room = 120;
+				}
+			}
+		}
+	}
+
+	if (player_said_2(walk_down, path_to_east)) {
+		player.walk_off_edge_to_room = 203;
+	}
 }
 
-void room_201_parser() {
+static void room_201_parser() {
+	int id;
+
+	if (conv_control.running == CONV_47_KING) {
+		process_conv_king_guards();
+		goto handled;
+	}
+
+	if (conv_control.running == CONV_54_PID) {
+		process_conv_pid_guards();
+		goto handled;
+	}
+
+	if (player_said_2(take, tentacles)) {
+		switch (kernel.trigger) {
+		case 0:
+			if (!player_has(tentacle_parts)) {
+				aa[5] = kernel_run_animation(kernel_name('b', 1), 1);
+				local->anim_5_running = true;
+				player.commands_allowed = false;
+				player.walker_visible = false;
+				kernel_synch(KERNEL_ANIM, aa[5], KERNEL_PLAYER, 0);
+			}
+			break;
+
+		case 1:
+			local->anim_5_running = false;
+			player.commands_allowed = true;
+			player.walker_visible = true;
+			kernel_synch(KERNEL_PLAYER, 0, KERNEL_ANIM, aa[5]);
+			break;
+		}
+		goto handled;
+	}
+
+	if (player_said_3(throw, shieldstone, pool) ||
+		player_said_3(put, shieldstone, pool) ||
+		player_said_3(throw, shieldstone, pool_monster) ||
+		player_said_3(put, shieldstone, pool_monster)) {
+		switch (kernel.trigger) {
+		case 0:
+			aa[4] = kernel_run_animation(kernel_name('t', 1), 1);
+			local->anim_4_running = true;
+			player.commands_allowed = false;
+			player.walker_visible = false;
+			++global[dragon_high_scene];
+			kernel_synch(KERNEL_ANIM, aa[4], KERNEL_PLAYER, 0);
+			break;
+
+		case 1:
+			seq[fx_ripple] = kernel_seq_forward(ss[fx_ripple], false, 20, 0, 0, 0);
+			kernel_seq_depth(seq[fx_ripple], 3);
+			kernel_seq_range(seq[fx_ripple], KERNEL_FIRST, KERNEL_LAST);
+			kernel_synch(KERNEL_SERIES, seq[fx_ripple], KERNEL_ANIM, aa[4]);
+
+			seq[fx_pair_testes] = kernel_seq_forward(ss[fx_pair_testes], false, 20, 0, 0, 0);
+			kernel_seq_depth(seq[fx_pair_testes], 10);
+			kernel_seq_range(seq[fx_pair_testes], KERNEL_FIRST, KERNEL_LAST);
+			kernel_synch(KERNEL_SERIES, seq[fx_pair_testes], KERNEL_ANIM, aa[4]);
+			kernel_flip_hotspot(words_tentacles, true);
+
+			local->anim_4_running = false;
+			player.commands_allowed = true;
+			player.walker_visible = true;
+			global[dome_up] = true;
+			kernel_flip_hotspot(words_spell_shield, true);
+			global[player_score] += 4;
+			kernel_synch(KERNEL_PLAYER, 0, KERNEL_ANIM, aa[4]);
+
+			if (game.difficulty == HARD_MODE) {
+				text_show(20138);
+			} else {
+				text_show(20137);
+			}
+			break;
+		}
+		goto handled;
+	}
+
+	if (player_said_2(walk_down, path_to_west)) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			kernel_seq_delete(seq[fx_guard_stand_l]);
+			aa[0] = kernel_run_animation(kernel_name('u', 1), 0);
+			local->anim_0_running = true;
+			local->guard_left_action = FREEZE;
+
+			kernel_seq_delete(seq[fx_guard_stand_r]);
+			aa[1] = kernel_run_animation(kernel_name('u', 3), 0);
+			local->anim_1_running = true;
+			local->guard_right_action = FREEZE;
+			kernel_reset_animation(aa[1], 7);
+
+			if (local->crossed_line) {
+				local->guard_right_action = KILL;
+				player.commands_allowed = false;
+
+			} else {
+				conv_run(CONV_47_KING);
+				conv_export_value(0);
+				conv_export_value(1);
+			}
+			local->crossed_line = false;
+			goto handled;
+		}
+	}
+
+	if (player_said_1(heal_self) && !global[guards_are_asleep] &&
+		global[player_persona] == PLAYER_IS_PID) {
+		if (local->activate_timer == 1) {
+			local->pid_action = HEAL;
+			player.commands_allowed = false;
+			local->activate_timer = false;
+			global[player_score] += 2;
+			goto handled;
+		}
+	}
+
+	if (player_said_2(talk_to, guards)) {
+		if (global[player_persona] == PLAYER_IS_KING) {
+			if (local->activate_timer) {
+				text_show(20159);
+
+			} else {
+				kernel_seq_delete(seq[fx_guard_stand_l]);
+				aa[0] = kernel_run_animation(kernel_name('u', 1), 0);
+				local->anim_0_running = true;
+				local->guard_left_action = FREEZE;
+
+				kernel_seq_delete(seq[fx_guard_stand_r]);
+				aa[1] = kernel_run_animation(kernel_name('u', 3), 0);
+				local->anim_1_running = true;
+				local->guard_right_action = FREEZE;
+				kernel_reset_animation(aa[1], 7);
+
+				conv_run(CONV_47_KING);
+				conv_export_value(0);
+				conv_export_value(1);
+			}
+			goto handled;
+
+		} if (global[guards_are_asleep]) {
+			text_show(20152);
+			goto handled;
+		}
+	}
+
+	id = object_named(player_main_noun);
+
+	if (player_said_2(give, guards) && local->activate_timer && player_has(id)) {
+		local->activate_timer = false;
+
+		if (global[player_persona] == PLAYER_IS_KING) {
+			player.commands_allowed = false;
+			local->guard_left_action = GIVE_NOTHING;
+
+			/* if (global[given_object_before]) { */
+			  /* local->guard_right_action = UNHALT; */
+			/* } */
+
+		} else {
+			if (player_said_1(soporific)) {
+				local->pid_action = TAKE_OUT_BOTTLE;
+
+			} else {
+				conv_run(CONV_54_PID);
+				conv_export_value(0);
+			}
+		}
+		goto handled;
+	}
+
+	if (player.look_around) {
+		text_show(20101);
+		goto handled;
+	}
+
+	if (player_said_1(look) || player_said_1(look_at)) {
+		if (player_said_1(path)) {
+			if (global[player_persona] == PLAYER_IS_PID) {
+				text_show(20148);
+			} else {
+				text_show(20102);
+			}
+			goto handled;
+		}
+
+		if (player_said_1(guardhouse)) {
+			text_show(20105);
+			goto handled;
+		}
+
+		if (player_said_1(guards)) {
+			if (global[guards_are_asleep]) {
+				text_show(20152);
+			} else {
+				text_show(20110);
+			}
+			goto handled;
+		}
+
+		if (player_said_1(Slathan_ni_Patan)) {
+			text_show(20114);
+			goto handled;
+		}
+
+		if (player_said_1(path_to_west)) {
+			text_show(20116);
+			goto handled;
+		}
+
+		if (player_said_1(ear_rock)) {
+			text_show(20117);
+			goto handled;
+		}
+
+		if (player_said_1(nose_rock)) {
+			text_show(20122);
+			goto handled;
+		}
+
+		if (player_said_1(mouth_rock)) {
+			text_show(20125);
+			goto handled;
+		}
+
+		if (player_said_1(bone_tree)) {
+			text_show(20130);
+			goto handled;
+		}
+
+		if (player_said_1(pool)) {
+			if (global[player_persona] == PLAYER_IS_PID) {
+				text_show(20149);
+			} else if (global[dome_up]) {
+				text_show(20139);
+			} else {
+				text_show(20134);
+			}
+			goto handled;
+		}
+
+		if (player_said_1(path_to_east)) {
+			if (global[player_persona] == PLAYER_IS_PID) {
+				text_show(20151);
+			} else {
+				text_show(20140);
+			}
+			goto handled;
+		}
+
+		if (player_said_1(pool_monster)) {
+			if (global[dome_up]) {
+				text_show(20139);
+			} else {
+				text_show(20141);
+			}
+			goto handled;
+		}
+
+		if (player_said_1(tentacles) && object_is_here(tentacle_parts) && global[dome_up]) {
+			text_show(20145);
+			goto handled;
+		}
+
+		if (player_said_1(spell_shield)) {
+			if (global[player_persona] == PLAYER_IS_PID) {
+				text_show(20150);
+			} else {
+				text_show(20147);
+			}
+			goto handled;
+		}
+	}
+
+	if (player_said_2(put, path)) {
+		text_show(20103);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, path) ||
+		player_said_2(give, path) ||
+		player_said_2(throw, path)) {
+		text_show(20104);
+		goto handled;
+	}
+
+	if (player_said_2(open, guardhouse) ||
+		player_said_2(close, guardhouse)) {
+		text_show(20106);
+		goto handled;
+	}
+
+	if (player_said_2(push, guardhouse) ||
+		player_said_2(pull, guardhouse) ||
+		player_said_2(throw, guardhouse)) {
+		text_show(20107);
+		goto handled;
+	}
+
+	if (player_said_2(put, guardhouse) ||
+		player_said_2(give, guardhouse)) {
+		text_show(20108);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, guardhouse)) {
+		text_show(20109);
+		goto handled;
+	}
+
+	if (player_said_2(push, guards) ||
+		player_said_2(pull, guards)) {
+		if (global[guards_are_asleep]) {
+			text_show(20155);
+			goto handled;
+		}
+	}
+
+	if (player_said_3(sword, attack, guards) ||
+		player_said_3(sword, carve_up, guards) ||
+		player_said_3(sword, thrust, guards) ||
+		player_said_2(pour_contents_of, guards) ||
+		player_said_2(throw, guards)) {
+
+		if (global[guards_are_asleep]) {
+			text_show(20156);
+			goto handled;
+		}
+	}
+
+	if (player_said_3(sword, attack, guards) ||
+		player_said_3(sword, carve_up, guards) ||
+		player_said_3(sword, thrust, guards) ||
+		player_said_2(push, guards) ||
+		player_said_2(pull, guards)) {
+		text_show(20111);
+		goto handled;
+	}
+
+	if (player_said_2(give, guards)) {
+		if (global[object_given_201] != -1) {
+			text_show(20112);
+			goto handled;
+
+		} else if (global[guards_are_asleep]) {
+			text_show(20154);
+			goto handled;
+		}
+	}
+
+
+	if (player_said_1(take) ||
+		player_said_1(give) ||
+		player_said_1(push) ||
+		player_said_1(pull) ||
+		player_said_1(talk_to) ||
+		player_said_1(open) ||
+		player_said_1(close) ||
+		player_said_1(walk_down) ||
+		player_said_1(put) ||
+		player_said_1(throw)) {
+		if (local->activate_timer) {
+			text_show(20113);
+			goto handled;
+
+		} else if (local->activate_timer == 1) {
+			text_show(20153);
+			goto handled;
+		}
+	}
+
+	if (player_said_3(throw, shieldstone, guards) ||
+		player_said_3(throw, teleportal, guards) ||
+		player_said_2(pour_contents_of, guards)) {
+		text_show(20115);
+		goto handled;
+	}
+
+	if (player_said_2(take, ear_rock) ||
+		player_said_2(take, nose_rock) ||
+		player_said_2(take, mouth_rock)) {
+		text_show(20118);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, ear_rock)) {
+		text_show(20119);
+		goto handled;
+	}
+
+
+	if (player_said_1(give) && !player_said_1(fruit) && !player_said_1(bone)) {
+		if (player_said_1(nose_rock) ||
+			player_said_1(ear_rock) ||
+			player_said_1(mouth_rock)) {
+			text_show(20120);
+			goto handled;
+		}
+	}
+
+	if (player_said_2(make_noise, birdcall)) {
+		text_show(20121);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, nose_rock)) {
+		text_show(20123);
+		goto handled;
+	}
+
+	if (player_said_1(give) && player_said_1(nose_rock)) {
+		if (player_said_1(bone) || player_said_1(fruit)) {
+			text_show(20124);
+			goto handled;
+		}
+	}
+
+	if (player_said_2(close, mouth_rock)) {
+		text_show(20126);
+		goto handled;
+	}
+
+	if (player_said_1(put) && !player_said_1(fruit) && !player_said_1(bone)) {
+		if (player_said_1(mouth_rock)) {
+			text_show(20127);
+			goto handled;
+		}
+	}
+
+	if (player_said_1(put) || player_said_1(give)) {
+		if (player_said_1(fruit) || player_said_1(bone)) {
+			if (player_said_1(mouth_rock)) {
+				text_show(20128);
+				goto handled;
+			}
+		}
+	}
+
+	if (player_said_2(talk_to, mouth_rock)) {
+		sound_play(N_MouthRockTalks);
+		text_show(20129);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, bone_tree) ||
+		player_said_2(give, bone_tree)) {
+		if (!player_said_1(bone)) {
+			text_show(20131);
+			goto handled;
+		}
+	}
+
+	if (player_said_2(pull, bone_tree)) {
+		text_show(20132);
+		goto handled;
+	}
+
+	if (player_said_1(put) || player_said_1(give)) {
+		if (player_said_1(bone) && player_said_1(bone_tree)) {
+			text_show(20133);
+			goto handled;
+		}
+	}
+
+	if (player_said_2(heal, guards)) {
+		text_show(20155);
+		goto handled;
+	}
+
+	if (player_said_2(invoke, signet_ring) && !global[guards_are_asleep]) {
+		if (local->activate_timer == 1 && global[player_persona] == PLAYER_IS_PID) {
+			text_show(20163);
+			/* waystation can't help you now */
+
+		} else if (global[object_given_201] == -1) {
+			text_show(20113);
+			/* they are looking at you to fulfill your promise */
+
+		} else {
+			text_show(20158);
+			/* you would confuse the guards */
+		}
+		goto handled;
+	}
+
+	if (player_said_3(put, flask_of_acid, pool) ||
+		player_said_3(throw, flask_of_acid, pool) ||
+		player_said_2(pour_contents_of, pool)) {
+		text_show(20136);
+		goto handled;
+	}
+
+	if ((player_said_1(put) || player_said_1(throw)) && player_said_1(pool)) {
+		if (!player_said_1(shieldstone) && !player_said_1(pour_contents_of)) {
+			text_show(20135);
+			goto handled;
+		}
+	}
+
+	if (player_said_3(sword, attack, pool_monster) ||
+		player_said_3(sword, carve_up, pool_monster) ||
+		player_said_3(sword, thrust, pool_monster) ||
+		player_said_2(push, pool_monster) ||
+		player_said_2(pull, pool_monster) ||
+		player_said_2(take, pool_monster)) {
+		text_show(20142);
+		goto handled;
+	}
+
+	if (player_said_2(talk_to, pool_monster)) {
+		text_show(20143);
+		goto handled;
+	}
+
+	if (player_said_2(take_magic_from, pool_monster)) {
+		text_show(20144);
+		goto handled;
+	}
+
+	goto done;
+
+handled:
+	player.command_ready = false;
 
+done:
+	;
 }
 
 void room_201_synchronize(Common::Serializer &s) {
-	
+	for (int16 &v : scratch.sprite)    s.syncAsSint16LE(v);
+	for (int16 &v : scratch.sequence)  s.syncAsSint16LE(v);
+	for (int16 &v : scratch.animation) s.syncAsSint16LE(v);
+	s.syncAsSint16LE(scratch.lg_rock_base);
+	s.syncAsSint16LE(scratch.dyn_lg_rock);
+	s.syncAsSint16LE(scratch.md_rock_base);
+	s.syncAsSint16LE(scratch.dyn_md_rock);
+	s.syncAsSint16LE(scratch.sm_rock_base);
+	s.syncAsSint16LE(scratch.dyn_sm_rock);
+	s.syncAsSint16LE(scratch.lg_tree_base);
+	s.syncAsSint16LE(scratch.dyn_lg_tree);
+	s.syncAsSint16LE(scratch.vine_base);
+	s.syncAsSint16LE(scratch.dyn_vine);
+	s.syncAsSint16LE(scratch.mount_left_base);
+	s.syncAsSint16LE(scratch.dyn_mount_left);
+	s.syncAsSint16LE(scratch.mount_right_base);
+	s.syncAsSint16LE(scratch.dyn_mount_right);
+	s.syncAsSint16LE(scratch.vine_2_base);
+	s.syncAsSint16LE(scratch.dyn_vine_2);
+	s.syncAsSint16LE(scratch.vine_3_base);
+	s.syncAsSint16LE(scratch.dyn_vine_3);
+	s.syncAsSint16LE(scratch.num);
+	s.syncAsSint16LE(scratch.hand_status);
+	s.syncAsSint16LE(scratch.guard_left_frame);
+	s.syncAsSint16LE(scratch.guard_left_action);
+	s.syncAsSint16LE(scratch.guard_left_talk_count);
+	s.syncAsSint16LE(scratch.anim_0_running);
+	s.syncAsSint16LE(scratch.guard_right_frame);
+	s.syncAsSint16LE(scratch.guard_right_action);
+	s.syncAsSint16LE(scratch.guard_right_talk_count);
+	s.syncAsSint16LE(scratch.anim_1_running);
+	s.syncAsSint16LE(scratch.anim_3_running);
+	s.syncAsSint16LE(scratch.pid_frame);
+	s.syncAsSint16LE(scratch.pid_action);
+	s.syncAsSint16LE(scratch.pid_talk_count);
+	s.syncAsSint16LE(scratch.anim_2_running);
+	s.syncAsSint16LE(scratch.throw_frame);
+	s.syncAsSint16LE(scratch.anim_4_running);
+	s.syncAsSint16LE(scratch.take_frame);
+	s.syncAsSint16LE(scratch.anim_5_running);
+	s.syncAsSint16LE(scratch.death_frame);
+	s.syncAsSint16LE(scratch.anim_6_running);
+	s.syncAsSint16LE(scratch.prevent);
+	s.syncAsSint16LE(scratch.prevent_1);
+	s.syncAsSint32LE(scratch.clock);
+	s.syncAsSint32LE(scratch.death_timer);
+	s.syncAsSint16LE(scratch.activate_timer);
+	s.syncAsSint16LE(scratch.left_ready_to_fall);
+	s.syncAsSint16LE(scratch.right_ready_to_fall);
+	s.syncAsSint16LE(scratch.testicle_1_on);
+	s.syncAsSint16LE(scratch.testicle_2_on);
+	s.syncAsSint16LE(scratch.testicle_3_on);
+	s.syncAsSint16LE(scratch.testicle_4_on);
+	s.syncAsSint16LE(scratch.death_is_on);
+	s.syncAsSint16LE(scratch.special_shit);
+	s.syncAsSint16LE(scratch.crossed_line);
+	s.syncAsByte(scratch.cut_scene);
 }
 
 void room_201_preload() {




More information about the Scummvm-git-logs mailing list