CnC_Remastered_Collection/REDALERT/IPX95.CPP
PG-SteveT 03416d24e1 Initial Source Code commit
Initial commit of original Tiberian Dawn and Red Alert source code converted to build as DLLs, and compatible with the release version of Command & Conquer Remastered.
2020-05-27 12:16:20 -07:00

232 lines
9.2 KiB
C++

//
// Copyright 2020 Electronic Arts Inc.
//
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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.
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
// in the hope that it will be useful, but with permitted additional restrictions
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
// distributed with this program. You should have received a copy of the
// GNU General Public License along with permitted additional restrictions
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
/***************************************************************************
** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S **
***************************************************************************
* *
* Project Name : Command & Conquer *
* *
* File Name : IPX95PP *
* *
* Programmer : Steve Tall *
* *
* Start Date : January 22nd, 1996 *
* *
* Last Update : July 10th, 1996 [ST] *
* *
*-------------------------------------------------------------------------*
* Overview: *
* *
* Windows 95 equivelent functions from IPX.CPP *
* *
*-------------------------------------------------------------------------*
* Functions: *
* *
* *
* *
* *
* *
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "function.h"
#ifdef WIN32
#include "ipx95.h"
// Stub in old IPX here ST - 12/20/2018 1:53PM
extern "C" {
extern BOOL __stdcall IPX_Initialise(void) { return 0; }
extern BOOL __stdcall IPX_Get_Outstanding_Buffer95(unsigned char *buffer) { return 0; }
extern void __stdcall IPX_Shut_Down95(void) {}
extern int __stdcall IPX_Send_Packet95(unsigned char *, unsigned char *, int, unsigned char*, unsigned char*) { return 0; }
extern int __stdcall IPX_Broadcast_Packet95(unsigned char *, int) { return 0; }
extern BOOL __stdcall IPX_Start_Listening95(void) { return 0; }
extern int __stdcall IPX_Open_Socket95(int socket) { return 0; }
extern void __stdcall IPX_Close_Socket95(int socket) {}
extern int __stdcall IPX_Get_Connection_Number95(void) { return 0; }
extern int __stdcall IPX_Get_Local_Target95(unsigned char *, unsigned char*, unsigned short, unsigned char*) { return 0; }
}
#if (0)
/*
** Instance handle for the THIPX32 .DLL
*/
HINSTANCE IpxDllInstance = NULL;
/*
** Function pointers
*/
//extern "C" {
IPXInitialiseType IPX_Initialise = NULL;
IPXGetOutstandingBuffer95Type IPX_Get_Outstanding_Buffer95 = NULL;
IPXShutDown95Type IPX_Shut_Down95 = NULL;
IPXSendPacket95Type IPX_Send_Packet95 = NULL;
IPXBroadcastPacket95Type IPX_Broadcast_Packet95 = NULL;
IPXStartListening95Type IPX_Start_Listening95 = NULL;
IPXOpenSocket95Type IPX_Open_Socket95 = NULL;
IPXCloseSocket95Type IPX_Close_Socket95 = NULL;
IPXGetConnectionNumber95Type IPX_Get_Connection_Number95 = NULL;
IPXGetLocalTarget95 IPX_Get_Local_Target95 = NULL;
//}
char const *FunctionNames[] = {
"_IPX_Initialise",
"_IPX_Get_Outstanding_Buffer95",
"_IPX_Shut_Down95",
"_IPX_Send_Packet95",
"_IPX_Broadcast_Packet95",
"_IPX_Start_Listening95",
"_IPX_Open_Socket95",
"_IPX_Close_Socket95",
"_IPX_Get_Connection_Number95",
"_IPX_Get_Local_Target95",
NULL
};
#endif
extern void Get_OS_Version (void);
bool WindowsNT = false;
/***********************************************************************************************
* Load_IPX_Dll -- Loads the THIPX32 DLL *
* *
* *
* *
* INPUT: Nothing *
* *
* OUTPUT: true if DLL loaded *
* *
* WARNINGS: This call will fail under NT due to a side effect of loading the THIPX32.DLL *
* which causes the 16 bit DLL THIPX16.DLL to load. *
* *
* HISTORY: *
* 4/1/97 11:40AM ST : Created *
*=============================================================================================*/
bool Load_IPX_Dll (void)
{
//ST 5/13/2019
return false;
#if (0)
Get_OS_Version();
if (WindowsNT) return (false);
SetErrorMode( SEM_NOOPENFILEERRORBOX );
IpxDllInstance = LoadLibrary ( "THIPX32.DLL" );
SetErrorMode ( 0 );
if ( IpxDllInstance ){
const char *function_name;
unsigned long *fptr = (unsigned long *) &IPX_Initialise;
int count = 0;
do {
function_name = FunctionNames[count];
if (function_name){
*fptr = (unsigned long) GetProcAddress (IpxDllInstance, function_name);
assert (*fptr != NULL);
fptr++;
count++;
}
} while ( function_name );
return (true);
}else{
return (false);
}
#endif
}
/***********************************************************************************************
* Unload_IPX_Dll -- Frees the THIPX32 library *
* *
* *
* *
* INPUT: Nothing *
* *
* OUTPUT: Nothing *
* *
* WARNINGS: None *
* *
* HISTORY: *
* 4/1/97 2:37PM ST : Created *
*=============================================================================================*/
void Unload_IPX_Dll (void)
{
//ST 5/13/2019
#if (0)
if (IpxDllInstance){
FreeLibrary (IpxDllInstance);
IpxDllInstance = NULL;
}
#endif
}
int IPX_Open_Socket(unsigned short socket)
{
return -1; //ST 5/13/2019
//return ( IPX_Open_Socket95((int)socket));
}
int IPX_Close_Socket(unsigned short socket)
{
//ST 5/13/2019 IPX_Close_Socket95((int)socket);
return (0);
}
int IPX_Get_Connection_Number(void)
{
return -1;//ST 5/13/2019
//return (IPX_Get_Connection_Number95());
}
int IPX_Broadcast_Packet(unsigned char * buf, int buflen)
{
return 0; //ST 5/13/2019
//return(IPX_Broadcast_Packet95(buf, buflen));
}
#if (0) //ST 5/13/2019
extern "C"{
extern void __cdecl Int3(void);
}
#endif
int IPX_Get_Local_Target(unsigned char * dest_network, unsigned char * dest_node,
unsigned short dest_socket, unsigned char * bridge_address)
{
//Int3();
return 0; //ST 5/13/2019
//return (IPX_Get_Local_Target95(dest_network, dest_node, dest_socket, bridge_address));
}
#endif //WIN32