153 lines
7.1 KiB
C
153 lines
7.1 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
|
||
|
||
/****************************************************************************
|
||
* Error Constants, in case of values above 10 hexadecimal please call
|
||
* Marx International, Inc.
|
||
****************************************************************************/
|
||
|
||
#define PARAM_ERR 0x01
|
||
#define BOX_NOT_FOUND 0x02
|
||
|
||
#define BOX_CRYPT_ERR 0x03
|
||
#define UNI_CRYPT_ERR 0x04
|
||
#define READ_RAM_ERR 0x05
|
||
#define WRITE_RAM_ERR 0x06
|
||
#define RAM_COUNT_ERR 0x07
|
||
#define BOX_READY_ERR 0x08
|
||
|
||
|
||
/****************************************************************************
|
||
* Constants
|
||
****************************************************************************/
|
||
|
||
#define CRYPTLENG 32
|
||
#define RAM1LENG 50
|
||
#define RAM2LENG 433
|
||
#define IDEALENG 32
|
||
|
||
/****************************************************************************
|
||
* User Functions
|
||
****************************************************************************/
|
||
extern "C" {
|
||
|
||
extern short CbN_BoxReady(unsigned short iPortNr, unsigned char *pcBoxName);
|
||
|
||
extern short CbN_ReadID1(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID2(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID3(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID4(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID5(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID6(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID7(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadID8(unsigned short iPortNr, unsigned char *pcSCodeId,
|
||
unsigned long *plIdReturn);
|
||
|
||
extern short CbN_ReadSER(unsigned short iPortNr, unsigned char *pcSCodeSer,
|
||
unsigned long *plSerNum);
|
||
|
||
extern short CbN_ReadRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned char *pcPasswRam1,unsigned short
|
||
iStartAdr,unsigned short iLength, unsigned char *pcOutData);
|
||
|
||
extern short CbN_ReadRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned char *pcPasswRam2,unsigned short
|
||
iStartAdr,unsigned short iLength, unsigned char *pcOutData);
|
||
|
||
extern short CbN_WriteRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned char *pcPasswRam1,unsigned short
|
||
iStartAdr,unsigned short iLength,unsigned char *pcOutData);
|
||
|
||
extern short CbN_WriteRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned char *pcPasswRam2,unsigned short
|
||
iStartAdr,unsigned short iLength,unsigned char *pcOutData);
|
||
|
||
extern short CbN_IncRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char
|
||
*pcSCodeId, unsigned char *pcPasswRam1, unsigned short
|
||
iCounterAdr, unsigned short *piNewCount);
|
||
|
||
extern short CbN_DecRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char
|
||
*pcSCodeId, unsigned char *pcPasswRam1, unsigned short
|
||
iCounterAdr, unsigned short *piNewCount);
|
||
|
||
extern short CbN_IncRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char
|
||
*pcSCodeId, unsigned char *pcPasswRam2, unsigned short
|
||
iCounterAdr, unsigned short *piNewCount);
|
||
|
||
extern short CbN_DecRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char
|
||
*pcSCodeId, unsigned char *pcPasswRam2, unsigned short
|
||
iCounterAdr, unsigned short *piNewCount);
|
||
|
||
|
||
extern short CbN_Decrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned short iSeed, unsigned short iLength,
|
||
unsigned char *pcOutData);
|
||
|
||
extern short CbN_Encrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char
|
||
*pcSCodeId,unsigned short iSeed,unsigned short iLength,
|
||
unsigned char *pcOutData);
|
||
|
||
extern short CbN_IDEA_Encrypt(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char *pcBuff,
|
||
unsigned long lLength);
|
||
|
||
extern short CbN_IDEA_Decrypt(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char *pcBuff,
|
||
unsigned long lLength);
|
||
|
||
extern short CbN_IDEA_EncryptP(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char *pcBuff,
|
||
unsigned long lLength, unsigned long lIdeaKey);
|
||
|
||
extern short CbN_IDEA_DecryptP(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char *pcBuff,
|
||
unsigned long lLength, unsigned long lIdeaKey);
|
||
|
||
extern short CbN_SetCounterRAM1(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char
|
||
*pcPassRam, unsigned short iAdrCount, unsigned short
|
||
iNewCount);
|
||
|
||
extern short CbN_ReadCounterRAM1(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char
|
||
*pcPassRam, unsigned short iAdrCount, unsigned short
|
||
*piCurrentCount);
|
||
|
||
extern short CbN_SetCounterRAM2(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char
|
||
*pcPassRam, unsigned short iAdrCount, unsigned short
|
||
iNewCount);
|
||
|
||
extern short CbN_ReadCounterRAM2(unsigned short iPortNr, unsigned short iIdNr,
|
||
unsigned char *pcSCodeId, unsigned char
|
||
*pcPassRam, unsigned short iAdrCount, unsigned short
|
||
*piCurrentCount);
|
||
|
||
}
|
||
|