CnC_Remastered_Collection

Command and Conquer: Red Alert
Log | Files | Refs | README | LICENSE

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