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/Sega.txt
1483 views
1
// ----------------------------------
2
// RSDK Project: Sonic 2
3
// Script Description: Sega 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.value2 : object.trailPos.x
14
private alias object.value3 : object.levelSelectCheatPos
15
private alias object.value4 : object.anyCheatDone
16
private alias object.value5 : object.regionSwitchCheatPos
17
18
// States
19
private alias 0 : SEGA_SETUP
20
private alias 1 : SEGA_FADEIN
21
private alias 2 : SEGA_SONICRUN_LEFT
22
private alias 3 : SEGA_FADEOUTTRAIL_LEFT
23
private alias 4 : SEGA_SONICRUN_RIGHT
24
private alias 5 : SEGA_FADEOUTTRAIL_RIGHT
25
private alias 6 : SEGA_SHOWSEGALOGO
26
private alias 7 : SEGA_FADETOTITLE
27
28
// Game Modes
29
private alias 0 : MODE_NOSAVE
30
31
// Priority
32
public alias 0 : PRIORITY_BOUNDS
33
public alias 1 : PRIORITY_ACTIVE
34
public alias 2 : PRIORITY_ALWAYS
35
public alias 3 : PRIORITY_XBOUNDS
36
public alias 4 : PRIORITY_XBOUNDS_DESTROY
37
public alias 5 : PRIORITY_INACTIVE
38
public alias 6 : PRIORITY_BOUNDS_SMALL
39
public alias 7 : PRIORITY_ACTIVE_SMALL
40
41
// Ink Effects
42
public alias 0 : INK_NONE
43
public alias 1 : INK_BLEND
44
public alias 2 : INK_ALPHA
45
public alias 3 : INK_ADD
46
public alias 4 : INK_SUB
47
48
// Flip Directions
49
public alias 0 : FLIP_NONE
50
public alias 1 : FLIP_X
51
public alias 2 : FLIP_Y
52
public alias 3 : FLIP_XY
53
54
// Player List Pos Aliases
55
private alias 2 : PLAYER_KNUCKLES_A
56
57
58
// ========================
59
// Function Declarations
60
// ========================
61
62
reserve function Sega_CheckTouchCheatCodes
63
64
65
// ========================
66
// Function Definitions
67
// ========================
68
69
private function Sega_CheckTouchCheatCodes
70
CheckTouchRect(0, 0, screen.xsize, screen.ysize)
71
if checkResult == -1
72
object.anyCheatDone = 0
73
end if
74
75
if object.anyCheatDone == false
76
temp0 = screen.xcenter
77
switch object.levelSelectCheatPos
78
case 0
79
temp0 -= 93
80
temp1 = temp0
81
temp1 += 39
82
break
83
84
case 1
85
temp0 -= 50
86
temp1 = temp0
87
temp1 += 42
88
break
89
90
case 2
91
temp0 -= 6
92
temp1 = temp0
93
temp1 += 42
94
break
95
96
case 3
97
temp0 += 36
98
temp1 = temp0
99
temp1 += 58
100
break
101
102
end switch
103
104
CheckTouchRect(temp0, 90, temp1, 150)
105
if checkResult > -1
106
object.anyCheatDone = true
107
object.levelSelectCheatPos++
108
if object.levelSelectCheatPos == 4
109
if options.gameMode == MODE_NOSAVE
110
PlaySfx(SfxName[Ring L], false)
111
options.stageSelectFlag = true
112
end if
113
end if
114
end if
115
116
temp0 = screen.xcenter
117
switch object.regionSwitchCheatPos
118
case 0
119
temp0 += 36
120
temp1 = temp0
121
temp1 += 58
122
break
123
124
case 1
125
temp0 -= 6
126
temp1 = temp0
127
temp1 += 42
128
break
129
130
case 2
131
temp0 -= 50
132
temp1 = temp0
133
temp1 += 42
134
break
135
136
case 3
137
temp0 -= 93
138
temp1 = temp0
139
temp1 += 39
140
break
141
142
end switch
143
144
CheckTouchRect(temp0, 90, temp1, 150)
145
if checkResult > -1
146
object.anyCheatDone = true
147
object.regionSwitchCheatPos++
148
if object.regionSwitchCheatPos == 4
149
PlaySfx(SfxName[Ring L], false)
150
options.region ^= 1
151
end if
152
end if
153
end if
154
end function
155
156
157
// ========================
158
// Events
159
// ========================
160
161
event ObjectUpdate
162
#platform: USE_ORIGINS
163
if game.titleMode != false
164
// If we're returning to the title, just skip the Sega screen and head straight for the actual Title
165
game.titleMode = false
166
ResetObjectEntity(object.entityPos, TypeName[ST Logo], 0, object.xpos, object.ypos)
167
else
168
#endplatform
169
switch object.state
170
case SEGA_SETUP
171
object.alpha = 0x00
172
object.inkEffect = 2
173
object.timer = 320
174
SetScreenFade(0x00, 0x00, 0x00, object.timer)
175
object.state++
176
break
177
178
case SEGA_FADEIN
179
if object.timer > 0
180
object.timer -= 8
181
else
182
object.direction = FACING_LEFT
183
object.alpha = 0x100
184
object.trailPos.x = 256
185
object.state++
186
end if
187
SetScreenFade(0x00, 0x00, 0x00, object.timer)
188
break
189
190
case SEGA_SONICRUN_LEFT
191
object.frame++
192
object.frame &= 3
193
194
if object.trailPos.x > -320
195
object.trailPos.x -= 32
196
else
197
object.direction = FACING_RIGHT
198
object.state++
199
end if
200
break
201
202
case SEGA_FADEOUTTRAIL_LEFT
203
if object.alpha > -0x40
204
object.alpha -= 0x10
205
else
206
object.state++
207
end if
208
break
209
210
case SEGA_SONICRUN_RIGHT
211
object.frame++
212
object.frame &= 3
213
214
if object.trailPos.x < 320
215
object.trailPos.x += 32
216
else
217
object.alpha = 0x100
218
object.state++
219
end if
220
break
221
222
case SEGA_FADEOUTTRAIL_RIGHT
223
if object.alpha > -0x40
224
object.alpha -= 0x10
225
else
226
object.state++
227
end if
228
break
229
230
case SEGA_SHOWSEGALOGO
231
object.timer++
232
if object.timer == 160
233
object.timer = 0
234
object.state = SEGA_FADETOTITLE
235
end if
236
237
if object.timer == 2
238
PlaySfx(SfxName[Sega Chant], false)
239
end if
240
#platform: USE_STANDALONE
241
CallFunction(Sega_CheckTouchCheatCodes)
242
#endplatform
243
break
244
245
case SEGA_FADETOTITLE
246
if object.timer < 0x100
247
object.timer += 8
248
SetScreenFade(0x00, 0x00, 0x00, object.timer)
249
else
250
if stage.playerListPos == PLAYER_KNUCKLES_A
251
ResetObjectEntity(object.entityPos, TypeName[K Logo], 0, object.xpos, object.ypos)
252
else
253
ResetObjectEntity(object.entityPos, TypeName[ST Screen], 0, object.xpos, object.ypos)
254
end if
255
SetScreenFade(0x00, 0x00, 0x00, 0xFF)
256
end if
257
break
258
259
end switch
260
#platform: USE_ORIGINS
261
end if // game.titleMode == false check from up above
262
#endplatform
263
end event
264
265
266
event ObjectDraw
267
DrawRect(0, 0, screen.xsize, screen.ysize, 0xE0, 0xE0, 0xE0, 0xFF)
268
269
switch object.state
270
default
271
case SEGA_SETUP
272
case SEGA_FADEIN
273
break
274
275
case SEGA_SONICRUN_LEFT
276
temp0 = object.trailPos.x
277
temp0 += screen.xcenter
278
DrawSpriteScreenFX(4, FX_FLIP, temp0, 121)
279
DrawSpriteScreenFX(5, FX_FLIP, temp0, 121)
280
DrawSpriteScreenFX(6, FX_FLIP, temp0, 121)
281
DrawSpriteScreenFX(object.frame, FX_FLIP, temp0, screen.ycenter)
282
break
283
284
case SEGA_FADEOUTTRAIL_LEFT
285
DrawSpriteScreenFX(7, FX_INK, 0, 121)
286
DrawSpriteScreenFX(8, FX_INK, 0, 121)
287
DrawSpriteScreenFX(9, FX_INK, 0, 121)
288
289
temp0 = object.alpha
290
object.alpha = 256
291
object.alpha -= temp0
292
DrawSpriteScreenFX(10, FX_INK, screen.xcenter, screen.ycenter)
293
294
object.alpha = temp0
295
break
296
297
case SEGA_SONICRUN_RIGHT
298
temp0 = object.trailPos.x
299
temp0 += screen.xcenter
300
DrawSpriteScreenFX(4, FX_FLIP, temp0, 120)
301
DrawSpriteScreenFX(5, FX_FLIP, temp0, 120)
302
DrawSpriteScreenFX(6, FX_FLIP, temp0, 120)
303
DrawSpriteScreenXY(10, screen.xcenter, screen.ycenter)
304
305
DrawSpriteScreenFX(object.frame, FX_FLIP, temp0, screen.ycenter)
306
break
307
308
case SEGA_FADEOUTTRAIL_RIGHT
309
DrawSpriteScreenFX(7, FX_INK, 0, 120)
310
DrawSpriteScreenFX(8, FX_INK, 0, 120)
311
DrawSpriteScreenFX(9, FX_INK, 0, 120)
312
313
DrawSpriteScreenXY(11, screen.xcenter, screen.ycenter)
314
break
315
316
case SEGA_SHOWSEGALOGO
317
case SEGA_FADETOTITLE
318
DrawSpriteScreenXY(11, screen.xcenter, screen.ycenter)
319
break
320
321
end switch
322
end event
323
324
325
event ObjectStartup
326
LoadSpriteSheet("Title/Title.gif")
327
SpriteFrame(-31, -36, 62, 72, 1, 226) // Sonic Run - Frame 1 - #0
328
SpriteFrame(-31, -36, 62, 72, 64, 226) // Sonic Run - Frame 2 - #1
329
SpriteFrame(-29, -36, 60, 72, 127, 226) // Sonic Run - Frame 3 - #2
330
SpriteFrame(-31, -36, 62, 72, 188, 226) // Sonic Run - Frame 4 - #3
331
SpriteFrame(-192, -35, 256, 70, 1, 299) // Sonic Trail (Full) - #4
332
SpriteFrame(-384, -35, 192, 70, 1, 299) // Sonic Trail - Frame 1 - #5
333
SpriteFrame(-576, -35, 192, 70, 1, 299) // Sonic Trail - Frame 2 - #6
334
SpriteFrame(0, -35, 192, 70, 1, 299) // Sonic Trail - Frame 3 - #7
335
SpriteFrame(192, -35, 192, 70, 1, 299) // Sonic Trail - Frame 4 - #8
336
SpriteFrame(384, -35, 192, 70, 1, 299) // Sonic Trail - Frame 5 - #9
337
SpriteFrame(-93, -29, 188, 58, 323, 297) // Sega Logo (Interlaced) - #10
338
SpriteFrame(-93, -29, 188, 58, 323, 238) // Sega Logo - #11
339
340
// Hide touch controls
341
options.touchControls = false
342
end event
343
344
345
// ========================
346
// Editor Events
347
// ========================
348
349
event RSDKDraw
350
DrawSprite(0)
351
end event
352
353
354
event RSDKLoad
355
LoadSpriteSheet("Title/Title.gif")
356
SpriteFrame(-93, -29, 188, 58, 323, 238) // Sega Logo - #0
357
358
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
359
end event
360
361