CBN_.H (7295B)
1 // 2 // Copyright 2020 Electronic Arts Inc. 3 // 4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 5 // software: you can redistribute it and/or modify it under the terms of 6 // the GNU General Public License as published by the Free Software Foundation, 7 // either version 3 of the License, or (at your option) any later version. 8 9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 10 // in the hope that it will be useful, but with permitted additional restrictions 11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 12 // distributed with this program. You should have received a copy of the 13 // GNU General Public License along with permitted additional restrictions 14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection 15 16 /**************************************************************************** 17 * Error Constants, in case of values above 10 hexadecimal please call 18 * Marx International, Inc. 19 ****************************************************************************/ 20 21 #define PARAM_ERR 0x01 22 #define BOX_NOT_FOUND 0x02 23 24 #define BOX_CRYPT_ERR 0x03 25 #define UNI_CRYPT_ERR 0x04 26 #define READ_RAM_ERR 0x05 27 #define WRITE_RAM_ERR 0x06 28 #define RAM_COUNT_ERR 0x07 29 #define BOX_READY_ERR 0x08 30 31 32 /**************************************************************************** 33 * Constants 34 ****************************************************************************/ 35 36 #define CRYPTLENG 32 37 #define RAM1LENG 50 38 #define RAM2LENG 433 39 #define IDEALENG 32 40 41 /**************************************************************************** 42 * User Functions 43 ****************************************************************************/ 44 extern "C" { 45 46 extern short CbN_BoxReady(unsigned short iPortNr, unsigned char *pcBoxName); 47 48 extern short CbN_ReadID1(unsigned short iPortNr, unsigned char *pcSCodeId, 49 unsigned long *plIdReturn); 50 51 extern short CbN_ReadID2(unsigned short iPortNr, unsigned char *pcSCodeId, 52 unsigned long *plIdReturn); 53 54 extern short CbN_ReadID3(unsigned short iPortNr, unsigned char *pcSCodeId, 55 unsigned long *plIdReturn); 56 57 extern short CbN_ReadID4(unsigned short iPortNr, unsigned char *pcSCodeId, 58 unsigned long *plIdReturn); 59 60 extern short CbN_ReadID5(unsigned short iPortNr, unsigned char *pcSCodeId, 61 unsigned long *plIdReturn); 62 63 extern short CbN_ReadID6(unsigned short iPortNr, unsigned char *pcSCodeId, 64 unsigned long *plIdReturn); 65 66 extern short CbN_ReadID7(unsigned short iPortNr, unsigned char *pcSCodeId, 67 unsigned long *plIdReturn); 68 69 extern short CbN_ReadID8(unsigned short iPortNr, unsigned char *pcSCodeId, 70 unsigned long *plIdReturn); 71 72 extern short CbN_ReadSER(unsigned short iPortNr, unsigned char *pcSCodeSer, 73 unsigned long *plSerNum); 74 75 extern short CbN_ReadRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char 76 *pcSCodeId,unsigned char *pcPasswRam1,unsigned short 77 iStartAdr,unsigned short iLength, unsigned char *pcOutData); 78 79 extern short CbN_ReadRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char 80 *pcSCodeId,unsigned char *pcPasswRam2,unsigned short 81 iStartAdr,unsigned short iLength, unsigned char *pcOutData); 82 83 extern short CbN_WriteRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char 84 *pcSCodeId,unsigned char *pcPasswRam1,unsigned short 85 iStartAdr,unsigned short iLength,unsigned char *pcOutData); 86 87 extern short CbN_WriteRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char 88 *pcSCodeId,unsigned char *pcPasswRam2,unsigned short 89 iStartAdr,unsigned short iLength,unsigned char *pcOutData); 90 91 extern short CbN_IncRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char 92 *pcSCodeId, unsigned char *pcPasswRam1, unsigned short 93 iCounterAdr, unsigned short *piNewCount); 94 95 extern short CbN_DecRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char 96 *pcSCodeId, unsigned char *pcPasswRam1, unsigned short 97 iCounterAdr, unsigned short *piNewCount); 98 99 extern short CbN_IncRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char 100 *pcSCodeId, unsigned char *pcPasswRam2, unsigned short 101 iCounterAdr, unsigned short *piNewCount); 102 103 extern short CbN_DecRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char 104 *pcSCodeId, unsigned char *pcPasswRam2, unsigned short 105 iCounterAdr, unsigned short *piNewCount); 106 107 108 extern short CbN_Decrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char 109 *pcSCodeId,unsigned short iSeed, unsigned short iLength, 110 unsigned char *pcOutData); 111 112 extern short CbN_Encrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char 113 *pcSCodeId,unsigned short iSeed,unsigned short iLength, 114 unsigned char *pcOutData); 115 116 extern short CbN_IDEA_Encrypt(unsigned short iPortNr, unsigned short iIdNr, 117 unsigned char *pcSCodeId, unsigned char *pcBuff, 118 unsigned long lLength); 119 120 extern short CbN_IDEA_Decrypt(unsigned short iPortNr, unsigned short iIdNr, 121 unsigned char *pcSCodeId, unsigned char *pcBuff, 122 unsigned long lLength); 123 124 extern short CbN_IDEA_EncryptP(unsigned short iPortNr, unsigned short iIdNr, 125 unsigned char *pcSCodeId, unsigned char *pcBuff, 126 unsigned long lLength, unsigned long lIdeaKey); 127 128 extern short CbN_IDEA_DecryptP(unsigned short iPortNr, unsigned short iIdNr, 129 unsigned char *pcSCodeId, unsigned char *pcBuff, 130 unsigned long lLength, unsigned long lIdeaKey); 131 132 extern short CbN_SetCounterRAM1(unsigned short iPortNr, unsigned short iIdNr, 133 unsigned char *pcSCodeId, unsigned char 134 *pcPassRam, unsigned short iAdrCount, unsigned short 135 iNewCount); 136 137 extern short CbN_ReadCounterRAM1(unsigned short iPortNr, unsigned short iIdNr, 138 unsigned char *pcSCodeId, unsigned char 139 *pcPassRam, unsigned short iAdrCount, unsigned short 140 *piCurrentCount); 141 142 extern short CbN_SetCounterRAM2(unsigned short iPortNr, unsigned short iIdNr, 143 unsigned char *pcSCodeId, unsigned char 144 *pcPassRam, unsigned short iAdrCount, unsigned short 145 iNewCount); 146 147 extern short CbN_ReadCounterRAM2(unsigned short iPortNr, unsigned short iIdNr, 148 unsigned char *pcSCodeId, unsigned char 149 *pcPassRam, unsigned short iAdrCount, unsigned short 150 *piCurrentCount); 151 152 } 153