Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation
Path: blob/master/Sonic 1/Scripts/Continue/Continue.txt
1480 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
3
// Script Description: Continue Screen 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.countdown // The time you see in big numbers (seconds)
13
private alias object.value1 : object.timer // The hidden in-between timer (frames)
14
15
// States
16
private alias 0 : CONTINUE_IDLE
17
private alias 1 : CONTINUE_COUNTDOWN
18
19
// Continue Setup states
20
private alias 3 : CONTINUESETUP_WAITING
21
private alias 5 : CONTINUESETUP_RUNOFFSCREEN
22
private alias 7 : CONTINUESETUP_FADETOMENU
23
24
25
// ========================
26
// Events
27
// ========================
28
29
event ObjectUpdate
30
if object.state == CONTINUE_COUNTDOWN
31
object.timer--
32
if object.timer <= 0
33
if object.countdown == 0
34
object.state++
35
object[-2].state = CONTINUESETUP_FADETOMENU
36
else
37
object.countdown--
38
object.timer = 60
39
end if
40
end if
41
end if
42
end event
43
44
45
event ObjectDraw
46
// First draw the constant sprites ("Continue" & stars)
47
DrawSprite(0)
48
DrawSprite(1)
49
50
// Then draw the remaining time countdown
51
temp0 = object.xpos
52
temp0 >>= 16
53
DrawNumbers(2, temp0, 126, object.countdown, 2, 8, true)
54
55
// And now draw a visual representation of all the continues the player has
56
57
temp0 = player.continues
58
temp1 = temp0
59
temp0 -= 2
60
temp0 *= 21
61
temp0 >>= 1
62
FlipSign(temp0)
63
temp0 += screen.xcenter
64
GetBit(object.frame, oscillation, 4)
65
object.frame += 12
66
temp3 = true
67
while temp1 > 1
68
temp2 = true
69
70
if temp3 == true
71
temp3 = false
72
if object[-2].state >= CONTINUESETUP_RUNOFFSCREEN
73
if object[-2].state != CONTINUESETUP_FADETOMENU
74
// Don't draw
75
temp2 = false
76
end if
77
else
78
if object[-2].state > CONTINUESETUP_WAITING
79
// Flashing, draw sometimes
80
GetBit(temp2, oscillation, 0)
81
end if
82
end if
83
end if
84
85
if temp2 == true
86
DrawSpriteScreenXY(object.frame, temp0, 100)
87
end if
88
89
temp0 += 21
90
temp1--
91
loop
92
end event
93
94
95
event ObjectStartup
96
LoadSpriteSheet("Special/Objects.gif")
97
98
// Sprite frames
99
SpriteFrame(-59, 64, 118, 16, 382, 400) // #0 - "CONTINUE" text
100
SpriteFrame(-21, 128, 41, 9, 357, 390) // #1 - Pair of stars
101
SpriteFrame(0, 0, 8, 11, 120, 418) // #2 - Number 0
102
SpriteFrame(0, 0, 8, 11, 129, 418) // #3 - Number 1
103
SpriteFrame(0, 0, 8, 11, 138, 418) // #4 - Number 2
104
SpriteFrame(0, 0, 8, 11, 147, 418) // #5 - Number 3
105
SpriteFrame(0, 0, 8, 11, 120, 430) // #6 - Number 4
106
SpriteFrame(0, 0, 8, 11, 129, 430) // #7 - Number 5
107
SpriteFrame(0, 0, 8, 11, 138, 430) // #8 - Number 6
108
SpriteFrame(0, 0, 8, 11, 147, 430) // #9 - Number 7
109
SpriteFrame(0, 0, 8, 11, 120, 442) // #10 - Number 8
110
SpriteFrame(0, 0, 8, 11, 129, 442) // #11 - Number 9
111
112
// Mini foot tapping sprites are character-specific
113
switch stage.playerListPos
114
case PLAYER_SONIC_A
115
case PLAYER_SONIC_TAILS_A
116
SpriteFrame(-8, -11, 16, 23, 399, 376)
117
SpriteFrame(-8, -11, 16, 23, 416, 376)
118
break
119
120
case PLAYER_TAILS_A
121
SpriteFrame(-8, -11, 16, 23, 433, 376)
122
SpriteFrame(-8, -11, 16, 23, 450, 376)
123
break
124
125
case PLAYER_KNUCKLES_A
126
#platform: USE_ORIGINS
127
case PLAYER_KNUCKLES_TAILS_A // Huh...? It's cool this is here, but K+T isn't a combo in Origins Plus?
128
#endplatform
129
SpriteFrame(-8, -11, 16, 23, 467, 376)
130
SpriteFrame(-8, -11, 16, 23, 484, 376)
131
break
132
133
#platform: USE_ORIGINS
134
case PLAYER_AMY_A
135
case PLAYER_AMY_TAILS_A
136
SpriteFrame(-9, -10, 17, 22, 465, 417)
137
SpriteFrame(-9, -10, 17, 22, 483, 417)
138
break
139
#endplatform
140
141
end switch
142
143
foreach (TypeName[Continue Screen], arrayPos0, ALL_ENTITIES)
144
object[arrayPos0].drawOrder = 5
145
object[arrayPos0].xpos = screen.xcenter
146
object[arrayPos0].xpos <<= 16
147
object[arrayPos0].ypos = 0
148
object[arrayPos0].countdown = 10
149
next
150
end event
151
152
153
// ========================
154
// Editor Events
155
// ========================
156
157
event RSDKDraw
158
DrawSprite(0)
159
end event
160
161
162
event RSDKLoad
163
LoadSpriteSheet("Special/Objects.gif")
164
SpriteFrame(-59, -8, 118, 16, 382, 400)
165
166
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
167
end event
168
169