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

sev- sev at scummvm.org
Tue Aug 30 23:27:37 CEST 2016


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

Summary:
7ac4bddfa9 HE: Add Moonbase Net dummy
4df16d6e12 HE: Add Moonbase logic ops stubs
aafc1ba145 HE: Add net_defines.h and a few stubs updates
d7377c43ed HE: Add getStringFromArray()
75c48fd195 HE: Replacing some Logic stubs with Net stubs
6cfcf1f179 HE: Add setupStringArrayFromString()
3c64e4958d SCUMM HE: Add some Moonbase logic
9de6746814 SCUMM HE: Replace strcpy with strlcpy in array setup
0ffca9c03a SCUMM HE: Fix some variable naming
da35b451d6 SCUMM HE: Add more LogicHEmoonbase kludges
0f82e2acdc SCUMM HE: Add two more kludges
c997612bfc SCUMM HE: Add a few more logic kludges
e70522e506 SCUMM HE: Add session-related kludges
e33c401f78 SCUMM HE: Add session quering-related kludges
5d9a3e17b2 SCUMM HE: Add provider-related kludges
45947f6ccc SCUMM HE: Add init-related kludges
dd68bf0f18 SCUMM HE: Add remote scripts-related kludges


Commit: 7ac4bddfa92b01df87437c5e25c78488b5d7f628
    https://github.com/scummvm/scummvm/commit/7ac4bddfa92b01df87437c5e25c78488b5d7f628
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Add Moonbase Net dummy

Changed paths:
  A engines/scumm/he/moonbase/net_main.cpp
  A engines/scumm/he/moonbase/net_main.h
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/moonbase.cpp
    engines/scumm/he/moonbase/moonbase.h
    engines/scumm/module.mk



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 1b596fc..150a57e 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -24,6 +24,9 @@
 #include "scumm/he/logic_he.h"
 #include "scumm/he/moonbase/moonbase.h"
 #include "scumm/he/moonbase/ai_main.h"
+#ifdef USE_SDL_NET
+#include "scumm/he/moonbase/net_main.h"
+#endif
 
 namespace Scumm {
 
diff --git a/engines/scumm/he/moonbase/moonbase.cpp b/engines/scumm/he/moonbase/moonbase.cpp
index 15ababd..941f32d 100644
--- a/engines/scumm/he/moonbase/moonbase.cpp
+++ b/engines/scumm/he/moonbase/moonbase.cpp
@@ -23,6 +23,9 @@
 #include "scumm/he/intern_he.h"
 #include "scumm/he/moonbase/moonbase.h"
 #include "scumm/he/moonbase/ai_main.h"
+#ifdef USE_SDL_NET
+#include "scumm/he/moonbase/net_main.h"
+#endif
 
 namespace Scumm {
 
@@ -30,10 +33,16 @@ Moonbase::Moonbase(ScummEngine_v100he *vm) : _vm(vm) {
 	initFOW();
 
 	_ai = new AI(_vm);
+#ifdef USE_SDL_NET
+	_net = new Net(_vm);
+#endif
 }
 
 Moonbase::~Moonbase() {
 	delete _ai;
+#ifdef USE_SDL_NET
+	delete _net;
+#endif
 }
 
 int Moonbase::readFromArray(int array, int y, int x) {
diff --git a/engines/scumm/he/moonbase/moonbase.h b/engines/scumm/he/moonbase/moonbase.h
index 71c03cb..f3399ef 100644
--- a/engines/scumm/he/moonbase/moonbase.h
+++ b/engines/scumm/he/moonbase/moonbase.h
@@ -30,6 +30,7 @@
 namespace Scumm {
 
 class AI;
+class Net;
 
 class Moonbase {
 public:
@@ -71,6 +72,9 @@ public:
 	uint32 _fowSentinelConditionBits;
 
 	AI *_ai;
+#ifdef USE_SDL_NET
+	Net *_net;
+#endif
 
 private:
 	ScummEngine_v100he *_vm;
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
new file mode 100644
index 0000000..554d0b0
--- /dev/null
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -0,0 +1,33 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "scumm/he/intern_he.h"
+#include "scumm/he/moonbase/moonbase.h"
+#include "scumm/he/moonbase/net_main.h"
+
+namespace Scumm {
+
+Net::Net(ScummEngine_v100he *vm) : _vm(vm) {
+	//some defaults for fields
+}
+
+} // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
new file mode 100644
index 0000000..0a3acc1
--- /dev/null
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -0,0 +1,52 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef SCUMM_HE_MOONBASE_NET_MAIN_H
+#define SCUMM_HE_MOONBASE_NET_MAIN_H
+
+namespace Scumm {
+
+class ScummEngine_v100he;
+
+//this is a dummy based on ai_main.h Scumm::AI
+
+class Net {
+public:
+	Net(ScummEngine_v100he *vm);
+
+private:
+
+public:
+	//getters
+
+private:
+	//mostly getters
+
+public:
+	//fields
+
+	ScummEngine_v100he *_vm;
+};
+
+} // End of namespace Scumm
+
+#endif
diff --git a/engines/scumm/module.mk b/engines/scumm/module.mk
index 85ff1aa..fee61ec 100644
--- a/engines/scumm/module.mk
+++ b/engines/scumm/module.mk
@@ -150,6 +150,11 @@ MODULE_OBJS += \
 	he/moonbase/distortion.o \
 	he/moonbase/moonbase.o \
 	he/moonbase/moonbase_fow.o
+
+ifdef USE_SDL_NET
+MODULE_OBJS += \
+	he/moonbase/net_main.o
+endif
 endif
 
 # This module can be built as a plugin


Commit: 4df16d6e1255e627665294bf60da0fc3d3e5d9a4
    https://github.com/scummvm/scummvm/commit/4df16d6e1255e627665294bf60da0fc3d3e5d9a4
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Add Moonbase logic ops stubs

Most of them return int, yet there are a few which don't return
anything. Stubs print a warning and return 1 (or nothing).

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 150a57e..89e1e95 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -57,6 +57,45 @@ private:
 	void op_ai_set_type(int op, int numArgs, int32 *args);
 	void op_ai_clean_up(int op, int numArgs, int32 *args);
 
+#ifdef USE_SDL_NET
+	void op_net_remote_start_script(int op, int numArgs, int32 *args);
+	void op_net_remote_send_array(int op, int numArgs, int32 *args);
+	int op_net_remote_start_function(int op, int numArgs, int32 *args);
+	int op_net_do_init_all(int op, int numArgs, int32 *args);
+	int op_net_do_init_provider(int op, int numArgs, int32 *args);
+	int op_net_do_init_session(int op, int numArgs, int32 *args);
+	int op_net_do_init_user(int op, int numArgs, int32 *args);
+	int op_net_query_providers(int op, int numArgs, int32 *args);
+	int op_net_get_provider_name(int op, int numArgs, int32 *args);
+	int op_net_set_provider(int op, int numArgs, int32 *args);
+	int op_net_close_provider(int op, int numArgs, int32 *args);
+	int op_net_start_query_sessions(int op, int numArgs, int32 *args);
+	int op_net_update_query_sessions(int op, int numArgs, int32 *args);
+	int op_net_stop_query_sessions(int op, int numArgs, int32 *args);
+	int op_net_query_sessions(int op, int numArgs, int32 *args);
+	int op_net_get_session_name(int op, int numArgs, int32 *args);
+	int op_net_get_session_player_count(int op, int numArgs, int32 *args);
+	int op_net_destroy_player(int op, int numArgs, int32 *args);
+	int op_net_get_player_long_name(int op, int numArgs, int32 *args);
+	int op_net_get_player_short_name(int op, int numArgs, int32 *args);
+	int op_net_create_session(int op, int numArgs, int32 *args);
+	int op_net_join_session(int op, int numArgs, int32 *args);
+	int op_net_end_session(int op, int numArgs, int32 *args);
+	int op_net_disable_session_player_join(int op, int numArgs, int32 *args);
+	int op_net_enable_session_player_join(int op, int numArgs, int32 *args);
+	int op_net_set_ai_player_count(int op, int numArgs, int32 *args);
+	int op_net_add_user(int op, int numArgs, int32 *args);
+	int op_net_remove_user(int op, int numArgs, int32 *args);
+	int op_net_who_sent_this(int op, int numArgs, int32 *args);
+	int op_net_who_am_i(int op, int numArgs, int32 *args);
+	int op_net_set_provider_by_name(int op, int numArgs, int32 *args);
+	void op_net_set_fake_latency(int op, int numArgs, int32 *args);
+	int op_net_get_host_name(int op, int numArgs, int32 *args);
+	int op_net_get_ip_from_name(int op, int numArgs, int32 *args);
+	int op_net_host_tcpip_game(int op, int numArgs, int32 *args);
+	int op_net_join_tcpip_game(int op, int numArgs, int32 *args);
+#endif
+
 private:
 	ScummEngine_v100he *_vm1;
 };
@@ -110,6 +149,7 @@ int LogicHEmoonbase::versionID() {
 #define OP_NET_HOST_TCPIP_GAME				1517
 #define OP_NET_JOIN_TCPIP_GAME				1518
 #define OP_NET_SET_FAKE_LAG					1555
+#define OP_NET_SET_FAKE_LATENCY				1555 /* SET_FAKE_LAG is a valid alias for backwards compatibility */
 #define OP_NET_GET_HOST_NAME				1556
 #define OP_NET_GET_IP_FROM_NAME				1557
 #define OP_NET_GET_SESSION_PLAYER_COUNT		1558
@@ -160,6 +200,86 @@ int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) {
 		op_ai_clean_up(op, numArgs, args);
 		break;
 
+#ifdef USE_SDL_NET
+	case OP_NET_REMOTE_START_SCRIPT:
+		op_net_remote_start_script(op, numArgs, args);
+		break;
+	case OP_NET_REMOTE_SEND_ARRAY:
+		op_net_remote_send_array(op, numArgs, args);
+		break;
+	case OP_NET_REMOTE_START_FUNCTION:
+		return op_net_remote_start_function(op, numArgs, args);
+	case OP_NET_DO_INIT_ALL:
+		return op_net_do_init_all(op, numArgs, args);
+	case OP_NET_DO_INIT_PROVIDER:
+		return op_net_do_init_provider(op, numArgs, args);
+	case OP_NET_DO_INIT_SESSION:
+		return op_net_do_init_session(op, numArgs, args);
+	case OP_NET_DO_INIT_USER:
+		return op_net_do_init_user(op, numArgs, args);
+	case OP_NET_QUERY_PROVIDERS:
+		return op_net_query_providers(op, numArgs, args);
+	case OP_NET_GET_PROVIDER_NAME:
+		return op_net_get_provider_name(op, numArgs, args);
+	case OP_NET_SET_PROVIDER:
+		return op_net_set_provider(op, numArgs, args);
+	case OP_NET_CLOSE_PROVIDER:
+		return op_net_close_provider(op, numArgs, args);
+	case OP_NET_START_QUERY_SESSIONS:
+		return op_net_start_query_sessions(op, numArgs, args);
+	case OP_NET_UPDATE_QUERY_SESSIONS:
+		return op_net_update_query_sessions(op, numArgs, args);
+	case OP_NET_STOP_QUERY_SESSIONS:
+		return op_net_stop_query_sessions(op, numArgs, args);
+	case OP_NET_QUERY_SESSIONS:
+		return op_net_query_sessions(op, numArgs, args);
+	case OP_NET_GET_SESSION_NAME:
+		return op_net_get_session_name(op, numArgs, args);
+	case OP_NET_GET_SESSION_PLAYER_COUNT:
+		return op_net_get_session_player_count(op, numArgs, args);
+	case OP_NET_DESTROY_PLAYER:
+		return op_net_destroy_player(op, numArgs, args);
+#if 1 // 12/2/99 BPT
+	case OP_NET_GET_PLAYER_LONG_NAME:
+		return op_net_get_player_long_name(op, numArgs, args);
+	case OP_NET_GET_PLAYER_SHORT_NAME:
+		return op_net_get_player_short_name(op, numArgs, args);
+#endif
+	case OP_NET_CREATE_SESSION:
+		return op_net_create_session(op, numArgs, args);
+	case OP_NET_JOIN_SESSION:
+		return op_net_join_session(op, numArgs, args);
+	case OP_NET_END_SESSION:
+		return op_net_end_session(op, numArgs, args);
+	case OP_NET_DISABLE_SESSION_PLAYER_JOIN:
+		return op_net_disable_session_player_join(op, numArgs, args);
+	case OP_NET_ENABLE_SESSION_PLAYER_JOIN:
+		return op_net_enable_session_player_join(op, numArgs, args);
+	case OP_NET_SET_AI_PLAYER_COUNT:
+		return op_net_set_ai_player_count(op, numArgs, args);
+	case OP_NET_ADD_USER:
+		return op_net_add_user(op, numArgs, args);
+	case OP_NET_REMOVE_USER:
+		return op_net_remove_user(op, numArgs, args);
+	case OP_NET_WHO_SENT_THIS:
+		return op_net_who_sent_this(op, numArgs, args);
+	case OP_NET_WHO_AM_I:
+		return op_net_who_am_i(op, numArgs, args);
+	case OP_NET_SET_PROVIDER_BY_NAME:
+		return op_net_set_provider_by_name(op, numArgs, args);
+	case OP_NET_SET_FAKE_LATENCY: //  SET_FAKE_LAG is a valid alias for backwards compatibility
+		op_net_set_fake_latency(op, numArgs, args);
+		break;
+	case OP_NET_GET_HOST_NAME:
+		return op_net_get_host_name(op, numArgs, args);
+	case OP_NET_GET_IP_FROM_NAME:
+		return op_net_get_ip_from_name(op, numArgs, args);
+	case OP_NET_HOST_TCPIP_GAME:
+		return op_net_host_tcpip_game(op, numArgs, args);
+	case OP_NET_JOIN_TCPIP_GAME:
+		return op_net_join_tcpip_game(op, numArgs, args);
+#endif
+
 	default:
 		LogicHE::dispatch(op, numArgs, args);
 	}
@@ -251,6 +371,153 @@ void LogicHEmoonbase::op_ai_clean_up(int op, int numArgs, int32 *args) {
 	_vm1->_moonbase->_ai->cleanUpAI();
 }
 
+#ifdef USE_SDL_NET
+void LogicHEmoonbase::op_net_remote_start_script(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_remote_start_script()");
+}
+void LogicHEmoonbase::op_net_remote_send_array(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_remote_send_array()");
+}
+int LogicHEmoonbase::op_net_remote_start_function(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_remote_start_function()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_do_init_all(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_do_init_all()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_do_init_provider(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_do_init_provider()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_do_init_session(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_do_init_session()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_do_init_user(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_do_init_user()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_query_providers(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_query_providers()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_provider_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_provider_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_set_provider(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_set_provider()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_close_provider(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_close_provider()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_start_query_sessions(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_start_query_sessions()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_update_query_sessions(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_update_query_sessions()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_stop_query_sessions(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_stop_query_sessions()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_query_sessions(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_query_sessions()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_session_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_session_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_session_player_count(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_session_player_count()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_destroy_player(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_destroy_player()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_player_long_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_player_long_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_player_short_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_player_short_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_create_session(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_create_session()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_join_session(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_join_session()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_end_session(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_end_session()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_disable_session_player_join(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_disable_session_player_join()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_enable_session_player_join(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_enable_session_player_join()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_set_ai_player_count(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_set_ai_player_count()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_add_user(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_add_user()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_remove_user(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_remove_user()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_who_sent_this(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_who_sent_this()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_who_am_i(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_who_am_i()");
+	return 1;
+}
+
+int LogicHEmoonbase::op_net_set_provider_by_name(int op, int numArgs, int32 *args) {
+	// Parameter 1 is the provider name and 
+	// Parameter 2 is the (optional) tcp/ip address
+	warning("STUB: op_net_set_provider_by_name()");
+	return 1;
+}
+void LogicHEmoonbase::op_net_set_fake_latency(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_set_fake_latency()");
+}
+int LogicHEmoonbase::op_net_get_host_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_host_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_get_ip_from_name()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_host_tcpip_game()");
+	return 1;
+}
+int LogicHEmoonbase::op_net_join_tcpip_game(int op, int numArgs, int32 *args) {
+	warning("STUB: op_net_join_tcpip_game()");
+	return 1;
+}
+#endif
+
 LogicHE *makeLogicHEmoonbase(ScummEngine_v100he *vm) {
 	return new LogicHEmoonbase(vm);
 }


Commit: aafc1ba145149b063c3c4f96c0f666eb98b522d5
    https://github.com/scummvm/scummvm/commit/aafc1ba145149b063c3c4f96c0f666eb98b522d5
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Add net_defines.h and a few stubs updates

SPUTM_CStringArrayFromScummString is still has to be implemented to
finish those stubs.

Net now has joinGame() and hostGame(), which are not implemented yet.

Changed paths:
  A engines/scumm/he/moonbase/net_defines.h
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 89e1e95..328d288 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -26,6 +26,7 @@
 #include "scumm/he/moonbase/ai_main.h"
 #ifdef USE_SDL_NET
 #include "scumm/he/moonbase/net_main.h"
+#include "scumm/he/moonbase/net_defines.h"
 #endif
 
 namespace Scumm {
@@ -509,12 +510,24 @@ int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
 	return 1;
 }
 int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_host_tcpip_game()");
-	return 1;
+	char sessionName[MAX_SESSION_NAME];
+	char userName[MAX_PLAYER_NAME];
+
+	// TODO:
+	//SPUTM_CStringArrayFromScummString(args[0], sessionName, sizeof(sessionName));
+	//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
+
+	return _vm1->_moonbase->_net->hostGame(sessionName, userName);
 }
 int LogicHEmoonbase::op_net_join_tcpip_game(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_join_tcpip_game()");
-	return 1;
+	char szIP[MAX_IP_SIZE];
+	char userName[MAX_PLAYER_NAME];
+
+	// TODO:
+	//SPUTM_CStringArrayFromScummString(args[0], szIP, sizeof(szIP));
+	//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
+
+	return _vm1->_moonbase->_net->joinGame(szIP, userName);
 }
 #endif
 
diff --git a/engines/scumm/he/moonbase/net_defines.h b/engines/scumm/he/moonbase/net_defines.h
new file mode 100644
index 0000000..130ca1d
--- /dev/null
+++ b/engines/scumm/he/moonbase/net_defines.h
@@ -0,0 +1,66 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef SCUMM_HE_MOONBASE_NET_DEFINES_H
+#define SCUMM_HE_MOONBASE_NET_DEFINES_H
+
+namespace Scumm {
+
+// pnetwin.h
+
+#define PN_PRIORITY_HIGH							0x00000001
+
+#define PN_SENDTYPE_INDIVIDUAL						1
+#define PN_SENDTYPE_GROUP							2
+#define PN_SENDTYPE_HOST							3
+#define PN_SENDTYPE_ALL								4
+
+#define MAX_GAME_NAME								128				/* Used for the multiplayer networking code */
+#define MAX_PLAYER_NAME								128				/* Used for the multiplayer networking code */
+#define MAX_PROVIDER_NAME							128
+#define MAX_SESSION_NAME							128
+
+#define MAX_GAMES_POLLED							16
+#define MAX_PROVIDERS								16
+
+#define PACKETTYPE_REMOTESTARTSCRIPT				1
+#define PACKETTYPE_REMOTESTARTSCRIPTRETURN			2
+#define PACKETTYPE_REMOTESTARTSCRIPTRESULT			3
+#define PACKETTYPE_REMOTESENDSCUMMARRAY				4
+
+const int SESSION_ERROR = 0;
+const int USER_CREATED_SESSION = 1;
+const int USER_JOINED_SESSION = 2;
+
+const int TCPIP_PROVIDER = -1;
+const int NO_PROVIDER = -2;
+
+const int MAX_PACKET_SIZE = 4096;	// bytes
+const int MAX_HOSTNAME_SIZE = 256;
+const int MAX_IP_SIZE = 32;
+const char LOCAL_HOST[] = "127.0.0.1";	//localhost
+
+#define NULL_IP "";						//no IP address (causes enumsessions to search local subnet)
+
+} // End of namespace Scumm
+
+#endif
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 554d0b0..dc95303 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -30,4 +30,14 @@ Net::Net(ScummEngine_v100he *vm) : _vm(vm) {
 	//some defaults for fields
 }
 
+int Net::hostGame(char *sessionName, char *userName) {
+	warning("STUB: op_net_host_tcpip_game()"); // PN_HostTCPIPGame
+	return 0;
+}
+
+int Net::joinGame(char *IP, char *userName) {
+	warning("STUB: Net::joinGame()"); // PN_JoinTCPIPGame
+	return 0;
+}
+
 } // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 0a3acc1..4a7f898 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -33,6 +33,9 @@ class Net {
 public:
 	Net(ScummEngine_v100he *vm);
 
+	int hostGame(char *sessionName, char *userName);
+	int joinGame(char *IP, char *userName);
+
 private:
 
 public:


Commit: d7377c43edb818580213b7da1e78b68647065e45
    https://github.com/scummvm/scummvm/commit/d7377c43edb818580213b7da1e78b68647065e45
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Add getStringFromArray()

It's ARRAY_GetStringFromArray(), which was used in Moonbase networking
code as SPUTM_CStringArrayFromScummString().

Changed paths:
    engines/scumm/he/intern_he.h
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/script_v72he.cpp



diff --git a/engines/scumm/he/intern_he.h b/engines/scumm/he/intern_he.h
index c6abac3..95f6f2c 100644
--- a/engines/scumm/he/intern_he.h
+++ b/engines/scumm/he/intern_he.h
@@ -288,6 +288,7 @@ public:
 
 	virtual byte *getStringAddress(ResId idx);
 	virtual int setupStringArray(int size);
+	void getStringFromArray(int arrayNumber, char *buffer, int maxLength);
 
 protected:
 	virtual void setupOpcodes();
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 328d288..9f86147 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -509,23 +509,23 @@ int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_get_ip_from_name()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
 	char sessionName[MAX_SESSION_NAME];
 	char userName[MAX_PLAYER_NAME];
 
-	// TODO:
-	//SPUTM_CStringArrayFromScummString(args[0], sessionName, sizeof(sessionName));
-	//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
+	_vm1->getStringFromArray(args[0], sessionName, sizeof(sessionName));
+	_vm1->getStringFromArray(args[1], userName, sizeof(userName));
 
 	return _vm1->_moonbase->_net->hostGame(sessionName, userName);
 }
+
 int LogicHEmoonbase::op_net_join_tcpip_game(int op, int numArgs, int32 *args) {
 	char szIP[MAX_IP_SIZE];
 	char userName[MAX_PLAYER_NAME];
 
-	// TODO:
-	//SPUTM_CStringArrayFromScummString(args[0], szIP, sizeof(szIP));
-	//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
+	_vm1->getStringFromArray(args[0], szIP, sizeof(szIP));
+	_vm1->getStringFromArray(args[1], userName, sizeof(userName));
 
 	return _vm1->_moonbase->_net->joinGame(szIP, userName);
 }
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index d32eb76..1926751 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -1484,6 +1484,26 @@ void ScummEngine_v72he::writeFileFromArray(int slot, int32 resID) {
 	}
 }
 
+void ScummEngine_v72he::getStringFromArray(int arrayNumber, char *buffer, int maxLength) {
+	// I'm not really sure it belongs here and not some other version
+	// this is ARRAY_GetStringFromArray() from ARRAYS.cpp of SPUTM
+
+	// this function makes a C-string out of <arrayNumber> contents
+	
+	VAR(0) = arrayNumber; // it was 0 in original code, but I've seen ScummVM Moonbase code which uses VAR_U32_ARRAY_UNK
+
+	int i, ch;
+	for (i = 0; i < maxLength; ++i) {
+		if (!(ch = readArray(0, 0, i))) {
+			break;
+		}
+
+		buffer[i] = ch;
+	}
+
+	buffer[i] = 0;
+}
+
 void ScummEngine_v72he::o72_writeFile() {
 	int32 resID = pop();
 	int slot = pop();


Commit: 75c48fd195e510167d02fdc603411fcee4343b00
    https://github.com/scummvm/scummvm/commit/75c48fd195e510167d02fdc603411fcee4343b00
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Replacing some Logic stubs with Net stubs

Slowly moving kludge switch case contents into ScummVM Logic methods and
thus adding more Net stubs.

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 9f86147..7e77368 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -475,21 +475,23 @@ int LogicHEmoonbase::op_net_set_ai_player_count(int op, int numArgs, int32 *args
 	warning("STUB: op_net_set_ai_player_count()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_add_user(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_add_user()");
-	return 1;
+	char userName[MAX_PLAYER_NAME];
+	_vm1->getStringFromArray(args[0], userName, sizeof(userName));
+	return _vm1->_moonbase->_net->addUser(userName, userName);
 }
+
 int LogicHEmoonbase::op_net_remove_user(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_remove_user()");
-	return 1;
+	return _vm1->_moonbase->_net->removeUser();
 }
+
 int LogicHEmoonbase::op_net_who_sent_this(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_who_sent_this()");
-	return 1;
+	return _vm1->_moonbase->_net->whoSentThis();
 }
+
 int LogicHEmoonbase::op_net_who_am_i(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_who_am_i()");
-	return 1;
+	return _vm1->_moonbase->_net->whoAmI();
 }
 
 int LogicHEmoonbase::op_net_set_provider_by_name(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index dc95303..eb54250 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -31,12 +31,32 @@ Net::Net(ScummEngine_v100he *vm) : _vm(vm) {
 }
 
 int Net::hostGame(char *sessionName, char *userName) {
-	warning("STUB: op_net_host_tcpip_game()"); // PN_HostTCPIPGame
+	warning("STUB: op_net_host_tcpip_game(\"%s\", \"%s\")", sessionName, userName); // PN_HostTCPIPGame
 	return 0;
 }
 
 int Net::joinGame(char *IP, char *userName) {
-	warning("STUB: Net::joinGame()"); // PN_JoinTCPIPGame
+	warning("STUB: Net::joinGame(\"%s\", \"%s\")", IP, userName); // PN_JoinTCPIPGame
+	return 0;
+}
+
+int Net::addUser(char *shortName, char *longName) {
+	warning("STUB: Net::addUser(\"%s\", \"%s\")", shortName, longName); // PN_AddUser
+	return 0;
+}
+
+int Net::removeUser() {
+	warning("STUB: Net::removeUser()"); // PN_RemoveUser
+	return 0;
+}
+
+int Net::whoSentThis() {
+	warning("STUB: Net::whoSentThis()"); // PN_WhoSentThis
+	return 0;
+}
+
+int Net::whoAmI() {
+	warning("STUB: Net::whoAmI()"); // PN_WhoAmI
 	return 0;
 }
 
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 4a7f898..f8c289c 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -35,7 +35,10 @@ public:
 
 	int hostGame(char *sessionName, char *userName);
 	int joinGame(char *IP, char *userName);
-
+	int addUser(char *shortName, char *longName);
+	int removeUser();
+	int whoSentThis();
+	int whoAmI();
 private:
 
 public:


Commit: 6cfcf1f1796c9d3125596666362ce5162fd406ae
    https://github.com/scummvm/scummvm/commit/6cfcf1f1796c9d3125596666362ce5162fd406ae
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
HE: Add setupStringArrayFromString()

It's based on PUI_ScummStringArrayFromCString(), which is used as
SPUTM_ScummStringArrayFromCString() in Moonbase networking code.

Changed paths:
    engines/scumm/he/intern_he.h
    engines/scumm/he/script_v72he.cpp



diff --git a/engines/scumm/he/intern_he.h b/engines/scumm/he/intern_he.h
index 95f6f2c..8d7ed81 100644
--- a/engines/scumm/he/intern_he.h
+++ b/engines/scumm/he/intern_he.h
@@ -288,7 +288,8 @@ public:
 
 	virtual byte *getStringAddress(ResId idx);
 	virtual int setupStringArray(int size);
-	void getStringFromArray(int arrayNumber, char *buffer, int maxLength);
+	virtual int setupStringArrayFromString(char *cStr);
+	virtual void getStringFromArray(int arrayNumber, char *buffer, int maxLength);
 
 protected:
 	virtual void setupOpcodes();
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index 1926751..4385475 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -230,6 +230,23 @@ int ScummEngine_v72he::setupStringArray(int size) {
 	return readVar(0);
 }
 
+int ScummEngine_v72he::setupStringArrayFromString(char *cStr) {
+	// this is PUI_ScummStringArrayFromCString() found in PUSERMAC.cpp
+	// I can see how its done up there in setupStringArray()
+	// yet I'd note that 'SCUMMVAR_user_reserved' var was used instead of 0
+	// and strlen(), not strlen() + 1 was used
+	// plus, this function actually copies the string, not just 'sets up' the array
+
+	writeVar(0, 0);
+
+	int len = strlen(cStr);
+	byte *ptr = defineArray(0, kStringArray, 0, 0, 0, len);
+	if (ptr != nullptr)
+		strcpy((char*)ptr, cStr);
+
+	return readVar(0);
+}
+
 void ScummEngine_v72he::readArrayFromIndexFile() {
 	int num;
 	int a, b, c;


Commit: 3c64e4958dd6920644a568e0ea38e4e7edd43b71
    https://github.com/scummvm/scummvm/commit/3c64e4958dd6920644a568e0ea38e4e7edd43b71
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add some Moonbase logic

Logic for getting host name and IP from name. Net gets more stubs.

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 7e77368..04e694e 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -503,13 +503,28 @@ int LogicHEmoonbase::op_net_set_provider_by_name(int op, int numArgs, int32 *arg
 void LogicHEmoonbase::op_net_set_fake_latency(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_set_fake_latency()");
 }
+
 int LogicHEmoonbase::op_net_get_host_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_host_name()");
-	return 1;
+	char name[MAX_HOSTNAME_SIZE];
+
+	if (_vm1->_moonbase->_net->getHostName(name, MAX_HOSTNAME_SIZE)) { // PN_GetHostName
+		return _vm1->setupStringArrayFromString(name);
+	}
+
+	return 0;
 }
+
 int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_ip_from_name()");
-	return 1;
+	char szName[MAX_HOSTNAME_SIZE];
+	_vm1->getStringFromArray(args[0], szName, sizeof(szName));
+
+	char ip[MAX_IP_SIZE];
+
+	if (_vm1->_moonbase->_net->getIPfromName(ip, MAX_IP_SIZE, szName)) { // PN_GetIPfromName
+		return _vm1->setupStringArrayFromString(ip);
+	}
+
+	return 0;
 }
 
 int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index eb54250..2d92313 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -60,4 +60,14 @@ int Net::whoAmI() {
 	return 0;
 }
 
+bool Net::getHostName(char *hostname, int length) {
+	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
+	return false;
+}
+
+bool Net::getIPfromName(char *ip, int ipLength, char *nameBuffer) {
+	warning("STUB: Net::getIPfromName(\"%s\", %d, \"%s\")", ip, ipLength, nameBuffer); // PN_GetIPfromName
+	return false;
+}
+
 } // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index f8c289c..8b55594 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -39,10 +39,13 @@ public:
 	int removeUser();
 	int whoSentThis();
 	int whoAmI();
+	
 private:
 
 public:
 	//getters
+	bool getHostName(char *hostname, int length);
+	bool getIPfromName(char *ip, int ipLength, char *nameBuffer);
 
 private:
 	//mostly getters


Commit: 9de6746814beefd32dd7fd6e4336a28cfccaaf3b
    https://github.com/scummvm/scummvm/commit/9de6746814beefd32dd7fd6e4336a28cfccaaf3b
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Replace strcpy with strlcpy in array setup

setupStringArrayFromString() now uses Common::strlcpy().

Changed paths:
    engines/scumm/he/script_v72he.cpp



diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index 4385475..c764de7 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -239,10 +239,10 @@ int ScummEngine_v72he::setupStringArrayFromString(char *cStr) {
 
 	writeVar(0, 0);
 
-	int len = strlen(cStr);
+	int len = strlen(cStr) + 1;
 	byte *ptr = defineArray(0, kStringArray, 0, 0, 0, len);
 	if (ptr != nullptr)
-		strcpy((char*)ptr, cStr);
+		Common::strlcpy((char*)ptr, cStr, len);
 
 	return readVar(0);
 }


Commit: 0ffca9c03a8ed84ee319fce367b8227f8488ee7f
    https://github.com/scummvm/scummvm/commit/0ffca9c03a8ed84ee319fce367b8227f8488ee7f
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Fix some variable naming

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 04e694e..9c2145d 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -515,12 +515,12 @@ int LogicHEmoonbase::op_net_get_host_name(int op, int numArgs, int32 *args) {
 }
 
 int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
-	char szName[MAX_HOSTNAME_SIZE];
-	_vm1->getStringFromArray(args[0], szName, sizeof(szName));
+	char name[MAX_HOSTNAME_SIZE];
+	_vm1->getStringFromArray(args[0], name, sizeof(name));
 
 	char ip[MAX_IP_SIZE];
 
-	if (_vm1->_moonbase->_net->getIPfromName(ip, MAX_IP_SIZE, szName)) { // PN_GetIPfromName
+	if (_vm1->_moonbase->_net->getIPfromName(ip, MAX_IP_SIZE, name)) { // PN_GetIPfromName
 		return _vm1->setupStringArrayFromString(ip);
 	}
 
@@ -538,13 +538,13 @@ int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
 }
 
 int LogicHEmoonbase::op_net_join_tcpip_game(int op, int numArgs, int32 *args) {
-	char szIP[MAX_IP_SIZE];
+	char ip[MAX_IP_SIZE];
 	char userName[MAX_PLAYER_NAME];
 
-	_vm1->getStringFromArray(args[0], szIP, sizeof(szIP));
+	_vm1->getStringFromArray(args[0], ip, sizeof(ip));
 	_vm1->getStringFromArray(args[1], userName, sizeof(userName));
 
-	return _vm1->_moonbase->_net->joinGame(szIP, userName);
+	return _vm1->_moonbase->_net->joinGame(ip, userName);
 }
 #endif
 


Commit: da35b451d6b7f5f2289b6991b642ec9852b726f6
    https://github.com/scummvm/scummvm/commit/da35b451d6b7f5f2289b6991b642ec9852b726f6
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add more LogicHEmoonbase kludges

Less stubs there, more stubs in Net.

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 9c2145d..1e18b60 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -455,24 +455,27 @@ int LogicHEmoonbase::op_net_create_session(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_create_session()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_join_session(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_join_session()");
-	return 1;
+	return _vm1->_moonbase->_net->joinSession(args[0] - 1);
 }
+
 int LogicHEmoonbase::op_net_end_session(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_end_session()");
-	return 1;
+	return _vm1->_moonbase->_net->endSession();
 }
+
 int LogicHEmoonbase::op_net_disable_session_player_join(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_disable_session_player_join()");
+	_vm1->_moonbase->_net->disableSessionJoining();
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_enable_session_player_join(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_enable_session_player_join()");
+	_vm1->_moonbase->_net->enableSessionJoining();
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_set_ai_player_count(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_set_ai_player_count()");
+	_vm1->_moonbase->_net->setBotsCount(args[0]);
 	return 1;
 }
 
@@ -507,7 +510,7 @@ void LogicHEmoonbase::op_net_set_fake_latency(int op, int numArgs, int32 *args)
 int LogicHEmoonbase::op_net_get_host_name(int op, int numArgs, int32 *args) {
 	char name[MAX_HOSTNAME_SIZE];
 
-	if (_vm1->_moonbase->_net->getHostName(name, MAX_HOSTNAME_SIZE)) { // PN_GetHostName
+	if (_vm1->_moonbase->_net->getHostName(name, MAX_HOSTNAME_SIZE)) {
 		return _vm1->setupStringArrayFromString(name);
 	}
 
@@ -520,7 +523,7 @@ int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
 
 	char ip[MAX_IP_SIZE];
 
-	if (_vm1->_moonbase->_net->getIPfromName(ip, MAX_IP_SIZE, name)) { // PN_GetIPfromName
+	if (_vm1->_moonbase->_net->getIPfromName(ip, MAX_IP_SIZE, name)) {
 		return _vm1->setupStringArrayFromString(ip);
 	}
 
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 2d92313..3d25126 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -60,6 +60,28 @@ int Net::whoAmI() {
 	return 0;
 }
 
+int Net::joinSession(int sessionIndex) {
+	warning("STUB: Net::joinSession(%d)", sessionIndex); // PN_JoinSession
+	return 0;
+}
+
+int Net::endSession() {
+	warning("STUB: Net::endSession()"); // PN_EndSession
+	return 0;
+}
+
+void Net::disableSessionJoining() {
+	warning("STUB: Net::disableSessionJoining()"); // PN_DisableSessionPlayerJoin
+}
+
+void Net::enableSessionJoining() {
+	warning("STUB: Net::enableSessionJoining()"); // PN_EnableSessionPlayerJoin
+}
+
+void Net::setBotsCount(int botsCount) {
+	warning("STUB: Net::setBotsCount(%d)", botsCount); // PN_SetAIPlayerCountKludge
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 8b55594..fb7dffe 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -39,7 +39,12 @@ public:
 	int removeUser();
 	int whoSentThis();
 	int whoAmI();
-	
+	int joinSession(int sessionIndex);
+	int endSession();
+	void disableSessionJoining();
+	void enableSessionJoining();
+	void setBotsCount(int botsCount);
+
 private:
 
 public:


Commit: 0f82e2acdc594b96ca7016215f24b879336de6fd
    https://github.com/scummvm/scummvm/commit/0f82e2acdc594b96ca7016215f24b879336de6fd
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add two more kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 1e18b60..bea5672 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -500,11 +500,10 @@ int LogicHEmoonbase::op_net_who_am_i(int op, int numArgs, int32 *args) {
 int LogicHEmoonbase::op_net_set_provider_by_name(int op, int numArgs, int32 *args) {
 	// Parameter 1 is the provider name and 
 	// Parameter 2 is the (optional) tcp/ip address
-	warning("STUB: op_net_set_provider_by_name()");
-	return 1;
+	return _vm1->_moonbase->_net->setProviderByName(args[0], args[1]);
 }
 void LogicHEmoonbase::op_net_set_fake_latency(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_set_fake_latency()");
+	_vm1->_moonbase->_net->setFakeLatency(args[0]);
 }
 
 int LogicHEmoonbase::op_net_get_host_name(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 3d25126..fb835eb 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -26,7 +26,7 @@
 
 namespace Scumm {
 
-Net::Net(ScummEngine_v100he *vm) : _vm(vm) {
+Net::Net(ScummEngine_v100he *vm) : _latencyTime(1), _fakeLatency(false), _vm(vm) {
 	//some defaults for fields
 }
 
@@ -82,6 +82,17 @@ void Net::setBotsCount(int botsCount) {
 	warning("STUB: Net::setBotsCount(%d)", botsCount); // PN_SetAIPlayerCountKludge
 }
 
+int32 Net::setProviderByName(int32 parameter1, int32 parameter2) {
+	warning("STUB: Net::setProviderByName(%d, %d)", parameter1, parameter2); // PN_SetProviderByName
+	return 0;
+}
+
+void Net::setFakeLatency(int time) {
+	_latencyTime = time;
+	debug("NETWORK: Setting Fake Latency to %d ms \n", _latencyTime); // TODO: is it OK to use debug instead of SPUTM_xprintf?
+	_fakeLatency = true;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index fb7dffe..41dc45a 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -44,6 +44,8 @@ public:
 	void disableSessionJoining();
 	void enableSessionJoining();
 	void setBotsCount(int botsCount);
+	int32 setProviderByName(int32 parameter1, int32 parameter2);
+	void setFakeLatency(int time);
 
 private:
 
@@ -57,6 +59,8 @@ private:
 
 public:
 	//fields
+	int _latencyTime; // ms
+	bool _fakeLatency;
 
 	ScummEngine_v100he *_vm;
 };


Commit: c997612bfc0e12b04124ef11906d2104537dfbf7
    https://github.com/scummvm/scummvm/commit/c997612bfc0e12b04124ef11906d2104537dfbf7
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add a few more logic kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index bea5672..c8f01d9 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -439,21 +439,23 @@ int LogicHEmoonbase::op_net_get_session_player_count(int op, int numArgs, int32
 	warning("STUB: op_net_get_session_player_count()");
 	return 1;
 }
-int LogicHEmoonbase::op_net_destroy_player(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_destroy_player()");
-	return 1;
+
+int LogicHEmoonbase::op_net_destroy_player(int op, int numArgs, int32 *args) {	
+	return _vm1->_moonbase->_net->destroyPlayer(args[0]);
 }
+
 int LogicHEmoonbase::op_net_get_player_long_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_player_long_name()");
-	return 1;
+	return _vm1->setupStringArrayFromString("long name"); // TODO: gdefMultiPlay.playername1
 }
+
 int LogicHEmoonbase::op_net_get_player_short_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_player_short_name()");
-	return 1;
+	return _vm1->setupStringArrayFromString("short"); // TODO: gdefMultiPlay.playername2
 }
+
 int LogicHEmoonbase::op_net_create_session(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_create_session()");
-	return 1;
+	char name[MAX_SESSION_NAME];
+	_vm1->getStringFromArray(args[0], name, sizeof(name));
+	return _vm1->_moonbase->_net->createSession(name);
 }
 
 int LogicHEmoonbase::op_net_join_session(int op, int numArgs, int32 *args) {
@@ -502,6 +504,7 @@ int LogicHEmoonbase::op_net_set_provider_by_name(int op, int numArgs, int32 *arg
 	// Parameter 2 is the (optional) tcp/ip address
 	return _vm1->_moonbase->_net->setProviderByName(args[0], args[1]);
 }
+
 void LogicHEmoonbase::op_net_set_fake_latency(int op, int numArgs, int32 *args) {
 	_vm1->_moonbase->_net->setFakeLatency(args[0]);
 }
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index fb835eb..3835a78 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -60,6 +60,11 @@ int Net::whoAmI() {
 	return 0;
 }
 
+int Net::createSession(char *name) {
+	warning("STUB: Net::createSession(\"%s\")", name); // PN_CreateSession
+	return 0;
+}
+
 int Net::joinSession(int sessionIndex) {
 	warning("STUB: Net::joinSession(%d)", sessionIndex); // PN_JoinSession
 	return 0;
@@ -93,6 +98,12 @@ void Net::setFakeLatency(int time) {
 	_fakeLatency = true;
 }
 
+bool Net::destroyPlayer(int32 playerDPID) {
+	// bool PNETWIN_destroyplayer(DPID idPlayer)
+	warning("STUB: Net::destroyPlayer(%d)", playerDPID);
+	return false;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 41dc45a..22e9982 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -39,6 +39,7 @@ public:
 	int removeUser();
 	int whoSentThis();
 	int whoAmI();
+	int createSession(char *name);
 	int joinSession(int sessionIndex);
 	int endSession();
 	void disableSessionJoining();
@@ -46,6 +47,7 @@ public:
 	void setBotsCount(int botsCount);
 	int32 setProviderByName(int32 parameter1, int32 parameter2);
 	void setFakeLatency(int time);
+	bool destroyPlayer(int32 playerDPID);
 
 private:
 


Commit: e70522e506cdeb4a0bb1d9deafe2f8062a9bd47e
    https://github.com/scummvm/scummvm/commit/e70522e506cdeb4a0bb1d9deafe2f8062a9bd47e
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add session-related kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index c8f01d9..d425b5a 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -431,13 +431,15 @@ int LogicHEmoonbase::op_net_query_sessions(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_query_sessions()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_get_session_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_session_name()");
-	return 1;
+	char name[MAX_PROVIDER_NAME];
+	_vm1->_moonbase->_net->getSessionName(args[0] - 1, name, sizeof(name));
+	return _vm1->setupStringArrayFromString(name);
 }
+
 int LogicHEmoonbase::op_net_get_session_player_count(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_session_player_count()");
-	return 1;
+	return _vm1->_moonbase->_net->getSessionPlayerCount(args[0] - 1);
 }
 
 int LogicHEmoonbase::op_net_destroy_player(int op, int numArgs, int32 *args) {	
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 3835a78..1f2e094 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -114,4 +114,15 @@ bool Net::getIPfromName(char *ip, int ipLength, char *nameBuffer) {
 	return false;
 }
 
+void Net::getSessionName(int sessionNumber, char *buffer, int length) {
+	warning("STUB: Net::getSessionPlayerCount(%d, \"%s\", %d)", sessionNumber, buffer, length); // PN_GetSessionName
+}
+
+int Net::getSessionPlayerCount(int sessionNumber) {
+	warning("STUB: Net::getSessionPlayerCount(%d)", sessionNumber); // case GET_SESSION_PLAYER_COUNT_KLUDGE:
+	//assert(sessionNumber >= 0 && sessionNumber < NUMELEMENTS(gdefMultiPlay.gamedescptr));
+	//return gdefMultiPlay.gamedescptr[sessionNumber].currentplayers;
+	return 0;
+}
+
 } // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 22e9982..949332a 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -55,7 +55,8 @@ public:
 	//getters
 	bool getHostName(char *hostname, int length);
 	bool getIPfromName(char *ip, int ipLength, char *nameBuffer);
-
+	void getSessionName(int sessionNumber, char *buffer, int length);
+	int getSessionPlayerCount(int sessionNumber);
 private:
 	//mostly getters
 


Commit: e33c401f7877dd5b0dede1dd147bbdb6e6a2576b
    https://github.com/scummvm/scummvm/commit/e33c401f7877dd5b0dede1dd147bbdb6e6a2576b
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add session quering-related kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index d425b5a..d7158be 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -415,21 +415,22 @@ int LogicHEmoonbase::op_net_close_provider(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_close_provider()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_start_query_sessions(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_start_query_sessions()");
-	return 1;
+	return _vm1->_moonbase->_net->startQuerySessions();
 }
+
 int LogicHEmoonbase::op_net_update_query_sessions(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_update_query_sessions()");
-	return 1;
+	return _vm1->_moonbase->_net->updateQuerySessions();
 }
+
 int LogicHEmoonbase::op_net_stop_query_sessions(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_stop_query_sessions()");
+	_vm1->_moonbase->_net->stopQuerySessions();
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_query_sessions(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_query_sessions()");
-	return 1;
+	return _vm1->_moonbase->_net->querySessions();
 }
 
 int LogicHEmoonbase::op_net_get_session_name(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 1f2e094..71a4b8a 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -104,6 +104,25 @@ bool Net::destroyPlayer(int32 playerDPID) {
 	return false;
 }
 
+int32 Net::startQuerySessions() {
+	warning("STUB: Net::startQuerySessions()"); // StartQuerySessions
+	return 0;
+}
+
+int32 Net::updateQuerySessions() {
+	warning("STUB: Net::updateQuerySessions()"); // UpdateQuerySessions
+	return 0;
+}
+
+void Net::stopQuerySessions() {
+	warning("STUB: Net::stopQuerySessions()"); // StopQuerySessions
+}
+
+int Net::querySessions() {
+	warning("STUB: Net::querySessions()"); // PN_QuerySessions
+	return 0;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 949332a..12f255a 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -48,6 +48,10 @@ public:
 	int32 setProviderByName(int32 parameter1, int32 parameter2);
 	void setFakeLatency(int time);
 	bool destroyPlayer(int32 playerDPID);
+	int32 startQuerySessions();
+	int32 updateQuerySessions();
+	void stopQuerySessions();
+	int querySessions();
 
 private:
 
@@ -57,6 +61,7 @@ public:
 	bool getIPfromName(char *ip, int ipLength, char *nameBuffer);
 	void getSessionName(int sessionNumber, char *buffer, int length);
 	int getSessionPlayerCount(int sessionNumber);
+
 private:
 	//mostly getters
 


Commit: 5d9a3e17b2ba4e590fc86dd05459ab3a1be94c97
    https://github.com/scummvm/scummvm/commit/5d9a3e17b2ba4e590fc86dd05459ab3a1be94c97
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add provider-related kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index d7158be..da37417 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -399,21 +399,23 @@ int LogicHEmoonbase::op_net_do_init_user(int op, int numArgs, int32 *args) {
 	warning("STUB: op_net_do_init_user()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_query_providers(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_query_providers()");
-	return 1;
+	return _vm1->_moonbase->_net->queryProviders();
 }
+
 int LogicHEmoonbase::op_net_get_provider_name(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_get_provider_name()");
-	return 1;
+	char name[MAX_PROVIDER_NAME];
+	_vm1->_moonbase->_net->getProviderName(args[0] - 1, name, sizeof(name));
+	return _vm1->setupStringArrayFromString(name);
 }
+
 int LogicHEmoonbase::op_net_set_provider(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_set_provider()");
-	return 1;
+	return _vm1->_moonbase->_net->setProvider(args[0] - 1);
 }
+
 int LogicHEmoonbase::op_net_close_provider(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_close_provider()");
-	return 1;
+	return _vm1->_moonbase->_net->closeProvider();
 }
 
 int LogicHEmoonbase::op_net_start_query_sessions(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 71a4b8a..8938e05 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -123,6 +123,21 @@ int Net::querySessions() {
 	return 0;
 }
 
+int Net::queryProviders() {
+	warning("STUB: Net::queryProviders()"); // PN_QueryProviders
+	return 0;
+}
+
+int Net::setProvider(int providerIndex) {
+	warning("STUB: Net::setProvider(%d)", providerIndex); // PN_SetProvider
+	return 0;
+}
+
+int Net::closeProvider() {
+	warning("STUB: Net::closeProvider()"); // PN_CloseProvider
+	return 0;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
@@ -134,7 +149,7 @@ bool Net::getIPfromName(char *ip, int ipLength, char *nameBuffer) {
 }
 
 void Net::getSessionName(int sessionNumber, char *buffer, int length) {
-	warning("STUB: Net::getSessionPlayerCount(%d, \"%s\", %d)", sessionNumber, buffer, length); // PN_GetSessionName
+	warning("STUB: Net::getSessionName(%d, \"%s\", %d)", sessionNumber, buffer, length); // PN_GetSessionName
 }
 
 int Net::getSessionPlayerCount(int sessionNumber) {
@@ -144,4 +159,8 @@ int Net::getSessionPlayerCount(int sessionNumber) {
 	return 0;
 }
 
+void Net::getProviderName(int providerIndex, char *buffer, int length) {
+	warning("STUB: Net::getProviderName(%d, \"%s\", %d)", providerIndex, buffer, length); // PN_GetProviderName
+}
+
 } // End of namespace Scumm
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 12f255a..0490c1c 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -52,6 +52,9 @@ public:
 	int32 updateQuerySessions();
 	void stopQuerySessions();
 	int querySessions();
+	int queryProviders();
+	int setProvider(int providerIndex);
+	int closeProvider();
 
 private:
 
@@ -61,6 +64,7 @@ public:
 	bool getIPfromName(char *ip, int ipLength, char *nameBuffer);
 	void getSessionName(int sessionNumber, char *buffer, int length);
 	int getSessionPlayerCount(int sessionNumber);
+	void getProviderName(int providerIndex, char *buffer, int length);
 
 private:
 	//mostly getters


Commit: 45947f6ccc02b336497b896490e1ffe4d74c4965
    https://github.com/scummvm/scummvm/commit/45947f6ccc02b336497b896490e1ffe4d74c4965
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add init-related kludges

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index da37417..63d2532 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -383,21 +383,21 @@ int LogicHEmoonbase::op_net_remote_start_function(int op, int numArgs, int32 *ar
 	warning("STUB: op_net_remote_start_function()");
 	return 1;
 }
+
 int LogicHEmoonbase::op_net_do_init_all(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_do_init_all()");
-	return 1;
+	return _vm1->_moonbase->_net->initAll();
 }
+
 int LogicHEmoonbase::op_net_do_init_provider(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_do_init_provider()");
-	return 1;
+	return _vm1->_moonbase->_net->initProvider();
 }
+
 int LogicHEmoonbase::op_net_do_init_session(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_do_init_session()");
-	return 1;
+	return _vm1->_moonbase->_net->initSession();
 }
+
 int LogicHEmoonbase::op_net_do_init_user(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_do_init_user()");
-	return 1;
+	return _vm1->_moonbase->_net->initUser();
 }
 
 int LogicHEmoonbase::op_net_query_providers(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index 8938e05..f2ef1c8 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -138,6 +138,26 @@ int Net::closeProvider() {
 	return 0;
 }
 
+bool Net::initAll() {
+	warning("STUB: Net::initAll()"); // PN_DoInitAll
+	return false;
+}
+
+bool Net::initProvider() {
+	warning("STUB: Net::initProvider()"); // PN_DoInitProvider
+	return false;
+}
+
+bool Net::initSession() {
+	warning("STUB: Net::initSession()"); // PN_DoInitSession
+	return false;
+}
+
+bool Net::initUser() {
+	warning("STUB: Net::initUser()"); // PN_DoInitUser
+	return false;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index 0490c1c..dbfe08d 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -55,6 +55,10 @@ public:
 	int queryProviders();
 	int setProvider(int providerIndex);
 	int closeProvider();
+	bool initAll();
+	bool initProvider();
+	bool initSession();
+	bool initUser();
 
 private:
 
@@ -65,7 +69,7 @@ public:
 	void getSessionName(int sessionNumber, char *buffer, int length);
 	int getSessionPlayerCount(int sessionNumber);
 	void getProviderName(int providerIndex, char *buffer, int length);
-
+	
 private:
 	//mostly getters
 


Commit: dd68bf0f183715127fbd6d2d4495d392e298a647
    https://github.com/scummvm/scummvm/commit/dd68bf0f183715127fbd6d2d4495d392e298a647
Author: Alexander Tkachev (alexander at tkachov.ru)
Date: 2016-08-30T23:26:29+02:00

Commit Message:
SCUMM HE: Add remote scripts-related kludges

Those are the last ones. Now Net stubs must be handled.

Changed paths:
    engines/scumm/he/logic/moonbase_logic.cpp
    engines/scumm/he/moonbase/net_main.cpp
    engines/scumm/he/moonbase/net_main.h



diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 63d2532..c504ad4 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -374,14 +374,15 @@ void LogicHEmoonbase::op_ai_clean_up(int op, int numArgs, int32 *args) {
 
 #ifdef USE_SDL_NET
 void LogicHEmoonbase::op_net_remote_start_script(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_remote_start_script()");
+	_vm1->_moonbase->_net->remoteStartScript(args[0], args[1], args[2], numArgs - 3, &args[3]);
 }
+
 void LogicHEmoonbase::op_net_remote_send_array(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_remote_send_array()");
+	_vm1->_moonbase->_net->remoteSendArray(args[0], args[1], args[2], args[3]);
 }
+
 int LogicHEmoonbase::op_net_remote_start_function(int op, int numArgs, int32 *args) {
-	warning("STUB: op_net_remote_start_function()");
-	return 1;
+	return _vm1->_moonbase->_net->remoteStartScriptFunction(args[0], args[1], args[2], args[3], numArgs - 4, &args[4]);
 }
 
 int LogicHEmoonbase::op_net_do_init_all(int op, int numArgs, int32 *args) {
diff --git a/engines/scumm/he/moonbase/net_main.cpp b/engines/scumm/he/moonbase/net_main.cpp
index f2ef1c8..cdc2eef 100644
--- a/engines/scumm/he/moonbase/net_main.cpp
+++ b/engines/scumm/he/moonbase/net_main.cpp
@@ -158,6 +158,19 @@ bool Net::initUser() {
 	return false;
 }
 
+void Net::remoteStartScript(int typeOfSend, int sendTypeParam, int priority, int argsCount, int32 *args) {
+	warning("STUB: Net::remoteStartScript(%d, %d, %d, %d, ...)", typeOfSend, sendTypeParam, priority, argsCount); // PN_RemoteStartScriptCommand
+}
+
+void Net::remoteSendArray(int typeOfSend, int sendTypeParam, int priority, int arrayIndex) {
+	warning("STUB: Net::remoteSendArray(%d, %d, %d, %d)", typeOfSend, sendTypeParam, priority, arrayIndex); // PN_RemoteSendArrayCommand
+}
+
+int Net::remoteStartScriptFunction(int typeOfSend, int sendTypeParam, int priority, int defaultReturnValue, int argsCount, int32 *args) {
+	warning("STUB: Net::remoteStartScriptFunction(%d, %d, %d, %d, %d, ...)", typeOfSend, sendTypeParam, priority, defaultReturnValue, argsCount); // PN_RemoteStartScriptFunction
+	return 0;
+}
+
 bool Net::getHostName(char *hostname, int length) {
 	warning("STUB: Net::getHostName(\"%s\", %d)", hostname, length); // PN_GetHostName
 	return false;
diff --git a/engines/scumm/he/moonbase/net_main.h b/engines/scumm/he/moonbase/net_main.h
index dbfe08d..8350904 100644
--- a/engines/scumm/he/moonbase/net_main.h
+++ b/engines/scumm/he/moonbase/net_main.h
@@ -59,6 +59,9 @@ public:
 	bool initProvider();
 	bool initSession();
 	bool initUser();
+	void remoteStartScript(int typeOfSend, int sendTypeParam, int priority, int argsCount, int32 *args);
+	void remoteSendArray(int typeOfSend, int sendTypeParam, int priority, int arrayIndex);
+	int remoteStartScriptFunction(int typeOfSend, int sendTypeParam, int priority, int defaultReturnValue, int argsCount, int32 *args);
 
 private:
 





More information about the Scummvm-git-logs mailing list