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
|