Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 2/Scripts/Title/STLogo.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: ST Logo Object
4
// Script Author: Christian Whitehead/Simon Thomley
5
// Unpacked by Rubberduckycooly's script unpacker
6
// ----------------------------------
7
8
// ========================
9
// Aliases
10
// ========================
11
12
private alias object.value0 : object.timer
13
private alias object.value1 : object.sonicFrameTablePos
14
private alias object.value2 : object.tailsFrameTablePos
15
private alias object.value3 : object.levelSelectCheatPos
16
private alias object.value4 : object.regionSwitchCheatPos
17
18
// States
19
private alias 0 : STLOGO_SETUP
20
private alias 1 : STLOGO_FADEIN
21
private alias 2 : STLOGO_SHOWEMBLEM
22
private alias 3 : STLOGO_ENTERSONIC
23
private alias 4 : STLOGO_ENTERSONICHAND
24
private alias 5 : STLOGO_SHOWSONICALONE
25
private alias 6 : STLOGO_ENTERTAILS
26
private alias 7 : STLOGO_ENTERTAILSHAND
27
private alias 8 : STLOGO_SHOWSONICTAILS
28
private alias 9 : STLOGO_SHOWBG
29
private alias 10 : STLOGO_FINISHEDANIMATING
30
31
// ShootingStar Aliases
32
private alias object.value0 : shootingStar.delay
33
34
// Game Modes
35
private alias 0 : MODE_NOSAVE
36
37
// Player List Pos Aliases
38
private alias 0 : PLAYER_SONIC_A
39
private alias 3 : PLAYER_SONIC_TAILS_A
40
private alias 5 : PLAYER_AMY_A
41
private alias 6 : PLAYER_AMY_TAILS_A
42
43
44
// ========================
45
// Function Declarations
46
// ========================
47
48
reserve function STLogo_CheckButtonCheatCodes
49
50
51
// ========================
52
// Tables
53
// ========================
54
55
private table STLogo_sonicFrameDurationTable
56
4, 4, 4, 4, 4, 4, 4, 7, 2, 2, 3, 4, 4, 4, 4
57
end table
58
59
private table STLogo_tailsFrameDurationTable
60
4, 4, 4, 4, 4, 4, 7, 2, 2, 2, 3, 4, 4, 4
61
end table
62
63
64
// ========================
65
// Function Definitions
66
// ========================
67
68
public function STLogo_CheckButtonCheatCodes
69
// This function is used by the [K Logo] Object too
70
71
temp0 = 0
72
if keyPress[0].up == true
73
temp0 = 1
74
end if
75
76
if keyPress[0].down == true
77
temp0 = 2
78
end if
79
80
if keyPress[0].left == true
81
temp0 = 3
82
end if
83
84
if keyPress[0].right == true
85
temp0 = 4
86
end if
87
88
if keyPress[0].buttonA == true
89
temp0 = 5
90
end if
91
92
if keyPress[0].buttonB == true
93
temp0 = 6
94
end if
95
96
if keyPress[0].buttonC == true
97
temp0 = 7
98
end if
99
100
// Level Select Cheat
101
// 1, 1, 1, 2, 2, 2, 3, 4, 3, 4
102
// up, up, up, down, down, down, left, right, left, right
103
switch object.levelSelectCheatPos
104
case 0
105
if temp0 == 1
106
object.levelSelectCheatPos++
107
else
108
if temp0 != 0
109
object.levelSelectCheatPos = 0
110
end if
111
end if
112
break
113
114
case 1
115
if temp0 == 1
116
object.levelSelectCheatPos++
117
else
118
if temp0 != 0
119
object.levelSelectCheatPos = 0
120
end if
121
end if
122
break
123
124
case 2
125
if temp0 == 1
126
object.levelSelectCheatPos++
127
else
128
if temp0 != 0
129
object.levelSelectCheatPos = 0
130
end if
131
end if
132
break
133
134
case 3
135
if temp0 == 2
136
object.levelSelectCheatPos++
137
else
138
if temp0 != 0
139
object.levelSelectCheatPos = 0
140
end if
141
end if
142
break
143
144
case 4
145
if temp0 == 2
146
object.levelSelectCheatPos++
147
else
148
if temp0 != 0
149
object.levelSelectCheatPos = 0
150
end if
151
end if
152
break
153
154
case 5
155
if temp0 == 2
156
object.levelSelectCheatPos++
157
else
158
if temp0 != 0
159
object.levelSelectCheatPos = 0
160
end if
161
end if
162
break
163
164
case 6
165
if temp0 == 3
166
object.levelSelectCheatPos++
167
else
168
if temp0 != 0
169
object.levelSelectCheatPos = 0
170
end if
171
end if
172
break
173
174
case 7
175
if temp0 == 4
176
object.levelSelectCheatPos++
177
else
178
if temp0 != 0
179
object.levelSelectCheatPos = 0
180
end if
181
end if
182
break
183
184
case 8
185
if temp0 == 3
186
object.levelSelectCheatPos++
187
else
188
if temp0 != 0
189
object.levelSelectCheatPos = 0
190
end if
191
end if
192
break
193
194
case 9
195
if temp0 == 4
196
object.levelSelectCheatPos++
197
object.levelSelectCheatPos = 0
198
options.stageSelectFlag = true
199
PlaySfx(SfxName[Ring L], false)
200
else
201
if temp0 != 0
202
object.levelSelectCheatPos = 0
203
end if
204
end if
205
break
206
207
end switch
208
209
210
// Region Switch Cheat
211
// 1, 2, 2, 2, 2, 1
212
// up, down, down, down, down, up
213
switch object.regionSwitchCheatPos
214
case 0
215
if temp0 == 1
216
object.regionSwitchCheatPos++
217
else
218
if temp0 != 0
219
object.regionSwitchCheatPos = 0
220
end if
221
end if
222
break
223
224
case 1
225
case 2
226
case 3
227
case 4
228
if temp0 == 2
229
object.regionSwitchCheatPos++
230
else
231
if temp0 != 0
232
object.regionSwitchCheatPos = 0
233
end if
234
end if
235
break
236
237
case 5
238
if temp0 == 1
239
object.regionSwitchCheatPos++
240
object.regionSwitchCheatPos = 0
241
options.region ^= 1
242
PlaySfx(SfxName[Ring L], false)
243
else
244
if temp0 != 0
245
object.regionSwitchCheatPos = 0
246
end if
247
end if
248
break
249
end switch
250
end function
251
252
253
// ========================
254
// Events
255
// ========================
256
257
event ObjectUpdate
258
#platform: USE_STANDALONE
259
if stage.player2Enabled == true
260
stage.playerListPos = PLAYER_SONIC_TAILS_A
261
end if
262
#endplatform
263
264
#platform: USE_ORIGINS
265
if object.state <= STLOGO_FADEIN
266
switch stage.playerListPos
267
case PLAYER_AMY_A
268
stage.playerListPos = PLAYER_SONIC_A
269
break
270
271
case PLAYER_AMY_TAILS_A
272
stage.playerListPos = PLAYER_SONIC_TAILS_A
273
break
274
end switch
275
end if
276
#endplatform
277
278
if options.gameMode == MODE_NOSAVE
279
if object.state > STLOGO_SHOWEMBLEM
280
CallFunction(STLogo_CheckButtonCheatCodes)
281
end if
282
end if
283
284
switch object.state
285
case STLOGO_SETUP
286
if object.timer == 30
287
object[+1].type = TypeName[Twinkle Stars]
288
object[+1].priority = PRIORITY_ACTIVE
289
end if
290
291
if object.timer < 60
292
object.timer++
293
else
294
object.timer = 0
295
object.alpha = 0x100
296
object.state++
297
end if
298
break
299
300
case STLOGO_FADEIN
301
if object.alpha > 0
302
object.alpha -= 8
303
else
304
object.state++
305
end if
306
break
307
308
case STLOGO_SHOWEMBLEM
309
if object.timer < 32
310
object.timer++
311
else
312
object.timer = 0
313
PlayMusic(0)
314
object.state++
315
end if
316
break
317
318
case STLOGO_ENTERSONIC
319
if object.animationTimer < 2
320
object.frame = object.sonicFrameTablePos
321
object.frame += 2
322
GetTableValue(object.animationTimer, object.sonicFrameTablePos, STLogo_sonicFrameDurationTable)
323
324
object.sonicFrameTablePos++
325
if object.sonicFrameTablePos == 12
326
object.frame++
327
object.state++
328
end if
329
else
330
object.animationTimer--
331
end if
332
break
333
334
case STLOGO_ENTERSONICHAND
335
if object.animationTimer < 2
336
object.frame = object.sonicFrameTablePos
337
object.frame += 3
338
GetTableValue(object.animationTimer, object.sonicFrameTablePos, STLogo_sonicFrameDurationTable)
339
340
object.sonicFrameTablePos++
341
if object.sonicFrameTablePos == 16
342
object.animationTimer = 0
343
object.state++
344
end if
345
else
346
object.animationTimer--
347
end if
348
break
349
350
case STLOGO_SHOWSONICALONE
351
if object.timer < 4
352
object.timer++
353
else
354
object.timer = 0
355
object.state++
356
end if
357
break
358
359
case STLOGO_ENTERTAILS
360
if object.animationTimer < 2
361
object.frame = object.tailsFrameTablePos
362
object.frame += 18
363
GetTableValue(object.animationTimer, object.tailsFrameTablePos, STLogo_tailsFrameDurationTable)
364
365
object.tailsFrameTablePos++
366
if object.tailsFrameTablePos == 11
367
object.frame++
368
object.state++
369
end if
370
else
371
object.animationTimer--
372
end if
373
break
374
375
case STLOGO_ENTERTAILSHAND
376
if object.animationTimer < 2
377
object.frame = object.tailsFrameTablePos
378
object.frame += 19
379
GetTableValue(object.animationTimer, object.tailsFrameTablePos, STLogo_tailsFrameDurationTable)
380
381
object.tailsFrameTablePos++
382
if object.tailsFrameTablePos == 14
383
object.animationTimer = 0
384
object.state++
385
end if
386
else
387
object.animationTimer--
388
end if
389
break
390
391
case STLOGO_SHOWSONICTAILS
392
if object.timer < 30
393
object.timer++
394
else
395
object.timer = 0
396
object.alpha = 256
397
stage.activeLayer[0] = 2 // Show Title BG
398
object.state++
399
end if
400
break
401
402
case STLOGO_SHOWBG
403
if object.alpha > 0
404
object.alpha -= 12
405
else
406
object.state++
407
408
object[+1].type = TypeName[Start Message]
409
object[+1].priority = PRIORITY_ACTIVE
410
object[+1].xpos = screen.xcenter
411
object[+1].ypos = 208
412
413
CreateTempObject(TypeName[Shooting Star], 0, object.xpos, object.ypos)
414
object[tempObjectPos].drawOrder = 2
415
object[tempObjectPos].xpos += 0x1600000
416
object[tempObjectPos].ypos -= 0x1000000
417
shootingStar[tempObjectPos].delay = 90
418
end if
419
break
420
421
case STLOGO_FINISHEDANIMATING
422
object.timer++
423
if object.timer > 7
424
tileLayer[2].deformationOffset++
425
object.timer = 0
426
end if
427
break
428
429
end switch
430
431
temp0 = screen.xcenter
432
FlipSign(temp0)
433
temp0 += 256
434
screen.xoffset = temp0
435
end event
436
437
438
event ObjectDraw
439
switch object.state
440
case STLOGO_SETUP
441
ClearScreen(1)
442
break
443
444
case STLOGO_FADEIN
445
ClearScreen(1)
446
447
// Draw Emblem (Top)
448
DrawSprite(0)
449
450
// Draw Emblem (Bottom)
451
DrawSprite(1)
452
453
DrawRect(0, 0, screen.xsize, screen.ysize, 0x00, 0x00, 0x00, object.alpha)
454
break
455
456
case STLOGO_SHOWEMBLEM
457
ClearScreen(1)
458
459
// Draw Emblem (Top)
460
DrawSprite(0)
461
462
// Draw Emblem (Bottom)
463
DrawSprite(1)
464
break
465
466
case STLOGO_ENTERSONIC
467
ClearScreen(1)
468
469
// Draw Emblem (Top)
470
DrawSprite(0)
471
472
// Draw Sonic
473
DrawSprite(object.frame)
474
475
// Draw Emblem (Bottom)
476
DrawSprite(1)
477
break
478
479
case STLOGO_ENTERSONICHAND
480
ClearScreen(1)
481
482
// Draw Emblem (Top)
483
DrawSprite(0)
484
485
// Draw Sonic
486
DrawSprite(13) // Sonic
487
DrawSprite(object.frame) // Hand
488
489
// Draw Emblem (Bottom)
490
DrawSprite(1)
491
break
492
493
case STLOGO_SHOWSONICALONE
494
ClearScreen(1)
495
496
// Draw Emblem (Top)
497
DrawSprite(0)
498
499
// Draw Sonic
500
DrawSprite(13) // Sonic
501
DrawSprite(17) // Hand
502
503
// Draw Emblem (Bottom)
504
DrawSprite(1)
505
break
506
507
case STLOGO_ENTERTAILS
508
ClearScreen(1)
509
510
// Draw Emblem (Top)
511
DrawSprite(0)
512
513
// Draw Tails
514
DrawSprite(object.frame) // Tails
515
516
// Draw Sonic
517
DrawSprite(13) // Sonic
518
DrawSprite(17) // Hand
519
520
// Draw Emblem (Bottom)
521
DrawSprite(1)
522
break
523
524
case STLOGO_ENTERTAILSHAND
525
ClearScreen(1)
526
527
// Draw Emblem (Top)
528
DrawSprite(0)
529
530
// Draw Tails
531
DrawSprite(28) // Tails
532
DrawSprite(object.frame) // Hand
533
534
// Draw Sonic
535
DrawSprite(13) // Sonic
536
DrawSprite(17) // Hand
537
538
// Draw Emblem (Bottom)
539
DrawSprite(1)
540
break
541
542
case STLOGO_SHOWSONICTAILS
543
ClearScreen(1)
544
545
// Draw Emblem (Top)
546
DrawSprite(0)
547
548
// Draw Tails
549
DrawSprite(28) // Tails
550
DrawSprite(31) // Hand
551
552
// Draw Sonic
553
DrawSprite(13) // Sonic
554
DrawSprite(17) // Hand
555
556
// Draw Emblem (Bottom)
557
DrawSprite(1)
558
break
559
560
case STLOGO_SHOWBG
561
DrawRect(0, 0, screen.xsize, screen.ysize, 0xE0, 0xE0, 0xE0, object.alpha)
562
563
// Draw Emblem (Top)
564
DrawSprite(0)
565
566
// Draw Tails
567
DrawSprite(28) // Tails
568
DrawSprite(31) // Hand
569
570
// Draw Sonic
571
DrawSprite(13) // Sonic
572
DrawSprite(17) // Hand
573
574
// Draw Emblem (Bottom)
575
DrawSprite(1)
576
577
// Draw Copyright
578
temp0 = screen.xsize
579
temp0 -= 96
580
DrawSpriteScreenXY(32, temp0, 216)
581
break
582
583
case STLOGO_FINISHEDANIMATING
584
// Draw Emblem (Top)
585
DrawSprite(0)
586
587
// Draw Tails
588
DrawSprite(28) // Tails
589
DrawSprite(31) // Hand
590
591
// Draw Sonic
592
DrawSprite(13) // Sonic
593
DrawSprite(17) // Hand
594
595
// Draw Emblem (Bottom)
596
DrawSprite(1)
597
598
// Draw Copyright
599
temp0 = screen.xsize
600
temp0 -= 96
601
DrawSpriteScreenXY(32, temp0, 216)
602
break
603
604
end switch
605
end event
606
607
608
event ObjectStartup
609
LoadSpriteSheet("Title/Title.gif")
610
SetMusicTrack("Titlescreen.ogg", 0, false)
611
612
arrayPos0 = 0x100
613
while arrayPos0 < 0x240
614
arrayPos1 = arrayPos0
615
arrayPos1 -= 0x100
616
Rand(stage.deformationData2[arrayPos1], 4)
617
temp0 = arrayPos0
618
temp0 &= 1
619
if temp0 == 1
620
FlipSign(stage.deformationData2[arrayPos1])
621
end if
622
stage.deformationData2[arrayPos0] = stage.deformationData2[arrayPos1]
623
arrayPos0++
624
loop
625
626
SpriteFrame(-128, -78, 256, 82, 255, 67) // Emblem (Top) - #0
627
SpriteFrame(-128, -8, 256, 87, 255, 150) // Emblem (Bottom) - #1
628
SpriteFrame(-21, -19, 72, 40, 1, 66) // Sonic - Frame 1 - #2
629
SpriteFrame(-29, -35, 72, 67, 1, 66) // Sonic - Frame 2 - #3
630
SpriteFrame(-37, -51, 72, 67, 1, 66) // Sonic - Frame 3 - #4
631
SpriteFrame(-39, -61, 72, 67, 1, 66) // Sonic - Frame 4 - #5
632
SpriteFrame(-35, -69, 72, 67, 1, 66) // Sonic - Frame 5 - #6
633
SpriteFrame(-29, -73, 72, 67, 1, 66) // Sonic - Frame 6 - #7
634
SpriteFrame(-25, -74, 72, 67, 1, 66) // Sonic - Frame 7 - #8
635
SpriteFrame(-21, -75, 72, 67, 1, 66) // Sonic - Frame 8 - #9
636
SpriteFrame(-18, -76, 74, 84, 74, 66) // Sonic - Frame 9 - #10
637
SpriteFrame(-3, -76, 74, 71, 149, 66) // Sonic - Frame 10 - #11
638
SpriteFrame(0, -79, 71, 74, 1, 134) // Sonic - Frame 11 - #12
639
SpriteFrame(0, -79, 71, 74, 74, 151) // Sonic - Frame 12 - #13
640
SpriteFrame(45, -49, 30, 43, 149, 138) // Sonic Hand - Frame 1 - #14
641
SpriteFrame(43, -47, 30, 43, 149, 138) // Sonic Hand - Frame 2 - #15
642
SpriteFrame(40, -46, 30, 43, 149, 138) // Sonic Hand - Frame 3 - #16
643
SpriteFrame(41, -47, 30, 43, 149, 138) // Sonic Hand - Frame 4 - #17
644
SpriteFrame(-49, -24, 56, 64, 1, 1) // Tails - Frame 1 - #18
645
SpriteFrame(-53, -40, 56, 64, 1, 1) // Tails - Frame 2 - #19
646
SpriteFrame(-58, -52, 56, 64, 1, 1) // Tails - Frame 3 - #20
647
SpriteFrame(-60, -58, 56, 64, 1, 1) // Tails - Frame 4 - #21
648
SpriteFrame(-62, -62, 56, 64, 1, 1) // Tails - Frame 5 - #22
649
SpriteFrame(-63, -63, 56, 64, 1, 1) // Tails - Frame 6 - #23
650
SpriteFrame(-64, -64, 56, 64, 1, 1) // Tails - Frame 7 - #24
651
SpriteFrame(-86, -59, 89, 57, 58, 1) // Tails - Frame 8 - #25
652
SpriteFrame(-80, -64, 88, 61, 149, 1) // Tails - Frame 9 - #26
653
SpriteFrame(-82, -63, 89, 59, 238, 1) // Tails - Frame 10 - #27
654
SpriteFrame(-83, -68, 87, 65, 328, 1) // Tails - Frame 11 - #28
655
SpriteFrame(-9, -22, 16, 19, 417, 1) // Tails Hand - Frame 1 - #29
656
SpriteFrame(-12, -27, 16, 19, 417, 1) // Tails Hand - Frame 2 - #30
657
SpriteFrame(-11, -26, 16, 19, 417, 1) // Tails Hand - Frame 3 - #31
658
SpriteFrame(0, 0, 88, 16, 1, 421) // Copyright - #32
659
end event
660
661
662
// ========================
663
// Editor Events
664
// ========================
665
666
event RSDKDraw
667
DrawSprite(0)
668
DrawSprite(1)
669
end event
670
671
672
event RSDKLoad
673
LoadSpriteSheet("Title/Title.gif")
674
SpriteFrame(-128, -78, 256, 82, 255, 67) // Emblem (Top) - #0
675
SpriteFrame(-128, -8, 256, 87, 255, 150) // Emblem (Bottom) - #1
676
677
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
678
end event
679
680