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/Title/Sega.txt
1482 views
1
// ----------------------------------
2
// RSDK Project: Sonic 1
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 : sega.timer
13
// value1 isn't used
14
private alias object.value2 : sega.peekPos
15
private alias object.value3 : sega.levelSelectCheatPos
16
private alias object.value4 : sega.touchDown
17
private alias object.value5 : sega.regionSwitchCheatPos
18
19
// States
20
private alias 0 : SEGA_SETUP
21
private alias 1 : SEGA_FADEIN
22
private alias 2 : SEGA_PEEKSEGA
23
private alias 3 : SEGA_REVEALSEGA
24
private alias 4 : SEGA_SEGASCREEN
25
private alias 5 : SEGA_FADEOUT
26
27
// Priority
28
public alias 0 : PRIORITY_BOUNDS
29
public alias 1 : PRIORITY_ACTIVE
30
public alias 2 : PRIORITY_ALWAYS
31
public alias 3 : PRIORITY_XBOUNDS
32
public alias 4 : PRIORITY_XBOUNDS_DESTROY
33
public alias 5 : PRIORITY_INACTIVE
34
public alias 6 : PRIORITY_BOUNDS_SMALL
35
public alias 7 : PRIORITY_ACTIVE_SMALL
36
37
// Ink Effects
38
public alias 0 : INK_NONE
39
public alias 1 : INK_BLEND
40
public alias 2 : INK_ALPHA
41
public alias 3 : INK_ADD
42
public alias 4 : INK_SUB
43
44
// Flip Directions
45
public alias 0 : FLIP_NONE
46
public alias 1 : FLIP_X
47
public alias 2 : FLIP_Y
48
public alias 3 : FLIP_XY
49
50
// Game Modes
51
private alias 0 : MODE_NOSAVE
52
53
54
// ========================
55
// Function Declarations
56
// ========================
57
58
reserve function Sega_CheckTouchCheatCodes
59
60
// ========================
61
// Function Definitions
62
// ========================
63
64
private function Sega_CheckTouchCheatCodes
65
CheckTouchRect(0, 0, screen.xsize, screen.ysize)
66
if checkResult == -1
67
sega.touchDown = false
68
end if
69
70
if sega.touchDown == false
71
// temp0 = touchX1
72
// temp1 = touchX2
73
74
temp0 = screen.xcenter
75
switch sega.levelSelectCheatPos
76
case 0
77
temp0 -= 93
78
temp1 = temp0
79
temp1 += 39
80
break
81
82
case 1
83
temp0 -= 50
84
temp1 = temp0
85
temp1 += 42
86
break
87
88
case 2
89
temp0 -= 6
90
temp1 = temp0
91
temp1 += 42
92
break
93
94
case 3
95
temp0 += 36
96
temp1 = temp0
97
temp1 += 58
98
break
99
100
end switch
101
102
CheckTouchRect(temp0, 90, temp1, 150)
103
if checkResult > -1
104
sega.touchDown = true
105
sega.levelSelectCheatPos++
106
if sega.levelSelectCheatPos == 4
107
PlaySfx(SfxName[Ring L], false)
108
options.stageSelectFlag = true
109
end if
110
end if
111
112
temp0 = screen.xcenter
113
switch sega.regionSwitchCheatPos
114
case 0
115
temp0 += 36
116
temp1 = temp0
117
temp1 += 58
118
break
119
120
case 1
121
temp0 -= 6
122
temp1 = temp0
123
temp1 += 42
124
break
125
126
case 2
127
temp0 -= 50
128
temp1 = temp0
129
temp1 += 42
130
break
131
132
case 3
133
temp0 -= 93
134
temp1 = temp0
135
temp1 += 39
136
break
137
138
end switch
139
140
CheckTouchRect(temp0, 90, temp1, 150)
141
if checkResult > -1
142
sega.touchDown = true
143
sega.regionSwitchCheatPos++
144
if sega.regionSwitchCheatPos == 4
145
PlaySfx(SfxName[Ring L], false)
146
options.region ^= true
147
end if
148
end if
149
end if
150
end function
151
152
153
// ========================
154
// Events
155
// ========================
156
157
event ObjectUpdate
158
#platform: USE_ORIGINS
159
if game.titleMode != 0
160
game.titleMode = 0
161
ResetObjectEntity(object.entityPos, TypeName[Logo], 0, 0, 0)
162
else
163
#endplatform
164
switch object.state
165
case SEGA_SETUP
166
object.alpha = 0x00
167
object.inkEffect = INK_ALPHA
168
sega.timer = 320
169
SetScreenFade(0, 0, 0, sega.timer)
170
object.state++
171
break
172
173
case SEGA_FADEIN
174
if sega.timer > 0
175
sega.timer -= 8
176
else
177
sega.peekPos = screen.xcenter
178
sega.peekPos -= 104
179
object.alpha = 0x80
180
object.state++
181
end if
182
183
SetScreenFade(0, 0, 0, sega.timer)
184
break
185
186
case SEGA_PEEKSEGA
187
temp0 = screen.xcenter
188
temp0 += 112
189
if sega.peekPos < temp0
190
sega.peekPos += 4
191
else
192
object.alpha = 0
193
object.state++
194
end if
195
break
196
197
case SEGA_REVEALSEGA
198
if object.alpha < 0xD0
199
object.alpha += 8
200
else
201
object.alpha = 0xFF
202
object.state++
203
end if
204
#platform: USE_STANDALONE
205
CallFunction(Sega_CheckTouchCheatCodes)
206
#endplatform
207
break
208
209
case SEGA_SEGASCREEN
210
sega.timer++
211
if sega.timer == 160
212
sega.timer = 0
213
object.state = SEGA_FADEOUT
214
end if
215
216
if sega.timer == 2
217
PlaySfx(SfxName[Sega Chant], false)
218
end if
219
#platform: USE_STANDALONE
220
if options.gameMode == MODE_NOSAVE
221
CallFunction(Sega_CheckTouchCheatCodes)
222
end if
223
#endplatform
224
break
225
226
case SEGA_FADEOUT
227
if sega.timer < 256
228
sega.timer += 8
229
SetScreenFade(0, 0, 0, sega.timer)
230
else
231
ResetObjectEntity(object.entityPos, TypeName[Sonic Team], 0, object.xpos, object.ypos)
232
SetScreenFade(0, 0, 0, 0xFF)
233
end if
234
break
235
236
end switch
237
#platform: USE_ORIGINS
238
end if // game.titleMode == 0 check from way up above
239
#endplatform
240
end event
241
242
243
event ObjectDraw
244
// Draw White BG
245
DrawRect(0, 0, screen.xsize, screen.ysize, 0xE0, 0xE0, 0xE0, 0xFF)
246
247
// Draw Sega Sprite
248
if object.alpha > 8
249
DrawSpriteScreenFX(0, FX_INK, screen.xcenter, screen.ycenter)
250
end if
251
252
// Draw the "reveal" rects
253
if object.state == SEGA_PEEKSEGA
254
temp0 = sega.peekPos
255
temp0 -= 10
256
temp0 -= screen.xsize
257
DrawRect(temp0, 91, screen.xsize, 58, 0xE0, 0xE0, 0xE0, 0xFF)
258
259
temp0 = sega.peekPos
260
temp0 -= 10
261
DrawRect(temp0, 91, 4, 58, 0xE0, 0xE0, 0xE0, 0xC0)
262
263
temp0 += 4
264
DrawRect(temp0, 91, 4, 58, 0xE0, 0xE0, 0xE0, 0xA0)
265
266
temp0 += 8
267
DrawRect(temp0, 91, 4, 58, 0xE0, 0xE0, 0xE0, 0xA0)
268
269
temp0 += 4
270
DrawRect(temp0, 91, 4, 58, 0xE0, 0xE0, 0xE0, 0xC0)
271
272
temp0 += 4
273
DrawRect(temp0, 91, screen.xsize, 58, 0xE0, 0xE0, 0xE0, 0xFF)
274
275
DrawSpriteScreenXY(1, screen.xcenter, screen.ycenter)
276
end if
277
end event
278
279
280
event ObjectStartup
281
LoadSpriteSheet("Title/Title.gif")
282
SpriteFrame(-93, -29, 188, 58, 323, 242)
283
SpriteFrame(-125, -29, 252, 58, 259, 301)
284
285
// Hide touch controls
286
options.touchControls = false
287
end event
288
289
290
// ========================
291
// Editor Events
292
// ========================
293
294
event RSDKDraw
295
DrawSprite(0)
296
end event
297
298
299
event RSDKLoad
300
LoadSpriteSheet("Title/Title.gif")
301
SpriteFrame(-93, -29, 188, 58, 323, 242)
302
303
SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")
304
end event
305