Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-CD-2011-Script-Decompilation
Path: blob/main/Scripts/Global/PauseMenu.txt
1319 views
1
//-----------------Sonic CD Pause Menu Script-----------------//
2
//--------Scripted by Christian Whitehead 'The Taxman'--------//
3
//-------Unpacked By Rubberduckycooly's Script Unpacker-------//
4
5
// Aliases
6
#alias Object.PropertyValue : Object.TimerThreshold
7
#alias Object.Value0 : Object.Timer
8
#alias Object.Value1 : Object.SelectedButton
9
#alias Object.Value2 : Object.SpritesXPos
10
#alias Object.Value3 : Object.BlackBarXPos
11
#alias Object.Value4 : Object.BlackBarYPos
12
#alias Object.Value5 : Object.BlackBarHeight
13
#alias Object.Value6 : Object.BlockRestart
14
15
// States
16
#alias 0 : PAUSEMENU_START_PAUSE
17
#alias 1 : PAUSEMENU_SLIDE_IN
18
#alias 2 : PAUSEMENU_SPRITES_FADE_IN
19
#alias 3 : PAUSEMENU_CONTROLS
20
#alias 4 : PAUSEMENU_CONFIRMED
21
#alias 5 : PAUSEMENU_RESUME_GAME
22
#alias 6 : PAUSEMENU_EXIT_LEVEL // Not the best name but is essentially what will happen here
23
24
// Ink
25
#alias 2 : INK_ALPHA
26
27
// Player
28
#alias 1 : PLAYER_TAILS_A
29
30
// Languages
31
#alias 0 : LANG_ENGLISH
32
#alias 1 : LANG_FRENCH
33
#alias 2 : LANG_ITALIAN
34
#alias 3 : LANG_DEUTSCH
35
#alias 4 : LANG_SPANISH
36
#alias 5 : LANG_JAPANESE
37
38
// Game Mode Aliases
39
#alias 2 : MODE_TIMEATTACK
40
41
// Presentation Stages
42
#alias 0 : STAGE_P_TITLE
43
#alias 2 : STAGE_P_TATTACK
44
45
// Global SFX
46
#alias 23 : SFX_G_MENUBUTTON
47
#alias 24 : SFX_G_FLYING
48
#alias 27 : SFX_G_SELECT
49
50
// Engine & Callbacks
51
#alias 2 : MESSAGE_LOSTFOCUS
52
#alias 3 : MESSAGE_YES_SELECTED
53
#alias 4 : MESSAGE_NO_SELECTED
54
55
#alias 6 : CALLBACK_RESTART_SELECTED
56
#alias 7 : CALLBACK_EXIT_SELECTED
57
#alias 8 : CALLBACK_BUY_FULL_GAME_SELECTED
58
59
60
sub ObjectMain
61
switch Object.State
62
case PAUSEMENU_START_PAUSE
63
PauseMusic()
64
Object.XPos = Screen.XSize
65
Object.BlackBarXPos = 0
66
Object.Timer = 0
67
Object.InkEffect = INK_ALPHA
68
Object.Alpha = 0
69
switch Engine.Language
70
case LANG_ENGLISH
71
case LANG_JAPANESE
72
Object.TimerThreshold = 12
73
break
74
75
case LANG_FRENCH
76
Object.TimerThreshold = 15
77
break
78
79
case LANG_ITALIAN
80
case LANG_DEUTSCH
81
case LANG_SPANISH
82
Object.TimerThreshold = 13
83
break
84
85
end switch
86
87
if Player.Lives < 2
88
Object.BlockRestart = true
89
else
90
91
#platform: Use_Origins
92
if Stage.ActiveList == 3
93
Object.BlockRestart = true
94
else
95
Object.BlockRestart = false
96
end if
97
#endplatform
98
99
#platform: Use_Standalone
100
if Stage.ActiveList == SPECIAL_STAGE
101
Object.BlockRestart = true
102
else
103
Object.BlockRestart = false
104
end if
105
#endplatform
106
107
end if
108
109
#platform: Use_Origins
110
Options.PhysicalControls = true
111
#endplatform
112
113
#platform: Use_Haptics
114
HapticEffect(-1, 0, 0, 0)
115
#endplatform
116
117
#platform: Mobile
118
if Options.TouchControls == true
119
Object.SelectedButton = -1
120
Options.PhysicalControls = false
121
else
122
Options.PhysicalControls = true
123
end if
124
#endplatform
125
126
Object.State++
127
break
128
129
case PAUSEMENU_SLIDE_IN
130
Object.BlackBarXPos = Object.Timer
131
Object.BlackBarXPos *= Screen.XSize
132
Object.BlackBarXPos /= 12
133
134
Object.BlackBarYPos = Object.Timer
135
Object.BlackBarYPos *= 240
136
Object.BlackBarYPos /= 12
137
138
TempValue0 = Object.Timer
139
TempValue0 <<= 7
140
TempValue0 /= 12
141
Object.XPos = Screen.XSize
142
Object.XPos -= TempValue0
143
144
if Object.Timer < Object.TimerThreshold
145
Object.Timer++
146
else
147
PauseMusic()
148
Object.SpritesXPos = Object.XPos
149
Object.SpritesXPos += 48
150
Object.Timer = 0
151
Object.State++
152
end if
153
break
154
155
case PAUSEMENU_SPRITES_FADE_IN
156
if Object.Timer < 256
157
Object.Timer += 16
158
if Object.Timer < 255
159
Object.Alpha = Object.Timer
160
else
161
Object.Alpha = 255
162
end if
163
else
164
Object.Timer = 0
165
Object.Alpha = 255
166
Object.State++
167
end if
168
break
169
170
case PAUSEMENU_CONTROLS
171
#platform: Standard
172
CheckResult = true
173
#endplatform
174
175
#platform: Mobile
176
CheckEqual(Options.PhysicalControls, true)
177
#endplatform
178
179
#platform: Use_Origins
180
Menu.ExitFlag = true
181
CheckEqual(Options.PhysicalControls, true)
182
#endplatform
183
184
// 2011 Steam lacks Options.PhysicalControls, so we force it here first and the other platforms can override it
185
if CheckResult == true
186
if KeyPress[0].Up == true
187
PlaySfx(SFX_G_MENUBUTTON, false)
188
189
Object.Timer = 0
190
Object.AnimationTimer = 0
191
Object.Frame = 0
192
Object.SpritesXPos = Screen.XSize
193
Object.SelectedButton--
194
195
if Options.DevMenuFlag == true
196
if Object.SelectedButton < 0
197
Object.SelectedButton = 3
198
end if
199
else
200
if Object.SelectedButton < 0
201
if Engine.TrialMode == true
202
Object.SelectedButton = 3
203
else
204
Object.SelectedButton = 2
205
endif
206
end if
207
end if
208
209
if Object.BlockRestart == true
210
if Object.SelectedButton == 1
211
Object.SelectedButton--
212
end if
213
end if
214
end if
215
216
if KeyPress[0].Down == true
217
PlaySfx(SFX_G_MENUBUTTON, false)
218
219
Object.Timer = 0
220
Object.AnimationTimer = 0
221
Object.Frame = 0
222
Object.SpritesXPos = Screen.XSize
223
Object.SelectedButton++
224
225
if Options.DevMenuFlag == true
226
if Object.SelectedButton > 3
227
Object.SelectedButton = 0
228
end if
229
else
230
if Engine.TrialMode == true
231
if Object.SelectedButton > 3
232
Object.SelectedButton = 0
233
endif
234
else
235
if Object.SelectedButton > 2
236
Object.SelectedButton = 0
237
endif
238
endif
239
end if
240
241
if Object.BlockRestart == true
242
if Object.SelectedButton == 1
243
Object.SelectedButton++
244
end if
245
end if
246
end if
247
248
if KeyPress[0].Start == true
249
PlaySfx(SFX_G_SELECT, false)
250
251
Object.State = PAUSEMENU_CONFIRMED
252
Object.Alpha = 248
253
Object.Timer = 0
254
end if
255
256
if KeyPress[0].ButtonA == true
257
PlaySfx(SFX_G_SELECT, false)
258
259
Object.State = PAUSEMENU_CONFIRMED
260
Object.Alpha = 248
261
Object.Timer = 0
262
end if
263
264
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
265
if CheckResult > -1
266
267
#platform: Use_Origins
268
Options.PhysicalControls = false
269
Object.SelectedButton = -1
270
#endplatform
271
272
#platform: Mobile
273
Options.PhysicalControls = false
274
Object.SelectedButton = -1
275
#endplatform
276
277
end if
278
else
279
if Engine.Message == MESSAGE_LOSTFOCUS
280
Object.SelectedButton = -1
281
end if
282
283
CheckTouchRect(0, 0, Screen.XSize, Screen.YSize)
284
TempValue3 = CheckResult
285
CheckTouchRect(TempValue0, 32, Screen.XSize, 64)
286
if CheckResult > -1
287
Object.SelectedButton = 0
288
else
289
if TempValue3 < 0
290
if Object.SelectedButton == 0
291
PlaySfx(SFX_G_SELECT, false)
292
293
Object.State = PAUSEMENU_CONFIRMED
294
Object.Alpha = 248
295
Object.Timer = 0
296
end if
297
else
298
if Object.SelectedButton == 0
299
Object.SelectedButton = -1
300
end if
301
end if
302
end if
303
304
if Object.BlockRestart == false
305
CheckTouchRect(TempValue0, 80, Screen.XSize, 112)
306
if CheckResult > -1
307
Object.SelectedButton = 1
308
else
309
if TempValue3 < 0
310
if Object.SelectedButton == 1
311
PlaySfx(SFX_G_SELECT, false)
312
313
Object.State = PAUSEMENU_CONFIRMED
314
Object.Alpha = 248
315
Object.Timer = 0
316
end if
317
else
318
if Object.SelectedButton == 1
319
Object.SelectedButton = -1
320
end if
321
end if
322
end if
323
end if
324
325
CheckTouchRect(TempValue0, 128, Screen.XSize, 160)
326
if CheckResult > -1
327
Object.SelectedButton = 2
328
else
329
if TempValue3 < 0
330
if Object.SelectedButton == 2
331
PlaySfx(SFX_G_SELECT, false)
332
333
Object.State = PAUSEMENU_CONFIRMED
334
Object.Alpha = 248
335
Object.Timer = 0
336
end if
337
else
338
if Object.SelectedButton == 2
339
Object.SelectedButton = -1
340
end if
341
end if
342
end if
343
344
if Options.DevMenuFlag == true
345
CheckTouchRect(TempValue0, 176, Screen.XSize, 208)
346
if CheckResult > -1
347
Object.SelectedButton = 3
348
else
349
if TempValue3 < 0
350
if Object.SelectedButton == 3
351
PlaySfx(SFX_G_SELECT, false)
352
353
Object.State = PAUSEMENU_CONFIRMED
354
Object.Alpha = 248
355
Object.Timer = 0
356
end if
357
else
358
if Object.SelectedButton == 3
359
Object.SelectedButton = -1
360
end if
361
end if
362
end if
363
end if
364
365
if Engine.TrialMode == true
366
CheckTouchRect(TempValue0, 176, Screen.XSize, 208)
367
if CheckResult > -1
368
Object.SelectedButton = 3
369
else
370
if TempValue3 < 0
371
if Object.SelectedButton == 3
372
PlaySfx(SFX_G_SELECT, false)
373
374
Object.State = PAUSEMENU_CONFIRMED
375
Object.Alpha = 248
376
Object.Timer = 0
377
end if
378
else
379
if Object.SelectedButton == 3
380
Object.SelectedButton = -1
381
end if
382
end if
383
end if
384
end if
385
386
if KeyPress[0].Up == true
387
if Options.DevMenuFlag == true
388
Object.SelectedButton = 3
389
else
390
Object.SelectedButton = 2
391
end if
392
393
#platform: Use_Origins
394
Options.PhysicalControls = true
395
#endplatform
396
397
#platform: Mobile
398
Options.PhysicalControls = true
399
#endplatform
400
401
end if
402
403
if KeyPress[0].Down == true
404
Object.SelectedButton = 0
405
406
#platform: Use_Origins
407
Options.PhysicalControls = true
408
#endplatform
409
410
#platform: Mobile
411
Options.PhysicalControls = true
412
#endplatform
413
414
end if
415
end if
416
417
if Object.Timer < 60
418
Object.Timer++
419
else
420
Object.Frame = Object.AnimationTimer
421
Object.Frame >>= 4
422
Object.Frame++
423
424
Object.AnimationTimer++
425
Object.AnimationTimer &= 31
426
end if
427
break
428
429
case PAUSEMENU_CONFIRMED
430
Object.Timer++
431
Object.Timer &= 3
432
433
Object.SpritesXPos += 4
434
if Object.Alpha > 0
435
Object.Alpha -= 8
436
else
437
if Object.SelectedButton == 0
438
Object.SpritesXPos = Object.XPos
439
Object.SpritesXPos += 48
440
Object.BlackBarYPos = 202
441
442
Object.Timer = 0
443
Object.Alpha = 128
444
445
Object.State = PAUSEMENU_RESUME_GAME
446
Stage.State = STAGE_RUNNING
447
else
448
// Blit/Origins method of this process
449
Object.SpritesXPos = Object.XPos
450
Object.SpritesXPos += 48
451
StopMusic()
452
Object.State = PAUSEMENU_EXIT_LEVEL
453
454
//#platform: Mobile
455
// Old mobile method of this process
456
// if Engine.Message < MESSAGE_YES_SELECTED
457
// switch Object.SelectedButton
458
// case 1
459
// EngineCallback(CALLBACK_RESTART_SELECTED)
460
// break
461
// case 2
462
// EngineCallback(CALLBACK_EXIT_SELECTED)
463
// break
464
// case 3
465
// if Engine.TrialMode == false
466
// Object.SpritesXPos = Object.XPos
467
// Object.SpritesXPos += 48
468
// StopMusic()
469
// Object.State = PAUSEMENU_EXIT_LEVEL // Dev Menu
470
// else
471
// EngineCallback(CALLBACK_BUY_FULL_GAME_SELECTED) // Demo End
472
// Object.Timer = 0
473
// Object.AnimationTimer = 0
474
// Object.Frame = 0
475
// Object.SpritesXPos = Screen.XSize
476
// if Options.PhysicalControls == false
477
// Object.SelectedButton = -1
478
// end if
479
// Object.State = PAUSEMENU_CONTROLS
480
// Object.Alpha = 255
481
// end if
482
// break
483
// end switch
484
// else
485
// if Engine.Message == MESSAGE_NO_SELECTED
486
// Object.Timer = 0
487
// Object.AnimationTimer = 0
488
// Object.Frame = 0
489
// Object.SpritesXPos = Screen.XSize
490
// if Options.PhysicalControls == false
491
// Object.SelectedButton = -1
492
// end if
493
// Object.State = PAUSEMENU_CONTROLS
494
// Object.Alpha = 255
495
// else
496
// Object.SpritesXPos = Object.XPos
497
// Object.SpritesXPos += 48
498
// StopMusic()
499
// Object.State = PAUSEMENU_EXIT_LEVEL
500
// end if
501
// end if
502
//#endplatform
503
end if
504
end if
505
break
506
507
case PAUSEMENU_RESUME_GAME
508
if Object.Alpha > 0
509
Object.Alpha -= 8
510
Object.XPos += 16
511
Object.SpritesXPos += 16
512
Object.BlackBarYPos += 16
513
else
514
ResumeMusic()
515
ResetObjectEntity(Object.EntityNo, TypeName[Blank Object], 0, 0, 0)
516
if Player.Animation == ANI_FLYING
517
PlaySfx(SFX_G_FLYING, true)
518
end if
519
520
if Player.Animation == ANI_FLYINGTIRED
521
PlaySfx(SFX_G_FLYING, true)
522
end if
523
524
if Engine.FrameSkipSetting > 0
525
Engine.FrameSkipTimer = 0
526
end if
527
end if
528
break
529
530
case PAUSEMENU_EXIT_LEVEL
531
if Object.XPos > -64
532
Object.XPos -= 16
533
Object.SpritesXPos += 16
534
else
535
switch Object.SelectedButton
536
case 1 // Restart
537
LampPost.Check = 0
538
if Options.GameMode == MODE_TIMEATTACK
539
Player.Lives = 1
540
Player.Score = 0
541
else
542
Player.Lives--
543
end if
544
LoadStage()
545
break
546
case 2 // Exit
547
Good_Future_Count = 0
548
Good_Future_List = 0
549
550
Good_Future = false
551
Transporter_Destroyed = false
552
MetalSonic_Destroyed = false
553
554
Stage.ActiveList = PRESENTATION_STAGE
555
LampPost.Check = 0
556
557
if Options.GameMode == MODE_TIMEATTACK
558
Stage.ListPos = STAGE_P_TATTACK
559
TimeAttack.Result = 0
560
else
561
Stage.ListPos = STAGE_P_TITLE
562
end if
563
LoadStage()
564
break
565
566
case 3 // Dev Menu
567
TimeAttack.Round = -1
568
Engine.State = RESET_GAME
569
break
570
end switch
571
end if
572
break
573
end switch
574
end sub
575
576
577
sub ObjectDraw
578
SetActivePalette(0, 0, Screen.YSize)
579
580
switch Object.State
581
case PAUSEMENU_START_PAUSE
582
case PAUSEMENU_SLIDE_IN
583
case PAUSEMENU_SPRITES_FADE_IN
584
// Pause White BG
585
if Object.BlackBarHeight < 240
586
if Object.BlackBarYPos > Object.BlackBarHeight
587
TempValue0 = Object.BlackBarYPos
588
TempValue0 -= Object.BlackBarHeight
589
DrawRect(0, Object.BlackBarHeight, 384, TempValue0, 255, 255, 255, 128)
590
Object.BlackBarHeight = Object.BlackBarYPos
591
end if
592
end if
593
// Fall-through
594
case PAUSEMENU_CONTROLS
595
DrawSpriteScreenXY(3, Object.XPos, 0)
596
DrawSpriteScreenXY(3, Object.XPos, 32)
597
DrawSpriteScreenXY(3, Object.XPos, 64)
598
DrawSpriteScreenXY(3, Object.XPos, 96)
599
DrawSpriteScreenXY(3, Object.XPos, 128)
600
DrawSpriteScreenXY(3, Object.XPos, 160)
601
DrawSpriteScreenXY(3, Object.XPos, 192)
602
DrawSpriteScreenXY(3, Object.XPos, 224)
603
604
// Black Bar position
605
TempValue0 = Object.XPos
606
TempValue0 += 128
607
DrawRect(TempValue0, 0, 128, Screen.YSize, 0, 0, 0, 255)
608
DrawRect(0, 202, Object.BlackBarXPos, 13, 0, 0, 0, 255)
609
610
DrawSpriteScreenFX(4, FX_INK, 0, 202)
611
TempValue0 = Object.XPos
612
TempValue0 += 48
613
614
if Object.SpritesXPos > TempValue0
615
TempValue1 = TempValue0
616
TempValue1 -= Object.SpritesXPos
617
TempValue1 >>= 3
618
Object.SpritesXPos += TempValue1
619
end if
620
621
TempValue1 = 48
622
DrawSpriteScreenFX(6, FX_INK, TempValue0, TempValue1)
623
if Object.SelectedButton == 0
624
DrawSpriteScreenFX(5, FX_INK, Object.SpritesXPos, TempValue1)
625
DrawSpriteScreenFX(Object.Frame, FX_INK, TempValue0, TempValue1)
626
end if
627
628
TempValue1 += 48
629
if Object.BlockRestart == false
630
DrawSpriteScreenFX(7, FX_INK, TempValue0, TempValue1)
631
else
632
TempValue2 = Object.Alpha
633
Object.Alpha >>= 1
634
DrawSpriteScreenFX(7, FX_INK, TempValue0, TempValue1)
635
Object.Alpha = TempValue2
636
end if
637
638
if Object.SelectedButton == 1
639
DrawSpriteScreenFX(5, FX_INK, Object.SpritesXPos, TempValue1)
640
DrawSpriteScreenFX(Object.Frame, FX_INK, TempValue0, TempValue1)
641
end if
642
643
TempValue1 += 48
644
DrawSpriteScreenFX(8, FX_INK, TempValue0, TempValue1)
645
if Object.SelectedButton == 2
646
DrawSpriteScreenFX(5, FX_INK, Object.SpritesXPos, TempValue1)
647
DrawSpriteScreenFX(Object.Frame, FX_INK, TempValue0, TempValue1)
648
end if
649
650
TempValue1 += 48
651
if Options.DevMenuFlag == true
652
DrawSpriteScreenFX(9, FX_INK, TempValue0, TempValue1)
653
if Object.SelectedButton == 3
654
DrawSpriteScreenFX(5, FX_INK, Object.SpritesXPos, TempValue1)
655
DrawSpriteScreenFX(Object.Frame, FX_INK, TempValue0, TempValue1)
656
end if
657
else
658
if Engine.TrialMode == true
659
DrawSpriteScreenFX(10, FX_INK, TempValue0, TempValue1)
660
if Object.SelectedButton == 3
661
DrawSpriteScreenFX(5, FX_INK, Object.SpritesXPos, TempValue1)
662
DrawSpriteScreenFX(Object.Frame, FX_INK, TempValue0, TempValue1)
663
end if
664
end if
665
end if
666
break
667
668
case PAUSEMENU_CONFIRMED
669
DrawSpriteScreenXY(3, Object.XPos, 0)
670
DrawSpriteScreenXY(3, Object.XPos, 32)
671
DrawSpriteScreenXY(3, Object.XPos, 64)
672
DrawSpriteScreenXY(3, Object.XPos, 96)
673
DrawSpriteScreenXY(3, Object.XPos, 128)
674
DrawSpriteScreenXY(3, Object.XPos, 160)
675
DrawSpriteScreenXY(3, Object.XPos, 192)
676
DrawSpriteScreenXY(3, Object.XPos, 224)
677
678
// Black Bar position
679
TempValue0 = Object.XPos
680
TempValue0 += 128
681
DrawRect(TempValue0, 0, 128, Screen.YSize, 0, 0, 0, 255)
682
683
DrawRect(0, 202, Object.BlackBarXPos, 13, 0, 0, 0, 255)
684
DrawSpriteScreenXY(4, 0, 202)
685
686
TempValue0 = Object.XPos
687
TempValue0 += 48
688
TempValue1 = 48
689
690
if Object.SelectedButton == 0 // Continue
691
if Object.Timer < 2
692
DrawSpriteScreenXY(6, TempValue0, TempValue1)
693
end if
694
DrawSpriteScreenXY(5, Object.SpritesXPos, TempValue1)
695
DrawSpriteScreenXY(Object.Frame, TempValue0, TempValue1)
696
else
697
DrawSpriteScreenFX(6, FX_INK, TempValue0, TempValue1)
698
end if
699
700
TempValue1 += 48
701
if Object.SelectedButton == 1 // Reset
702
if Object.Timer < 2
703
DrawSpriteScreenXY(7, TempValue0, TempValue1)
704
end if
705
DrawSpriteScreenXY(5, Object.SpritesXPos, TempValue1)
706
DrawSpriteScreenXY(Object.Frame, TempValue0, TempValue1)
707
else
708
if Object.BlockRestart == false
709
DrawSpriteScreenFX(7, FX_INK, TempValue0, TempValue1)
710
else
711
TempValue2 = Object.Alpha
712
Object.Alpha >>= 1
713
DrawSpriteScreenFX(7, FX_INK, TempValue0, TempValue1)
714
Object.Alpha = TempValue2
715
end if
716
end if
717
718
TempValue1 += 48
719
if Object.SelectedButton == 2 // Exit
720
if Object.Timer < 2
721
DrawSpriteScreenXY(8, TempValue0, TempValue1)
722
end if
723
DrawSpriteScreenXY(5, Object.SpritesXPos, TempValue1)
724
DrawSpriteScreenXY(Object.Frame, TempValue0, TempValue1)
725
else
726
DrawSpriteScreenFX(8, FX_INK, TempValue0, TempValue1)
727
end if
728
729
TempValue1 += 48
730
if Options.DevMenuFlag == true
731
if Object.SelectedButton == 3 // Dev Menu
732
if Object.Timer < 2
733
DrawSpriteScreenXY(9, TempValue0, TempValue1)
734
end if
735
DrawSpriteScreenXY(5, Object.SpritesXPos, TempValue1)
736
DrawSpriteScreenXY(Object.Frame, TempValue0, TempValue1)
737
else
738
DrawSpriteScreenFX(9, FX_INK, TempValue0, TempValue1)
739
end if
740
else
741
if Engine.TrialMode == true
742
if Object.SelectedButton == 3 // Buy Demo
743
if Object.Timer < 2
744
DrawSpriteScreenXY(10, TempValue0, TempValue1)
745
end if
746
DrawSpriteScreenXY(5, Object.SpritesXPos, TempValue1)
747
DrawSpriteScreenXY(Object.Frame, TempValue0, TempValue1)
748
else
749
DrawSpriteScreenFX(10, FX_INK, TempValue0, TempValue1)
750
end if
751
end if
752
end if
753
break
754
755
case PAUSEMENU_RESUME_GAME
756
if Object.Alpha < 128
757
DrawRect(0, 0, Screen.XSize, 240, 255, 255, 255, Object.Alpha)
758
end if
759
760
DrawSpriteScreenXY(3, Object.XPos, 0)
761
DrawSpriteScreenXY(3, Object.XPos, 32)
762
DrawSpriteScreenXY(3, Object.XPos, 64)
763
DrawSpriteScreenXY(3, Object.XPos, 96)
764
DrawSpriteScreenXY(3, Object.XPos, 128)
765
DrawSpriteScreenXY(3, Object.XPos, 160)
766
DrawSpriteScreenXY(3, Object.XPos, 192)
767
DrawSpriteScreenXY(3, Object.XPos, 224)
768
769
// Black Bar position
770
TempValue0 = Object.XPos
771
TempValue0 += 128
772
DrawRect(TempValue0, 0, 128, Screen.YSize, 0, 0, 0, 255)
773
DrawRect(0, Object.BlackBarYPos, Screen.XSize, 13, 0, 0, 0, 255)
774
DrawSpriteScreenXY(4, 0, Object.BlackBarYPos)
775
776
switch Object.SelectedButton
777
case 0 // Continue
778
DrawSpriteScreenXY(6, Object.SpritesXPos, 48)
779
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 48)
780
break
781
case 1 // Reset
782
DrawSpriteScreenXY(6, Object.SpritesXPos, 96)
783
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 96)
784
break
785
case 2 // Exit
786
DrawSpriteScreenXY(8, Object.SpritesXPos, 144)
787
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 144)
788
break
789
case 3 // Dev Menu
790
if Options.DevMenuFlag == true
791
DrawSpriteScreenXY(9, Object.SpritesXPos, 192)
792
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 192)
793
else
794
if Engine.TrialMode == true
795
DrawSpriteScreenXY(10, Object.SpritesXPos, 192)
796
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 192)
797
end if
798
end if
799
break
800
end switch
801
break
802
803
case PAUSEMENU_EXIT_LEVEL
804
805
TempValue0 = Screen.XSize
806
TempValue0 -= 96
807
DrawRect(TempValue0, 0, 96, 240, 0, 0, 0, 255)
808
DrawSpriteScreenXY(3, Object.XPos, 0)
809
DrawSpriteScreenXY(3, Object.XPos, 32)
810
DrawSpriteScreenXY(3, Object.XPos, 64)
811
DrawSpriteScreenXY(3, Object.XPos, 96)
812
DrawSpriteScreenXY(3, Object.XPos, 128)
813
DrawSpriteScreenXY(3, Object.XPos, 160)
814
DrawSpriteScreenXY(3, Object.XPos, 192)
815
DrawSpriteScreenXY(3, Object.XPos, 224)
816
817
// Black Bar position
818
TempValue0 = Object.XPos
819
TempValue0 += 128
820
DrawRect(TempValue0, 0, 128, Screen.YSize, 0, 0, 0, 255)
821
822
switch Object.SelectedButton
823
case 0 // Continue
824
DrawSpriteScreenXY(6, Object.SpritesXPos, 48)
825
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 48)
826
break
827
case 1 // Reset
828
DrawSpriteScreenXY(6, Object.SpritesXPos, 96)
829
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 96)
830
break
831
case 2 // Exit
832
DrawSpriteScreenXY(8, Object.SpritesXPos, 144)
833
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 144)
834
break
835
case 3 // Dev Menu
836
if Options.DevMenuFlag == true
837
DrawSpriteScreenXY(9, Object.SpritesXPos, 192)
838
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 192)
839
else
840
if Engine.TrialMode == true
841
DrawSpriteScreenXY(10, Object.SpritesXPos, 192)
842
DrawSpriteScreenXY(Object.Frame, Object.SpritesXPos, 192)
843
end if
844
end if
845
break
846
end switch
847
break
848
endswitch
849
end sub
850
851
852
sub ObjectStartup
853
switch Engine.Language
854
case LANG_ENGLISH
855
case LANG_JAPANESE
856
LoadSpriteSheet("Global/Pause_EN.gif")
857
break
858
case LANG_FRENCH
859
LoadSpriteSheet("Global/Pause_FR.gif")
860
break
861
case LANG_ITALIAN
862
LoadSpriteSheet("Global/Pause_IT.gif")
863
break
864
case LANG_DEUTSCH
865
LoadSpriteSheet("Global/Pause_DE.gif")
866
break
867
case LANG_SPANISH
868
LoadSpriteSheet("Global/Pause_ES.gif")
869
break
870
end switch
871
872
// if Stage.PlayerListPos == PLAYER_SONIC_A in Standalone
873
if Stage.PlayerListPos != PLAYER_TAILS_A // PLAYER_TAILS in origins
874
SpriteFrame(-28, -14, 16, 24, 1, 103) // #0 - Sonic
875
SpriteFrame(-28, -14, 16, 24, 18, 103) // #1 - Sonic Waiting Frame 0
876
SpriteFrame(-28, -14, 16, 24, 35, 103) // #2 - Sonic Waiting Frame 1
877
else
878
SpriteFrame(-28, -14, 16, 24, 52, 103) // #0 - Tails
879
SpriteFrame(-28, -14, 16, 24, 69, 103) // #1 - Tails Waiting Frame 0
880
SpriteFrame(-28, -14, 16, 24, 86, 103) // #2 - Tails Waiting Frame 1
881
end if
882
883
SpriteFrame(0, 0, 128, 32, 0, 0) // #3 - Menu BG Section
884
SpriteFrame(0, -19, 128, 32, 0, 32) // #4 - Pause
885
SpriteFrame(-6, 7, 128, 3, 0, 65) // #5 - White Bar
886
887
switch Engine.Language
888
case LANG_ENGLISH
889
case LANG_JAPANESE
890
SpriteFrame(0, -5, 65, 11, 0, 69) // #6 - Continue
891
SpriteFrame(0, -5, 55, 11, 0, 81) // #7 - Restart
892
SpriteFrame(0, -5, 30, 11, 66, 69) // #8 - Exit
893
SpriteFrame(0, -5, 64, 11, 56, 81) // #9 - Dev Menu
894
SpriteFrame(0, -5, 72, 11, 0, 92) // #10 - Full Game (Unused)
895
break
896
897
case LANG_FRENCH
898
SpriteFrame(0, -5, 73, 11, 0, 69) // #6 - Continue
899
SpriteFrame(0, -5, 95, 11, 0, 81) // #7 - Restart
900
SpriteFrame(0, -5, 53, 11, 74, 69) // #8 - Exit
901
SpriteFrame(0, -5, 23, 11, 96, 81) // #9 - Dev Menu
902
SpriteFrame(0, -5, 72, 11, 0, 92) // #10 - Full Game (Unused)
903
break
904
905
case LANG_ITALIAN
906
SpriteFrame(0, -5, 65, 11, 0, 69) // #6 - Continue
907
SpriteFrame(0, -5, 78, 11, 0, 81) // #7 - Restart
908
SpriteFrame(0, -5, 28, 11, 66, 69) // #8 - Exit
909
SpriteFrame(0, -5, 23, 11, 79, 81) // #9 - Dev Menu
910
SpriteFrame(0, -5, 72, 11, 0, 92) // #10 - Full Game (Unused)
911
break
912
913
case LANG_DEUTSCH
914
SpriteFrame(0, -5, 48, 11, 0, 69) // #6 - Continue
915
SpriteFrame(0, -5, 65, 11, 0, 81) // #7 - Restart
916
SpriteFrame(0, -5, 71, 11, 49, 69) // #8 - Exit
917
SpriteFrame(0, -5, 23, 11, 66, 81) // #9 - Dev Menu
918
SpriteFrame(0, -5, 72, 11, 0, 92) // #10 - Full Game (Unused)
919
break
920
921
case LANG_SPANISH
922
SpriteFrame(0, -5, 73, 11, 0, 69) // #6 - Continue
923
SpriteFrame(0, -5, 67, 11, 0, 81) // #7 - Restart
924
SpriteFrame(0, -5, 36, 11, 74, 69) // #8 - Exit
925
SpriteFrame(0, -5, 23, 11, 68, 81) // #9 - Dev Menu
926
SpriteFrame(0, -5, 55, 11, 0, 92) // #10 - Full Game (Unused)
927
break
928
929
end switch
930
end sub
931
932
933
// ========================
934
// Editor Subs
935
// ========================
936
937
sub RSDKDraw
938
TempValue1 = Object.YPos
939
940
// Menu Draw
941
DrawSpriteXY(0, Object.XPos, TempValue1)
942
TempValue1 += 0x200000
943
944
DrawSpriteXY(0, Object.XPos, TempValue1)
945
TempValue1 += 0x200000
946
947
DrawSpriteXY(0, Object.XPos, TempValue1)
948
TempValue1 += 0x200000
949
950
DrawSpriteXY(0, Object.XPos, TempValue1)
951
TempValue1 += 0x200000
952
953
DrawSpriteXY(0, Object.XPos, TempValue1)
954
TempValue1 += 0x200000
955
956
DrawSpriteXY(0, Object.XPos, TempValue1)
957
TempValue1 += 0x200000
958
959
DrawSpriteXY(0, Object.XPos, TempValue1)
960
TempValue1 += 0x200000
961
962
DrawSpriteXY(0, Object.XPos, TempValue1)
963
end sub
964
965
966
sub RSDKLoad
967
LoadSpriteSheet("Global/Pause_EN.gif")
968
SpriteFrame(0, 0, 128, 32, 0, 0) // #0 - Menu BG Section
969
970
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
971
end sub
972
973