-
-
Notifications
You must be signed in to change notification settings - Fork 21
/
CGameCtnChallenge.chunkl
436 lines (351 loc) · 8.8 KB
/
CGameCtnChallenge.chunkl
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
CGameCtnChallenge 0x03043000 // A map.
0x002 (header, struct: SHeaderTMDesc) [TM10.v3, TMPU.v4, TMS.v7, TMO.v7, TMSX.v10, TMNESWC.v10, TMU.v10, TMF.v11, MP3.v13, TMT.v13, MP4.v13, TM2020.v13] // map info
versionb
v2-
ident MapInfo = empty
string MapName = empty
bool
v1+
timeint? BronzeTime
timeint? SilverTime
timeint? GoldTime
timeint? AuthorTime
v2=
byte
v4+
int Cost
v5+
bool IsLapRace
v6=
bool IsMultilap
v7+
int<PlayMode> Mode
v9+
int
v10+
int AuthorScore
v11+
int<EditorMode> Editor
v12+
int
v13+
int NbCheckpoints
int NbLaps
0x003 (header, struct: SHeaderCommon) [TM10.v0, TMPU.v1, TMS.v1, TMO.v1, TMSX.v4, TMNESWC.v4, TMU.v5, TMF.v5, MP3.v11, TMT.v11, MP4.v11, TM2020.v11] // common
versionb
ident MapInfo
string MapName
byte<MapKind> KindInHeader
v1+
uint
string Password
v2+
ident Decoration = empty
v3+
vec2 MapCoordOrigin
v4+
vec2 MapCoordTarget
v5+
uint128 PackMask
v6+
string MapType
string MapStyle
v8-
int
v8+
ulong LightmapCacheUid
v9+
byte LightmapVersion
v11+
id TitleId
0x004 (header, struct: SHeaderVersion) [TMPU.v2, TMS.v4, TMO.v4, TMSX.v5, TMNESWC.v5, TMU.v6, TMF.v6, MP3.v6, TMT.v6, MP4.v6, TM2020.v6] // version
version
0x005 (header, struct: SHeaderCommunity) [TMS, TMO, TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // xml
string Xml
0x007 (header, struct: SHeaderThumbnail) [TMU, TMF, MP3, TMT, MP4, TM2020] // thumbnail
0x008 (header, struct: SHeaderAuthorInfo) [MP3, TMT, MP4, TM2020] // author info
version
int AuthorVersion
string AuthorLogin
string AuthorNickname
string AuthorZone
string AuthorExtraInfo
0x00D [TM10, TMPU, TMS, TMO, TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // vehicle
ident PlayerModel
0x00F [TM10] // TM1.0 block data
ident MapInfo = empty
int3 Size
list<CGameCtnBlock*>_deprec Blocks
bool NeedUnlock
ident Decoration
0x011 [TM10, TMPU, TMS, TMO, TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // parameters
CGameCtnCollectorList BlockStock
CGameCtnChallengeParameters ChallengeParameters
int<MapKind> Kind
0x012 [TM10] // TM1.0 map name
string MapName
0x013 [TMPU] // legacy block data
ident MapInfo = empty
string MapName
ident Decoration
int3 Size
bool
list<CGameCtnBlock> Blocks
0x014 (skippable) [TMPU, TMS, TMO, TMSX, TMNESWC, TMU] // legacy password
int
string Password
0x016 (skippable) [TMS, TMO, TMSX, TMNESWC]
int // code says DoBool, likely IsPlatform (Mode == 1), but maps yield something like 1698004
0x017 (skippable) [TMS, TMO, TMSX, TMNESWC, TMU, TMF] // checkpoints
int3[] Checkpoints
0x018 (skippable) [TMS, TMO, TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // laps
bool IsLapRace
int NbLaps
0x019 (skippable) [TMS, TMO, TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // mod
packdesc ModPackDesc
0x01A
CMwNod // assert: '!ReplayRecord || !ReplayRecord->m_Challenge' failed.
0x01B // OldIgs
int
if U01 > 0
throw NotSupportedException("SOldIgs count > 0")
0x01C (skippable) [TMS, TMO, TMSX, TMNESWC, TMU, TMF] // play mode
int<PlayMode> Mode
0x01D
CMwNod // assert: '!ReplayRecord || !ReplayRecord->m_Challenge' failed.
0x01F [TMS.v1, TMO.v1, TMSX.v1, TMNESWC.v1, TMU.v1, TMF.v1, MP3.v6, TMT.v6, MP4.v6, TM2020.v6] // block data
0x020 // legacy legacy mediatracker
CGameCtnMediaClip ClipIntro
CMwNod
CMwNod
CGameCtnMediaClipGroup ClipGroupInGame
CGameCtnMediaClipGroup ClipGroupEndRace
0x021 [TMS, TMSX, TMNESWC, TMU, TMF] // legacy mediatracker
CGameCtnMediaClip ClipIntro
CGameCtnMediaClipGroup ClipGroupInGame
CGameCtnMediaClipGroup ClipGroupEndRace
0x022 [TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020]
int = 1
0x023 // map origin
vec2 MapCoordOrigin
MapCoordTarget = MapCoordOrigin
0x024 [TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // music
packdesc CustomMusicPackDesc
0x025 [TMSX, TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // map origin and target
vec2 MapCoordOrigin
vec2 MapCoordTarget
0x026 [TMNESWC, TMU, TMF, MP3, TMT, MP4, TM2020] // clip global
CMwNod
0x027 // old realtime thumbnail
bool HasCustomCamThumbnail
if !HasCustomCamThumbnail
return
byte
vec3 // Iso4 technically
vec3 // camera calibration matrix?
vec3
vec3 ThumbnailPosition
float ThumbnailFov
float ThumbnailNearClipPlane
float ThumbnailFarClipPlane
0x028 (base: 0x027) [TMU, TMF, MP3, TMT, MP4, TM2020] // old realtime thumbnail + comments
base
string Comments
0x029 (skippable) [TMF, MP3, TMT, MP4, TM2020] // password
uint128 HashedPassword
uint Crc32
0x02A [TMF, MP3, TMT, MP4, TM2020]
bool CreatedWithSimpleEditor
0x02D (skippable) // realtime thumbnail + comments
vec3 ThumbnailPosition
vec3 ThumbnailPitchYawRoll
float ThumbnailFov = 90
float // always 10
float // depth? 0 or 0.02
float ThumbnailNearClipPlane = -1
float ThumbnailFarClipPlane = -1
string Comments
0x034 (skippable) [MP3, TMT, MP4, TM2020]
data
0x036 (skippable, base: 0x02D) [MP3, TMT, MP4, TM2020] // realtime thumbnail + comments
0x038 (skippable, ignore) [MP3, TMT, MP4, TM2020]
0x03A (skippable, ignore)
0x03D (skippable) [MP3, TMT, MP4] // lightmaps
0x03E (skippable) [MP3, TMT, MP4, TM2020] // CarMarksBuffer
version
v1+
throw
CSceneVehicleCarMarksSamples[]_deprec CarMarksBuffer
0x040 (skippable) [MP3.v2, TMT.v4, MP4.v4, TM2020.v7] // items
0x041 (skippable, ignore)
0x042 (skippable) [MP3, TMT, MP4, TM2020] // author
version = 1
int AuthorVersion
string AuthorLogin
string AuthorNickname
string AuthorZone
string AuthorExtraInfo
0x043 (skippable) [MP3, TMT, MP4, TM2020] // genealogies
0x044 (skippable) [MP3, TMT, MP4, TM2020] // metadata
0x047 (skippable) [MP3, TMT]
version
string
v1+
throw
0x048 (skippable) [MP3, TMT, MP4, TM2020] // baked blocks
0x049 [MP3, TMT, MP4, TM2020] // mediatracker
version = 2
CGameCtnMediaClip ClipIntro
CGameCtnMediaClip ClipPodium
CGameCtnMediaClipGroup ClipGroupInGame
CGameCtnMediaClipGroup ClipGroupEndRace
v2+
CGameCtnMediaClip ClipAmbiance
v1+
int3 ClipTriggerSize
0x04B (skippable) [MP3, TMT, MP4, TM2020] // objectives
string ObjectiveTextAuthor
string ObjectiveTextGold
string ObjectiveTextSilver
string ObjectiveTextBronze
0x04D (skippable, ignore) [MP3, TMT]
0x04E (skippable, ignore)
0x04F (skippable) [MP3, TMT, MP4, TM2020]
0x050 (skippable) [MP3, TMT, MP4, TM2020] // offzones
version
int3 OffzoneTriggerSize
list<boxint3> Offzones
0x051 (skippable) [MP3, TMT, MP4, TM2020] // title info
version
id TitleId
string BuildVersion
0x052 (skippable) [MP3, TMT, MP4, TM2020] // deco height
version
int DecoBaseHeightOffset
0x053 (skippable) [MP3, TMT, MP4, TM2020] // bot paths
version
list<BotPath> BotPaths
0x054 (skippable) [MP3, TMT, MP4, TM2020] // embedded objects
0x055 (skippable) [MP3, TMT, MP4, TM2020]
0x056 (skippable) [MP4, TM2020] // light settings
version = 3
int
timeofday? DayTime
int
bool DynamicDaylight
timeint? DayDuration
0x057 (skippable, ignore) [MP4, TM2020]
0x058 (skippable) [MP4] // SubMapsInfos
version
int U01
if U01 > 0
throw
0x059 (skippable) [MP4, TM2020] // world distortion
version
vec3 WorldDistortion
v0=
CPlugBitmap U01
v1+
bool U02
if U02
throw
v3+
int
int
0x05A (skippable) [TM2020]
int
int
0x05B (skippable, base: 0x03D) [TM2020] // lightmaps TM2020
0x05C (skippable, ignore) [TM2020]
0x05D (skippable, ignore) [TM2020]
0x05E (skippable, ignore) [TM2020]
0x05F (skippable) [TM2020] // free blocks
0x060 (skippable, ignore) [TM2020]
0x061 (skippable, ignore) [TM2020]
0x062 (skippable) [TM2020] // MapElemColor
0x063 (skippable) [TM2020] // AnimPhaseOffset
0x064 (skippable, ignore) [TM2020]
0x065 (skippable) [TM2020] // foreground pack desc
0x067 (skippable, ignore) [TM2020]
0x068 (skippable) [TM2020] // MapElemLmQuality
0x069 (skippable) [TM2020] // macroblock instances
0x06B (skippable) [TM2020] // light settings 2
int
timeofday? DayTime
int
bool DynamicDaylight
timeint? DayDuration
archive BotPath
int Clan
list<vec3> Path
bool IsFlying
CGameWaypointSpecialProperty WaypointSpecialProperty
bool IsAutonomous
archive SBakedClipsAdditionalData
ident Clip1
ident Clip2
ident Clip3
ident Clip4
int3 Coord
archive LightmapFrame
data Data
v3+
data Data2
v6+
data Data3
archive ProbeGridBoxOld
int
int
int
int
int
int
int
int
int
float
float
float
archive ProbeGridBox
int
int
int
int
int
int
int
int
int
float
float
float
float
float
float
enum MapKind // The map's intended use.
EndMarker
Campaign
Puzzle
Retro
TimeAttack
Rounds
InProgress
Campaign_7
Multi
Solo
Site
SoloNadeo
MultiNadeo
enum PlayMode // Map type in which the map was validated in.
Race
Platform
Puzzle
Crazy
Shortcut
Stunts
Script // Any custom map type script.
enum EditorMode
Advanced
Simple
HasGhostBlocks
Gamepad = 4