[Scummvm-git-logs] scummvm master -> 436fd5a09d94ad26605642403626b409a8cef09f

joostp noreply at scummvm.org
Fri Aug 5 13:24:30 UTC 2022


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

Summary:
c61f1d34c0 ICB: rename ICB fn_routines to fn_routines_icb
436fd5a09d ICB: split McodeTable into ICB and ED variants


Commit: c61f1d34c0d554d51eaf11f201f9d689198eb78e
    https://github.com/scummvm/scummvm/commit/c61f1d34c0d554d51eaf11f201f9d689198eb78e
Author: Joost Peters (joostp at 7fc1.org)
Date: 2022-08-05T15:23:10+02:00

Commit Message:
ICB: rename ICB fn_routines to fn_routines_icb

Changed paths:
  A engines/icb/fn_routines_icb.cpp
  R engines/icb/fn_routines.cpp
    engines/icb/module.mk


diff --git a/engines/icb/fn_routines.cpp b/engines/icb/fn_routines_icb.cpp
similarity index 100%
rename from engines/icb/fn_routines.cpp
rename to engines/icb/fn_routines_icb.cpp
diff --git a/engines/icb/module.mk b/engines/icb/module.mk
index a865eebcc7e..b8d8bd0b981 100644
--- a/engines/icb/module.mk
+++ b/engines/icb/module.mk
@@ -32,7 +32,7 @@ MODULE_OBJS := \
 	fn_interact.o \
 	fn_movie_pc.o \
 	fn_remora_functions.o \
-	fn_routines.o \
+	fn_routines_icb.o \
 	fn_sound.o \
 	fn_sting_pc.o \
 	footstep.o \


Commit: 436fd5a09d94ad26605642403626b409a8cef09f
    https://github.com/scummvm/scummvm/commit/436fd5a09d94ad26605642403626b409a8cef09f
Author: Joost Peters (joostp at 7fc1.org)
Date: 2022-08-05T15:23:10+02:00

Commit Message:
ICB: split McodeTable into ICB and ED variants

Changed paths:
  A engines/icb/fn_routines_ed.cpp
    engines/icb/common/px_scriptengine.cpp
    engines/icb/fn_routines.h
    engines/icb/fn_routines_icb.cpp
    engines/icb/module.mk
    engines/icb/session.cpp


diff --git a/engines/icb/common/px_scriptengine.cpp b/engines/icb/common/px_scriptengine.cpp
index 49dbc3f7f6c..852d4ddde2f 100644
--- a/engines/icb/common/px_scriptengine.cpp
+++ b/engines/icb/common/px_scriptengine.cpp
@@ -31,6 +31,7 @@
 #include "engines/icb/common/px_common.h"          // common defs for tools & engine
 #include "engines/icb/common/px_globalvariables.h" // The global variable class
 #include "engines/icb/fn_routines.h"
+#include "engines/icb/icb.h"
 
 namespace ICB {
 
@@ -237,7 +238,9 @@ scriptInterpreterReturnCodes RunScript(const char *&scriptData, // A pointer to
 
 			Fetch16(fnNumber);
 
-			if (!((fnNumber >= 0) && (fnNumber < NO_API_ROUTINES)))
+			const int16 numApiRoutines = (g_icb->getGameType() == GType_ELDORADO) ? NO_API_ROUTINES_ELDORADO : NO_API_ROUTINES_ICB;
+
+			if (!((fnNumber >= 0) && (fnNumber < numApiRoutines)))
 				_SCRIPT_ENGINE_ERROR("fnNumber out of range?");
 
 			// Get the number of parameters
@@ -246,7 +249,15 @@ scriptInterpreterReturnCodes RunScript(const char *&scriptData, // A pointer to
 			ScriptTrace("Call mcode %d (%sin expression)", fnNumber, isInExpression ? "" : "not ");
 
 			int32 routineReturnParameter = 0; // The value returned by the mcode routine
-			mcodeFunctionReturnCodes mcodeRetVal = McodeTable[fnNumber](routineReturnParameter, stack + (stackPointer - value));
+			mcodeFunctionReturnCodes mcodeRetVal;
+
+			if (g_icb->getGameType() == GType_ICB) {
+				mcodeRetVal = McodeTableICB[fnNumber](routineReturnParameter, stack + (stackPointer - value));
+			} else if (g_icb->getGameType() == GType_ELDORADO) {
+				mcodeRetVal = McodeTableED[fnNumber](routineReturnParameter, stack + (stackPointer - value));
+			} else {
+				error("unknown game type");
+			}
 
 			ScriptTrace("api returned %d(%d)", mcodeRetVal, routineReturnParameter);
 
@@ -342,7 +353,7 @@ scriptInterpreterReturnCodes RunScript(const char *&scriptData, // A pointer to
 					ScriptTrace("interact");
 					fn_start_player_interaction(dummyReturnValue, &scriptHash);
 				} else {
-					ScriptTrace("chusen logic");
+					ScriptTrace("chosen logic");
 					fn_context_chosen_logic(dummyReturnValue, &scriptHash);
 				}
 
diff --git a/engines/icb/fn_routines.h b/engines/icb/fn_routines.h
index 30e90081b77..45f5b05247c 100644
--- a/engines/icb/fn_routines.h
+++ b/engines/icb/fn_routines.h
@@ -34,11 +34,14 @@ namespace ICB {
 
 enum mcodeFunctionReturnCodes { IR_STOP = 0, IR_CONT = 1, IR_TERMINATE = 2, IR_REPEAT = 3, IR_GOSUB = 4 };
 
-#define NO_API_ROUTINES 419
+#define NO_API_ROUTINES_ELDORADO 357
+#define NO_API_ROUTINES_ICB 419
 
-extern mcodeFunctionReturnCodes (*McodeTable[NO_API_ROUTINES])(int32 &, int32 *);
+extern mcodeFunctionReturnCodes (*McodeTableICB[NO_API_ROUTINES_ICB])(int32 &, int32 *);
+extern mcodeFunctionReturnCodes (*McodeTableED[NO_API_ROUTINES_ELDORADO])(int32 &, int32 *);
 
-#define FN_ROUTINES_DATA_VERSION 963730
+#define FN_ROUTINES_DATA_VERSION_ELDORADO 800750
+#define FN_ROUTINES_DATA_VERSION_ICB 963730
 
 } // End of namespace ICB
 
diff --git a/engines/icb/fn_routines_ed.cpp b/engines/icb/fn_routines_ed.cpp
new file mode 100644
index 00000000000..8682e3bd287
--- /dev/null
+++ b/engines/icb/fn_routines_ed.cpp
@@ -0,0 +1,767 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * Additional copyright for this file:
+ * Copyright (C) 1999-2000 Revolution Software Ltd.
+ * This code is based on source code created by Revolution Software,
+ * used with permission.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "engines/icb/fn_routines.h"
+#include "common/debug.h"
+
+namespace ICB {
+
+mcodeFunctionReturnCodes fn_set_weapon(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_custom_button_operated_door(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_cad_lock_status(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_cad_state_flag(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_create_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shut_down_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prop_animate(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_voxel_image_path(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_init_from_nico_file(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_init_from_marker_file(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_context_chosen_logic(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_tiny_route(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_pause(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_face_coord(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_face_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_player_can_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_player_cannot_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_generic_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_custom_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unregister_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_object_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unregister_object_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_future_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_repeating_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_named_event_to_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_for_line_of_sight(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unregister_for_line_of_sight(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_object_for_line_of_sight(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unregister_object_for_line_of_sight(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_can_see(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_can_object_see(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_call_socket(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prop_set_to_last_frame(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prop_set_to_first_frame(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prop_near_a_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes socket_force_new_logic(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mega_field_of_view(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_add_inventory_item(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_remove_inventory_item(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_carrying(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_reset_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_speak(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_request_speech(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_add_talker(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_issue_speech_request(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_confirm_requests(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_anon_speech_invite(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_converse(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_object_face_object(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_play_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_wait_for_everyone(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_holding(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_drop(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_item_held(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_last_frame_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_common_xa_music(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_pass_flag_to_engine(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_easy_play_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_teleport(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_pan_from_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_teleport_to_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_are_we_on_this_floor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_object_on_our_floor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_object_on_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_custom(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_message(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_clear_all_events(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_check_event_waiting(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_event_check_last_sender(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_last_event_sender_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_near(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_easy_play_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_snap_face_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_teleport_z(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_on_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_hold_if_off_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_mega_interacts(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_restart_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_object_near_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_teleport_y_to_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_call_socket_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_route_to_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_watch(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_kill_me(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_kill_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_first_frame_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_last_frame_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shut_down_event_processing(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_three_sixty_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_route_to_marker(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_common_fx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_mission_fx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_add_icon_to_icon_list(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_remove_icon_from_icon_list(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_breath(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_destroy_icon_list(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_new_script(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_random(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_change_session(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_there_interact_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_interact_object_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_object_interact_object(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_chosen(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_user_chooser(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_add_chooser_icon(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_chi(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_menu_still_active(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_menu_choices_remain(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_close_menu(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_new_menu(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_end_conversation(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_end_menu(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_add_special_chooser_icon(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_floor_and_floor_camera_linked(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_object_on_this_floor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_objects_lvar_value(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_mega_generic_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_objects_lvar_value(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_object_sight_range(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_object_sight_height(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_registered_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_object_registered_for_event(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_heard_this(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_can_see_in_dark(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_mega_never_in_shadow(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_message_var(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_no_logic(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_gosub(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_custom_simple_animator(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sharp_route(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_test_prop_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_named_event_to_object_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_custom_auto_door(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_switch_to_manual_camera(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_cancel_manual_camera(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_carrying_how_many(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_reverse_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_for_auto_interaction(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_set_hearing_sensitivity(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_suspend_events(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unsuspend_events(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_heard_something(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prime_player_history(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_inherit_prop_anim_height(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_start_chi_following(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_record_player_interaction(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_snap_to_nico_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_inherit_prop_anim_height_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_route_to_custom_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_route_to_generic_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_fetch_chi_mode(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_interacting(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_clear_interacting(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_widescreen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_line_of_sight_suspend(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_line_of_sight_unsuspend(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_check_for_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_apply_anim_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_line_of_sight_now(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_stop_sfx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_first_frame_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_easy_play_generic_anim_with_pan(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_set_custom(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_play_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_check_for_chi(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_wait_for_chi(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_send_chi_to_this_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_ids_lvar_value(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_teleport_to_nico_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_id_the_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_exlusive_coords(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_chi_wait_for_player_to_move(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_objects_x(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_objects_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_objects_z(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_are_we_on_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_reset_icon_list(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_speech_status(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_interact_choose(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_mega_within_area(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_end_mission(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_route_to_near_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_stop_chi_following(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_pose(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_crouching(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_push_player_status(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_pop_player_status(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_post_third_party_speech(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_fast_face_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_object_rerun_logic_context(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_interact_near_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_am_i_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_start_player_interaction(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_start_conveyor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_stop_conveyor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_interact_with_id(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_face_nicos_pan(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unregister_for_auto_interaction(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_chi(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_add_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx_xyz(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_stairway(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_reverse_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_trace(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_new_entry(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_remove_entry(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_simulate(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_manual_interact_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_cancel_manual_interact_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_object_type(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_register_ladder(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_movie(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_an_object_crouching(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_align_with_floor(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx_offset(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx_time(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_player_pose(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_kill_conversations(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_player_running(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_player_walking(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_anim_speed(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_push_coords(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_pop_coords(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_fast_face_coord(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_fast_face(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_send_chi_to_named_object(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_brighten_to(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_brighten_from(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_narrow_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_route_to_near(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_suspend(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_unsuspend(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_wandering_custom_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_wandering_generic_prop_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_texture(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_palette(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_quick_restart(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_generic_fade(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_darken_to(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_darken_from(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_fade_to(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_fade_from(int32 &,int32 *);
+mcodeFunctionReturnCodes fx_blend(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_speech_colour(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_current_camera(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_mega_near_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_easy_play_custom_anim_with_pan(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shadows_on(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shadows_off(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_neck_bone(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_neck_vector(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_set_neck_vector(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_simple_look(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_simple_look(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_panless_teleport_to_nico(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_dynamic_light(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_set_dynamic_light(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sharp_route_to_near_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_spectre_route_to_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_shade_percentage(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_can_hear_players_feet(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_screen_offset(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shake_screen(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_do_not_disturb(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_has_mega_our_height(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prime_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_basics(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_activate_timer(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_stop_timer(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx_special(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_default_footstep_sfx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_floor_footstep_sfx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_footstep_weight(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_special_footstep(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_reverse_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_preload_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sfx_offset_time(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_activate_stair_or_ladder(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_deactivate_stair_or_ladder(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_half_character_width(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_interact_look_height(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_visible(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_object_visible(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_calibrate_chi(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_to_dead(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sound_link_floors(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_voice_over_colour(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_default_voice_over_colour(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_camera_hold(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mega_wait_for_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mega_off_camera_hold(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mega_slice_hold(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mesh(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_sync_with_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_laser_route(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_prop_crouch_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_sting(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_play_sting(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_stop_sting(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_sleep(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_can_save(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_mega_height(int32 &,int32 *);
+mcodeFunctionReturnCodes EMPTY_REUSABLE_SLOT_3(int32 &,int32 *);
+mcodeFunctionReturnCodes EMPTY_REUSABLE_SLOT_4(int32 &,int32 *);
+mcodeFunctionReturnCodes EMPTY_REUSABLE_SLOT_5(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_sfx(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_wait_for_button(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_as_player(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_lock_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_unlock_y(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_current_location(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_face_camera(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_interact_distance(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_display_objects_lvar(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_custom_mega_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_get_list_result(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_set_mood(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_override_idles_on(int32 &,int32 *);
+mcodeFunctionReturnCodes speak_override_idles_off(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_add_icon_combo(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_remove_icon_combo(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_loop_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_player_standing_still(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_feet_to_pan(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_set_override_pose(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_cancel_override_pose(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_actor_file(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_mesh(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_texture(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_palette(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_animation(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_wandering_custom_prop_interact_with_pan(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_inventory_active(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_start_dice_game(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_follow_mega(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_dreamy_extras(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_radial_interact(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_interact_link_floors(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shutdown_inventory(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_hard_load_generic_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_hard_load_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_hard_load_mesh(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_close_map(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_shadow(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_preload_remote_custom_anim(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_is_actor_relative(int32 &,int32 *);
+mcodeFunctionReturnCodes fn_missing_routine(int32 &,int32 *);
+
+
+#define STUB_MCODE_FUNCTION(stub_name) mcodeFunctionReturnCodes stub_name(int32 &, int32 *) { warning("%s not implemented", #stub_name); return IR_CONT; }
+
+STUB_MCODE_FUNCTION(EMPTY_REUSABLE_SLOT_3)
+STUB_MCODE_FUNCTION(EMPTY_REUSABLE_SLOT_4)
+STUB_MCODE_FUNCTION(EMPTY_REUSABLE_SLOT_5)
+STUB_MCODE_FUNCTION(speak_set_mood)
+STUB_MCODE_FUNCTION(speak_override_idles_on)
+STUB_MCODE_FUNCTION(speak_override_idles_off)
+STUB_MCODE_FUNCTION(fn_add_icon_combo)
+STUB_MCODE_FUNCTION(fn_remove_icon_combo)
+STUB_MCODE_FUNCTION(fn_loop_custom_anim)
+STUB_MCODE_FUNCTION(fn_wandering_custom_prop_interact_with_pan)
+STUB_MCODE_FUNCTION(fn_start_dice_game)
+STUB_MCODE_FUNCTION(fn_follow_mega)
+STUB_MCODE_FUNCTION(fn_dreamy_extras)
+STUB_MCODE_FUNCTION(fn_interact_link_floors)
+STUB_MCODE_FUNCTION(fn_close_map)
+STUB_MCODE_FUNCTION(fn_preload_remote_custom_anim)
+
+
+mcodeFunctionReturnCodes (*McodeTableED[NO_API_ROUTINES_ELDORADO])(int32 &,int32 *) =
+{	fn_set_weapon,
+	fn_set_custom_button_operated_door,
+	fn_set_cad_lock_status,
+	fn_get_cad_state_flag,
+	fn_create_mega,
+	fn_shut_down_object,
+	fn_prop_animate,
+	fn_set_voxel_image_path,
+	fn_init_from_nico_file,
+	fn_init_from_marker_file,
+	fn_context_chosen_logic,
+	fn_tiny_route,
+	fn_player,
+	fn_pause,
+	fn_face_coord,
+	fn_face_object,
+	fn_play_generic_anim,
+	fn_set_player_can_interact,
+	fn_set_player_cannot_interact,
+	fn_generic_prop_interact,
+	fn_custom_prop_interact,
+	fn_register_for_event,
+	fn_unregister_for_event,
+	fn_register_object_for_event,
+	fn_unregister_object_for_event,
+	fn_post_event,
+	fn_post_future_event,
+	fn_post_repeating_event,
+	fn_post_named_event_to_object,
+	fn_register_for_line_of_sight,
+	fn_unregister_for_line_of_sight,
+	fn_register_object_for_line_of_sight,
+	fn_unregister_object_for_line_of_sight,
+	fn_can_see,
+	fn_can_object_see,
+	fn_call_socket,
+	fn_prop_set_to_last_frame,
+	fn_prop_set_to_first_frame,
+	fn_prop_near_a_mega,
+	socket_force_new_logic,
+	fn_set_mega_field_of_view,
+	fn_add_inventory_item,
+	fn_remove_inventory_item,
+	fn_is_carrying,
+	fn_reset_player,
+	fn_speak,
+	fn_request_speech,
+	fn_add_talker,
+	fn_issue_speech_request,
+	fn_confirm_requests,
+	fn_anon_speech_invite,
+	fn_converse,
+	speak_object_face_object,
+	speak_play_generic_anim,
+	speak_wait_for_everyone,
+	fn_is_holding,
+	fn_drop,
+	fn_item_held,
+	fn_set_to_last_frame_generic_anim,
+	fn_play_common_xa_music,
+	fn_pass_flag_to_engine,
+	fn_easy_play_generic_anim,
+	fn_teleport,
+	fn_play_custom_anim,
+	fn_get_pan_from_nico,
+	fn_teleport_to_nico,
+	fn_are_we_on_this_floor,
+	fn_is_object_on_our_floor,
+	fn_is_object_on_screen,
+	fn_set_custom,
+	fn_message,
+	fn_clear_all_events,
+	fn_check_event_waiting,
+	fn_event_check_last_sender,
+	fn_get_last_event_sender_id,
+	fn_near,
+	fn_easy_play_custom_anim,
+	fn_snap_face_object,
+	fn_teleport_z,
+	fn_on_screen,
+	fn_hold_if_off_screen,
+	fn_mega_interacts,
+	fn_restart_object,
+	fn_object_near_nico,
+	fn_teleport_y_to_id,
+	fn_call_socket_id,
+	fn_route_to_nico,
+	fn_set_watch,
+	fn_kill_me,
+	fn_kill_object,
+	fn_set_to_first_frame_custom_anim,
+	fn_set_to_last_frame_custom_anim,
+	fn_shut_down_event_processing,
+	fn_three_sixty_interact,
+	fn_route_to_marker,
+	fn_play_common_fx,
+	fn_play_mission_fx,
+	fn_add_icon_to_icon_list,
+	fn_remove_icon_from_icon_list,
+	fn_breath,
+	fn_destroy_icon_list,
+	fn_new_script,
+	fn_random,
+	fn_change_session,
+	fn_is_there_interact_object,
+	fn_get_interact_object_id,
+	fn_is_object_interact_object,
+	speak_chosen,
+	speak_user_chooser,
+	speak_add_chooser_icon,
+	fn_chi,
+	speak_menu_still_active,
+	speak_menu_choices_remain,
+	speak_close_menu,
+	speak_new_menu,
+	speak_end_conversation,
+	speak_end_menu,
+	speak_add_special_chooser_icon,
+	fn_floor_and_floor_camera_linked,
+	fn_is_object_on_this_floor,
+	fn_get_objects_lvar_value,
+	fn_mega_generic_interact,
+	fn_set_objects_lvar_value,
+	fn_set_object_sight_range,
+	fn_set_object_sight_height,
+	fn_is_registered_for_event,
+	fn_is_object_registered_for_event,
+	fn_sound_heard_this,
+	fn_can_see_in_dark,
+	fn_mega_never_in_shadow,
+	fn_message_var,
+	fn_no_logic,
+	fn_gosub,
+	fn_set_custom_simple_animator,
+	fn_sharp_route,
+	fn_test_prop_anim,
+	fn_post_named_event_to_object_id,
+	fn_set_custom_auto_door,
+	fn_switch_to_manual_camera,
+	fn_cancel_manual_camera,
+	fn_carrying_how_many,
+	fn_reverse_generic_anim,
+	fn_register_for_auto_interaction,
+	fn_sound_set_hearing_sensitivity,
+	fn_suspend_events,
+	fn_unsuspend_events,
+	fn_sound_heard_something,
+	fn_prime_player_history,
+	fn_inherit_prop_anim_height,
+	fn_start_chi_following,
+	fn_record_player_interaction,
+	fn_snap_to_nico_y,
+	fn_inherit_prop_anim_height_id,
+	fn_route_to_custom_prop_interact,
+	fn_route_to_generic_prop_interact,
+	fn_fetch_chi_mode,
+	fn_set_interacting,
+	fn_clear_interacting,
+	fx_widescreen,
+	fn_line_of_sight_suspend,
+	fn_line_of_sight_unsuspend,
+	fn_check_for_nico,
+	fn_apply_anim_y,
+	fn_line_of_sight_now,
+	fn_play_sfx,
+	fn_stop_sfx,
+	fn_set_to_first_frame_generic_anim,
+	fn_easy_play_generic_anim_with_pan,
+	speak_set_custom,
+	speak_play_custom_anim,
+	fn_check_for_chi,
+	fn_wait_for_chi,
+	fn_send_chi_to_this_object,
+	fn_set_ids_lvar_value,
+	fn_teleport_to_nico_y,
+	fn_is_id_the_player,
+	fn_set_to_exlusive_coords,
+	fn_chi_wait_for_player_to_move,
+	fn_get_objects_x,
+	fn_get_objects_y,
+	fn_get_objects_z,
+	fn_are_we_on_screen,
+	fn_reset_icon_list,
+	fn_get_speech_status,
+	fn_interact_choose,
+	fn_is_mega_within_area,
+	fn_end_mission,
+	fn_route_to_near_mega,
+	fn_stop_chi_following,
+	fn_set_pose,
+	fn_is_crouching,
+	fn_push_player_status,
+	fn_pop_player_status,
+	fn_post_third_party_speech,
+	fn_fast_face_object,
+	fn_object_rerun_logic_context,
+	fn_interact_near_mega,
+	fn_am_i_player,
+	fn_start_player_interaction,
+	fn_start_conveyor,
+	fn_stop_conveyor,
+	fn_interact_with_id,
+	fn_face_nicos_pan,
+	fn_unregister_for_auto_interaction,
+	fn_register_chi,
+	fn_add_y,
+	fn_play_sfx_xyz,
+	fn_register_stairway,
+	fn_reverse_custom_anim,
+	fn_trace,
+	fn_sound_new_entry,
+	fn_sound_remove_entry,
+	fn_sound_simulate,
+	fn_set_manual_interact_object,
+	fn_cancel_manual_interact_object,
+	fn_set_object_type,
+	fn_register_ladder,
+	fn_play_movie,
+	fn_is_an_object_crouching,
+	fn_align_with_floor,
+	fn_play_sfx_offset,
+	fn_play_sfx_time,
+	fn_set_player_pose,
+	fn_kill_conversations,
+	fn_is_player_running,
+	fn_is_player_walking,
+	fn_set_anim_speed,
+	fn_push_coords,
+	fn_pop_coords,
+	fn_fast_face_coord,
+	fn_sound_fast_face,
+	fn_send_chi_to_named_object,
+	fx_brighten_to,
+	fx_brighten_from,
+	fx_narrow_screen,
+	fn_sound_route_to_near,
+	fn_sound_suspend,
+	fn_sound_unsuspend,
+	fn_wandering_custom_prop_interact,
+	fn_wandering_generic_prop_interact,
+	fn_set_texture,
+	fn_set_palette,
+	fn_quick_restart,
+	fx_generic_fade,
+	fx_darken_to,
+	fx_darken_from,
+	fx_fade_to,
+	fx_fade_from,
+	fx_blend,
+	fn_speech_colour,
+	fn_is_current_camera,
+	fn_is_mega_near_mega,
+	fn_easy_play_custom_anim_with_pan,
+	fn_shadows_on,
+	fn_shadows_off,
+	fn_set_neck_bone,
+	fn_set_neck_vector,
+	speak_set_neck_vector,
+	fn_simple_look,
+	speak_simple_look,
+	fn_panless_teleport_to_nico,
+	fn_set_dynamic_light,
+	speak_set_dynamic_light,
+	fn_sharp_route_to_near_mega,
+	fn_spectre_route_to_mega,
+	fn_set_shade_percentage,
+	fn_can_hear_players_feet,
+	fn_set_screen_offset,
+	fn_shake_screen,
+	fn_do_not_disturb,
+	fn_has_mega_our_height,
+	fn_prime_custom_anim,
+	fn_preload_basics,
+	fn_activate_timer,
+	fn_stop_timer,
+	fn_play_sfx_special,
+	fn_set_default_footstep_sfx,
+	fn_set_floor_footstep_sfx,
+	fn_set_footstep_weight,
+	fn_set_special_footstep,
+	speak_reverse_custom_anim,
+	speak_preload_custom_anim,
+	fn_play_sfx_offset_time,
+	fn_activate_stair_or_ladder,
+	fn_deactivate_stair_or_ladder,
+	fn_set_half_character_width,
+	fn_set_interact_look_height,
+	fn_set_visible,
+	fn_set_object_visible,
+	fn_calibrate_chi,
+	fn_set_to_dead,
+	fn_sound_link_floors,
+	fn_set_voice_over_colour,
+	fn_default_voice_over_colour,
+	fn_set_camera_hold,
+	fn_set_mega_wait_for_player,
+	fn_set_mega_off_camera_hold,
+	fn_set_mega_slice_hold,
+	fn_set_mesh,
+	fn_sync_with_mega,
+	fn_laser_route,
+	fn_prop_crouch_interact,
+	fn_preload_sting,
+	fn_play_sting,
+	fn_stop_sting,
+	fn_set_sleep,
+	fn_can_save,
+	fn_set_mega_height,
+	EMPTY_REUSABLE_SLOT_3,
+	EMPTY_REUSABLE_SLOT_4,
+	EMPTY_REUSABLE_SLOT_5,
+	fn_set_sfx,
+	fn_wait_for_button,
+	fn_set_as_player,
+	fn_lock_y,
+	fn_unlock_y,
+	fn_is_current_location,
+	fn_face_camera,
+	fn_set_interact_distance,
+	fn_display_objects_lvar,
+	fn_preload_custom_mega_anim,
+	fn_get_list_result,
+	speak_set_mood,
+	speak_override_idles_on,
+	speak_override_idles_off,
+	fn_add_icon_combo,
+	fn_remove_icon_combo,
+	fn_loop_custom_anim,
+	fn_is_player_standing_still,
+	fn_set_feet_to_pan,
+	fn_set_override_pose,
+	fn_cancel_override_pose,
+	fn_preload_actor_file,
+	fn_preload_mesh,
+	fn_preload_texture,
+	fn_preload_palette,
+	fn_preload_animation,
+	fn_wandering_custom_prop_interact_with_pan,
+	fn_inventory_active,
+	fn_start_dice_game,
+	fn_follow_mega,
+	fn_dreamy_extras,
+	fn_radial_interact,
+	fn_interact_link_floors,
+	fn_shutdown_inventory,
+	fn_hard_load_generic_anim,
+	fn_hard_load_custom_anim,
+	fn_hard_load_mesh,
+	fn_close_map,
+	fn_shadow,
+	fn_preload_remote_custom_anim,
+	fn_is_actor_relative,
+	fn_missing_routine,
+	fn_missing_routine,
+	fn_missing_routine,
+	fn_missing_routine,
+	fn_missing_routine,
+};
+
+} // End of namespace ICB
diff --git a/engines/icb/fn_routines_icb.cpp b/engines/icb/fn_routines_icb.cpp
index 603a33d77ef..c559c45a504 100644
--- a/engines/icb/fn_routines_icb.cpp
+++ b/engines/icb/fn_routines_icb.cpp
@@ -444,7 +444,7 @@ mcodeFunctionReturnCodes fn_activate_sparkle(int32 &, int32 *);
 mcodeFunctionReturnCodes fn_deactivate_sparkle(int32 &, int32 *);
 mcodeFunctionReturnCodes fn_missing_routine(int32 &, int32 *);
 
-mcodeFunctionReturnCodes (*McodeTable[NO_API_ROUTINES])(int32 &, int32 *) = {
+mcodeFunctionReturnCodes (*McodeTableICB[NO_API_ROUTINES_ICB])(int32 &, int32 *) = {
 	fn_test,
 	fn_create_mega,
 	fn_shut_down_object,
diff --git a/engines/icb/module.mk b/engines/icb/module.mk
index b8d8bd0b981..311b1af31a5 100644
--- a/engines/icb/module.mk
+++ b/engines/icb/module.mk
@@ -32,6 +32,7 @@ MODULE_OBJS := \
 	fn_interact.o \
 	fn_movie_pc.o \
 	fn_remora_functions.o \
+	fn_routines_ed.o \
 	fn_routines_icb.o \
 	fn_sound.o \
 	fn_sting_pc.o \
diff --git a/engines/icb/session.cpp b/engines/icb/session.cpp
index c8282fd7375..839add1b079 100644
--- a/engines/icb/session.cpp
+++ b/engines/icb/session.cpp
@@ -386,8 +386,8 @@ void _game_session::___init(const char *mission, const char *new_session_name) {
 
 void _game_session::Script_version_check() {
 	uint32 version = LinkedDataObject::GetHeaderVersion(scripts);
-	if (FN_ROUTINES_DATA_VERSION != version) {
-		warning("SCRIPTS AND ENGINE ARE NOT SAME VERSION: %d", version);
+	if (FN_ROUTINES_DATA_VERSION_ICB != version && FN_ROUTINES_DATA_VERSION_ELDORADO != version) {
+		error("SCRIPTS AND ENGINE ARE NOT SAME VERSION: %d", version);
 	}
 }
 




More information about the Scummvm-git-logs mailing list