summaryrefslogtreecommitdiff
path: root/common/ValveCDKeyGameAndTerritoryCodes.h
blob: 1a409af213116a688a0112d465bb67cea090643d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================//

#ifndef VALVECDKEYGAMEANDTERRITORYCODES_H
#define VALVECDKEYGAMEANDTERRITORYCODES_H
#ifdef _WIN32
#pragma once
#endif

// imported from MainIntegration/Deliverables/Production/Client/Inc/NewValveCDKeyGenerator.h
// if the enums there change, this needs to change
//!! these need to be moved out into a seperate file in steam, so that src can use the directly published version

//
// GameCode
//

enum EGameCode
{
	// DoD uses SteamInstanceId = 1
	// DoD CD-key Steam IDs are displayed as VALVE_1:xxxxxxxx where xxxx is the SteamLocalUserId mentioned above.
	// DoD CD-keys uses an odd scheme (invented in a rush) whereby the SteamLocalUserID is generated by hashing 
	// (MD5) the CD key parameters (Territory,GameCode,UniqueSerialNumber) and truncating the resulting hash for 
	// a reasonable display length (26 bits, i.e. eMaskLargestAcceptableLocalUserId above, which is about 8 decimal digits).
	// **The generator must therefore discard any UniqueSerialNumbers that cause hashes to collide.**
	// This means that when generating a new batch from a non-zero StartUniqueSerialNumber, the generator has 
	// to generate them all from 0 anyway to populate an array of 'hash has been used' flags -- it then only 
	// prints out new keys higher than the requested StartUniqueSerialNumber.   
	// IMPORTANT: this means that each match of N keys generated consumes MORE THAN N UniqueSerialNumbers -- 
	// so each new batch MUST be started with the correct "Next StartUniqueSerialNumber" that was output 
	// at the end of the previous batch, or the new batch will overlap with the previous batch.
	eDayOfDefeat		= 0,

	// CZ uses SteamInstanceId = 2 (**as will all future games using this system**)
	// CZ CD-key SteamLocalUserIds have 
	//				high32bits	= ( GameCode << sc_uNumBitsSalesTerritory) | SalesTerritory
	//				low32bits	= UniqueSerialNumber
	// CZ CD-key Steam IDs will be displayed as VALVE_2:GameCode:UniqueSerialNumber
	// (i.e. the DoD hashing scheme is *NOT* used).
	eConditionZero		= 1,

	// CyberCafes receive all legacy and future products, under this one code.
	// They have their own SalesTerritory codes too.
	// If a CDKey has this game code OR a CyberCafe SalesTerritory then it is a 'cybercafe CDkey'.
	eCyberCafeBundle	= 2,

	eHalfLife2			= 3,

	eHalfLife2RetailCE	= 4,

	eHalfLife2Retail	= 5,
};


//
// SalesTerritory
//

enum ESalesTerritory
{
	// DoD				first batch		 80,000	keys	**Next free 'StartUniqueSerialNumber' =  80032
	// DoD				second batch	 30,000	keys	**Next free 'StartUniqueSerialNumber' = 110081
	// OLD KEY		... NOTE: this CZ first batch for USA (code 0) of 275,000 may also be distributed in Canada 
	// OLD KEY		... i.e. they should ideally have had code 11, but we didn't want to re-issue them.
	// OLD KEY		ConditionZero	first batch		275,000 keys	**Next free 'StartUniqueSerialNumber' = 275000
	// NEW KEY	These were moved to region 11 as suggested above (part of first batch of 379,000)
	eUSA			= 0,

	// DoD				first batch		  7,500	keys	**Next free 'StartUniqueSerialNumber' = 7500
	eAustralia		= 1,

	// DoD				first batch		 15,000	keys	**Next free 'StartUniqueSerialNumber' = 15000
	eKorea			= 2,

	// DoD				first batch		 10,000	keys	**Next free 'StartUniqueSerialNumber' = 10000
	eTaiwan			= 3,

	// DoD				first batch		  5,000	keys	**Next free 'StartUniqueSerialNumber' = 5000
	eJapan			= 4,

	// DoD				first batch		 25,000 keys	**Next free 'StartUniqueSerialNumber' = 25003
	// ConditionZero	first batch		 99,000 keys	**Next free 'StartUniqueSerialNumber' = 99000
	eUK				= 5,

	// DoD				first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15002
	// ConditionZero	first batch		 77,000 keys	**Next free 'StartUniqueSerialNumber' = 77000
	eFrance			= 6,

	// DoD				first batch		  3,000 keys	**Next free 'StartUniqueSerialNumber' = 3000
	// DoD				second batch	  5,000 keys	**Next free 'StartUniqueSerialNumber' = 8002
	// ConditionZero	first batch		132,000 keys	**Next free 'StartUniqueSerialNumber' = 132000
	eGermany		= 7,

	// DoD				first batch		  3,000 keys	**Next free 'StartUniqueSerialNumber' = 3000
	// ConditionZero	first batch		 27,500 keys	**Next free 'StartUniqueSerialNumber' = 27500
	eSpain			= 8,

	// DoD				first batch		  3,000 keys	**Next free 'StartUniqueSerialNumber' = 3000
	// ConditionZero	first batch		 44,000 keys	**Next free 'StartUniqueSerialNumber' = 44000
	eItaly			= 9,

	// DoD				first batch		 65,000 keys	**Next free 'StartUniqueSerialNumber' = 65039
	// DoD				second batch	 20,000 keys	**Next free 'StartUniqueSerialNumber' = 85058
	eChina			= 10,

	// This is ALL 'American' ENGLISH-SPEAKING TERRITORIES (e.g. USA, Austrailia, Canada, NZ, but *NOT* UK).
	// Vivendi track sales by language, rather that geographically.
	// OLD KEY	... NOTE: CZ first batch for USA (code 0) of 275,000 will also be distributed in these territories
	// OLD KEY	... i.e. they should ideally have had this code, but we didn't want to re-issue them.
	// OLD KEY		ConditionZero	first batch		 25,000	keys	**Next free 'StartUniqueSerialNumber' = 25000
	// OLD KEY		ConditionZero	second batch	 79,000	keys	**Next free 'StartUniqueSerialNumber' = 104000
	// NEW KEY ConditionZero	first batch	 379,000	keys	**Next free 'StartUniqueSerialNumber' = 
	eEnglish		= 11,

	// CyberCafe specific territories. If a CDKey has this game code OR a CyberCafe SalesTerritory then it is a 'cybercafe CDkey'.
	// CyberCafeBundle	first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15000
	eCyberCafeEurope				= 12,
	// CyberCafeBundle	first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15000
	eCyberCafeNorthAndSouthAmerica	= 13,
	// CyberCafeBundle	first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15000
	eCyberCafeKorea					= 14,
	// CyberCafeBundle	first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15000
	eCyberCafeChinaTaiwan			= 15,
	// CyberCafeBundle	first batch		 15,000 keys	**Next free 'StartUniqueSerialNumber' = 15000
	eCyberCafeRestOfAsia			= 16,

	// ATI OEM
	// *** After intranet security breach, only the first 40,000 of these keys are valid:
	// OLD KEY	HL2				first batch						250,000 keys
	// *** After intranet security breach, these keys use a new MAC key:
	// NEW KEY	HL2				first batch	    start=40,000	210,000 keys
	eATI_OEM						= 17,

	// ConditionZero	first batch		  5,500 keys	**Next free 'StartUniqueSerialNumber' = 5500
	eLatinAmerica					= 18,

	// ConditionZero	first batch		 16,500 keys	**Next free 'StartUniqueSerialNumber' = 16500
	eBrazil							= 19,

	// ConditionZero	first batch		 66,000 keys	**Next free 'StartUniqueSerialNumber' = 66000
	eNordic							= 20,

	// This a Vivendi code meaning "Belgium, Luxembourg, French speaking territories of Africa, French overseas departments, Netherlands, Quebec"
	// ConditionZero	first batch		 40,700 keys	**Next free 'StartUniqueSerialNumber' = 40700
	eExportFrance					= 21,

	// This a Vivendi code meaning "Austria, Switzerland, Bulgaria, Czech Republic, Hungary, Lithuania, Poland, Romania, Russian Federation, Slovenia, Slovakia"
	// ConditionZero	first batch		 16,500 keys	**Next free 'StartUniqueSerialNumber' = 16500
	eExportNorth					= 22,

	// This a Vivendi code meaning "Cyprus, Egypt, Greece, Israel, Lebanon, Malta, Turkey"
	// ConditionZero	first batch		 40,700 keys	**Next free 'StartUniqueSerialNumber' = 40700
	eExportSouth					= 23,

	// MISSING ONES ARE ON MI (24..29)

	// ATI Rebate
	// HL2				first batch	    100,000 keys
	eATI_Rebate						= 30,

	// Used for internal and pre-release testing keys.
	// DoD				first batch		     20 keys	**Next free 'StartUniqueSerialNumber' = 20
	// DoD				second batch	    150 keys	**Next free 'StartUniqueSerialNumber' = 170
	// DoD				second batch	    500 keys	**Next free 'StartUniqueSerialNumber' = 670
	// ConditionZero	first batch		    200 keys	**Next free 'StartUniqueSerialNumber' = 200
	// CyberCafeBundle	first batch		    100 keys	**Next free 'StartUniqueSerialNumber' = 100
	eInternal		= 255
};

#endif // VALVECDKEYGAMEANDTERRITORYCODES_H