// // 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 /* $Header: /CounterStrike/CONST.CPP 1 3/03/97 10:24a Joe_bostic $ */ /*********************************************************************************************** *** 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 : CONST.CPP * * * * Programmer : Joe L. Bostic * * * * Start Date : September 20, 1993 * * * * Last Update : September 20, 1993 [JLB] * * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #include "function.h" /*************************************************************************** ** These are the access passwords used to activate cheat mode, editor mode, ** and special game options. */ unsigned long const PlayCodes[] = { 0xE0792D6D, // Dwight Okahara 0x90046ECF, // Paul S. Mudra 0xC3EE9A26, // Frank Klepaki 0xED382178, // Ed Del Castillo 0L }; unsigned long const CheatCodes[] = { 0xA0E2AB53, // Joseph Hewitt 0x00532693, // Mike Lightner 0x7DDFF824, // Joe Bostic 0x2CB5CF01, // Phil Gorrow 0xB5B63531, // Bill Randolph 0xDFABC23A, // Adam Isgreen 0x52B19A22, // Erik Yeo 0xBE79088C, // David Dettmer 0xB216AE7E, // Barry Green 0x0E07B213, // Steve Tall 0L }; unsigned long const EditorCodes[] = { 0xA2C09326, // Erik Yeo 0x1F944BB3, // Mike Lightner 0xDE07154D, // Adam Isgreen 0x0E07B213, // Steve Tall 0x16B170B1, // Joe Bostic 0L }; /*********************************************************************************************** ** Unit order names. These names correspond to the player selectable orders ** a unit can have. The system initiated orders have no use for the ASCII name ** associated, but they are listed here for completeness sake. */ char const * Missions[MISSION_COUNT] = { "Sleep", "Attack", "Move", "QMove", "Retreat", "Guard", "Sticky", "Enter", "Capture", "Harvest", "Area Guard", "Return", "Stop", "Ambush", "Hunt", "Unload", "Sabotage", "Construction", "Selling", "Repair", "Rescue", "Missile", "Harmless" }; /*************************************************************************** ** Special weapon names. */ #ifdef SCENARIO_EDITOR char const * const SpecialWeaponName[SPC_COUNT] = { "Sonar Pulse", "Nuclear Missile", "Chronosphere", "Parachute Bomb", "Paratroopers", "Recon Plane", "Iron Curtain", "GPS Satellite" }; #endif int const SpecialWeaponHelp[SPC_COUNT] = { TXT_SONAR_PULSE, TXT_NUCLEAR_BOMB, TXT_CHRONOSHIFT, TXT_PARA_BOMB, TXT_PARA_INFANTRY, TXT_SPY_MISSION, TXT_INVUL, TXT_GPS_SATELLITE }; char const * const SpecialWeaponFile[SPC_COUNT] = { "SONR", "ATOM", "WARP", "PBMB", "PINF", "CAM", "INFX", "GPSS" }; /*************************************************************************** ** Type of quarry to search out and attack. These values are used for team ** attack missions. */ char const * const QuarryName[QUARRY_COUNT] = { "N/A", "Anything", "Buildings - any", "Harvesters", "Infantry", "Vehicles - any", "Ships - any", "Factories", "Base Defenses", "Base Threats", "Power Facilities", "Fake Buildings" }; /*************************************************************************** ** These are the text names for the formation types. */ char const * const FormationName[FORMATION_COUNT] = { "None", "Tight", "Loose", "Wedge North", "Wedge East", "Wedge South", "Wedge West", "Line N/S", "Line E/W" }; /*************************************************************************** ** These are the ASCII names for the reinforcement sources. */ char const * const SourceName[SOURCE_COUNT] = { "North", "East", "South", "West", "Air" }; /*************************************************************************** ** These are the text names for the various armor types a unit may possess. */ char const * const ArmorName[ARMOR_COUNT] = { "none", "wood", "light", "heavy", "concrete" }; // HACK ALERT! This unused text string is here to stop Watcom from crashing. There is some // magic text heap length that causes a crash before the code executes. This dummy string // changes the text heap length enough to stop the crash. Who knows why, but it works. char * __test__ = "alskdfjlasdfjkajsdfkja;sldjfklasj9awutreqjfnfdkvnldzlknvadsjgflkasdjfkajsdfas"; /*************************************************************************** ** The list of VQ filenames. */ char const * const VQName[VQ_COUNT] = { "AAGUN", "MIG", "SFROZEN", "AIRFIELD", "BATTLE", "BMAP", "BOMBRUN", "DPTHCHRG", "GRVESTNE", "MONTPASS", "MTNKFACT", "CRONTEST", "OILDRUM", "ALLIEND", "RADRRAID", "SHIPYARD", // MISSING "SHORBOMB", "SITDUCK", "SLNTSRVC", "SNOWBASE", "EXECUTE", "REDINTRO", // low res. "NUKESTOK", "V2ROCKET", "SEARCH", "BINOC", "ELEVATOR", "FROZEN", "MCV", "SHIPSINK", "SOVMCV", "TRINITY", "ALLYMORF", "APCESCPE", "BRDGTILT", "CRONFAIL", "STRAFE", "DESTROYR", "DOUBLE", "FLARE", "SNSTRAFE", "LANDING", "ONTHPRWL", "OVERRUN", "SNOWBOMB", "SOVCEMET", "TAKE_OFF", "TESLA", "SOVIET8", "SPOTTER", "ALLY1", "ALLY2", "ALLY4", "SOVFINAL", "ASSESS", "SOVIET10", "DUD", "MCV_LAND", "MCVBRDGE", "PERISCOP", "SHORBOM1", "SHORBOM2", "SOVBATL", "SOVTSTAR", "AFTRMATH", "SOVIET11", "MASASSLT", "ENGLISH", // High res. Intro "SOVIET1", "SOVIET2", "SOVIET3", "SOVIET4", "SOVIET5", "SOVIET6", "SOVIET7", "PROLOG", "AVERTED", "COUNTDWN", "MOVINGIN", "ALLY10", "ALLY12", "ALLY5", "ALLY6", "ALLY8", "TANYA1", "TANYA2", "ALLY10B", "ALLY11", "ALLY14", "ALLY9", "SPY", "TOOFAR", "SOVIET12", "SOVIET13", "SOVIET9", "BEACHEAD", "SOVIET14", "SIZZLE", //MISSING "SIZZLE2", //MISSING "ANTEND", "ANTINTRO", //2019/11/12 JAS - Added for Retaliation movies "RETALIATION_ALLIED1", "RETALIATION_ALLIED2", "RETALIATION_ALLIED3", "RETALIATION_ALLIED4", "RETALIATION_ALLIED5", "RETALIATION_ALLIED6", "RETALIATION_ALLIED7", "RETALIATION_ALLIED8", "RETALIATION_ALLIED9", "RETALIATION_ALLIED10", "RETALIATION_SOVIET1", "RETALIATION_SOVIET2", "RETALIATION_SOVIET3", "RETALIATION_SOVIET4", "RETALIATION_SOVIET5", "RETALIATION_SOVIET6", "RETALIATION_SOVIET7", "RETALIATION_SOVIET8", "RETALIATION_SOVIET9", "RETALIATION_SOVIET10", "RETALIATION_WINA", "RETALIATION_WINS", "RETALIATION_ANTS" }; /*************************************************************************** ** Relative coordinate offsets from the center of a cell for each ** of the legal positions that an object in a cell may stop at. Only infantry ** are allowed to stop at other than the center of the cell. */ COORDINATE const StoppingCoordAbs[5] = { 0x00800080L, // center 0x00400040L, // upper left 0x004000C0L, // upper right 0x00C00040L, // lower left 0x00C000C0L // lower right }; /*************************************************************************** ** Converts pixel values (cell relative) into the appropriate lepton (sub cell) ** value. This is used to convert pixel (screen) coordinates into the underlying ** coordinate system. */ unsigned char const Pixel2Lepton[24] = { 0x00,0x0B,0x15,0x20,0x2B,0x35,0x40,0x4B, 0x55,0x60,0x6B,0x75,0x80,0x8B,0x95,0xA0, 0xAB,0xB5,0xC0,0xCB,0xD5,0xE0,0xEB,0xF5 }; /*************************************************************************** ** This array is used to index a facing in order to retrieve a cell ** offset that, when added to another cell, will achieve the adjacent cell ** in the indexed direction. */ CELL const AdjacentCell[FACING_COUNT] = { -(MAP_CELL_W), // North -(MAP_CELL_W-1), // North East 1, // East MAP_CELL_W+1, // South East MAP_CELL_W, // South MAP_CELL_W-1, // South West -1, // West -(MAP_CELL_W+1) // North West }; COORDINATE const AdjacentCoord[FACING_COUNT] = { 0xFF000000L, 0xFF000100L, 0x00000100L, 0x01000100L, 0x01000000L, 0x0100FF00L, 0x0000FF00L, 0xFF00FF00L }; /*************************************************************************** ** This specifies the odds of receiving the various random crate power ** ups. The odds are expressed as "shares" of 100 percent. */ int CrateShares[CRATE_COUNT] = { 50, // CRATE_MONEY 20, // CRATE_UNIT 3, // CRATE_PARA_BOMB 1, // CRATE_HEAL_BASE 3, // CRATE_CLOAK 5, // CRATE_EXPLOSION 5, // CRATE_NAPALM 20, // CRATE_SQUAD 1, // CRATE_DARKNESS 1, // CRATE_REVEAL 3, // CRATE_SONAR 10, // CRATE_ARMOR 10, // CRATE_SPEED 10, // CRATE_FIREPOWER 1, // CRATE_ICBM 1, // CRATE_TIMEQUAKE 3, // CRATE_INVULN 5 // CRATE_VORTEX }; AnimType CrateAnims[CRATE_COUNT] = { ANIM_NONE, // CRATE_MONEY ANIM_NONE, // CRATE_UNIT ANIM_NONE, // CRATE_PARA_BOMB ANIM_NONE, // CRATE_HEAL_BASE ANIM_NONE, // CRATE_CLOAK ANIM_NONE, // CRATE_EXPLOSION ANIM_NONE, // CRATE_NAPALM ANIM_NONE, // CRATE_SQUAD ANIM_NONE, // CRATE_DARKNESS ANIM_NONE, // CRATE_REVEAL ANIM_NONE, // CRATE_SONAR ANIM_NONE, // CRATE_ARMOR ANIM_NONE, // CRATE_SPEED ANIM_NONE, // CRATE_FIREPOWER ANIM_NONE, // CRATE_ICBM ANIM_NONE, // CRATE_TIMEQUAKE ANIM_NONE, // CRATE_INVULN ANIM_NONE // CRATE_VORTEX }; int CrateData[CRATE_COUNT] = { 0, // CRATE_MONEY 0, // CRATE_UNIT 0, // CRATE_PARA_BOMB 0, // CRATE_HEAL_BASE 0, // CRATE_CLOAK 0, // CRATE_EXPLOSION 0, // CRATE_NAPALM 0, // CRATE_SQUAD 0, // CRATE_DARKNESS 0, // CRATE_REVEAL 0, // CRATE_SONAR 0, // CRATE_ARMOR 0, // CRATE_SPEED 0, // CRATE_FIREPOWER 0, // CRATE_ICBM 0, // CRATE_TIMEQUAKE 0, // CRATE_INVULN 0 // CRATE_VORTEX }; char const * const CrateNames[CRATE_COUNT] = { "Money", "Unit", "ParaBomb", "HealBase", "Cloak", "Explosion", "Napalm", "Squad", "Darkness", "Reveal", "Sonar", "Armor", "Speed", "Firepower", "ICBM", "TimeQuake", "Invulnerability", "ChronalVortex" }; /*************************************************************************** ** This converts 0..255 facing values into either 8, 16, or 32 facing values. ** Note: a simple shift won't suffice because 0..255 facing values should ** be converted to the CLOSEST appropriate facing, NOT rounded down to the ** nearest facing. */ unsigned char const Facing8[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; unsigned char const Facing16[256] = { 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12, 12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14, 14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0 }; signed char const Rotation16[256] = { 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1 }; /* ** This table incorporates a compensating factor for the distortion caused ** by 3D-Studio when it tries to render 45% angles. */ unsigned char const Facing32[256] = { 0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3, 3,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8, 8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12, 13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16, 16,16,16,16,16,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19, 19,20,20,20,20,20,20,21,21,21,21,21,21,21,22,22,22,22,22,22,22,23,23,23,23,23,23,23,24,24,24,24, 24,24,24,25,25,25,25,25,25,25,26,26,26,26,26,26,26,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28, 29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0 }; #ifdef OBSOLETE unsigned char const Facing32[256] = { 0,0,0,0, 1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4, 5,5,5,5,5,5,5,5, 6,6,6,6,6,6,6,6, 7,7,7,7,7,7,7,7, 8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9, 10,10,10,10,10,10,10,10, 11,11,11,11,11,11,11,11, 12,12,12,12,12,12,12,12, 13,13,13,13,13,13,13,13, 14,14,14,14,14,14,14,14, 15,15,15,15,15,15,15,15, 16,16,16,16,16,16,16,16, 17,17,17,17,17,17,17,17, 18,18,18,18,18,18,18,18, 19,19,19,19,19,19,19,19, 20,20,20,20,20,20,20,20, 21,21,21,21,21,21,21,21, 22,22,22,22,22,22,22,22, 23,23,23,23,23,23,23,23, 24,24,24,24,24,24,24,24, 25,25,25,25,25,25,25,25, 26,26,26,26,26,26,26,26, 27,27,27,27,27,27,27,27, 28,28,28,28,28,28,28,28, 29,29,29,29,29,29,29,29, 30,30,30,30,30,30,30,30, 31,31,31,31,31,31,31,31, 0,0,0,0 }; #endif /*************************************************************************** ** These are the movement costs (in ticks at fastest speed) to enter each ** of the given terrain cells. */ int const GroundColor[LAND_COUNT] = { 141, // "Clear" terrain. 141, // Road terrain. 172, // Water. 21, // Impassable rock. 21, // Wall (blocks movement). 158, // Tiberium field. 141, // Beach terrain. 141, // Rocky terrain. 174 // Rocky riverbed. }; int const SnowColor[LAND_COUNT] = { 141, // "Clear" terrain. 141, // Road terrain. 172, // Water. 21, // Impassable rock. 21, // Wall (blocks movement). 158, // Tiberium field. 141, // Beach terrain. 141, // Rocky terrain. 174 // Rocky riverbed. }; #ifdef NEVER int const GroundColor[LAND_COUNT] = { 46, // "Clear" terrain. 44, // Road terrain. BLUE, // Water. DKGREY, // Impassable rock. DKGREY, // Wall (blocks movement). 158, // Tiberium field. 64, // Beach terrain. DKGREY, // Rocky terrain. DKGREY // Rocky riverbed. }; int const SnowColor[LAND_COUNT] = { WHITE, // "Clear" terrain. LTGRAY, // Road terrain. BLUE, // Water. DKGREY, // Impassable rock. DKGREY, // Wall (blocks movement). 158, // Tiberium field. LTGRAY, // Beach terrain. DKGREY, // Rocky terrain. DKGREY // Rocky riverbed. }; #endif GroundType Ground[LAND_COUNT]; /*************************************************************************** ** These are the names of the theaters. */ TheaterDataType const Theaters[THEATER_COUNT] = { {"TEMPERATE","TEMPERAT","TEM"}, {"SNOW","SNOW","SNO"}, {"INTERIOR","INTERIOR","INT"}, }; unsigned char const RemapCiv2[256] = { 0,1,2,3,4,5,6,209,8,9,10,11,12,13,12,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,187,188,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,209, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,167, 13,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv4[256] = { 0,1,2,3,4,5,6,187,8,9,10,11,12,13,14,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,118,110,119, // 96..111 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,188,207, // 192..207 208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv5[256] = { 0,1,2,3,4,5,6,109,8,9,10,11,131,13,14,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,177,110,178, // 96..111 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 192,193,194,195,196,197,198,199,111,201,202,203,204,205,111,207, // 192..207 208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv6[256] = { 0,1,2,3,4,5,6,120,8,9,10,11,12,13,238,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,236,206,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,111, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv7[256] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,131,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,157,212,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,7, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,118,119,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv8[256] = { 0,1,2,3,4,5,6,182,8,9,10,11,12,13,131,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,215,7,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,182, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,198,199,189,190,191, // 176..191 192,193,194,195,196,197,198,199,111,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv9[256] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,7,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,163,165,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,200, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,111,13,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapCiv10[256] = { 0,1,2,3,4,5,6,137,8,9,10,11,12,13,15,15, // 0..15 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 112,113,114,115,116,117,129,131,120,121,122,123,124,125,126,127, // 112..127 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,137, // 144..159 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 176,177,178,179,180,181,182,183,184,185,186,163,165,189,190,191, // 176..191 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 }; unsigned char const RemapEmber[256] = { #define CEC CC_EMBER_COLOR 0,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,BLACK,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC }; //char const Keys[] = // "[PublicKey]\n" // "1=AgkCbXo9sKMHOBk=\n" //#ifdef CHEAT_KEYS // "[PrivateKey]\n" // "1=AggxFU55vc7LYQ==\n" //#endif // "\n"; char const Keys[] = "[PublicKey]\n" "1=AihRvNoIbTn85FZRYNZRcT+i6KpU+maCsEqr3Q5q+LDB5tH7Tz2qQ38V\n" #ifdef CHEAT_KEYS "[PrivateKey]\n" "1=AigKVje8mROcR8QixnxUEF5b29Curkq01DNDWCdOG99XBqH79OaCiTCB\n" #endif "\n";