Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Menu/OptionsMenuH.txt
1319 views
1
//------------Sonic CD Options Menu Haptics Script------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
//---This Object is normally only used by Mobile Data files---//
5
6
// Aliases
7
#alias Object.Value0 : Object.Timer
8
#alias Object.Value1 : Object.CurrentSelection
9
#alias Object.Value3 : Object.BGMDecreaseTimer
10
#alias Object.Value4 : Object.BGMIncreaseTimer
11
#alias Object.Value5 : Object.SFXDecreaseTimer
12
#alias Object.Value6 : Object.SFXIncreaseTimer
13
#alias Object.Value7 : Object.TouchDelay
14
15
//Object[+ArrayPos0] can be the BlankObjects 63, 64, 65 and 66. Depending of the CurrentSelection value
16
#alias Object[+ArrayPos0].Value2 : Object.FlickerText
17
18
//Object[+4] is Empty, only used to set the Maximum amount of options for the controls
19
#alias Object[+4].Value1 : Object.OptionCount
20
21
//Object[33] is MenuHeading
22
#alias Object[33].State : MenuHeading.State
23
#alias Object[33].PropertyValue : MenuHeading.Header
24
25
//Object[-1] is MenuWindow
26
#alias Object[-1].State : MenuWindow.State
27
28
// Object[1] is a blank object just to share values
29
#alias Object[1].Value4 : Object.BackTouchPress
30
31
// States
32
#alias 0 : OPTIONS_SETUP
33
#alias 1 : OPTIONS_CONTROLS
34
#alias 2 : OPTIONS_SELECTED
35
#alias 3 : OPTIONS_STAGE_LOAD
36
#alias 4 : OPTIONS_SETTINGS_SETUP
37
#alias 5 : OPTIONS_SETTINGS_POPIN
38
#alias 6 : OPTIONS_SETTINGS_CONTROLS
39
#alias 7 : OPTIONS_UNUSED
40
#alias 8 : OPTIONS_UNUSED2
41
#alias 9 : OPTIONS_EXIT_SETTINGS
42
#alias 10 : OPTIONS_LEAVE_SUBMENU
43
#alias 11 : OPTIONS_EXIT
44
#alias 12 : OPTIONS_ENTER_ABOUT_MENU
45
#alias 13 : OPTIONS_ENTER_ABOUTMENU
46
#alias 14 : OPTIONS_ABOUTMENU_CONTROLS
47
#alias 15 : OPTIONS_EXIT_ABOUTMENU
48
49
// Menu Window States
50
#alias 3 : MENUWINDOW_SHRINK
51
52
// Menu Button States
53
#alias 1 : MENUBUTTON_BUTTONS_IN
54
55
// Menu Heading States
56
#alias 1 : MENUHEADING_LEAVE_SCREEN
57
58
// Menu Heading Property Values
59
#alias 5 : MAINMENU_HEADER
60
61
// Ink Effects
62
#alias 2 : INK_ALPHA
63
64
// Presentation Stages
65
#alias 6 : STAGE_P_HELP
66
#alias 7 : STAGE_P_STAFFCREDITS
67
68
// Global SFX
69
#alias 23 : SFX_G_MENUBUTTON
70
#alias 27 : SFX_G_SELECT
71
72
// Stage SFX
73
#alias 1 : SFX_S_BACKBUTTON
74
75
// Languages
76
#alias 0 : LANG_ENGLISH
77
#alias 1 : LANG_FRENCH
78
#alias 2 : LANG_ITALIAN
79
#alias 3 : LANG_DEUTSCH
80
#alias 4 : LANG_SPANISH
81
#alias 5 : LANG_JAPANESE
82
83
// Device Type
84
#alias 1 : RETRO_MOBILE
85
86
// Callbacks
87
#alias 5 : CALLBACK_RETURNSTORE_SELECTED
88
89
// SaveRAM Values
90
// 32 : SavedSettings
91
// 33 : BGM
92
// 34 : SFX
93
// 35 : Control Type
94
// 40 : Haptic
95
96
// Function declarations
97
#function OptionsMenuH_DrawOptions
98
99
function OptionsMenuH_DrawOptions
100
switch Object.FlickerText
101
case false
102
if ArrayPos0 == Object.CurrentSelection
103
DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)
104
TempValue0 = ArrayPos0
105
TempValue0 += 14
106
DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)
107
else
108
TempValue0 = ArrayPos0
109
TempValue0 += 10
110
DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)
111
end if
112
break
113
114
case true
115
TempValue0 = Object.Timer
116
TempValue0 &= 3
117
TempValue0 >>= 1
118
DrawSpriteScreenFX(9, FX_INK, Object.XPos, Object.YPos)
119
if TempValue0 == 0
120
TempValue0 = ArrayPos0
121
TempValue0 += 14
122
DrawSpriteScreenFX(TempValue0, FX_INK, Object.XPos, Object.YPos)
123
end if
124
break
125
126
end switch
127
128
DrawSpriteScreenFX(8, FX_INK, Object.XPos, Object.YPos)
129
DrawSpriteScreenFX(ArrayPos0, FX_INK, Object.XPos, Object.YPos)
130
end function
131
132
133
sub ObjectMain
134
switch Object.State
135
case OPTIONS_SETUP
136
if Options.PhysicalControls == false
137
Object.CurrentSelection = -1
138
end if
139
140
Object.XPos = Screen.CenterX
141
Object.XPos -= 126
142
143
if Object.Timer < 256
144
Object.Alpha = Object.Timer
145
Object.Timer += 6
146
else
147
Object.Timer = 0
148
Object.Alpha = 255
149
Object.State++
150
end if
151
break
152
153
case OPTIONS_CONTROLS
154
155
if Options.PhysicalControls == true
156
if KeyPress[0].Up == true
157
Object.CurrentSelection--
158
if Object.CurrentSelection < 0
159
Object.CurrentSelection = 3
160
end if
161
PlaySfx(SFX_G_MENUBUTTON, false)
162
end if
163
164
if KeyPress[0].Down == true
165
Object.CurrentSelection++
166
if Object.CurrentSelection > 3
167
Object.CurrentSelection = 0
168
end if
169
PlaySfx(SFX_G_MENUBUTTON, false)
170
end if
171
172
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
173
if CheckResult > -1
174
Options.PhysicalControls = false
175
Object.CurrentSelection = -1
176
end if
177
else
178
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
179
TempValue3 = CheckResult
180
181
TempValue0 = 0
182
CallFunction(LoadSaveMenu_CheckTouchSave)
183
if CheckResult > -1
184
Object.CurrentSelection = 0
185
else
186
if TempValue3 < 0
187
if Object.CurrentSelection == 0
188
KeyPress[0].Start = true
189
end if
190
else
191
if Object.CurrentSelection == 0
192
Object.CurrentSelection = -1
193
end if
194
end if
195
end if
196
197
TempValue0 = 1
198
CallFunction(LoadSaveMenu_CheckTouchSave)
199
if CheckResult > -1
200
Object.CurrentSelection = 1
201
else
202
if TempValue3 < 0
203
if Object.CurrentSelection == 1
204
KeyPress[0].Start = true
205
end if
206
else
207
if Object.CurrentSelection == 1
208
Object.CurrentSelection = -1
209
end if
210
end if
211
end if
212
213
TempValue0 = 2
214
CallFunction(LoadSaveMenu_CheckTouchSave)
215
if CheckResult > -1
216
Object.CurrentSelection = 2
217
else
218
if TempValue3 < 0
219
if Object.CurrentSelection == 2
220
KeyPress[0].Start = true
221
end if
222
else
223
if Object.CurrentSelection == 2
224
Object.CurrentSelection = -1
225
end if
226
end if
227
end if
228
229
TempValue0 = 3
230
CallFunction(LoadSaveMenu_CheckTouchSave)
231
if CheckResult > -1
232
Object.CurrentSelection = 3
233
else
234
if TempValue3 < 0
235
if Object.CurrentSelection == 3
236
KeyPress[0].Start = true
237
end if
238
else
239
if Object.CurrentSelection == 3
240
Object.CurrentSelection = -1
241
end if
242
end if
243
end if
244
CallFunction(MenuHeading_CheckTouchBack)
245
246
if KeyPress[0].Up == true
247
Object.CurrentSelection = 3
248
Options.PhysicalControls = true
249
end if
250
251
if KeyPress[0].Down == true
252
Object.CurrentSelection = 0
253
Options.PhysicalControls = true
254
end if
255
end if
256
257
CheckResult = false
258
if Object.CurrentSelection > -1
259
if KeyPress[0].Start == true
260
CheckResult = true
261
end if
262
if KeyPress[0].ButtonA == true
263
CheckResult = true
264
end if
265
end if
266
267
if CheckResult == true
268
if Object.CurrentSelection < 4
269
ArrayPos0 = Object.CurrentSelection
270
Object.FlickerText = 1
271
Object.State++
272
switch Object.CurrentSelection
273
case 0
274
StopMusic()
275
break
276
case 1
277
break
278
case 2
279
StopMusic()
280
break
281
case 3
282
break
283
end switch
284
PlaySfx(SFX_G_SELECT, false)
285
end if
286
end if
287
288
if KeyPress[0].ButtonB == true
289
Object.Timer = 248
290
Object.State = OPTIONS_EXIT
291
PlayStageSfx(SFX_S_BACKBUTTON, false)
292
end if
293
break
294
295
case OPTIONS_SELECTED
296
if Object.Timer < 30
297
Object.Timer++
298
else
299
Object.Timer = 0
300
ArrayPos0 = Object.CurrentSelection
301
Object.FlickerText = 0
302
switch Object.CurrentSelection
303
case 0
304
Object.State = OPTIONS_STAGE_LOAD
305
break
306
307
case 1
308
ReadSaveRAM()
309
if SaveRAM[32] == false
310
SaveRAM[33] = 100
311
SaveRAM[34] = 100
312
SaveRAM[35] = 0
313
SaveRAM[40] = true // Haptics
314
end if
315
316
Object.State = OPTIONS_SETTINGS_SETUP
317
318
Object.YPos = 40
319
Object.YPos *= Object.CurrentSelection
320
Object.YPos += Screen.CenterY
321
Object.YPos -= 87
322
break
323
324
case 2
325
Object.State = OPTIONS_STAGE_LOAD
326
break
327
328
case 3
329
Object.State = OPTIONS_ENTER_ABOUT_MENU
330
Object.YPos = 40
331
Object.YPos *= Object.CurrentSelection
332
Object.YPos += Screen.CenterY
333
Object.YPos -= 87
334
break
335
end switch
336
end if
337
break
338
339
case OPTIONS_STAGE_LOAD
340
if Object.Timer < 320
341
Object.Timer += 8
342
else
343
switch Object.CurrentSelection
344
case 0
345
if Options.DevMenuFlag == true
346
Engine.State = RESET_GAME
347
else
348
#platform: Use_Standalone
349
Stage.ListPos = STAGE_P_HELP
350
#endplatform
351
#platform: Use_Origins
352
if Engine.DeviceType == RETRO_MOBILE
353
Stage.ListPos = STAGE_P_HELP
354
else
355
EngineCallback(CALLBACK_RETURNSTORE_SELECTED)
356
end if
357
#endplatform
358
LoadStage()
359
end if
360
break
361
362
case 2
363
Stage.ListPos = STAGE_P_STAFFCREDITS
364
LoadStage()
365
break
366
367
case 3 // Unused, seems to just be here to summon the Dev Menu though
368
Engine.State = RESET_GAME
369
break
370
end switch
371
end if
372
373
TempValue0 = Object.Timer
374
if TempValue0 > 255
375
TempValue0 = 255
376
end if
377
SetScreenFade(0, 0, 0, TempValue0)
378
break
379
380
case OPTIONS_SETTINGS_SETUP
381
TempValue0 = Screen.CenterY
382
TempValue0 -= 87
383
if Object.YPos > TempValue0
384
Object.YPos -= 8
385
if Object.YPos < TempValue0
386
Object.YPos = TempValue0
387
end if
388
else
389
Object.State++
390
Object.Alpha = 0
391
Object.OptionCount = 0
392
if Options.PhysicalControls == false
393
ArrayPos0 = Object.CurrentSelection
394
Object.OptionCount = -1
395
end if
396
end if
397
break
398
399
case OPTIONS_SETTINGS_POPIN
400
if Object.Timer < 256
401
Object.Alpha = Object.Timer
402
Object.Timer += 8
403
else
404
Object.Timer = 0
405
Object.Alpha = 255
406
Object.State++
407
end if
408
break
409
case OPTIONS_SETTINGS_CONTROLS
410
ArrayPos0 = Object.CurrentSelection
411
if Options.PhysicalControls == true
412
if KeyPress[0].Up == true
413
Object.OptionCount--
414
PlaySfx(SFX_G_MENUBUTTON, false)
415
if Object.OptionCount < 0
416
Object.OptionCount = 3
417
end if
418
end if
419
if KeyPress[0].Down == true
420
Object.OptionCount++
421
PlaySfx(SFX_G_MENUBUTTON, false)
422
if Object.OptionCount > 3
423
Object.OptionCount = 0
424
end if
425
end if
426
switch Object.OptionCount
427
case 0 // BGM
428
if KeyPress[0].Left == true
429
Object.BGMDecreaseTimer = 10
430
SaveRAM[33] -= 10
431
if SaveRAM[33] < 0
432
SaveRAM[33] = 0
433
Engine.BGMVolume = SaveRAM[33]
434
else
435
Engine.BGMVolume = SaveRAM[33]
436
PlaySfx(SFX_G_MENUBUTTON, false)
437
end if
438
end if
439
440
if KeyPress[0].Right == true
441
Object.BGMIncreaseTimer = 10
442
SaveRAM[33] += 10
443
if SaveRAM[33] > 100
444
SaveRAM[33] = 100
445
Engine.BGMVolume = SaveRAM[33]
446
else
447
Engine.BGMVolume = SaveRAM[33]
448
PlaySfx(SFX_G_MENUBUTTON, false)
449
end if
450
end if
451
break
452
453
case 1 // SFX
454
if KeyPress[0].Left == true
455
Object.SFXDecreaseTimer = 10
456
SaveRAM[34] -= 10
457
if SaveRAM[34] < 0
458
SaveRAM[34] = 0
459
Engine.SFXVolume = SaveRAM[34]
460
else
461
PlaySfx(SFX_G_MENUBUTTON, false)
462
Engine.SFXVolume = SaveRAM[34]
463
end if
464
end if
465
466
if KeyPress[0].Right == true
467
Object.SFXIncreaseTimer = 10
468
SaveRAM[34] += 10
469
if SaveRAM[34] > 100
470
SaveRAM[34] = 100
471
else
472
PlaySfx(SFX_G_MENUBUTTON, false)
473
Engine.SFXVolume = SaveRAM[34]
474
end if
475
end if
476
break
477
478
case 2 // Control Type
479
if KeyPress[0].Left == true
480
SaveRAM[35]--
481
if SaveRAM[35] < 0
482
SaveRAM[35] = 1
483
end if
484
PlaySfx(SFX_G_MENUBUTTON, false)
485
end if
486
487
if KeyPress[0].Right == true
488
SaveRAM[35]++
489
if SaveRAM[35] > 1
490
SaveRAM[35] = 0
491
end if
492
PlaySfx(SFX_G_MENUBUTTON, false)
493
end if
494
break
495
496
case 3 // Haptics
497
if KeyPress[0].Left == true
498
SaveRAM[40]--
499
if SaveRAM[40] < false
500
SaveRAM[40] = true
501
HapticEffect(30, 0, 0, 0)
502
end if
503
PlaySfx(SFX_G_MENUBUTTON, false)
504
end if
505
506
if KeyPress[0].Right == true
507
SaveRAM[40]++
508
if SaveRAM[40] > true
509
SaveRAM[40] = false
510
end if
511
PlaySfx(SFX_G_MENUBUTTON, false)
512
end if
513
break
514
end switch
515
516
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
517
if CheckResult > -1
518
Options.PhysicalControls = false
519
Object.OptionCount = -1
520
end if
521
else
522
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
523
if CheckResult > -1
524
Object.TouchDelay++
525
Object.TouchDelay %= 24
526
else
527
Object.TouchDelay = 0
528
end if
529
530
TempValue3 = CheckResult
531
TempValue0 = Screen.CenterX
532
TempValue0 += 16
533
TempValue1 = Screen.CenterX
534
TempValue1 += 48
535
CheckTouchRect(TempValue0, 70, TempValue1, 97)
536
if CheckResult > -1
537
Object.OptionCount = 3
538
Object.BGMDecreaseTimer = 10
539
if Object.TouchDelay == 23
540
SaveRAM[33] -= 10
541
if SaveRAM[33] < 0
542
SaveRAM[33] = 0
543
Engine.BGMVolume = SaveRAM[33]
544
else
545
Engine.BGMVolume = SaveRAM[33]
546
PlaySfx(SFX_G_MENUBUTTON, false)
547
end if
548
end if
549
else
550
if TempValue3 < 0
551
if Object.OptionCount == 3
552
Object.BGMDecreaseTimer = 0
553
SaveRAM[33] -= 10
554
if SaveRAM[33] < 0
555
SaveRAM[33] = 0
556
Engine.BGMVolume = SaveRAM[33]
557
else
558
Engine.BGMVolume = SaveRAM[33]
559
PlaySfx(SFX_G_MENUBUTTON, false)
560
end if
561
Object.OptionCount = -1
562
end if
563
else
564
if Object.OptionCount == 3
565
Object.OptionCount = -1
566
end if
567
end if
568
end if
569
CheckTouchRect(TempValue0, 99, TempValue1, 126)
570
if CheckResult > -1
571
Object.OptionCount = 4
572
Object.SFXDecreaseTimer = 10
573
if Object.TouchDelay == 23
574
SaveRAM[34] -= 10
575
if SaveRAM[34] < 0
576
SaveRAM[34] = 0
577
Engine.SFXVolume = SaveRAM[34]
578
else
579
Engine.SFXVolume = SaveRAM[34]
580
PlaySfx(SFX_G_MENUBUTTON, false)
581
end if
582
end if
583
else
584
if TempValue3 < 0
585
if Object.OptionCount == 4
586
Object.SFXDecreaseTimer = 0
587
SaveRAM[34] -= 10
588
if SaveRAM[34] < 0
589
SaveRAM[34] = 0
590
Engine.SFXVolume = SaveRAM[34]
591
else
592
Engine.SFXVolume = SaveRAM[34]
593
PlaySfx(SFX_G_MENUBUTTON, false)
594
end if
595
Object.OptionCount = -1
596
end if
597
else
598
if Object.OptionCount == 4
599
Object.OptionCount = -1
600
end if
601
end if
602
end if
603
604
TempValue0 = Screen.CenterX
605
TempValue0 += 84
606
TempValue1 = Screen.CenterX
607
TempValue1 += 120
608
CheckTouchRect(TempValue0, 70, TempValue1, 97)
609
if CheckResult > -1
610
Object.OptionCount = 5
611
Object.BGMIncreaseTimer = 10
612
if Object.TouchDelay == 23
613
SaveRAM[33] += 10
614
if SaveRAM[33] > 100
615
SaveRAM[33] = 100
616
Engine.BGMVolume = SaveRAM[33]
617
else
618
Engine.BGMVolume = SaveRAM[33]
619
PlaySfx(SFX_G_MENUBUTTON, false)
620
end if
621
end if
622
else
623
if TempValue3 < 0
624
if Object.OptionCount == 5
625
Object.BGMIncreaseTimer = 0
626
SaveRAM[33] += 10
627
if SaveRAM[33] > 100
628
SaveRAM[33] = 100
629
Engine.BGMVolume = SaveRAM[33]
630
else
631
Engine.BGMVolume = SaveRAM[33]
632
PlaySfx(SFX_G_MENUBUTTON, false)
633
end if
634
Object.OptionCount = -1
635
end if
636
else
637
if Object.OptionCount == 5
638
Object.OptionCount = -1
639
end if
640
end if
641
end if
642
643
CheckTouchRect(TempValue0, 99, TempValue1, 126)
644
if CheckResult > -1
645
Object.OptionCount = 6
646
Object.SFXIncreaseTimer = 10
647
if Object.TouchDelay == 23
648
SaveRAM[34] += 10
649
if SaveRAM[34] > 100
650
SaveRAM[34] = 100
651
Engine.SFXVolume = SaveRAM[34]
652
else
653
Engine.SFXVolume = SaveRAM[34]
654
PlaySfx(SFX_G_MENUBUTTON, false)
655
end if
656
end if
657
else
658
if TempValue3 < 0
659
if Object.OptionCount == 6
660
Object.SFXIncreaseTimer = 0
661
SaveRAM[34] += 10
662
if SaveRAM[34] > 100
663
SaveRAM[34] = 100
664
Engine.SFXVolume = SaveRAM[34]
665
else
666
Engine.SFXVolume = SaveRAM[34]
667
PlaySfx(SFX_G_MENUBUTTON, false)
668
end if
669
Object.OptionCount = -1
670
end if
671
else
672
if Object.OptionCount == 6
673
Object.OptionCount = -1
674
end if
675
end if
676
end if
677
678
TempValue0 = Screen.CenterX
679
TempValue0 += 14
680
TempValue1 = Screen.CenterX
681
TempValue1 += 64
682
CheckTouchRect(TempValue0, 130, TempValue1, 158)
683
if CheckResult > -1
684
Object.OptionCount = 7
685
else
686
if TempValue3 < 0
687
if Object.OptionCount == 7
688
SaveRAM[35] = 0
689
PlaySfx(SFX_G_MENUBUTTON, false)
690
Object.OptionCount = -1
691
end if
692
else
693
if Object.OptionCount == 7
694
Object.OptionCount = -1
695
end if
696
end if
697
end if
698
699
TempValue0 = Screen.CenterX
700
TempValue0 += 68
701
TempValue1 = Screen.CenterX
702
TempValue1 += 114
703
CheckTouchRect(TempValue0, 130, TempValue1, 158)
704
if CheckResult > -1
705
Object.OptionCount = 8
706
else
707
if TempValue3 < 0
708
if Object.OptionCount == 8
709
SaveRAM[35] = 1
710
PlaySfx(SFX_G_MENUBUTTON, false)
711
Object.OptionCount = -1
712
end if
713
else
714
if Object.OptionCount == 8
715
Object.OptionCount = -1
716
end if
717
end if
718
end if
719
720
TempValue0 = Screen.CenterX
721
TempValue0 += 14
722
TempValue1 = Screen.CenterX
723
TempValue1 += 64
724
CheckTouchRect(TempValue0, 160, TempValue1, 188)
725
if CheckResult > -1
726
Object.OptionCount = 9
727
else
728
if TempValue3 < 0
729
if Object.OptionCount == 9
730
SaveRAM[40] = true
731
Engine.HapticsEnabled = true
732
PlaySfx(SFX_G_MENUBUTTON, false)
733
Object.OptionCount = -1
734
HapticEffect(30, 0, 0, 0)
735
end if
736
else
737
if Object.OptionCount == 9
738
Object.OptionCount = -1
739
end if
740
end if
741
end if
742
743
TempValue0 = Screen.CenterX
744
TempValue0 += 68
745
TempValue1 = Screen.CenterX
746
TempValue1 += 114
747
CheckTouchRect(TempValue0, 160, TempValue1, 188)
748
if CheckResult > -1
749
Object.OptionCount = 10
750
else
751
if TempValue3 < 0
752
if Object.OptionCount == 10
753
SaveRAM[40] = false
754
Engine.HapticsEnabled = false
755
PlaySfx(SFX_G_MENUBUTTON, false)
756
Object.OptionCount = -1
757
end if
758
else
759
if Object.OptionCount == 10
760
Object.OptionCount = -1
761
end if
762
end if
763
end if
764
765
TempValue0 = Screen.XSize
766
TempValue0 -= 96
767
CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize)
768
if CheckResult > -1
769
Object.OptionCount = 11
770
Object.BackTouchPress = true
771
else
772
Object.BackTouchPress = false
773
if TempValue3 < 0
774
if Object.OptionCount == 11
775
KeyPress[0].ButtonB = 1
776
end if
777
else
778
if Object.OptionCount == 11
779
Object.OptionCount = -1
780
end if
781
end if
782
end if
783
784
if KeyPress[0].Up == true
785
Object.OptionCount = 2
786
Options.PhysicalControls = true
787
end if
788
789
if KeyPress[0].Down == true
790
Object.OptionCount = 0
791
Options.PhysicalControls = true
792
end if
793
end if
794
795
if KeyPress[0].ButtonB == true
796
Object.State = OPTIONS_EXIT_SETTINGS
797
Object.Timer = 248
798
Options.OriginalControls = SaveRAM[35]
799
Engine.HapticsEnabled = SaveRAM[40]
800
SaveRAM[32] = true
801
WriteSaveRAM()
802
PlayStageSfx(SFX_S_BACKBUTTON, false)
803
end if
804
break
805
806
case OPTIONS_UNUSED
807
if Object.Timer < 30
808
Object.Timer++
809
else
810
Object.Timer = 0
811
Object.State++
812
end if
813
break
814
815
case OPTIONS_UNUSED2
816
if Object.Timer > 0
817
Object.Timer -= 8
818
else
819
if Options.PhysicalControls == false
820
Object.CurrentSelection = -1
821
end if
822
Object.State = OPTIONS_CONTROLS
823
PlayMusic(0)
824
end if
825
826
TempValue0 = Object.Timer
827
if TempValue0 > 255
828
TempValue0 = 255
829
end if
830
SetScreenFade(0, 0, 0, TempValue0)
831
break
832
833
case OPTIONS_EXIT_SETTINGS
834
if Object.Timer > 0
835
Object.Alpha = Object.Timer
836
Object.Timer -= 8
837
else
838
Object.Alpha = 0
839
Object.State++
840
end if
841
break
842
843
case OPTIONS_LEAVE_SUBMENU
844
TempValue0 = Object.CurrentSelection
845
TempValue0 *= 40
846
TempValue0 += Screen.CenterY
847
TempValue0 -= 87
848
849
if Object.YPos < TempValue0
850
Object.YPos += 8
851
if Object.YPos > TempValue0
852
Object.YPos = TempValue0
853
end if
854
Object.Alpha = 0
855
else
856
if Options.PhysicalControls == false
857
Object.CurrentSelection = -1
858
end if
859
Object.State = OPTIONS_CONTROLS
860
Object.Alpha = 255
861
end if
862
break
863
864
case OPTIONS_EXIT
865
if Object.Timer > 0
866
Object.Alpha = Object.Timer
867
Object.Timer -= 8
868
else
869
Object.Type = TypeName[Blank Object]
870
MenuWindow.State = MENUWINDOW_SHRINK
871
//All of this is MenuButton objects
872
Object[34].State = MENUBUTTON_BUTTONS_IN
873
Object[35].State = MENUBUTTON_BUTTONS_IN
874
Object[36].State = MENUBUTTON_BUTTONS_IN
875
Object[37].State = MENUBUTTON_BUTTONS_IN
876
Object[38].State = MENUBUTTON_BUTTONS_IN
877
Object[39].State = MENUBUTTON_BUTTONS_IN
878
Object[40].State = MENUBUTTON_BUTTONS_IN
879
Object[41].State = MENUBUTTON_BUTTONS_IN
880
Object[42].State = MENUBUTTON_BUTTONS_IN
881
//End
882
MenuHeading.State = MENUHEADING_LEAVE_SCREEN
883
MenuHeading.Header = MAINMENU_HEADER
884
end if
885
break
886
887
case OPTIONS_ABOUTMENU_SETUP
888
TempValue0 = Screen.CenterY
889
TempValue0 -= 87
890
if Object.YPos > TempValue0
891
Object.YPos -= 8
892
if Object.YPos < TempValue0
893
Object.YPos = TempValue0
894
end if
895
else
896
TempValue0 = Object.EntityNo
897
TempValue0 += 10
898
ResetObjectEntity(TempValue0, TypeName[About Menu F], 0, 0, 0)
899
SetupMenu(MENU_1, 0, 3, 1)
900
GetVersionNumber(MENU_1, 1)
901
Object[+10].InkEffect = INK_ALPHA
902
Object.State++
903
Object.Alpha = 0
904
Object.OptionCount = 0
905
if Options.PhysicalControls == false
906
ArrayPos0 = Object.CurrentSelection
907
Object.OptionCount = -1
908
end if
909
end if
910
break
911
912
case OPTIONS_ENTER_ABOUTMENU
913
if Object.Timer < 256
914
Object.Alpha = Object.Timer
915
Object.Timer += 8
916
else
917
Object.Timer = 0
918
Object.Alpha = 255
919
Object.State++
920
end if
921
break
922
923
case OPTIONS_ABOUTMENU_CONTROLS
924
#platform: Mobile
925
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
926
TempValue3 = CheckResult
927
TempValue0 = Screen.XSize
928
TempValue0 -= 96
929
CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize)
930
if CheckResult > -1
931
Object.OptionCount = 9
932
Object.BackTouchPress = true
933
else
934
Object.BackTouchPress = false
935
if TempValue3 < 0
936
if Object.OptionCount == 9
937
KeyPress[0].ButtonB = true
938
end if
939
else
940
if Object.OptionCount == 9
941
Object.OptionCount = -1
942
end if
943
end if
944
end if
945
#endplatform
946
947
if KeyPress[0].ButtonB == true
948
Object.State = OPTIONS_EXIT_ABOUTMENU
949
Object.Timer = 248
950
PlayStageSfx(SFX_S_BACKBUTTON, false)
951
end if
952
break
953
954
case OPTIONS_EXIT_ABOUTMENU
955
if Object.Timer > 0
956
Object.Alpha = Object.Timer
957
Object.Timer -= 8
958
else
959
Object.Alpha = 0
960
Object.State = OPTIONS_LEAVE_SUBMENU
961
Object[+10].Type = TypeName[Blank Object]
962
end if
963
break
964
965
end switch
966
end sub
967
968
969
sub ObjectDraw
970
switch Object.State
971
case OPTIONS_SETUP
972
case OPTIONS_CONTROLS
973
case OPTIONS_SELECTED
974
case OPTIONS_STAGE_LOAD
975
case OPTIONS_UNUSED2
976
case OPTIONS_EXIT
977
Object.YPos = Screen.CenterY
978
Object.YPos -= 87
979
ArrayPos0 = 0
980
CallFunction(OptionsMenuH_DrawOptions)
981
Object.YPos += 40
982
ArrayPos0++
983
CallFunction(OptionsMenuH_DrawOptions)
984
Object.YPos += 40
985
ArrayPos0++
986
CallFunction(OptionsMenuH_DrawOptions)
987
Object.YPos += 40
988
ArrayPos0++
989
CallFunction(OptionsMenuH_DrawOptions)
990
break
991
992
case OPTIONS_SETTINGS_SETUP
993
case OPTIONS_ENTER_ABOUT_MENU
994
ArrayPos0 = Object.CurrentSelection
995
CallFunction(OptionsMenuH_DrawOptions)
996
break
997
998
case OPTIONS_SETTINGS_POPIN
999
case OPTIONS_SETTINGS_CONTROLS
1000
case OPTIONS_EXIT_SETTINGS
1001
case OPTIONS_LEAVE_SUBMENU
1002
ArrayPos0 = Object.CurrentSelection
1003
TempValue0 = Screen.CenterX
1004
TempValue0 += 23
1005
if Object.OptionCount == 7
1006
DrawSpriteScreenFX(40, FX_INK, TempValue0, 135)
1007
else
1008
DrawSpriteScreenFX(29, FX_INK, TempValue0, 135)
1009
end if
1010
TempValue0 += 53
1011
if Object.OptionCount == 8
1012
DrawSpriteScreenFX(41, FX_INK, TempValue0, 135)
1013
else
1014
DrawSpriteScreenFX(30, FX_INK, TempValue0, 135)
1015
end if
1016
TempValue0 = Screen.CenterX
1017
TempValue0 += 23
1018
if Object.OptionCount == 9
1019
DrawSpriteScreenFX(46, FX_INK, TempValue0, 164)
1020
else
1021
DrawSpriteScreenFX(44, FX_INK, TempValue0, 164)
1022
end if
1023
TempValue0 += 53
1024
if Object.OptionCount == 10
1025
DrawSpriteScreenFX(47, FX_INK, TempValue0, 164)
1026
else
1027
DrawSpriteScreenFX(45, FX_INK, TempValue0, 164)
1028
end if
1029
TempValue0 = Screen.CenterX
1030
if SaveRAM[40] == true
1031
TempValue0 += 18
1032
else
1033
TempValue0 += 71
1034
end if
1035
DrawSpriteScreenFX(39, FX_INK, TempValue0, 161)
1036
TempValue0 = Screen.CenterX
1037
TempValue0 -= 117
1038
if Options.PhysicalControls == true
1039
switch Object.OptionCount
1040
case 0
1041
DrawSpriteScreenFX(32, FX_INK, TempValue0, 79)
1042
DrawSpriteScreenFX(33, FX_INK, TempValue0, 108)
1043
DrawSpriteScreenFX(35, FX_INK, TempValue0, 132)
1044
DrawSpriteScreenFX(42, FX_INK, TempValue0, 167)
1045
break
1046
1047
case 1
1048
DrawSpriteScreenFX(31, FX_INK, TempValue0, 79)
1049
DrawSpriteScreenFX(34, FX_INK, TempValue0, 108)
1050
DrawSpriteScreenFX(35, FX_INK, TempValue0, 132)
1051
DrawSpriteScreenFX(42, FX_INK, TempValue0, 167)
1052
break
1053
1054
case 2
1055
DrawSpriteScreenFX(31, FX_INK, TempValue0, 79)
1056
DrawSpriteScreenFX(33, FX_INK, TempValue0, 108)
1057
DrawSpriteScreenFX(36, FX_INK, TempValue0, 132)
1058
DrawSpriteScreenFX(42, FX_INK, TempValue0, 167)
1059
break
1060
1061
case 3
1062
DrawSpriteScreenFX(31, FX_INK, TempValue0, 79)
1063
DrawSpriteScreenFX(33, FX_INK, TempValue0, 108)
1064
DrawSpriteScreenFX(35, FX_INK, TempValue0, 132)
1065
DrawSpriteScreenFX(43, FX_INK, TempValue0, 167)
1066
break
1067
1068
end switch
1069
else
1070
DrawSpriteScreenFX(31, FX_INK, TempValue0, 79)
1071
DrawSpriteScreenFX(33, FX_INK, TempValue0, 108)
1072
DrawSpriteScreenFX(35, FX_INK, TempValue0, 132)
1073
DrawSpriteScreenFX(42, FX_INK, TempValue0, 167)
1074
end if
1075
1076
//Controls Drawing
1077
if SaveRAM[35] == 0
1078
DrawSpriteScreenFX(37, FX_INK, TempValue0, 148)
1079
TempValue0 += 135
1080
DrawSpriteScreenFX(39, FX_INK, TempValue0, 132)
1081
else
1082
DrawSpriteScreenFX(38, FX_INK, TempValue0, 148)
1083
TempValue0 += 188
1084
DrawSpriteScreenFX(39, FX_INK, TempValue0, 132)
1085
end if
1086
1087
//BGM Drawing
1088
TempValue1 = Screen.CenterX
1089
TempValue1 += 23
1090
if Object.BGMDecreaseTimer > 0
1091
Object.BGMDecreaseTimer--
1092
DrawSpriteScreenFX(5, FX_INK, TempValue1, 74)
1093
else
1094
DrawSpriteScreenFX(4, FX_INK, TempValue1, 74)
1095
end if
1096
1097
TempValue1 += 66
1098
if Object.BGMIncreaseTimer > 0
1099
Object.BGMIncreaseTimer--
1100
DrawSpriteScreenFX(7, FX_INK, TempValue1, 74)
1101
else
1102
DrawSpriteScreenFX(6, FX_INK, TempValue1, 74)
1103
end if
1104
1105
TempValue1 -= 42
1106
DrawSpriteScreenFX(18, FX_INK, TempValue1, 74)
1107
TempValue0 = SaveRAM[33]
1108
TempValue0 /= 10
1109
TempValue0 += 18
1110
DrawSpriteScreenFX(TempValue0, FX_INK, TempValue1, 74)
1111
1112
//SFX Drawing
1113
TempValue1 = Screen.CenterX
1114
TempValue1 += 23
1115
if Object.SFXDecreaseTimer > 0
1116
Object.SFXDecreaseTimer--
1117
DrawSpriteScreenFX(5, FX_INK, TempValue1, 103)
1118
else
1119
DrawSpriteScreenFX(4, FX_INK, TempValue1, 103)
1120
end if
1121
TempValue1 += 66
1122
if Object.SFXIncreaseTimer > 0
1123
Object.SFXIncreaseTimer--
1124
DrawSpriteScreenFX(7, FX_INK, TempValue1, 103)
1125
else
1126
DrawSpriteScreenFX(6, FX_INK, TempValue1, 103)
1127
end if
1128
TempValue1 -= 42
1129
DrawSpriteScreenFX(18, FX_INK, TempValue1, 103)
1130
TempValue0 = SaveRAM[34]
1131
TempValue0 /= 10
1132
TempValue0 += 18
1133
DrawSpriteScreenFX(TempValue0, FX_INK, TempValue1, 103)
1134
Object.Alpha = 255
1135
CallFunction(OptionsMenuH_DrawOptions)
1136
break
1137
1138
case OPTIONS_ENTER_ABOUTMENU
1139
case OPTIONS_ABOUTMENU_CONTROLS
1140
case OPTIONS_EXIT_ABOUTMENU
1141
ArrayPos0 = Object.CurrentSelection
1142
Object.Alpha = 255
1143
CallFunction(OptionsMenuH_DrawOptions)
1144
break
1145
1146
end switch
1147
1148
end sub
1149
1150
1151
sub ObjectStartup
1152
switch Engine.Language
1153
case LANG_ENGLISH
1154
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
1155
break
1156
case LANG_FRENCH
1157
LoadSpriteSheet("Menu/MenuGfx2_FR.gif")
1158
break
1159
case LANG_ITALIAN
1160
LoadSpriteSheet("Menu/MenuGfx2_IT.gif")
1161
break
1162
case LANG_DEUTSCH
1163
LoadSpriteSheet("Menu/MenuGfx2_DE.gif")
1164
break
1165
case LANG_SPANISH
1166
LoadSpriteSheet("Menu/MenuGfx2_ES.gif")
1167
break
1168
case LANG_JAPANESE
1169
LoadSpriteSheet("Menu/MenuGfx2_JP.gif")
1170
break
1171
end switch
1172
1173
if SaveRAM[32] == false
1174
SaveRAM[33] = 100
1175
SaveRAM[34] = 100
1176
SaveRAM[35] = 0
1177
SaveRAM[40] = true
1178
end if
1179
Options.OriginalControls = SaveRAM[35]
1180
Engine.HapticsEnabled = SaveRAM[40]
1181
SpriteFrame(4, 2, 32, 32, 479, 34) // #0 - Gear
1182
SpriteFrame(4, 2, 32, 32, 479, 34) // #1 - Gear Again
1183
SpriteFrame(4, 2, 32, 32, 479, 34) // #2 - Why is this a Gear again
1184
SpriteFrame(4, 2, 32, 32, 479, 34) // #3 - Please Stop.
1185
SpriteFrame(0, 0, 20, 20, 168, 366) // #4 - Decrease button
1186
SpriteFrame(0, 0, 20, 20, 168, 387) // #5 - Decrease button Highlight
1187
SpriteFrame(0, 0, 20, 20, 189, 366) // #6 - Increase button
1188
SpriteFrame(0, 0, 20, 20, 189, 387) // #7 - Increase button Highlight
1189
SpriteFrame(45, 12, 13, 13, 488, 1) // #8 - Triangle detail
1190
SpriteFrame(0, 0, 250, 37, 259, 421) // #9 - Selection Border
1191
1192
if Options.DevMenuFlag == true
1193
SpriteFrame(64, 12, 66, 16, 259, 598) // #10 - Dev Menu
1194
else
1195
SpriteFrame(64, 12, 128, 16, 1, 188) // #10 - Instructions
1196
end if
1197
1198
SpriteFrame(64, 12, 128, 16, 1, 205) // #11 - Settings
1199
SpriteFrame(64, 12, 128, 16, 1, 222) // #12 - Staff Credits
1200
SpriteFrame(64, 12, 128, 16, 1, 239) // #13 - About
1201
1202
if Options.DevMenuFlag == true
1203
SpriteFrame(64, 12, 66, 16, 326, 598) // #14 - Dev Menu Highlight
1204
else
1205
SpriteFrame(64, 12, 128, 16, 130, 188) // #14 - Instructions Highlight
1206
end if
1207
1208
SpriteFrame(64, 12, 128, 16, 130, 205) // #15 - Settings Highlight
1209
SpriteFrame(64, 12, 128, 16, 130, 222) // #16 - Staff Credits Highlight
1210
SpriteFrame(64, 12, 128, 16, 130, 239) // #17 - About Highlight
1211
SpriteFrame(0, 0, 38, 20, 171, 324) // #18 - Minimal Volume
1212
SpriteFrame(0, 0, 4, 20, 171, 345) // #19 - Volume Bar 1
1213
SpriteFrame(0, 0, 8, 20, 171, 345) // #20 - Volume Bar 2
1214
SpriteFrame(0, 0, 12, 20, 171, 345) // #21 - Volume Bar 3
1215
SpriteFrame(0, 0, 16, 20, 171, 345) // #22 - Volume Bar 4
1216
SpriteFrame(0, 0, 20, 20, 171, 345) // #23 - Volume Bar 5
1217
SpriteFrame(0, 0, 24, 20, 171, 345) // #24 - Volume Bar 6
1218
SpriteFrame(0, 0, 28, 20, 171, 345) // #25 - Volume Bar 7
1219
SpriteFrame(0, 0, 32, 20, 171, 345) // #26 - Volume Bar 8
1220
SpriteFrame(0, 0, 36, 20, 171, 345) // #27 - Volume Bar 9
1221
SpriteFrame(0, 0, 38, 20, 171, 345) // #28 - Volume Bar 10
1222
SpriteFrame(0, 0, 33, 20, 330, 557) // #29 - S2 Spin Dash Icon
1223
SpriteFrame(0, 0, 33, 20, 364, 557) // #30 - CD Spin Dash Icon
1224
SpriteFrame(0, 0, 128, 16, 1, 256) // #31 - Music
1225
SpriteFrame(0, 0, 128, 16, 130, 256) // #32 - Music Highlight
1226
SpriteFrame(0, 0, 128, 16, 1, 273) // #32 - SFX
1227
SpriteFrame(0, 0, 128, 16, 130, 273) // #33 - SFX Highlight
1228
SpriteFrame(0, 0, 128, 16, 1, 307) // #34 - Spin Dash
1229
SpriteFrame(0, 0, 128, 16, 130, 307) // #35 - Spin Dash Highlight
1230
SpriteFrame(0, 0, 88, 8, 259, 44) // #36 - Genesis
1231
SpriteFrame(0, 0, 88, 8, 259, 35) // #37 - Original
1232
SpriteFrame(0, 0, 43, 26, 430, 525) // #38 - Icon Border
1233
SpriteFrame(0, 0, 33, 20, 398, 557) // #39 - S2 Spin Dash Icon
1234
SpriteFrame(0, 0, 33, 20, 432, 557) // #40 - CD Spin Dash Icon
1235
SpriteFrame(0, 0, 128, 16, 162, 615) // #41 - Haptic
1236
SpriteFrame(0, 0, 128, 16, 162, 632) // #42 - Haptic Highlight
1237
SpriteFrame(0, 0, 33, 20, 330, 578) // #43 - On
1238
SpriteFrame(0, 0, 33, 20, 364, 578) // #44 - Off
1239
SpriteFrame(0, 0, 33, 20, 398, 578) // #45 - On Highlight
1240
SpriteFrame(0, 0, 33, 20, 432, 578) // #46 - Off Highlight
1241
end sub
1242
1243
1244
// ========================
1245
// Editor Subs
1246
// ========================
1247
1248
sub RSDKDraw
1249
DrawSprite(0)
1250
end sub
1251
1252
1253
sub RSDKLoad
1254
LoadSpriteSheet("Menu/MenuGfx2_EN.gif")
1255
SpriteFrame(16, 0, 90, 30, 71, 677) // Options
1256
1257
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
1258
end sub
1259
1260