#ifdef __MSDOS__ // Pierre-Marie Baty -- compile guard
#include "pd/net.h"
#include "errors.h"
#include "globvrpb.h"
#include "harness/hooks.h"
#include "harness/trace.h"
#include "network.h"
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#ifdef __DOS__
tU32 gNetwork_init_flags;
tPD_net_game_info* gJoinable_games;
int gMatts_PC;
tU16 gSocket_number_pd_format;
_IPX_ELEMENT gListen_elements[16];
char gLocal_ipx_addr_string[32];
_IPX_ELEMENT gSend_elements[16];
_IPX_LOCAL_TARGET gLocal_addr_ipx;
char gReceive_buffer[512];
tPD_net_player_info gRemote_net_player_info;
_IPX_LOCAL_TARGET gBroadcast_addr_ipx;
tPD_net_player_info gLocal_net_player_info;
char gSend_buffer[512];
tIPX_netnum gNetworks[16];
_IPX_LOCAL_TARGET gRemote_addr_ipx;
tU8* gSend_packet;
W32 gListen_segment;
tU8* gSend_packet_ptr;
W32 gSend_segment;
tU8* gListen_packet;
tU8* gListen_packet_ptr;
size_t gMsg_header_strlen;
int gNumber_of_networks;
int gNumber_of_hosts;
tRM_info RMI;
_IPX_HEADER gLast_received_IPX_header;
tU16 gSocket_number_network_order;
unsigned short gECB_offset;
tU16 gListen_selector;
tU16 gSend_selector;
/*static*/ void ClearupPDNetworkStuff(void);
/*static*/ void MATTMessageCheck(char* pFunction_name, tNet_message* pMessage, int pAlleged_size);
/*static*/ int GetProfileText(char* pDest, int pDest_len, char* pFname, char* pKeyname);
/*static*/ int GetSocketNumberFromProfileFile(void);
/*static*/ tU32 EthernetAddressToU32(_IPX_LOCAL_TARGET* pAddr_ipx);
/*static*/ void NetNowIPXLocalTarget2String(char* pString, _IPX_LOCAL_TARGET* pSock_addr_ipx);
/*static*/ int GetMessageTypeFromMessage(char* pMessage_str);
/*static*/ int SameEthernetAddress(_IPX_LOCAL_TARGET* pAddr_ipx1, _IPX_LOCAL_TARGET* pAddr_ipx2);
/*static*/ _IPX_LOCAL_TARGET* GetIPXAddrFromPlayerID(tPlayer_ID pPlayer_id);
/*static*/ void MakeMessageToSend(int pMessage_type);
/*static*/ int ReceiveHostResponses(void);
/*static*/ int BroadcastMessage(void);
/*static*/ int hmiIPXCloseSocket(W32 wSocket);
/*static*/ void hmiIPXListenForPacket(_IPX_ECB* pECB_ptr, tU32 pOffset);
/*static*/ int hmiIPXPostListen(_IPX_ECB* pECB_ptr, tU32 pOffset);
/*static*/ int hmiIPXGetData(char* pData, tU32 wDSize);
/*static*/ void hmiIPXSendPacket(_IPX_ECB* sECB, _IPX_ECB** pPacket, char* pHeader, W32 wSize);
/*static*/ int hmiIPXSendDataDirect(char* pHeader, W32 wHSize, char* pData, W32 wDSize, _NETNOW_NODE_ADDR* sNode);
/*static*/ void hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR* sInterworkAddr);
/*static*/ void hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET* sNetworkAddr);
/*static*/ int AllocateRealMem(W32 wSize, char** pPtr, W32* pSegment, tU16* pSelector);
/*static*/ int FreeRealMem(tU16 pSelector);
/*static*/ int hmiIPXInstalled(void);
/*static*/ void GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere(void);
/*static*/ void GetIPXToStickItsEarToTheGround(void);
// IDA: void __cdecl ClearupPDNetworkStuff()
void ClearupPDNetworkStuff(void) {
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: void __usercall MATTMessageCheck(char *pFunction_name@<EAX>, tNet_message *pMessage@<EDX>, int pAlleged_size@<EBX>)
void MATTMessageCheck(char* pFunction_name, tNet_message* pMessage, int pAlleged_size) {
LOG_TRACE("(\"%s\", %p, %d)", pFunction_name, pMessage, pAlleged_size);
NOT_IMPLEMENTED();
}
// IDA: int __usercall GetProfileText@<EAX>(char *pDest@<EAX>, int pDest_len@<EDX>, char *pFname@<EBX>, char *pKeyname@<ECX>)
int GetProfileText(char* pDest, int pDest_len, char* pFname, char* pKeyname) {
FILE* fp;
char in_buf[256];
int i;
int j;
int len;
LOG_TRACE("(\"%s\", %d, \"%s\", \"%s\")", pDest, pDest_len, pFname, pKeyname);
NOT_IMPLEMENTED();
}
// IDA: int __cdecl GetSocketNumberFromProfileFile()
int GetSocketNumberFromProfileFile(void) {
char str[256];
int sscanf_res;
tU32 socknum;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: tU32 __usercall EthernetAddressToU32@<EAX>(_IPX_LOCAL_TARGET *pAddr_ipx@<EAX>)
tU32 EthernetAddressToU32(_IPX_LOCAL_TARGET* pAddr_ipx) {
LOG_TRACE("(%p)", pAddr_ipx);
NOT_IMPLEMENTED();
}
// IDA: void __usercall NetNowIPXLocalTarget2String(char *pString@<EAX>, _IPX_LOCAL_TARGET *pSock_addr_ipx@<EDX>)
void NetNowIPXLocalTarget2String(char* pString, _IPX_LOCAL_TARGET* pSock_addr_ipx) {
LOG_TRACE("(\"%s\", %p)", pString, pSock_addr_ipx);
NOT_IMPLEMENTED();
}
// IDA: int __usercall GetMessageTypeFromMessage@<EAX>(char *pMessage_str@<EAX>)
int GetMessageTypeFromMessage(char* pMessage_str) {
char* real_msg;
int msg_type_int;
LOG_TRACE("(\"%s\")", pMessage_str);
NOT_IMPLEMENTED();
}
// IDA: int __usercall SameEthernetAddress@<EAX>(_IPX_LOCAL_TARGET *pAddr_ipx1@<EAX>, _IPX_LOCAL_TARGET *pAddr_ipx2@<EDX>)
int SameEthernetAddress(_IPX_LOCAL_TARGET* pAddr_ipx1, _IPX_LOCAL_TARGET* pAddr_ipx2) {
LOG_TRACE("(%p, %p)", pAddr_ipx1, pAddr_ipx2);
NOT_IMPLEMENTED();
}
_IPX_LOCAL_TARGET* GetIPXAddrFromPlayerID(tPlayer_ID pPlayer_id) {
int i;
tU8* nodenum;
NOT_IMPLEMENTED();
}
// IDA: void __usercall MakeMessageToSend(int pMessage_type@<EAX>)
void MakeMessageToSend(int pMessage_type) {
LOG_TRACE("(%d)", pMessage_type);
NOT_IMPLEMENTED();
}
// IDA: int __cdecl ReceiveHostResponses()
int ReceiveHostResponses(void) {
char str[256];
int i;
int already_registered;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __cdecl BroadcastMessage()
int BroadcastMessage(void) {
int i;
int errors;
char broadcast_addr_string[32];
char* real_msg;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __usercall hmiIPXCloseSocket@<EAX>(W32 wSocket@<EAX>)
int hmiIPXCloseSocket(W32 wSocket) {
REGS regs;
SREGS sregs;
LOG_TRACE("(%d)", wSocket);
NOT_IMPLEMENTED();
}
// IDA: void __usercall hmiIPXListenForPacket(_IPX_ECB *pECB_ptr@<EAX>, tU32 pOffset@<EDX>)
void hmiIPXListenForPacket(_IPX_ECB* pECB_ptr, tU32 pOffset) {
SREGS sregs;
REGS regs;
_IPX_HEADER* IPX_header_ptr;
_IPX_ECB* sIPXECB;
LOG_TRACE("(%p, %d)", pECB_ptr, pOffset);
NOT_IMPLEMENTED();
}
// IDA: int __usercall hmiIPXPostListen@<EAX>(_IPX_ECB *pECB_ptr@<EAX>, tU32 pOffset@<EDX>)
int hmiIPXPostListen(_IPX_ECB* pECB_ptr, tU32 pOffset) {
LOG_TRACE("(%p, %d)", pECB_ptr, pOffset);
NOT_IMPLEMENTED();
}
// IDA: int __cdecl hmiIPXGetData(char* pData, tU32 wDSize)
int hmiIPXGetData(char* pData, tU32 wDSize) {
tU32 packets_checked;
tU32 full_packet_ooer_missus;
_IPX_ECB* ECB_ptr;
static tU32 round_robin_jobby;
LOG_TRACE("(%d, %d)", pData, wDSize);
NOT_IMPLEMENTED();
}
// IDA: void __usercall hmiIPXSendPacket(_IPX_ECB *sECB@<EAX>, _IPX_ECB **pPacket@<EDX>, char* pHeader@<EBX>, W32 wSize@<ECX>)
void hmiIPXSendPacket(_IPX_ECB* sECB, _IPX_ECB** pPacket, char* pHeader, W32 wSize) {
SREGS sregs;
REGS regs;
_IPX_HEADER* sIPXHeader;
_IPX_ECB* sIPXECB;
char* pIPXData;
LOG_TRACE("(%p, %p, %d, %d)", sECB, pPacket, pHeader, wSize);
NOT_IMPLEMENTED();
}
// IDA: int __usercall hmiIPXSendDataDirect@<EAX>(char* pHeader@<EAX>, W32 wHSize@<EDX>, char* pData@<EBX>, W32 wDSize@<ECX>, _NETNOW_NODE_ADDR *sNode)
int hmiIPXSendDataDirect(char* pHeader, W32 wHSize, char* pData, W32 wDSize, _NETNOW_NODE_ADDR* sNode) {
W32 wIndex;
_IPX_ELEMENT* sElement;
W32* pSequence;
LOG_TRACE("(%d, %d, %d, %d, %p)", pHeader, wHSize, pData, wDSize, sNode);
NOT_IMPLEMENTED();
}
// IDA: void __usercall hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR *sInterworkAddr@<EAX>)
void hmiIPXGetInternetworkAddr(_IPX_INTERNET_ADDR* sInterworkAddr) {
SREGS sregs;
REGS regs;
LOG_TRACE("(%p)", sInterworkAddr);
NOT_IMPLEMENTED();
}
// IDA: void __usercall hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET *sNetworkAddr@<EAX>)
void hmiIPXGetLocalTarget(_IPX_LOCAL_TARGET* sNetworkAddr) {
SREGS sregs;
REGS regs;
LOG_TRACE("(%p)", sNetworkAddr);
NOT_IMPLEMENTED();
}
// IDA: int __usercall AllocateRealMem@<EAX>(W32 wSize@<EAX>, char* *pPtr@<EDX>, W32 *pSegment@<EBX>, tU16 *pSelector@<ECX>)
int AllocateRealMem(W32 wSize, char** pPtr, W32* pSegment, tU16* pSelector) {
REGS regs;
SREGS sregs;
W32 wAddress;
W32 wHandle;
W32 wSegment;
W32 wLinear;
LOG_TRACE("(%d, %p, %p, %p)", wSize, pPtr, pSegment, pSelector);
NOT_IMPLEMENTED();
}
// IDA: int __usercall FreeRealMem@<EAX>(tU16 pSelector@<EAX>)
int FreeRealMem(tU16 pSelector) {
REGS regs;
SREGS sregs;
W32 wAddress;
W32 wHandle;
W32 wSegment;
W32 wLinear;
LOG_TRACE("(%d)", pSelector);
NOT_IMPLEMENTED();
}
// IDA: int __cdecl hmiIPXInstalled()
int hmiIPXInstalled(void) {
SREGS sregs;
REGS regs;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __usercall hmiIPXOpenSocket@<EAX>(W32 wSocket@<EAX>)
int hmiIPXOpenSocket(W32 wSocket) {
SREGS sregs;
REGS regs;
LOG_TRACE("(%d)", wSocket);
NOT_IMPLEMENTED();
}
// IDA: void __cdecl GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere()
void GetLargestPacketSizeOoErBetterInsertLinfordChristieJokeHere(void) {
SREGS sregs;
REGS regs;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __usercall hmiIPXInitSystem@<EAX>(W32 wSocket@<EAX>)
int hmiIPXInitSystem(W32 wSocket) {
W32 wNIndex;
W32 wIndex;
W32 wMIndex;
unsigned short wSOffset;
unsigned short wLOffset;
LOG_TRACE("(%d)", wSocket);
NOT_IMPLEMENTED();
}
// IDA: void __cdecl GetIPXToStickItsEarToTheGround()
void GetIPXToStickItsEarToTheGround(void) {
int i;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __cdecl PDNetInitialise()
int PDNetInitialise(void) {
tU32 timenow;
char profile_string[32];
char key_name[32];
int sscanf_res;
int i;
tU32 netnum;
char str[256];
int mess_num;
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __cdecl PDNetShutdown()
int PDNetShutdown(void) {
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: void __cdecl PDNetStartProducingJoinList()
void PDNetStartProducingJoinList(void) {
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: void __cdecl PDNetEndJoinList()
void PDNetEndJoinList(void) {
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetGetNextJoinGame@<EAX>(tNet_game_details *pGame@<EAX>, int pIndex@<EDX>)
int PDNetGetNextJoinGame(tNet_game_details* pGame, int pIndex) {
static tU32 next_broadcast_time;
int i;
int j;
int number_of_hosts_has_changed;
char str[256];
LOG_TRACE9("(%p, %d)", pGame, pIndex);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetDisposeGameDetails(tNet_game_details *pDetails@<EAX>)
void PDNetDisposeGameDetails(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetHostGame@<EAX>(tNet_game_details *pDetails@<EAX>, char *pHost_name@<EDX>, void **pHost_address@<EBX>)
int PDNetHostGame(tNet_game_details* pDetails, char* pHost_name, void** pHost_address) {
LOG_TRACE("(%p, \"%s\", %p)", pDetails, pHost_name, pHost_address);
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetJoinGame@<EAX>(tNet_game_details *pDetails@<EAX>, char *pPlayer_name@<EDX>)
int PDNetJoinGame(tNet_game_details* pDetails, char* pPlayer_name) {
LOG_TRACE("(%p, \"%s\")", pDetails, pPlayer_name);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetLeaveGame(tNet_game_details *pDetails@<EAX>)
void PDNetLeaveGame(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetHostFinishGame(tNet_game_details *pDetails@<EAX>)
void PDNetHostFinishGame(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: tU32 __usercall PDNetExtractGameID@<EAX>(tNet_game_details *pDetails@<EAX>)
tU32 PDNetExtractGameID(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: tPlayer_ID __usercall PDNetExtractPlayerID@<EAX>(tNet_game_details *pDetails@<EAX>)
tPlayer_ID PDNetExtractPlayerID(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetObtainSystemUserName(char *pName@<EAX>, int pMax_length@<EDX>)
void PDNetObtainSystemUserName(char* pName, int pMax_length) {
}
// IDA: int __usercall PDNetSendMessageToPlayer@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>, tPlayer_ID pPlayer@<EBX>)
int PDNetSendMessageToPlayer(tNet_game_details* pDetails, tNet_message* pMessage, tPlayer_ID pPlayer) {
char str[256];
_IPX_LOCAL_TARGET* remote_addr_ipx;
LOG_TRACE("(%p, %p, %d)", pDetails, pMessage, pPlayer);
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetSendMessageToAllPlayers@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>)
int PDNetSendMessageToAllPlayers(tNet_game_details* pDetails, tNet_message* pMessage) {
char str[256];
int i;
int r; // Added by dethrace
LOG_TRACE("(%p, %p)", pDetails, pMessage);
NOT_IMPLEMENTED();
}
// IDA: tNet_message* __usercall PDNetGetNextMessage@<EAX>(tNet_game_details *pDetails@<EAX>, void **pSender_address@<EDX>)
tNet_message* PDNetGetNextMessage(tNet_game_details* pDetails, void** pSender_address) {
char* receive_buffer;
char str[256];
int msg_type;
LOG_TRACE("(%p, %p)", pDetails, pSender_address);
NOT_IMPLEMENTED();
}
// IDA: tNet_message* __usercall PDNetAllocateMessage@<EAX>(tU32 pSize@<EAX>, tS32 pSize_decider@<EDX>)
tNet_message* PDNetAllocateMessage(tU32 pSize, tS32 pSize_decider) {
LOG_TRACE("(%d, %d)", pSize, pSize_decider);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetDisposeMessage(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>)
void PDNetDisposeMessage(tNet_game_details* pDetails, tNet_message* pMessage) {
LOG_TRACE("(%p, %p)", pDetails, pMessage);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetSetPlayerSystemInfo(tNet_game_player_info *pPlayer@<EAX>, void *pSender_address@<EDX>)
void PDNetSetPlayerSystemInfo(tNet_game_player_info* pPlayer, void* pSender_address) {
LOG_TRACE("(%p, %p)", pPlayer, pSender_address);
NOT_IMPLEMENTED();
}
// IDA: void __usercall PDNetDisposePlayer(tNet_game_player_info *pPlayer@<EAX>)
void PDNetDisposePlayer(tNet_game_player_info* pPlayer) {
LOG_TRACE("(%p)", pPlayer);
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetSendMessageToAddress@<EAX>(tNet_game_details *pDetails@<EAX>, tNet_message *pMessage@<EDX>, void *pAddress@<EBX>)
int PDNetSendMessageToAddress(tNet_game_details* pDetails, tNet_message* pMessage, void* pAddress) {
char str[256];
LOG_TRACE("(%p, %p, %p)", pDetails, pMessage, pAddress);
NOT_IMPLEMENTED();
}
// IDA: int __usercall PDNetInitClient@<EAX>(tNet_game_details *pDetails@<EAX>)
int PDNetInitClient(tNet_game_details* pDetails) {
LOG_TRACE("(%p)", pDetails);
NOT_IMPLEMENTED();
}
// IDA: int __cdecl PDNetGetHeaderSize()
int PDNetGetHeaderSize(void) {
LOG_TRACE("()");
NOT_IMPLEMENTED();
}
#endif
#endif // __MSDOS__