Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Menu/HelpMenu.txt
1319 views
1
//-----------------Sonic CD Help Menu Script------------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.Value0 : Object.Timer //Also used for fading
7
#alias Object.Value2 : Object.YOffset
8
#alias Object.Value3 : Object.HelpPage
9
#alias Object.Value4 : Object.PageTimer
10
11
// States
12
#alias 0 : HELPMENU_SETUP
13
#alias 1 : HELPMENU_FADEIN
14
#alias 2 : HELPMENU_CONTROLS
15
#alias 3 : HELPMENU_PAGEDOWN
16
#alias 4 : HELPMENU_PAGEUP
17
#alias 5 : HELPMENU_LEAVE
18
19
// Languages
20
#alias 0 : LANG_ENGLISH
21
#alias 1 : LANG_FRENCH
22
#alias 2 : LANG_ITALIAN
23
#alias 3 : LANG_DEUTSCH
24
#alias 4 : LANG_SPANISH
25
#alias 5 : LANG_JAPANESE
26
27
// Global SFX
28
#alias 26 : SFX_G_OUTTAHERE
29
#alias 27 : SFX_G_SELECT
30
31
// Soundtrack
32
#alias 0 : OST_JP
33
34
// Presentation Stages
35
#alias 1 : STAGE_P_MENU
36
37
// Engine & Callbacks
38
#alias 5 : ENGINE_ENTER_HIRESMODE
39
#alias 6 : ENGINE_EXIT_HIRESMODE
40
41
// Priority
42
#alias 1 : PRIORITY_ACTIVE
43
44
// Function declarations
45
#function HelpMenu_PageLoad
46
47
function HelpMenu_PageLoad
48
switch Object.HelpPage
49
case 0
50
switch Engine.Language
51
case LANG_ENGLISH
52
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg1_EN.txt", 1)
53
break
54
case LANG_FRENCH
55
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg1_FR.txt", 1)
56
break
57
case LANG_ITALIAN
58
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg1_IT.txt", 1)
59
break
60
case LANG_DEUTSCH
61
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg1_DE.txt", 1)
62
break
63
case LANG_SPANISH
64
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg1_ES.txt", 1)
65
break
66
case LANG_JAPANESE
67
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg1_JP.txt", 1)
68
break
69
end switch
70
break
71
case 1
72
switch Engine.Language
73
case LANG_ENGLISH
74
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg2_EN.txt", 1)
75
break
76
case LANG_FRENCH
77
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg2_FR.txt", 1)
78
break
79
case LANG_ITALIAN
80
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg2_IT.txt", 1)
81
break
82
case LANG_DEUTSCH
83
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg2_DE.txt", 1)
84
break
85
case LANG_SPANISH
86
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg2_ES.txt", 1)
87
break
88
case LANG_JAPANESE
89
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg2_JP.txt", 1)
90
break
91
end switch
92
break
93
case 2
94
switch Engine.Language
95
case LANG_ENGLISH
96
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg3_EN.txt", 1)
97
break
98
case LANG_FRENCH
99
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg3_FR.txt", 1)
100
break
101
case LANG_ITALIAN
102
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg3_IT.txt", 1)
103
break
104
case LANG_DEUTSCH
105
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg3_DE.txt", 1)
106
break
107
case LANG_SPANISH
108
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg3_ES.txt", 1)
109
break
110
case LANG_JAPANESE
111
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg3_JP.txt", 1)
112
break
113
end switch
114
break
115
case 3
116
switch Engine.Language
117
case LANG_ENGLISH
118
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg4_EN.txt", 1)
119
break
120
case LANG_FRENCH
121
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg4_FR.txt", 1)
122
break
123
case LANG_ITALIAN
124
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg4_IT.txt", 1)
125
break
126
case LANG_DEUTSCH
127
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg4_DE.txt", 1)
128
break
129
case LANG_SPANISH
130
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg4_ES.txt", 1)
131
break
132
case LANG_JAPANESE
133
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg4_JP.txt", 1)
134
break
135
end switch
136
break
137
case 4
138
switch Engine.Language
139
case LANG_ENGLISH
140
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg5_EN.txt", 1)
141
break
142
case LANG_FRENCH
143
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg5_FR.txt", 1)
144
break
145
case LANG_ITALIAN
146
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg5_IT.txt", 1)
147
break
148
case LANG_DEUTSCH
149
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg5_DE.txt", 1)
150
break
151
case LANG_SPANISH
152
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg5_ES.txt", 1)
153
break
154
case LANG_JAPANESE
155
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg5_JP.txt", 1)
156
break
157
end switch
158
break
159
case 5
160
switch Engine.Language
161
case LANG_ENGLISH
162
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg6_EN.txt", 1)
163
break
164
case LANG_FRENCH
165
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg6_FR.txt", 1)
166
break
167
case LANG_ITALIAN
168
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg6_IT.txt", 1)
169
break
170
case LANG_DEUTSCH
171
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg6_DE.txt", 1)
172
break
173
case LANG_SPANISH
174
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg6_ES.txt", 1)
175
break
176
case LANG_JAPANESE
177
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg6_JP.txt", 1)
178
break
179
end switch
180
break
181
case 6
182
switch Engine.Language
183
case LANG_ENGLISH
184
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg7_EN.txt", 1)
185
break
186
case LANG_FRENCH
187
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg7_FR.txt", 1)
188
break
189
case LANG_ITALIAN
190
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg7_IT.txt", 1)
191
break
192
case LANG_DEUTSCH
193
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg7_DE.txt", 1)
194
break
195
case LANG_SPANISH
196
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg7_ES.txt", 1)
197
break
198
case LANG_JAPANESE
199
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg7_JP.txt", 1)
200
break
201
end switch
202
break
203
case 7
204
switch Engine.Language
205
case LANG_ENGLISH
206
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg8_EN.txt", 1)
207
break
208
case LANG_FRENCH
209
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg8_FR.txt", 1)
210
break
211
case LANG_ITALIAN
212
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg8_IT.txt", 1)
213
break
214
case LANG_DEUTSCH
215
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg8_DE.txt", 1)
216
break
217
case LANG_SPANISH
218
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg8_ES.txt", 1)
219
break
220
case LANG_JAPANESE
221
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg8_JP.txt", 1)
222
break
223
end switch
224
break
225
case 8
226
switch Engine.Language
227
case LANG_ENGLISH
228
LoadTextFile(MENU_1, "Data/Game/EN_Help/SCD_Pg9_EN.txt", 1)
229
break
230
case LANG_FRENCH
231
LoadTextFile(MENU_1, "Data/Game/FR_Help/SCD_Pg9_FR.txt", 1)
232
break
233
case LANG_ITALIAN
234
LoadTextFile(MENU_1, "Data/Game/IT_Help/SCD_Pg9_IT.txt", 1)
235
break
236
case LANG_DEUTSCH
237
LoadTextFile(MENU_1, "Data/Game/DE_Help/SCD_Pg9_DE.txt", 1)
238
break
239
case LANG_SPANISH
240
LoadTextFile(MENU_1, "Data/Game/ES_Help/SCD_Pg9_ES.txt", 1)
241
break
242
case LANG_JAPANESE
243
LoadTextFile(MENU_1, "Data/Game/JP_Help/SCD_Pg9_JP.txt", 1)
244
break
245
end switch
246
break
247
end switch
248
end function
249
250
251
sub ObjectMain
252
switch Object.State
253
case HELPMENU_SETUP
254
TempValue0 = 256
255
TempValue0 -= Screen.CenterX
256
Screen.XOffset = TempValue0
257
Object.HelpPage = 0
258
CallFunction(HelpMenu_PageLoad)
259
PlayMusic(1)
260
Object.Timer = 384
261
Object.State++
262
SetScreenFade(0, 0, 0, 255)
263
break
264
265
case HELPMENU_FADEIN
266
if Object.Timer > 0
267
Object.Timer -= 8
268
else
269
Object.State++
270
end if
271
SetScreenFade(0, 0, 0, Object.Timer)
272
break
273
274
case HELPMENU_CONTROLS
275
if KeyPress[0].Down == true
276
if Object.HelpPage < 8
277
PlaySfx(SFX_G_SELECT, false)
278
Object.Timer = 256
279
Object.State = HELPMENU_PAGEDOWN
280
end if
281
end if
282
283
if KeyPress[0].Up == true
284
if Object.HelpPage > 0
285
PlaySfx(SFX_G_SELECT, false)
286
Object.State = HELPMENU_PAGEUP
287
end if
288
end if
289
290
if KeyPress[0].ButtonB == true
291
PlaySfx(SFX_G_OUTTAHERE, false)
292
Object.State = HELPMENU_LEAVE
293
end if
294
break
295
296
case HELPMENU_PAGEDOWN
297
if Object.Timer > 0
298
Cos(TempValue0, Object.Timer)
299
TempValue0 >>= 1
300
TempValue0 += 256
301
TempValue1 = Object.YOffset
302
TempValue1 += TempValue0
303
Screen.YOffset = TempValue1
304
305
TempValue1 += 256
306
TempValue1 >>= 9
307
if TempValue1 > Object.HelpPage
308
Object.HelpPage++
309
if Object.HelpPage == 2
310
SetActivePalette(1, 0, Screen.YSize)
311
else
312
SetActivePalette(0, 0, Screen.YSize)
313
end if
314
CallFunction(HelpMenu_PageLoad)
315
end if
316
317
Object.Timer -= 3
318
if Object.Timer < 0
319
Object.Timer = 0
320
end if
321
else
322
Object.YOffset += 512
323
Screen.YOffset = Object.YOffset
324
Object.State = HELPMENU_CONTROLS
325
end if
326
break
327
328
case HELPMENU_PAGEUP
329
if Object.Timer < 256
330
Cos(TempValue0, Object.Timer)
331
TempValue0 >>= 1
332
TempValue0 -= 256
333
TempValue1 = Object.YOffset
334
TempValue1 += TempValue0
335
Screen.YOffset = TempValue1
336
337
TempValue1 += 256
338
TempValue1 >>= 9
339
if TempValue1 < Object.HelpPage
340
Object.HelpPage--
341
if Object.HelpPage == 2
342
SetActivePalette(1, 0, Screen.YSize)
343
else
344
SetActivePalette(0, 0, Screen.YSize)
345
end if
346
CallFunction(HelpMenu_PageLoad)
347
end if
348
349
Object.Timer += 3
350
if Object.Timer > 256
351
Object.Timer = 256
352
end if
353
else
354
Object.YOffset -= 512
355
Screen.YOffset = Object.YOffset
356
357
Object.Timer = 0
358
Object.State = HELPMENU_CONTROLS
359
end if
360
break
361
362
case HELPMENU_LEAVE
363
if Object.Timer < 348
364
Object.Timer += 8
365
else
366
Stage.ListPos = STAGE_P_MENU
367
Engine.State = ENGINE_EXIT_HIRESMODE
368
LoadStage()
369
end if
370
SetScreenFade(0, 0, 0, Object.Timer)
371
break
372
373
end switch
374
end sub
375
376
377
sub ObjectDraw
378
Object.PageTimer--
379
if Object.PageTimer < -31
380
Object.PageTimer += 32
381
end if
382
TempValue1 = Object.PageTimer
383
TempValue1 >>= 1
384
while TempValue1 < Screen.YSize
385
TempValue0 = Object.PageTimer
386
TempValue0 >>= 1
387
while TempValue0 < Screen.XSize
388
DrawSpriteScreenXY(0, TempValue0, TempValue1)
389
TempValue0 += 128
390
loop
391
TempValue1 += 128
392
loop
393
end sub
394
395
396
sub ObjectStartup
397
LoadSpriteSheet("Menu/HelpBG.gif")
398
399
SpriteFrame(0, 0, 128, 128, 1, 1)
400
401
if Engine.Language == LANG_JAPANESE
402
Object[59].XPos -= 0x100000
403
Object[60].XPos -= 0x100000
404
Object[61].XPos -= 0x100000
405
Object[62].XPos -= 0x100000
406
Object[63].XPos -= 0x100000
407
Object[64].XPos += 0x500000
408
Object[59].YPos += 0x180000
409
Object[60].YPos += 0x180000
410
Object[61].YPos += 0x180000
411
Object[62].YPos += 0x180000
412
Object[63].YPos += 0x180000
413
Object[64].YPos -= 0x2F0000
414
end if
415
416
LoadPalette("HelpPal1.act", 0, 0, 0, 256)
417
LoadPalette("HelpPal2.act", 1, 0, 0, 256)
418
LoadTextFont("Data/Game/HelpText.bin")
419
420
if Options.Soundtrack == OST_JP
421
SetMusicTrack("JP/DAGarden.ogg", 1, 1)
422
else
423
SetMusicTrack("US/DAGarden.ogg", 1, 117382)
424
end if
425
426
Engine.State = ENGINE_ENTER_HIRESMODE
427
Screen.CameraEnabled = false
428
429
Object[0].Type = TypeName[Help Menu]
430
Object[0].Priority = PRIORITY_ACTIVE
431
Object[0].DrawOrder = 0
432
end sub
433
434
435
// ========================
436
// Editor Subs
437
// ========================
438
439
sub RSDKDraw
440
DrawSprite(0)
441
end sub
442
443
444
sub RSDKLoad
445
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
446
SpriteFrame(16, 0, 46, 30, 1, 677) // Help
447
448
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
449
end sub
450
451