CBN_.H 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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. // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
  9. // in the hope that it will be useful, but with permitted additional restrictions
  10. // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
  11. // distributed with this program. You should have received a copy of the
  12. // GNU General Public License along with permitted additional restrictions
  13. // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
  14. /****************************************************************************
  15. * Error Constants, in case of values above 10 hexadecimal please call
  16. * Marx International, Inc.
  17. ****************************************************************************/
  18. #define PARAM_ERR 0x01
  19. #define BOX_NOT_FOUND 0x02
  20. #define BOX_CRYPT_ERR 0x03
  21. #define UNI_CRYPT_ERR 0x04
  22. #define READ_RAM_ERR 0x05
  23. #define WRITE_RAM_ERR 0x06
  24. #define RAM_COUNT_ERR 0x07
  25. #define BOX_READY_ERR 0x08
  26. /****************************************************************************
  27. * Constants
  28. ****************************************************************************/
  29. #define CRYPTLENG 32
  30. #define RAM1LENG 50
  31. #define RAM2LENG 433
  32. #define IDEALENG 32
  33. /****************************************************************************
  34. * User Functions
  35. ****************************************************************************/
  36. extern "C" {
  37. extern short CbN_BoxReady(unsigned short iPortNr, unsigned char *pcBoxName);
  38. extern short CbN_ReadID1(unsigned short iPortNr, unsigned char *pcSCodeId,
  39. unsigned long *plIdReturn);
  40. extern short CbN_ReadID2(unsigned short iPortNr, unsigned char *pcSCodeId,
  41. unsigned long *plIdReturn);
  42. extern short CbN_ReadID3(unsigned short iPortNr, unsigned char *pcSCodeId,
  43. unsigned long *plIdReturn);
  44. extern short CbN_ReadID4(unsigned short iPortNr, unsigned char *pcSCodeId,
  45. unsigned long *plIdReturn);
  46. extern short CbN_ReadID5(unsigned short iPortNr, unsigned char *pcSCodeId,
  47. unsigned long *plIdReturn);
  48. extern short CbN_ReadID6(unsigned short iPortNr, unsigned char *pcSCodeId,
  49. unsigned long *plIdReturn);
  50. extern short CbN_ReadID7(unsigned short iPortNr, unsigned char *pcSCodeId,
  51. unsigned long *plIdReturn);
  52. extern short CbN_ReadID8(unsigned short iPortNr, unsigned char *pcSCodeId,
  53. unsigned long *plIdReturn);
  54. extern short CbN_ReadSER(unsigned short iPortNr, unsigned char *pcSCodeSer,
  55. unsigned long *plSerNum);
  56. extern short CbN_ReadRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  57. *pcSCodeId,unsigned char *pcPasswRam1,unsigned short
  58. iStartAdr,unsigned short iLength, unsigned char *pcOutData);
  59. extern short CbN_ReadRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  60. *pcSCodeId,unsigned char *pcPasswRam2,unsigned short
  61. iStartAdr,unsigned short iLength, unsigned char *pcOutData);
  62. extern short CbN_WriteRAM1(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  63. *pcSCodeId,unsigned char *pcPasswRam1,unsigned short
  64. iStartAdr,unsigned short iLength,unsigned char *pcOutData);
  65. extern short CbN_WriteRAM2(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  66. *pcSCodeId,unsigned char *pcPasswRam2,unsigned short
  67. iStartAdr,unsigned short iLength,unsigned char *pcOutData);
  68. extern short CbN_IncRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char
  69. *pcSCodeId, unsigned char *pcPasswRam1, unsigned short
  70. iCounterAdr, unsigned short *piNewCount);
  71. extern short CbN_DecRAM1(unsigned short iPortNr, unsigned short iIdNr, unsigned char
  72. *pcSCodeId, unsigned char *pcPasswRam1, unsigned short
  73. iCounterAdr, unsigned short *piNewCount);
  74. extern short CbN_IncRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char
  75. *pcSCodeId, unsigned char *pcPasswRam2, unsigned short
  76. iCounterAdr, unsigned short *piNewCount);
  77. extern short CbN_DecRAM2(unsigned short iPortNr, unsigned short iIdNr, unsigned char
  78. *pcSCodeId, unsigned char *pcPasswRam2, unsigned short
  79. iCounterAdr, unsigned short *piNewCount);
  80. extern short CbN_Decrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  81. *pcSCodeId,unsigned short iSeed, unsigned short iLength,
  82. unsigned char *pcOutData);
  83. extern short CbN_Encrypt(unsigned short iPortNr,unsigned short iIdNr,unsigned char
  84. *pcSCodeId,unsigned short iSeed,unsigned short iLength,
  85. unsigned char *pcOutData);
  86. extern short CbN_IDEA_Encrypt(unsigned short iPortNr, unsigned short iIdNr,
  87. unsigned char *pcSCodeId, unsigned char *pcBuff,
  88. unsigned long lLength);
  89. extern short CbN_IDEA_Decrypt(unsigned short iPortNr, unsigned short iIdNr,
  90. unsigned char *pcSCodeId, unsigned char *pcBuff,
  91. unsigned long lLength);
  92. extern short CbN_IDEA_EncryptP(unsigned short iPortNr, unsigned short iIdNr,
  93. unsigned char *pcSCodeId, unsigned char *pcBuff,
  94. unsigned long lLength, unsigned long lIdeaKey);
  95. extern short CbN_IDEA_DecryptP(unsigned short iPortNr, unsigned short iIdNr,
  96. unsigned char *pcSCodeId, unsigned char *pcBuff,
  97. unsigned long lLength, unsigned long lIdeaKey);
  98. extern short CbN_SetCounterRAM1(unsigned short iPortNr, unsigned short iIdNr,
  99. unsigned char *pcSCodeId, unsigned char
  100. *pcPassRam, unsigned short iAdrCount, unsigned short
  101. iNewCount);
  102. extern short CbN_ReadCounterRAM1(unsigned short iPortNr, unsigned short iIdNr,
  103. unsigned char *pcSCodeId, unsigned char
  104. *pcPassRam, unsigned short iAdrCount, unsigned short
  105. *piCurrentCount);
  106. extern short CbN_SetCounterRAM2(unsigned short iPortNr, unsigned short iIdNr,
  107. unsigned char *pcSCodeId, unsigned char
  108. *pcPassRam, unsigned short iAdrCount, unsigned short
  109. iNewCount);
  110. extern short CbN_ReadCounterRAM2(unsigned short iPortNr, unsigned short iIdNr,
  111. unsigned char *pcSCodeId, unsigned char
  112. *pcPassRam, unsigned short iAdrCount, unsigned short
  113. *piCurrentCount);
  114. }
  115.